Модуль HX711 на основе АЦП со встроенным усилителем предназначен для получения данных с тензодатчиков (датчиков, преобразующих величину деформации в электрический сигнал).
Основа модуля – специализированная микросхема HX711, имеет АЦП с разрешением 24 бит, благодаря чему обеспечивается высокая точность измерений (для сравнения – разрешение АЦП, встроенного в Arduino 10 бит).
Модуль имеет 2 канала: А и В, к которым можно подключить два тензодатчика. Для канала A коэффициент усиления равен 64 или 128, для канала B коэффициент усиления равен 32. Модуль работает с частотой измерения 80 Гц.
Назначение контактов разъема JP1:
- E+, E- – питание тензодатчиков;
- A-, A+ – дифференциальный вход канала А;
- B-, B+ – дифференциальный вход канала B.
Назначение контактов разъема JP2:
- VCC – напряжение питания;
- GND – общий контакт;
- DT – линия данных;
- SCK – линия синхронизации.
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* Калибровка весов */ // Подключение библиотеки #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); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/* Измерение веса */ // Подключение библиотеки #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"); } |