- Технические характеристики модуля
- Подключение
- Пример использования
- Часто задаваемые вопросы FAQ
Содержание
Технические характеристики HX711
- Напряжение питания – 6-5.5 В
- Рабочее напряжение – 5 В
- Количество каналов подключения тензодатчиков – 2
- Коэффициент усиления – 32, 64, 128
- Дифференциальный вход с напряжением – ± 40 мВ
- Разрядность АЦП – 24 бит
- Частота измерений – 80 Гц
- Рабочий ток <10 мА
- Рабочая температура – -40 – 85 °С
- Размеры: 38x21x10 мм
Подключение модуля HX711 к плате Arduino
Модуль HX711 имеет два разъема J1 и J2 (см. рис. 1).Рисунок 1. Arduino-модуль HX711
Назначение контактов разъема JP1:- E+, E- питание тензодатчиков;
- A-, A+ дифференциальный вход канала А;
- B-, B+ дифференциальный вход канала B.
- VCC - напряжение питания;
- GND – общий контакт;
- DT – линия данных;
- SCK – линия синхронизации.
Рисунок 2. Схема соединений модуля HX711, тензодатчика и платы Arduino
Пример использования АЦП для аналоговых весов HX711
В качестве примера использования рассмотрим, как исполдьзовать модуль HX711 при создании создание весов до 1 кг. Нам потребуются следующие компоненты:- плата Arduino Uno -1
- модуль HX711 - 1
- тензодатчик - 1
- провода MF - 4
Рисунок 3. Тензодатчик до 1 кг
Направление приложения груза и максимальный вес измерения указаны на датчике, там же указывается и вес, на который рассчитан этот датчик. Схема измерителя на этом датчике является полумостовой – один тензорезистор сверху (на растяжение), второй снизу (на сжатие). Один конец тензодатчика необходимо жестко зафиксировать (рис. 4 – с помощью тисков).Рисунок 4. Весы в сборе
Для работы с Arduino будем использовать библиотеку HX711, скачать которую можно с github (https://github.com/bogde/HX711). Перед использованием тензодатчика его необходимо откалибровать. Загружаем на плату Arduino скетч из листинга 1. Открываем монитор последовательного порта, при этом на весах не должно быть груза. Затем ставим груз известной массы (например гири) и смотрим показания. Если они недостоверны, необходимо поменять значение переменной float calibration_factor, пока для груза не будут выводиться правильные данные. Для моего датчика 1 кг – подобрал calibration_factor=64.80. Здесь получаются достаточно точные значения (см. рис. 5-9). Листинг 1// Скетч к обзору модуля HX711 // Калибровка весов // 3d-diy.ru // Подключение библиотеки #include "HX711.h" // создание экземпляра объекта // 15(A1) – пин подключения DT // 14(A0) – пин подключения SCK HX711 weight(15, 14); // значение калибровочного коэффициента (делать подбор для своих весов) float scale_calibration = -3.7; // переменные float weight_units; float weight_gr; void setup() { // Инициализируем последовательный порт Serial.begin(9600); Serial.println("HX711 calibration …"); scale.set_scale(); // Сбрасываем весы на 0 scale.tare(); } void loop() { // Устанавливаем калибровочный коэффициент scale.set_scale(scale_calibration); // получить данные Serial.print("Read data: "); weight_units = scale.get_units(), 10; // если <0 то 0 if (weight_units < 0) { weight_units = 0.00; } // перевод из унций в граммы weight_gr = weight_units * 0.035274; // вывод данных в последовательный порт // вес Serial.print("weight_gr ="); Serial.print(weight_gr); Serial.print(" gr"); // калибровочный коэффициент Serial.print("scale_calibration="); Serial.println(scale_calibration); }
Рисунок 5-10. Калибровка (подбор значения calibration_factor)
Теперь весы откалиброваны и готовы к использованию. Для измерения загружаем на плату Arduino скетч из листинга 2. И можем измерять вес необходимых вещей. Листинг 2// Скетч к обзору модуля HX711 // Измерение веса // 3d-diy.ru // Подключение библиотеки #include "HX711.h" // создание экземпляра объекта // 15(A1) – пин подключения DT // 14(A0) – пин подключения SCK HX711 weight(15, 14); // значение калибровочного коэффициента (делать подбор для своих весов) float scale_calibration = 64.80; // переменные float weight_units; float weight_gr; void setup() { Serial.begin(9600); scale.set_scale(); //Сбрасываем на 0 scale.tare(); //Применяем калибровку scale.set_scale(scale_calibration); } void loop() { Serial.print("Read data … "); // усредняем показания for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10; weight_units / 10; // перевод из унций в граммы weight_gr = weight_units * 0.035274; // вывод данных в последовательный порт Serial.print("weight_gr ="); Serial.print(weight_gr); Serial.println(" gr"); }
Часто задаваемые вопросы FAQ
1. Выдаются заведомо неверное значение веса предмета- Проверьте правильность подключения модуля.
- Проведите калибровку весов с эталонным весом.
- Проверьте правильность подключения модуля.
- Пробуйте более тщательно подбирать значение калибровочного коэффициента.