- Необхідні компоненти для побудови вагової шкали Arduino:
- Датчик ваги та модуль датчика ваги HX711:
- Пояснення схеми:
- Робоче пояснення:
- Код ваги Arduino:
Сьогодні ми збираємося побудувати Arduino Wight машини, шляхом взаємодії тензодатчиками і HX711 датчика ваги з Arduino. Ми бачили ваговики в багатьох магазинах, де машина відображає вагу, просто розмістивши предмет на ваговій платформі. Отже, тут ми будуємо ту саму зважувальну машину, використовуючи Arduino та Load кювети, ємністю до 40 кг. Цю межу можна додатково збільшити, використовуючи тензодатчик більшої ємності.
Основним компонентом, необхідним для побудови цієї ваги Arduino, є датчик, який може перетворити вагу в еквівалентний електричний сигнал. Цей датчик називається тензодатчиком, тому в цьому проекті ми використовуватимемо цей тензодатчик як наш датчик ваги Arduino. Ми також використовували ту саму навантажувальну комірку в кількох інших проектах, як, наприклад, Портативна роздрібна зважувальна машина Arduino, Вага ваги Raspberry pi тощо, ви також можете перевірити їх, якщо зацікавлені.
Необхідні компоненти для побудови вагової шкали Arduino:
- Arduino Uno
- Навантажувач (40 кг)
- HX711 Модуль підсилювача комірки навантаження
- РК-дисплей 16x2
- Підключення проводів
- USB-кабель
- Макет
- Гайкові болти, рама та основа
Датчик ваги та модуль датчика ваги HX711:
Навантажувальна комірка - це перетворювач, який перетворює силу або тиск на електричну потужність. Величина цього електричного виходу прямо пропорційна прикладеній силі. Навантажувальні комірки мають тензометр, який деформується при наданні на нього тиску. І тоді тензодатчик генерує електричний сигнал при деформації, оскільки його ефективний опір змінюється при деформації. Тензодатчик зазвичай складається з чотирьох тензорезисторів у конфігурації мосту Уітстона. Навантажувальна комірка поставляється в різних діапазонах, таких як 5 кг, 10 кг, 100 кг та більше, тут ми використовували навантажувач, який може важити до 40 кг.
Зараз електричні сигнали, що генеруються навантажувальною коміркою, знаходяться в декількох мілівольтах, тому їх потрібно додатково посилити деяким підсилювачем, і отже, датчик зважування HX711 з’являється в картині. Модуль датчика зважування HX711 має мікросхему HX711, яка є 24 високоточним АЦП (аналого-цифровий перетворювач). HX711 має два аналогові вхідні канали, і ми можемо отримати посилення до 128, програмуючи ці канали. Таким чином, модуль HX711 підсилює низьку електричну потужність тензодатчиків, а потім цей посилений та цифрово перетворений сигнал подається в Arduino для отримання ваги.
Навантажувальна комірка з'єднана з підсилювачем навантажувальної комірки HX711 за допомогою чотирьох проводів. Ці чотири дроти - це червоний, чорний, білий та зелений / синій. Кольори проводів від модуля до модуля можуть незначно відрізнятися. Під деталями підключення та схемою:
- ЧЕРВОНИЙ провід підключений до E +
- ЧОРНИЙ провід підключений до E-
- БІЛИЙ Провід підключений до A-
- ЗЕЛЕНИЙ провід підключений до A +
Кріплення тензодатчика за допомогою платформи та основи:
Цей крок є необов’язковим, і ви можете безпосередньо покласти ваги на навантажувач без платформи і можете просто затиснути його, не закріплюючи на будь-якій основі, але краще прикріпити платформу для розміщення великих речей на ній і закріпити на основі так, щоб він застиг. Тож тут нам потрібно зробити каркас або платформу для розміщення речей для вимірювання ваги. Також необхідна основа, щоб закріпити на ній тензодатчик за допомогою гайок і болтів. Тут ми використали твердий картон для рами для розміщення речей над нею та дерев’яну дошку як основу. Тепер зробіть з'єднання, як показано на схемі, і ви готові до роботи.
Пояснення схеми:
Підключення до цього проекту є простими, а схема наведена нижче. 16x2 РК-висновки RS, EN, d4, d5, d6 та d7 з'єднані з номерами контактів 8, 9, 10, 11, 12 та 13 Arduino відповідно. Виводи DT і SCK модуля HX711 безпосередньо пов'язані з висновками A0 і A1 Arduino. З'єднання тензодатчиків з модулем HX711 вже пояснено раніше, а також показано на нижченаведеній схемі.
Робоче пояснення:
Принцип роботи цього проекту вимірювання ваги Arduino простий. Перш ніж вдаватися до деталей, спочатку ми повинні відкалібрувати цю систему для вимірювання правильної ваги. Коли користувач увімкне його, система автоматично почне калібрування. І якщо користувач хоче відкалібрувати його вручну, натисніть кнопку. Ми створили функцію void calibrate () для калібрування, перевірте код нижче.
Для калібрування зачекайте, коли на РК-дисплеї буде показано 100 грамів над тензодатчиком, як показано на малюнку нижче. Коли на РК-дисплеї відображатиметься “поставити 100г”, тоді нанесіть вагу 100г на тензодатчик і зачекайте. Через кілька секунд процес калібрування буде закінчений. Після калібрування користувач може покласти будь-яку вагу (макс. 40 кг) на тензодатчик і може отримати значення на РК в грамах.
У цьому проекті ми використовували Arduino для контролю всього процесу. Тензодатчик вимірює вагу і поставки електричного аналогового напруги для HX711 навантаження Модуль підсилювача. HX711 - це 24-бітний АЦП, який підсилює та цифрово перетворює вихідні дані тензодатчика. Потім це посилене значення подається в Arduino. Тепер Arduino обчислює вихід HX711 і перетворює його у значення ваги в грамах і показує на РК-дисплеї. Для калібрування системи використовується кнопка. Ми написали програму Arduino для всього процесу, перевірте Код та демонстраційне відео в кінці цього уроку.
Код ваги Arduino:
Програмна частина цього проекту трохи складна для початківців. У цьому проекті ми не використовували жодної бібліотеки для взаємодії датчика навантаження HX711 з Arduino. Ми щойно переглянули таблицю даних HX711 та примітки щодо застосування. Хоча для цього є деякі бібліотеки, де вам потрібно лише включити цю бібліотеку, і ви можете отримати вагу, використовуючи один рядок коду.
Перш за все, ми включили файл заголовка для РК-дисплея та визначили шпильки для них самих. І для кнопки також. Потім оголошено деякі змінні для розрахунку.
#включати
Після цього ми створили наведену нижче функцію для зчитування даних з модуля HX711 та повернення його виводу.
unsigned long readCount (void) {unsigned long Count; без підпису char i; pinMode (DT, OUTPUT); digitalWrite (DT, HIGH); digitalWrite (SCK, LOW); Кількість = 0; pinMode (DT, INPUT); while (digitalRead (DT)); for (i = 0; i <24; i ++) {digitalWrite (SCK, HIGH); Граф = Граф << 1; digitalWrite (SCK, LOW); if (digitalRead (DT)) Count ++; } digitalWrite (SCK, HIGH); Count = Count ^ 0x800000; digitalWrite (SCK, LOW); повернення (Граф); }
Після цього ми ініціалізували РК-дисплей і давали вказівки для вхідних і вихідних штифтів у void setup ().
void setup () {Serial.begin (9600); pinMode (SCK, OUTPUT); pinMode (sw, INPUT_PULLUP); lcd.begin (16, 2); lcd.print ("Вага"); lcd.setCursor (0,1); lcd.print ("Вимірювання"); затримка (1000); lcd.clear (); калібрувати (); }
Далі у функції void loop () ми прочитали дані модуля HX711, перетворили ці дані у вагу (грами) та відправили на РК-дисплей.
недійсний цикл () {count = readCount (); int w = ((((count-sample) / val) -2 * ((count-sample) / val)); Serial.print ("вага:"); Serial.print ((int) w); Serial.println ("g"); lcd.setCursor (0,0); lcd.print ("Вага"); lcd.setCursor (0,1); lcd.print (w); lcd.print ("g"); if (digitalRead (sw) == 0) {val = 0; зразок = 0; w = 0; кол = 0; калібрувати (); }}
До цього ми створили калібрувальну функцію, в якій ми відкалібрували систему, розмістивши 100 г ваги над тензодатчиком.
void calibrate () {lcd.clear (); lcd.print ("Калібрування…"); lcd.setCursor (0,1); lcd.print ("Будь ласка, зачекайте…"); for (int i = 0; i <100; i ++) {count = readCount (); зразок + = кол; Serial.println (кол); }……………….
Отже, тут ми вивчили основну взаємодію датчика ваги та датчика ваги HX11 з Arduino для вимірювання ваги. У наших текстових підручниках ми створимо деякі додатки на основі вимірювання ваги, такі як розумний контейнер, автоматичні ворота тощо