Цифрові ваги з модулем HX711 для Arduino

Огляди та теми присвячені використанню тензорних датчиків ваги, тиску, барометрів, побудові електроних ваг та регулюванню тиску води
Відповісти
Аватар користувача
Arduino
Site Admin
Повідомлень: 99
З нами з: 16 травня 2017 18:18

Цифрові ваги з модулем HX711 для Arduino

Повідомлення Arduino »

Схема та програма для складання цифрових ваг з модулем HX711. Використання тензодатчиків на практиці.
Приймач навантаження являє собою перетворювач, здатний перетворювати силу в електричний сигнал, це робиться одним або кількома внутрішніми датчиками, що мають бути сконфигуровані в міст Уітстона.
vagy-Hx711-2.jpg
Є різні типи тензодатчиків, в різних моделях, які можна використовувати для цього . Ми будемо використовувати тензодатчик 5 кг , але можна брати й до 20 кг і іншим моделями.
YZC131-5kg.jpg
Модуль hX711
http://arduinka.biz.ua/uk/modul-tenzorn ... 47c74.html
Цей модуль являє собою інтерфейс між тензодатчиками і мікро контролером, дозволяючи легко читати вагу. Внутрішньо він відповідає за читання мосту Уітстона, утвореного тензодатчиками, перетворюючи аналого-цифрове зннняачення внутрішнім А/Ц перетворювачем на 24 біти.

Він широко використовується в промислових процесах, автоматизованих системах вимірювання та медичній промисловості.

Він взаємодіє з мікро контролером через 2 канали (Clock і DATA) послідовно.

Як підключити тензодатчик?
vagy-Hx711-3.jpg
Підключення:
Датчик ----------------------- модуль HX711
кабель Червоний ----------- Pin E +
кабель чорний -------------- Pin E-
Кабель зелений ------------- Pin A-
кабель Білий ---------------- Pin A+

Зв'язок між HX711 і Arduino:
модуль HX711 --------------- Arduino UNO (MEGA/ NANO)
GND Pi ------------------------ GND Pin
Pin DT ------------------------ Pin A1
SCK Pin ----------------------- Pin A0
Pin VCC ----------------------- 5V Pin

Ми використовуємо HX711 бібліотеки Bogde, яку можна завантажити з Github:

Код: Виділити все

https://github.com/bogde/HX711
Після завантаження ви повинні імпортувати її в наш Arduino IDE.

Калібрування ваги

Перше, що ви повинні зробити, це відкалібровати ваги щоб отримати точні покази шкали, яка буде використовуватися; тобто знайти коефіцієнт перетворення для перетворення значення для читання до значення одиниць ваги. Шкала відрізняється для кожного датчику і змінюється відповідно до того, як встановити модель .

По-перше, ми повинні мати об'єкт з відомою вагою. Рекомендується, щоб відома вага була близька до максимального значення робочого діапазону датчика навантаження. У нашому випадку ми використовуємо вагу 4 кг, тому що наш датчик 5кг.

Скетч для калібрування

Код: Виділити все

#include "HX711.h"

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
  Serial.begin(9600);
  Serial.print("ADC значення читання:  ");
  Serial.println(balanza.read());
  Serial.println("не кладіть нічого на ваги");
  Serial.println("Destarando...");
  balanza.set_scale(); //Типовий масштаб 1
  balanza.tare(20);	//Поточний вага з врахуванням тари.
  Serial.println("Помістіть відому вагу:");
  
}


void loop() {

  Serial.print("Читання значення:  ");
  Serial.println(balanza.get_value(10),0);
  delay(100);
}
Програма повинна спочатку працювати без груза щоб з початком програми обчислити вагу тари. Після відкриття монітора послідовного порту чекати результату, щоб відняти вагу тари, об'єкт вагою 4 кг, або вони працювали "в ноль".
Монітор буде видавати велику кількість показів
Необхідно розрахувати середнє значення для визначення масштабу зважувань.
Масштаб розрахувати так:
масштаб=(середнє значення)/4 кг
Тобто аналоговому значеню сигналу ми співставляємоо відоме значення ваги. Одне розділене на інше дає масштаб.
Наприклад середнє значення сигналу для 4 кг дорівнює 1757721 одиниць показів
Масштаб = 1757721/4=439430,25
цей масштаб треба використовувати для скетча зважування

Остаточна програма для наших цифрових ваг
Програма для використання аналогічна програмі що ми використовуємо, щоб калібрувати, з тією різницею, що ми знаємо масштаб.

Код: Виділити все

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
Serial.begin(9600);
  Serial.print("ADC значення читання:  ");
  Serial.println(balanza.read());
  Serial.println("не кладіть нічого на ваги");
  Serial.println("Destarando...");
  Serial.println("...");
  balanza.set_scale(439430.25); // Ми встановлюємо масштаб
  balanza.tare(20);	//поточна вага з Tara.
  
  Serial.println("Готова важити");  
}

void loop() {
  Serial.print("Вага: ");
  Serial.print(balanza.get_units(20),3);
  Serial.println(" kg");
  delay(500);
}
Відповісти

Повернутись до “Датчики тиск, вага, висота”