Подключение тензодатчика к Ардуино

Подключение тензодатчика к Ардуино hx711

Тензометрический датчик (тензодатчик) преобразует деформацию в электрический сигнал. Рассмотрим, как подключить тензодатчик к Arduino с примером кода для весов.

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

Тензодатчик. Принцип работы, характеристики

Модуль для весов состоит из самого тензорезистивного датчика, который встроен в прочную конструкцию. Микросхема HX711 предназначена для усиления сигнала от тензорезистора и передачи данных в микроконтроллер. После калибровки модуля, можно вычислить степень деформации тензорезистивного датчика по изменению его сопротивления, и рассчитать силу, приложенную к конструкции (вес).

Принцип работы тензодатчика, устройство простейшего датчика
Принцип работы тензодатчика, устройство простейшего датчика

Рабочий элемент модуля – тензорезистор (проволока на гибкой подложке), которую приклеивают к измеряемому предмету. При деформации меняется сопротивление резистора, а соответственно меняется сигнал. Если откалибровать модуль и собрать надежную конструкцию весов на Arduino, то можно добиться хорошей точности. Отметим, что сам датчик может быть рассчитан на разный вес — от 2 кг и более.

Как подключить тензодатчик к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль тензодатчика hx711;
  • провода «папа-папа», «папа-мама»;
  • паяльник и немного фантазии.

Для датчика потребуется придумать и собрать некую конструкцию весов, а также иметь под рукой весы, чтобы сравнивать данные с модуля с эталоном. Для сборки весов на Ардуино в датчике имеются отверстия с резьбой. Основным элементом модуля (см. картинку ниже) является 24 битный аналого-цифровой преобразователь для весов — микросхема HX711, к которой подключается тензодатчик.

Схема подключения тензодатчика к Arduino Uno
Схема подключения тензодатчика HX711 к Arduino Uno

После сборки весов на Ардуино, необходимо откалибровать тензорезистивный датчик. Подключите датчик к модулю 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;
   }
}

Пояснения к коду:

  1. на монитор порта будет выведен поправочный коэффициент, который следует использовать далее в работе с датчиком для весов;
  2. при необходимости корректировки коэффициента, через монитор порта следует отправлять «+» или «-» на плату Ардуино.

Счетч для тензодатчика (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();
}

Пояснения к коду:

  1. используя поправочный коэффициент из первой программы, ваши весы должны показывать довольно точные показания в граммах;
  2. скачать библиотеку hx711.h Arduino с описанием команд можно на нашем сайте на странице Библиотеки Ардуино.
1 Star2 Stars3 Stars4 Stars5 Stars (21 votes, average: 4,81 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *