
Интернет-магазин «Неглупый Дом»
Тензодатчик через усилитель HX711 отдаёт вес в граммах после калибровки по известному грузу, значение выводится на дисплей.
Тензодатчик (часто это металлическая балка с наклеенными тензорезисторами) при изгибе под весом груза чуть-чуть меняет своё электрическое сопротивление — настолько незначительно, что напрямую измерить это аналоговым входом Arduino невозможно. Модуль HX711 — это специализированный 24-битный АЦП (аналого-цифровой преобразователь) с встроенным усилителем именно для тензодатчиков: он усиливает крошечное изменение сопротивления и отдаёт Arduino уже готовое цифровое значение по двум проводам (DOUT и SCK), без использования аналоговых пинов.
Поскольку у каждого конкретного тензодатчика и каждой платы HX711 немного отличаются заводские параметры, весы обязательно нужно откалибровать по грузу с точно известным весом (например, гирька или пачка с указанным весом на упаковке) — без калибровки числа с датчика будут просто "сырыми" единицами АЦП, не граммами.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить.
#include <HX711.h> // библиотека для усилителя тензодатчика HX711
#include <Wire.h> // шина I2C
#include <LiquidCrystal_I2C.h> // дисплей через I2C-переходник
const int DOUT = 3; // пин данных HX711
const int CLK = 2; // тактовый пин HX711
HX711 scale;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
scale.begin(DOUT, CLK);
scale.set_scale(420.f); // калибровочный коэффициент — обязательно подберите под свой датчик
scale.tare(); // обнуление показаний на пустой, ненагруженной платформе
lcd.init();
lcd.backlight();
}
void loop() {
float weight = scale.get_units(10); // среднее по 10 измерениям для стабильности показаний
lcd.setCursor(0, 0);
lcd.print("Weight: ");
lcd.print(weight, 1);
lcd.print(" g ");
Serial.print("Weight: ");
Serial.print(weight, 1);
Serial.println(" g");
delay(500);
}
Калибровка в два шага. Сначала прошейте Arduino с временными строками `scale.set_scale(1);` и `scale.tare();`, запишите через Serial-монитор сырое значение с пустой платформой (должно быть около 0 после tare) и с грузом известного веса. Коэффициент калибровки считается по формуле: (сырое_значение_с_грузом − сырое_значение_пустое) / вес_груза_в_граммах — полученное число подставьте в `set_scale()` вместо `420.f` и перепрошейте.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 299 ₽ 269 ₽ (экономия 30 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.