Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

HX711: Полное Руководство — Распиновка, Подключение Тензодатчиков и Проекты на Arduino / Raspberry Pi

HX711 — специализированный 24-битный АЦП (ADC) для тензометрических датчиков (load cells). Низкий шум, программируемое усиление (32/64/128), два дифференциальных входа, последовательный интерфейс (2 провода), ультранизкое потребление. Основа всех электронных весов: кухонных, торговых, промышленных, медицинских. Разберем пины, схемы подключения и два готовых проекта: весы на Arduino и на Raspberry Pi.

Что такое HX711?

24-битный сигма-дельта АЦП с встроенным низкошумным PGA (Programmable Gain Amplifier). Назначение: усилить микровольтовый сигнал от мостовой схемы тензодатчика (обычно 1–2 мВ/В) и передать цифровое значение микроконтроллеру. Интерфейс: 2-проводной синхронный (PD_SCK — такт, DOUT — данные). Не требует программирования регистров — управление тактовыми импульсами.

Распиновка HX711 (16 пинов, корпус SOP-16 / DIP-16 модуль)

ПинИмяФункция
1VSUPПитание стабилизатора (2.7–5.5 В) — опционально
2BASEВыход стабилизатора (управление внешним транзистором) — обычно NC
3AVDDАналоговое питание (2.6–5.5 В) — основное питание чипа
4VFBОбратная связь стабилизатора — к AGND если не используется
5AGNDАналоговая земля
6VBGОпорное напряжение (bandgap) — байпас конденсатором 0.1 мкФ
7INA-Канал A: отрицательный дифф. вход
8INA+Канал A: положительный дифф. вход
9INB-Канал B: отрицательный дифф. вход
10INB+Канал B: положительный дифф. вход
11PD_SCKЦифровой вход: такт / Power-Down (HIGH > 60 мкс = sleep)
12DOUTЦифровой выход: последовательные данные (MSB first)
13XOКварц выход / Цифровой I/O (обычно NC, используется внутренний осциллятор)
14XIКварц вход / Внешний такт (обычно NC)
15RATEСкорость выхода: LOW = 10 SPS, HIGH = 80 SPS
16DVDDЦифровое питание (2.6–5.5 В) — соединить с AVDD

На модулях (красная/зеленая плата): выведены только VCC (AVDD/DVDD), GND (AGND), INA+/INA-, INB+/INB-, PD_SCK, DOUT. Остальные — внутри.

Характеристики

Что такое тензодатчик (Load Cell)?

Преобразователь силы/веса в электрический сигнал. Основа — металлический эластичный элемент (алюминий/сталь) с наклеенными тензорезисторами (стренг-гейджами) в мостовой схеме Уитстона (4 провода: E+, E-, S+, S-). Под нагрузкой металл деформируется → меняется сопротивление тензорезисторов → дисбаланс моста → дифференциальное напряжение на S+/S- (мВ). HX711 усиливает и оцифровывает это.

Проект 1: Весы на Arduino + HX711 + 5 кг тензодатчик

Компоненты

Монтаж тензодатчика (важно!)

  1. Тензодатчик имеет стрелку направления силы. Закрепите сторону без стрелки на неподвижную базу.
  2. Сторону со стрелкой — на подвижную платформу (весовую панель).
  3. Между тензодатчиком и платами — жесткие распорки (шайбы, втулки). Без них нагрузка уйдет в базу, минуя тензодатчик — показания будут нулевыми.
  4. Затяните болты крепко, но не перегибайте корпус датчика.

Подключение HX711 к Arduino

HX711ArduinoПровод тензодатчика
VCC5V (или 3.3V)—
GNDGND—
DT (DOUT)D3 (любой цифровой)—
SCK (PD_SCK)D2 (любой цифровой)—
E+—Красный (питание моста +)
E-—Черный (питание моста -)
A+—Белый (сигнал +)
A-—Зеленый (сигнал -)

Канал B (B+/B-) оставляем свободным. RATE — на GND (10 SPS) или VCC (80 SPS).

Библиотека и код

Установите библиотеку «HX711» (автор Bogdan Necula / Andreas Motl) через Менеджер библиотек Arduino IDE.

#include "HX711.h"
const int DT_PIN = 3;
const int SCK_PIN = 2;
HX711 scale;

void setup() {
  Serial.begin(115200);
  scale.begin(DT_PIN, SCK_PIN);
  scale.set_scale(); // калибровка ниже
  scale.tare();      // обнуление
  Serial.println("Готово. Положите известный вес для калибровки.");
}

void loop() {
  if (scale.is_ready()) {
    float weight = scale.get_units(10); // усреднение 10 замеров
    Serial.print("Вес: "); Serial.print(weight); Serial.println(" г");
  }
  delay(200);
}

Калибровка

  1. Запустите скетч, дождитесь «Готово».
  2. Положите известный вес (например, 100 г).
  3. В мониторе порта увидите «сырое» значение (или вызовите scale.get_value()).
  4. Вычислите scale_factor = (сырое_значение_с_весом - сырое_значение_пусто) / известный_вес_в_граммах.
  5. В коде: scale.set_scale(scale_factor); — перезагрузите.
  6. Проверьте разными весами. Тара (tare()) сбрасывает нуль.

Проект 2: Цифровые весы на Raspberry Pi + HX711

Компоненты

Подключение тензодатчика к зеленому HX711

Провод датчикаHX711 Terminal
Red (E+)E+
Black (E-)E-
White (S+)A+
Green (S-)A-

B+/B- — не подключены. Если на модуле S+/S- вместо A+/A- — то же самое.

Подключение HX711 к Raspberry Pi GPIO

HX711Raspberry Pi (BCM)
VCC3.3V (Pin 1 или 17)
GNDGND (Pin 6, 9, 14, 20, 25, 30, 34, 39)
SCKGPIO 6 (Pin 31)
DTGPIO 5 (Pin 29)

ПО (Python)

  1. Включите SPI/I2C в raspi-config (Interface Options) — для других датчиков, но полезно.
  2. Установите библиотеку: pip3 install hx711 (или клонируйте https://github.com/gandalf15/HX711).
  3. Скрипт калибровки/измерения (пример):
#!/usr/bin/env python3
import time
import sys
sys.path.append('/home/pi/HX711') # если клонировали вручную
from hx711 import HX711

hx = HX711(dout_pin=5, pd_sck_pin=6)
hx.set_reading_format("MSB", "MSB")
hx.set_reference_unit(1) # временно
hx.reset()
hx.tare()
print("Калибровка: положите известный вес и нажмите Enter")
input()
val = hx.get_weight(10)
known = float(input("Введите вес в граммах: "))
ref = val / known
print(f"Reference unit: {ref}")
hx.set_reference_unit(ref)
hx.tare()
print("Готово. Измерения каждые 2 сек (Ctrl+C для выхода):")
try:
    while True:
        w = hx.get_weight(5)
        print(f"Вес: {w:.1f} г")
        hx.power_down()
        hx.power_up()
        time.sleep(2)
except KeyboardInterrupt:
    print("Выход")

Применения HX711

Заключение

HX711 + тензодатчик — стандарт де-факто для измерения веса/силы в DIY и проме. Ключ к точности: механический монтаж (жесткие распорки, правильное направление силы), стабильное питание (3.3В от LDO, не от Arduino 5V через USB), калибровка известными весами, усреднение замеров. Библиотеки для Arduino/Python/ESP делают интеграцию тривиальной. Есть вопросы по фильтрации шумов, температурной дрейфу, многоточечной калибровке — пишите.

Промышленные технологии

  1. Методы входной и выходной связи усилителей: емкостная, прямая и трансформаторная
  2. Мощность в резистивных и реактивных цепях переменного тока
  3. Ввод-вывод в C: stdio.h, потоки stdin/stdout/stderr, функции getchar/putchar, gets/puts, scanf/printf
  4. Чертеж ритейлеров: оптимизация труда и операций в пост-COVID эре
  5. Really Smart Box: умная коробка для IoT-мониторинга запасов
  6. Понимание NC-обработки: определение, процесс и ключевые преимущества
  7. Освоение проектирования печатных плат для Интернета вещей: Полное руководство
  8. Параметры солнечного элемента и характеристики PV-панели: полное руководство
  9. Два D-триггера 74LS74: полная справочная информация и распиновка
  10. Сборка Arduino ProtoShield: пошаговое руководство