- Необходимые компоненты для создания весов Arduino:
- Датчик веса и модуль датчика веса HX711:
- Описание схемы:
- Рабочее объяснение:
- Код весов Arduino:
Сегодня мы собираемся построить машину Arduino, связав датчик веса и датчик веса HX711 с Arduino. Мы видели весовые машины во многих магазинах, где они отображают вес, просто помещая предмет на платформу для взвешивания. Итак, здесь мы создаем тот же весовой автомат с использованием Arduino и тензодатчиков, имеющий грузоподъемность до 40 кг. Этот предел можно еще больше увеличить, используя тензодатчик большей емкости.
Основным компонентом, необходимым для создания этих весов Arduino, является датчик, который может преобразовывать вес в эквивалентный электрический сигнал. Этот датчик называется датчиком веса, поэтому в этом проекте мы будем использовать этот датчик веса в качестве датчика веса Arduino. Мы также использовали тот же датчик нагрузки в нескольких других проектах, таких как портативная машина для взвешивания Arduino, весы Raspberry pi и т. Д., Вы также можете проверить их, если хотите.
Необходимые компоненты для создания весов Arduino:
- Ардуино Уно
- Тензодатчик (40 кг)
- Модуль усилителя тензодатчика HX711
- ЖК-дисплей 16x2
- Соединительные провода
- USB-кабель
- Макетная плата
- Болты гайки, рама и основание
Датчик веса и модуль датчика веса HX711:
Датчик нагрузки - это преобразователь, который преобразует силу или давление в электрическую мощность. Величина этого электрического выхода прямо пропорциональна приложенной силе. Весоизмерительные ячейки имеют тензодатчик, который деформируется при приложении давления. Затем тензодатчик генерирует электрический сигнал при деформации, так как его эффективное сопротивление изменяется при деформации. Датчик нагрузки обычно состоит из четырех тензодатчиков в конфигурации моста Уитстона. Весоизмерительные ячейки представлены в различных диапазонах, например, 5 кг, 10 кг, 100 кг и более, здесь мы использовали весоизмерительные ячейки, которые могут весить до 40 кг.
Теперь электрические сигналы, генерируемые тензодатчиком, измеряются в несколько милливольт, поэтому их необходимо дополнительно усилить с помощью какого-либо усилителя, и, следовательно, на сцену выходит датчик веса HX711. Модуль весового датчика HX711 имеет микросхему HX711, которая представляет собой 24 высокоточный аналого-цифровой преобразователь (аналого-цифровой преобразователь). HX711 имеет два аналоговых входных канала, и мы можем получить усиление до 128, запрограммировав эти каналы. Таким образом, модуль HX711 усиливает низкий электрический выход тензодатчиков, а затем этот усиленный и преобразованный в цифровую форму сигнал подается в Arduino для определения веса.
Датчик нагрузки соединен с усилителем датчика нагрузки HX711 с помощью четырех проводов. Эти четыре провода - красный, черный, белый и зеленый / синий. Цвет проводов от модуля к модулю может немного отличаться. Ниже детали подключения и схема:
- КРАСНЫЙ провод подключен к E +
- ЧЕРНЫЙ Провод подключается к E-
- БЕЛЫЙ провод подключается к A-
- ЗЕЛЕНЫЙ Провод подключен к A +
Крепление тензодатчика с платформой и основанием:
Этот шаг является необязательным, и вы можете напрямую надевать грузы на тензодатчик без платформы и просто зажимать его, не фиксируя на каком-либо основании, но лучше прикрепить платформу для размещения на нем больших предметов и закрепить ее на основании. так что он неподвижен. Итак, здесь нам нужно сделать каркас или площадку для размещения вещей для измерения веса. Также требуется основание, чтобы прикрепить к нему датчик веса с помощью гаек и болтов. Здесь мы использовали жесткий картон в качестве каркаса для размещения вещей поверх него и деревянную доску в качестве основы. Теперь выполните соединения, как показано на принципиальной схеме, и все готово.
Описание схемы:
Подключения для этого проекта просты, а схема приведена ниже. Выводы RS, EN, d4, d5, d6 и d7 ЖК-дисплея 16x2 соединены с выводами 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) {беззнаковый длинный счетчик; беззнаковый символ i; pinMode (DT, ВЫХОД); digitalWrite (DT, HIGH); digitalWrite (SCK, LOW); Счетчик = 0; pinMode (DT, ВХОД); а (digitalRead (DT)); для (я = 0; я <24; я ++) {digitalWrite (SCK, HIGH); Счетчик = Счетчик << 1; digitalWrite (SCK, LOW); если (digitalRead (DT)) Count ++; } digitalWrite (SCK, HIGH); Счетчик = Счетчик ^ 0x800000; digitalWrite (SCK, LOW); return (Счетчик); }
После этого мы инициализировали ЖК-дисплей и даем указания входным и выходным контактам в void setup ().
void setup () {Serial.begin (9600); pinMode (SCK, ВЫХОД); pinMode (sw, INPUT_PULLUP); lcd.begin (16, 2); lcd.print («Вес»); lcd.setCursor (0,1); lcd.print («Измерение»); задержка (1000); lcd.clear (); откалибровать (); }
Затем в функции void loop () мы считали данные из модуля HX711, преобразовали эти данные в вес (граммы) и отправили их на ЖК-дисплей.
void loop () {count = readCount (); int w = (((счетчик-выборка) / значение) -2 * ((счет-выборка) / значение)); Serial.print ("вес:"); Serial.print ((int) w); Serial.println ("г"); lcd.setCursor (0,0); lcd.print («Вес»); lcd.setCursor (0,1); lcd.print (ш); lcd.print ("г"); если (digitalRead (sw) == 0) {val = 0; образец = 0; w = 0; count = 0; откалибровать (); }}
Перед этим мы создали функцию калибровки, в которой мы откалибровали систему, поместив гирю 100 г над датчиком нагрузки.
void calibrate () {lcd.clear (); lcd.print («Калибровка…»); lcd.setCursor (0,1); lcd.print («Подождите…»); для (int я = 0; я <100; я ++) {count = readCount (); образец + = счетчик; Serial.println (количество); }……………….
Итак, здесь мы изучили основы взаимодействия тензодатчика и датчика веса HX11 с Arduino для измерения веса. В наших текстовых уроках мы создадим некоторые приложения, основанные на измерении веса, такие как смарт-контейнер, автоматические ворота и т. Д.