Взвешенное решение для Вашего Бизнеса
г. Москва, Дмитровское шоссе, 71Б
Пн-Чт: 10:00-18:00
Пт: 10:00-17:00
Сб-Вс: Выходной
г. Москва, Москва, Дмитровское шоссе , 71 Б
Пн-чт 10:00-18:00
Пт 10:00-17:00
Заказать звонок
Войти

Полное руководство: Тензодатчик с Arduino и HX711

21 июн 2025
#Тензодатчики
Полное руководство: Тензодатчик с Arduino и HX711

Добро пожаловать в самое подробное руководство по работе с тензодатчиками и Arduino! Этот подробный мануал создан для всех уровней - от школьников до профессиональных инженеров. Мы пройдем путь от основ физики до создания промышленных систем мониторинга, с подробными схемами, примерами кода и практическими проектами.

Для образовательных проектов мы рекомендуем миниатюрные тензодатчики 5кг - идеальное решение для первых экспериментов с Arduino.

Физические основы тензометрии

Закон Гука и деформация материалов

Тензодатчики работают на основе закона Гука, открытого в 1660 году. Формула закона:

F = k * ΔL

Где:

  • F - приложенная сила (Ньютоны)
  • k - коэффициент упругости материала (Н/м)
  • ΔL - изменение длины (метры)

В реальных датчиках изменение длины под нагрузкой 1 кг составляет всего ~0.0005 мм для стальной балки длиной 10 см.

1

Металлическая балка закрепляется с одного конца

2

К свободному концу прикладывается нагрузка

3

Верхняя поверхность балки сжимается, нижняя растягивается

4

Тензорезисторы преобразуют деформацию в изменение сопротивления

Принцип работы тензорезистора

Тензорезистор меняет сопротивление при деформации:

ΔR/R = K * ε

Где:

  • ΔR/R - относительное изменение сопротивления
  • K - коэффициент тензочувствительности (2-5 для металлов)
  • ε - относительная деформация (ΔL/L)
Практический пример: При деформации 0.1% и K=2 сопротивление изменится на 0.2%. Для измерения таких изменений требуется точная электроника.

Мост Уитстона: математика измерений

Для измерения малых изменений сопротивления используется мостовая схема:

// Уравнение баланса: R1/R2 = R3/R4 // Выходное напряжение: Vout = Vin * [R3/(R3+R4) - R2/(R1+R2)]
Тип моста Чувствительность Точность Стоимость
1/4 моста Низкая ±2-5% Низкая
1/2 моста Средняя ±0.5-1% Средняя
Полный мост Высокая ±0.1% Высокая

Выбор компонентов

Типы тензодатчиков

1

Балка на изгиб (Bending Beam)

Самый распространенный тип для весов:

  • Длина: 30-200 мм
  • Материал: алюминий/нержавеющая сталь
  • Точность: 0.05-0.5%
  • Для проектов: кухонные весы, учебные проекты
2

S-образный датчик (S-Type)

Для подвесных систем:

  • Грузоподъемность: 50 г - 50 т
  • Защита: IP65-IP68
  • Особенность: встроенная защита от перегрузки
3

Мембранный датчик (Shear Beam)

Для промышленных применений:

  • Низкий профиль
  • Устойчивость к боковым нагрузкам
  • Точность: 0.02-0.1%

Глубокий анализ HX711

HX711 - специализированный АЦП для тензодатчиков:

// Ключевые характеристики: #define INPUT_RANGE ±80mV // Широкий диапазон #define RESOLUTION 24-bit // Высокая точность #define SAMPLING_RATE 10/80Hz // Гибкость настроек #define CURRENT_DRAW <1.5mA // Энергоэффективность
Параметр HX711 Обычный АЦП Преимущество
Разрешение 24 бита (эффективных 20-22) 10-16 бит Высокая точность
Потребление 1.0-1.5 мА 0.1-100 мА Энергоэффективность
Встроенный усилитель PGA x128 Отсутствует Упрощение схемы

Платформы Arduino

Плата Процессор Память Для каких проектов
Arduino Uno ATmega328P @16MHz 32KB Flash, 2KB RAM Учебные проекты, простые весы
Arduino Nano ATmega328P @16MHz 32KB Flash, 2KB RAM Портативные устройства
ESP32 Xtensa LX6 @240MHz 4MB Flash, 520KB RAM IoT весы, облачные системы
Совет: Начинайте с Arduino Uno - она прощает ошибки подключения. Для продвинутых проектов выбирайте ESP32.

Электрические схемы подключения

Безопасность работы

Критически важные меры предосторожности:

1
Всегда отключайте питание при переподключении проводов
2
Используйте антистатический браслет
3
Не превышайте напряжение 5В на HX711
4
Для пайки: 25-30Вт паяльник, температура 300-350°C

Подключение одиночного датчика

Схема подключения 4-проводного датчика
    ARDUINO UNO          HX711 MODULE          ТЕНЗОДАТЧИК (4 провода)
    -----------          ------------          -----------------------
    5V (VCC)    ------>  VCC                  
    GND         ------>  GND                  
    Digital 2   <------  DT (DOUT)            
    Digital 3   ------>  SCK (PD_SCK)         
                        E+ (Красный) ------>  Красный (Питание +)
                        E- (Черный)   ------>  Черный (Питание -)
                        A- (Белый)    ------>  Белый (Сигнал -)
                        A+ (Зеленый)  ------>  Зеленый (Сигнал +)
            
Схема подключения 6-проводного датчика
    ARDUINO UNO          HX711 MODULE          ТЕНЗОДАТЧИК (6 проводов)
    -----------          ------------          -----------------------
    5V (VCC)    ------>  VCC                  
    GND         ------>  GND                  
    Digital 2   <------  DT (DOUT)            
    Digital 3   ------>  SCK (PD_SCK)         
                        E+ (Красный) ------>  Красный (Питание +)
                        E- (Черный)   ------>  Черный (Питание -)
                        A- (Белый)    ------>  Белый (Сигнал -)
                        A+ (Зеленый)  ------>  Зеленый (Сигнал +)
                        SENSE+ (Синий) ----->  Синий (Sense+) 
                        SENSE- (Желтый) ---->  Желтый (Sense-) 
    GND         ------>  Желтый (Sense-) 
            

Параллельное подключение 4 датчиков

Для платформенных весов:

// Стандартная цветовая маркировка: // Красный: +Exc // Черный: -Exc // Белый: -Signal // Зеленый: +Signal // Схема подключения: // Все красные провода -> E+ на HX711 // Все черные провода -> E- на HX711 // Все белые провода -> A- на HX711 // Все зеленые провода -> A+ на HX711
Важно: Все датчики должны быть идентичными! Разные модели дадут неверные показания.

Программная настройка

Установка Arduino IDE

Пошаговая инструкция для Windows:

1
Скачайте установщик с официального сайта
2
Запустите EXE-файл, следуйте инструкциям установки
3
Подключите Arduino через USB
4
Установите драйвер CH340 (для китайских клонов)
5
Выберите плату: Инструменты > Плата > Arduino Uno
6
Выберите порт: Инструменты > Порт > COMx

Библиотеки HX711

Библиотека Особенности Рекомендация
HX711_ADC Продвинутые алгоритмы фильтрации, многоканальность Для профессиональных проектов
HX711 (bogde) Простая и стабильная, минималистичная Для начинающих
// Установка через Arduino IDE: // 1. Скетч → Подключить библиотеку → Управлять библиотеками... // 2. В поиске введите "HX711" // 3. Выберите библиотеку и нажмите "Установить"

Первая программа

Базовый скетч для чтения сырых значений:

#include "HX711.h" // Подключаем библиотеку // Определяем пины #define DOUT_PIN 2 #define SCK_PIN 3 HX711 scale; // Создаем объект void setup() { Serial.begin(9600); scale.begin(DOUT_PIN, SCK_PIN); Serial.println("Система инициализирована"); } void loop() { if (scale.is_ready()) { long raw_value = scale.read(); Serial.print("Raw value: "); Serial.println(raw_value); } delay(500); // Задержка между измерениями }

Профессиональные компоненты от Sierra

Для ваших проектов мы предлагаем:

Миниатюрные датчики

Идеальны для Arduino проектов

Промышленные сенсоры

Точность до 0.01%, защита IP68

Готовые модули

HX711 с защитой от переполюсовки

Перейти в каталог тензодатчиков

Продолжение: Калибровка, проекты и промышленные решения

Калибровка системы

Теория калибровки

Калибровка устанавливает соответствие между выходным сигналом и приложенной силой:

// Основное уравнение: Weight = (RawValue - Offset) * ScaleFactor
1
Offset (Tare): Значение при нулевой нагрузке
2
ScaleFactor: Коэффициент преобразования
3
Эталонный груз: Известная масса для расчета

Практическая калибровка

Пошаговый процесс для Arduino:

#include "HX711.h" HX711 scale; float calibration_factor = -7050.0; // Стартовое значение void setup() { Serial.begin(9600); scale.begin(2, 3); Serial.println("Уберите нагрузку и отправьте 't' для тарирования"); } void loop() { if (Serial.available()) { char c = Serial.read(); if (c == 't') { scale.tare(); // Сброс нуля Serial.println("Тара установлена"); } if (c == 'c') { calibrate(); // Запуск калибровки } } // Вывод текущего веса float weight = scale.get_units(5); Serial.print("Вес: "); Serial.print(weight, 1); Serial.println(" г"); } void calibrate() { Serial.println("Поместите известный вес и введите массу в граммах"); while (!Serial.available()) delay(10); float known_weight = Serial.parseFloat(); float reading = scale.get_units(10); calibration_factor = reading / known_weight; scale.set_scale(calibration_factor); Serial.print("Калибровочный коэффициент: "); Serial.println(calibration_factor); }

Автоматическая калибровка

Процедура с сохранением в EEPROM:

#include void saveCalibration() { EEPROM.put(0, calibration_factor); } void loadCalibration() { EEPROM.get(0, calibration_factor); if (isnan(calibration_factor)) { calibration_factor = -7050.0; // Значение по умолчанию } scale.set_scale(calibration_factor); }

Практические проекты

Умные кухонные весы

1

Компоненты:

  • Arduino Nano
  • Датчик 5кг
  • Дисплей LCD 16x2 I2C
  • Кнопки 4x
2

Схема подключения:

    Arduino   |   Компонент
    -----------------------
     5V      ->   VCC (LCD, HX711)
     GND     ->   GND (LCD, HX711)
     A4      ->   SDA (LCD)
     A5      ->   SCL (LCD)
     D2      ->   DT (HX711)
     D3      ->   SCK (HX711)
                
3

Основные функции:

void displayWeight(float weight) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Вес: "); lcd.print(weight, 1); lcd.print(" г"); // Переключение единиц измерения if (buttonPressed()) { lcd.setCursor(0,1); lcd.print(weight * 0.035, 1); lcd.print(" oz"); } }

Автокормушка для питомцев

Проект с IoT функционалом:

#include #include // Конфигурация WiFi const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; // Конфигурация кормления float feedAmount = 50.0; // Грамм на порцию void dispenseFood() { digitalWrite(RELAY_PIN, HIGH); delay(2000); // Время включения дозатора digitalWrite(RELAY_PIN, LOW); // Отправка данных в облако String url = "http://api.example.com/feed?amount=&quot; + String(feedAmount); http.begin(url); http.GET(); http.end(); }

Система контроля запасов

Для склада или кухни:

struct InventoryItem { String name; float full_weight; float current_weight; float threshold; }; InventoryItem items[] = { {"Мука", 5000.0, 0, 500.0}, {"Сахар", 3000.0, 0, 300.0} }; void checkInventory() { for (int i = 0; i < ITEM_COUNT; i++) { items[i].current_weight = readWeight(i); float percent = (items[i].current_weight / items[i].full_weight) * 100; if (percent < 20) { sendAlert(items[i].name + " заканчивается!"); } } }

Интеграция с другими системами

Работа с ESP32

Отправка данных в облако через Wi-Fi:

#include #include void setup() { // Подключение к WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void sendToCloud(float weight) { HTTPClient http; http.begin("http://api.example.com/weight&quot;); http.addHeader("Content-Type", "application/json"); String payload = "{\"weight\":" + String(weight) + "}"; int httpCode = http.POST(payload); if (httpCode == HTTP_CODE_OK) { Serial.println("Данные отправлены"); } http.end(); }

Подключение к PLC

Интеграция с промышленными контроллерами:

// Использование Modbus RTU #include ModbusRTU mb; void setup() { Serial.begin(9600, SERIAL_8N1); mb.begin(&Serial); mb.slave(SLAVE_ID); // Регистры для данных mb.addHreg(WEIGHT_REGISTER); } void loop() { mb.task(); float weight = scale.get_units(10); mb.Hreg(WEIGHT_REGISTER, (uint16_t)(weight * 10)); // x10 для сохранения точности }

Промышленное применение

Логистические решения

1

Портативные весы для грузов

  • Датчики: S-тип 500 кг
  • Плата: ESP32 с Bluetooth
  • Корпус: ударопрочный пластик IP67
2

Конвейерные весы

  • Точность: ±0.5%
  • Скорость: 100 взвешиваний/мин
  • Интеграция с PLC через Modbus

Медицинские применения

Точные системы дозирования:

// Алгоритм дозирования void dispenseMedication(float target_dose) { float current_weight = 0; pump_start(); while (current_weight < target_dose) { current_weight = scale.get_units(5); delay(50); } pump_stop(); // Коррекция перевеса if (current_weight > target_dose) { float overfill = current_weight - target_dose; correctOverfill(overfill); } }

Профессиональные решения от Sierra

Для промышленных применений:

Высокоточные датчики

Точность 0.01% для медицинских применений

Защищенные корпуса

IP68 для агрессивных сред

Индивидуальные решения

Разработка под ваши требования

Перейти в каталог тензодатчиков

Схемы подключения

Схема подключения к ESP32
    ESP32 DEV KIT          HX711          ТЕНЗОДАТЧИК
    ------------          -----          -----------
    3.3V       -------->  VCC
    GND        -------->  GND
    GPIO16     <--------  DT
    GPIO17     -------->  SCK
                E+  ----> Красный
                E-  ----> Черный
                A+  ----> Зеленый
                A-  ----> Белый
            
Алгоритм калибровки
    НАЧАЛО
    ├── Установить датчик без нагрузки
    ├── Вызвать scale.tare()
    ├── Разместить эталонный груз
    ├── Рассчитать коэффициент:
    │   coefficient = (reading - tare) / known_weight
    ├── Применить коэффициент: scale.set_scale()
    └── Сохранить в EEPROM
            

Читайте также