Подключение HX711 к Arduino
АЦП для тензодатчика (весы)
HX711 к Arduino: DT и SCK на любые два цифровых вывода, питание 5 В. Мост тензодатчика подключается к выводам E+, E−, A+, A− модуля.
Схема подключения HX711 к Arduino
| HX711 | Arduino Uno |
|---|---|
| DT | D4 |
| SCK | D5 |
| VCC | 5V |
| GND | GND |
Схема из примера «Arduino Uno: весы на тензодатчике».
Выводы HX711
| Вывод | Назначение |
|---|---|
| DT | данные (DOUT) |
| SCK | тактовый сигнал (PD_SCK) |
| VCC | питание |
| GND | общий провод |
Код для Arduino
#include <HX711.h>
// Весы: тензодатчик и усилитель HX711 на выводах 4 и 5.
//
// Микросхема отдаёт двадцать четыре разряда, вытактованные вручную по
// двум проводам. Это не шина и не аналоговый вход: собственного
// аналогового входа у Uno на такой сигнал не хватило бы — мост даёт
// милливольты, а разрешение нужно в тысячные доли.
//
// Сырые отсчёты сами по себе не значат ничего. Их превращают в граммы
// две настройки, и обе делаются один раз руками.
//
// **Тарирование** — сколько показывает пустая платформа. Это ноль, и
// он уезжает от температуры, поэтому tare() зовут при каждом запуске.
//
// **Масштаб** — сколько отсчётов приходится на грамм. Кладут известный
// груз, делят разницу на его вес и записывают число в скетч. Другого
// способа нет: коэффициент зависит от конкретного датчика и от того,
// как он закреплён.
HX711 scale;
const int DT = 4;
const int SCK_PIN = 5;
void setup() {
Serial.begin(9600);
scale.begin(DT, SCK_PIN);
// Число из калибровки. У вашего датчика оно будет другим.
scale.set_scale(420.0);
Serial.println(F("уберите груз — тарирую"));
delay(500);
scale.tare();
Serial.println(F("готово"));
}
void loop() {
// Среднее по пяти измерениям: одиночный отсчёт дрожит на единицы
// граммов, и по нему ничего не решают.
float grams = scale.get_units(5);
Serial.print("g:");
Serial.println(grams, 1);
delay(500);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Библиотека HX711 на время чтения запрещает прерывания, на Uno это единицы миллисекунд.
- Длинные провода и соседство с силовыми цепями дают шум: провода экранируют, по питанию ставят конденсатор.
В железе
Балка подключается к HX711 четырьмя проводами: обычно красный — E+, чёрный — E−, белый — A−, зелёный — A+. Если вес растёт в минус — поменяйте местами A+ и A−.
Частые ошибки при подключении к Arduino
- Перепутать провода тензодатчика: вес отрицательный. Поменяйте A+ и A− местами или знак коэффициента.
- Не дать прогреться: сразу после включения показания дрейфуют, нужны несколько минут.
- Нет калибровки — числа в тысячах вместо граммов. Положите груз известной массы и подберите коэффициент.
- Нет
tare()при старте — весы показывают вес платформы. - Показания медленно уплывают — прогрев тензодатчика и HX711. Дайте поработать пару минут и тарируйте снова.
- Балка закреплена неправильно — стрелка на балке должна смотреть в сторону нагрузки, а изгибаться должна середина.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21D