СОДЕРЖАНИЕ ►
Тензометрический датчик для Ардуино или тензодатчик (от латинского слова tensus — напряженный) преобразует деформацию в электрический сигнал. Существует несколько способов измерения деформаций, но для электронных весов наибольшее распространение получили тензорезистивные датчики. Рассмотрим, как подключить тензодатчик к Arduino и дадим пример программы с библиотекой hx711.h.
Тензодатчик. Принцип работы, характеристики
Модуль для весов состоит из самого тензорезистивного датчика, который встроен в прочную конструкцию. Микросхема HX711 предназначена для усиления сигнала от тензорезистора и передачи данных в микроконтроллер. После калибровки модуля, можно вычислить степень деформации тензорезистивного датчика по изменению его сопротивления, и рассчитать силу, приложенную к конструкции (вес).

Рабочий элемент модуля – тензорезистор (проволока на гибкой подложке), которую приклеивают к измеряемому предмету. При деформации меняется сопротивление резистора, а соответственно меняется сигнал. Если откалибровать модуль и собрать надежную конструкцию весов на Arduino, то можно добиться хорошей точности. Отметим, что сам датчик может быть рассчитан на разный вес — от 2 кг и более.
Для удобства монтажа преимущественно используют 4-х проводную схему подключения как более современную. При выборе тензодатчиков важно обращать внимание на показатели метрологии. Для высококлассного весового оборудования используют класс точности C3. Чтобы быть уверенным в качестве продукции рекомендуем выбирать тензометрические датчики с гарантией.
Для надёжной работы мы советуем покупать тензодатчики Sierra
Как подключить тензодатчик к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- модуль тензодатчика hx711;
- провода «папа-папа», «папа-мама»;
- паяльник и немного фантазии.
Для датчика потребуется придумать и собрать некую конструкцию весов, а также иметь под рукой весы, чтобы сравнивать данные с модуля с эталоном. Для сборки весов на Ардуино в датчике имеются отверстия с резьбой. Основным элементом модуля (см. картинку ниже) является 24 битный аналого-цифровой преобразователь для весов — микросхема HX711, к которой подключается тензодатчик.

| HX711 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 5V | 5V | 5V |
| DT | 2 | 2 | 2 |
| SCK | 3 | 3 | 3 |
После сборки весов на Ардуино, необходимо откалибровать тензорезистивный датчик. Подключите датчик к модулю HX711, согласно схеме размещенной выше, а сам модуль необходимо подключить к плате Ардуино. Порты DT и SCK можно подключить к любым цифровым портам микроконтроллера (в примере кода мы использовали 2 и 3 порт). После сборки схемы загрузите скетч для калибровки датчика в плату Arduino.
Счетч для калибровки тензодатчика HX711
#include "HX711.h" HX711 scale(2, 3); // порты DT, CLK float calibration_factor = -3.7; // калибровка датчика float units; float ounces; void setup() { Serial.begin(9600); Serial.println("HX711 calibration sketch"); Serial.println("Remove all weight from scale"); Serial.println("Press + or a to increase calibration factor"); Serial.println("Press - or z to decrease calibration factor"); scale.set_scale(); scale.tare(); // сбрасываем датчик на 0 long zero_factor = scale.read_average(); Serial.print("Zero factor: "); Serial.println(zero_factor); } void loop() { scale.set_scale(calibration_factor); // применяем калибровку Serial.print("Reading: "); units = scale.get_units(), 10; // выполняем замеры 10 раз if (units < 0) { units = 0.00; } ounces = units * 0.035274; // переводим усредненные значения в граммы Serial.print(ounces); Serial.print(" grams"); Serial.print(" calibration_factor: "); Serial.print(calibration_factor); Serial.println(); if (Serial.available()) { char temp = Serial.read(); if (temp == '+' || temp == 'a') calibration_factor += 1; else if (temp == '-' || temp == 'z') calibration_factor -= 1; } }
Пояснения к коду:
- на монитор порта будет выведен поправочный коэффициент, который следует использовать далее в работе с датчиком для весов;
- при необходимости корректировки коэффициента, через монитор порта следует отправлять «+» или «-» на плату Ардуино.
Счетч для тензодатчика (hx711) Ардуино
#include "HX711.h" HX711 scale(2, 3); // порты DT, CLK float calibration_factor = -3.7; // калибровка датчика float units; float ounces; void setup() { Serial.begin(9600); scale.set_scale(); scale.tare(); // сбрасываем датчик на 0 scale.set_scale(calibration_factor); // применяем калибровку } void loop() { Serial.print("Reading: "); for(int i=0; i<10; i++) { units =+ scale.get_units(), 10; } // выполняем замеры 10 раз units / 10; // делим значения на 10 ounces = units * 0.035274; // переводим значения в граммы Serial.print(ounces); Serial.print(" grams"); Serial.println(); }
Пояснения к коду:
- используя поправочный коэффициент из первой программы, ваши весы должны показывать довольно точные показания в граммах;
- скачать библиотеку hx711.h Arduino с описанием команд можно на нашем сайте на странице Библиотеки Ардуино.










HX711:3:17: error: no matching function for call to ‘HX711::HX711(int, int)’
*На что ссылается ошибка? Как лечить? Спасибо*
Такая же проблема!
HX711 scale; вот так не ругается у меня
HX711 scale(2, 3); // порты DT, CLK —а так ругается