Делаем простые весы с помощью arduino arduino+

Делаем весы на ардуино Arduino , работа с тензонометрическим датчиком и платой HX711

Через пару дней добавлю демонстративное видео !

Плата усилитель HX711 имеет 5 пинов для подключения . Эти штыри обозначены цветами; RED, BLK, WHT, GRN и YLW. Эти цвета соответствуют традиционному цветовому кодированию весоизмерительных датчиков , где из тензодатчика выходят провода – красные, черные, зеленые и белые провода, а желтый – это дополнительный заземляющий провод, который не подключен к тензодатчику, а служит как дополнительная защита от электромагнитных помех .Иногда вместо желтого провода идет метализированная оплетка или фольга для отражения электромагнитных помех , называемая экран.

Для создания весов на ардуино нам нужно след. Железо :

Плата HX711 http://ali.pub/1s77td
Плата ардуино (нано,мега,уно ) http://ali.pub/1s8uzw
Тензометрический датчик http://ali.pub/1s780k (уже с платой )
Датчик на 1 кг http://ali.pub/1s8v5q
Датчик на 5 кг http://ali.pub/1s8v82

Датчик на 100150 кг http://ali.pub/1s8val

Мостовая схема соединения тензометрических сопротивлений в датчике :

В общем, каждая весоизмерительная ячейка имеет четыре тензодатчика, которые закреплены в мостовой моста из пшеничного камня, как показано выше.

Четыре провода, выходящие из датчика для подключение имеют следующие цветовые маркировки , обычно:

• Питание + (E +) или VCC красное

• Питание – (Е) или земля черное.

• Выход + (O +), Сигнал + (S +) + или Усилитель + (A +) белый

• O-, S- или A- зеленый или синий

Некоторые датчики могут иметь небольшие различия в цветовом кодировании (особенно китайцы любят такой разнобой) , такие как синий вместо зеленого или желтого вместо черного или белого, если имеется только четыре провода (это означает, что экран не задействован ,или отсутствует вовсе ). Даже если цвета имеют другую маркировку , то всегда можно вызвонить датчик по сопротивлению , установив мультиметр на диапазор 2кОм , прозванивая пару проводов , провода питания будут иметь сопротивление порядка 400 ОМ ,провода сигнала 350 (пара) , питание + сигнал будут иметь сопротивление 300Ом .

Если показания веса у вас идут со значением «-» просто на плате HX711 поменяйте O + / O-провода местами.

После того как вы подключили датчик к плате 711 , вы можете подключить VCC, DAT, CLK и GND к микроконтроллеру, например к плате Arduino.

В примере кода DAT и CLK подключены к контактам цифровым 3 и 2 на плате Ардуино , но при надобности их можно легко изменить в коде. П итание платы начинается от 3 в , а питание датчика от 5 в, по этому можно смело питать от Ардуины .

Схема подключения создана в программе фритзинг

Делаем простые весы с помощью Arduino

Как сделать простые весы с помощью Arduino, HX711, датчиков нагрузки и элементов поверхностей для обычных полок.

Шаг 1. Что нам понадобится

Arduino – в нашем уроке мы используем стандартный Arduino Uno, другие версии Arduino или клоны должны также работать.

HX711 на переходной плате – этот микрочип специально предназначен для усиления сигналов от весоизмерительных датчиков и передачи их в другой микроконтроллер. Весоизмерительные датчики подключаются к этой плате и она сообщает Arduino что измеряют датчики нагрузки.

Датчик нагрузки на 5 кг. Датчик нагрузки представляют собой металлические детали специальной формы к которым приклеиваются тензодатчики. Тензорезисторы – это резисторы, которые меняют свое сопротивление, когда они изогнуты. Когда металлическая часть изгибается, сопротивление тензодатчика изменяется (HX711 точно измеряет это небольшое изменение сопротивления). Вы можете купить HX711 и весоизмерительную ячейку здесь, например, на Амазоне – https://www.amazon.com/Degraw-Load-Cell-HX711-Combo/dp/B075317R45/.

Прочная плоская монтажная поверхность (x2) – идеальная жесткая деталь из твердой древесины или металла.

Провода разных цветов для подключения всех частей.

Электропитание для Arduino.

Шаг 2. Устанавливаем датчик нагрузки

Сначала мы собираемся установить весоизмерительный датчик. Конечно, вы можете сделать по-своему, но вот рекомендации, которые вам желательно сделать:

  1. Алюминиевый тензодатчик должен иметь 4 резьбовых отверстия и метки, показывающие направление силы. Установите сторону без метки на неподвижную поверхность и установите сторону с этикеткой на движущуюся поверхность. Стрелка на маркированной стороне должна указывать вниз в направлении движения платформы при приложении нагрузки.
  2. Монтажная пластина (опора, поверхность) и подвижная пластина должны быть как можно более жесткими.
  3. Удостоверьтесь, что между монтажными пластинами и тензодатчиком устанавливаются какие-то жесткие прокладки. Стойки или шайбы хорошо работают. Цель состоит в том, что любое усилие, прикладываемое к движущейся пластине, приводит к изгибу и скручиванию тензодатчика. Без прокладок загрузка будет передаваться непосредственно с подвижной пластины на неподвижную пластину, не затрагивая тензодатчик.

Шаг 3. Подключаем датчик нагрузки и HX711

См. схему подключения датчиков нагрузки, HX711 и Arduino выше на рисунке.

На алюминиевых тензодатчиках несколько тензодатчиков уже соединены вместе для моста Уитстона. Все, что вам нужно сделать, – это подключить провода к плате HX711 в правильной ориентации.

Шаг 4. Добавляем библиотеку HX711 в среду разработки Arduino

Библиотека HX711 доступна по ссылке https://github.com/bogde/HX711.

Чтобы посмотреть инструкцию о том, как добавить библиотеку в вашу Arduino IDE перейдите по ссылке на официальный сайт Arduino: https://www.arduino.cc/en/Guide/Libraries.

Шаг 5. Код, калибровка и взвешивание

У пользователя Sparkfun есть ряд классных программ для Ардуино для запуска процесса взвешивания. Самая актуальная версия размещена ниже, но также её можно скачать с репозитория – https://github.com/sparkfun/HX711-Load-Cell-Amplifier.

Первый шаг программы заключается в определении калибровочных коэффициентов для шкалы. Для этого запустите этот код:

После калибровки шкалы вы можете запустить эту пробную программу, а затем переделать ее для своих целей:

На этом пока всё. Хороших вам проектов и отличного настроения!

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Весы на основе Arduino и HX711 своими руками

Микроконтроллерная платформа Arduino позволяет сделать множество несложных, но в то же время полезных в быту вещей. Одной из таких вещей можно назвать весы.

В данном примере будет показано, как самостоятельно собрать весы на основе Arduino, модуля с микросхемой HX711 и четырех весоизмерительных ячеек.

Микросхема HX711 специально предназначенf для усиления сигналов от весоизмерительных ячеек и передачи их в другой микроконтроллер. Весоизмерительные ячейки подключаются к плате с HX711, и эта плата сообщает Arduino, что именно измеряют весоизмерительные ячейки. Весоизмерительные ячейки (на 50 кг в данном случае) представляют собой металлические элементы специальной формы, к которым прикреплены тензодатчики (тензорезисторы). Тензорезисторы – это резисторы, которые меняют свое сопротивление при изгибе. Когда металлическая часть изгибается, сопротивление тензодатчика изменяется (HX711 точно измеряет это небольшое изменение сопротивления).

Установите четыре весоизмерительных ячейки по краям основания весов в четырех углах. Для их фиксации можно задействовать эпоксидную смолу.

Убедитесь, что два терминала на весоизмерительных ячейках имеют наивысшее сопротивление между ними (например, черным и белым), соедините их в петлю в соответствии со цветами, например, черный-черный белый-белый черный-черный белый-белый. Затем можно подавать напряжение возбуждения на два противоположных центральных ответвления и снимать показания с другой пары центральных ответвлений. Таким образом, получим некоторое подобие моста Уитстона. Схема подключения весоизмерительных ячеек к модулю HX711 и затем к Arduino показана ниже.

Далее приведен код (скетч) для Arduino, позволяющий реализовать измерение веса. В нем используется библиотека HX711, которую можно взять на https://github.com/bogde/HX711. Перед началом полноценного использования весов, их необходимо откалибровать. Код калибровки выглядит следующим образом.

Код работы весов на основе Arduino и HX711.

Собираем СМС-весы пчеловода на Arduino без пайки* + как это работает

Пчеловоды – весьма трудолюбивый и неунывающий народ, который нередко сам делает инвентарь для пасеки!

Поэтому я решил сделать максимально простой проект в духе Массимо Банци (одного из создателей Arduino).

Кроме того, Вы не поверите, но за годы работы с этой платформой, у меня никогда не было беспаечной макетной платы:

Она так и зовется, макетная плата-400

Но я-бы рекомендовал еще взять плату PCB 5х7см, если решите вдруг увековечить конструкцию при помощи паяльника

Естественно, дело не обойдется без Arduino Pro Mini 3.3V 8Mhz:

,модуля связи SIM800l с антенкой:

и модуля АЦП HX-711:

На последних трех компонентах попросите сразу распаять контактные гребенки (в радиомагазинах за скромную плату обычно это делают):

В результате, мы получим таких вот букашечек-таракашечек

Единственное, что придется паять самостоятельно – это сигнальные провода (E+ E- A+ A-) на плате АЦП.

Кроме того нам понадобится:

USB-UART конветер CH340, диод 1N4007, электролитический конденсатор 2200 мкФ 16V, фоторезистор GL5528 и модуль зарядки TP4056(если мы будем использовать LiIon батарею).

Еще нужны будут по десятку гибких проводников для макетирования (dupont) папа-папа, мама-мама, папа-мама (всего 30).
В принципе, их надо меньше, но если брать поштучно, по 7-8, они будут стоить те-же деньги.

Это все обойдется ну максимум долларов в 15, но самую вишенку я оставил напоследок

Нам понадобятся неработающие напольные электронные весы, которые кто выбрасывает, а кто просто отдает за бутылку пива.

Тут мы вообще убиваем сразу двух зайцев – экономим 5$ на тензодатчиках(которые обычно не ломаются), и получаем красивую основу для них-же :

А если вспомнить, что тем самым мы избавляем свалку от пополнения еще одним компонентом, то вообще можно приписать себя к движению “зеленых”

Не удалось раздобыть весы бесплатно? Не беда! Такие наверняка есть у Вашей жены/девушки/любовницы!

Убедите ее что она самая прекрасная даже без процедур взвешивания, и дело в шляпе!

А заодно утащите с кухни одну из прозрачных коробочек для продуктов, но лучше все-таки попросить 😉

Темы питания я сейчас не касаюсь, ибо пока мы будем брать его от компьютера.

В дальнейшем-же можно будет приспособить старую батарею и зарядку от мобильника (спасем окружающую среду еще раз).

Правда заряжать придется раз в неделю.

Ах да, без сим-каты мобильного оператора нам тоже не обойтись.

Итак, все компоненты в наличии – вперед!

Сейчас приступим к любимому “очумелыми ручками” процессу – потрошить технику (весы).

Кроме увлекательности, данный этап является также самым ответственным и вот почему (далее мы разберем принцип работы электронных весов):

На картинке изображен измерительный мост Уитстона, R2 – тензорезистор (меняет сопротивление в зависимости от нагрузки)

В идеале, без веса, вольтметр Vg показывает 0, соответственно, с увеличением оного, мы будем регистрировать изменение напряжения.

Оно также зависит от напряжения батареи подключеной к мосту.

Дальше – дело техники – вместо вольтметра ставится аналого-цифровой преобразователь (АЦП), дисплей, и в итоге на экранчике мы видем килограммы/фунты и т.д.

Если заглянуть в характеристики Arduino, то мы найдем, что на борту уже имеется 10-битный АЦП, так почему-же не использовать его?

Обычно, в напольных весах используется такой вот тензодатчик (нагрузка до 50кг, всего х4):

Он содержит половинку моста Уитстона (с R2).

Согласно характеристикам, при максимальной нагрузке и напряжении (10В), на выходе мы получим отклонение всего в 10 милливольт.

Из ардуино не выжать чувствительность лучше 1мВ, то-есть мы сможем регистрировать минимальное изменения веса в 5 килограмм.

Вот почему необходим внешний усилитель, либо АЦП – HX711(24бит) в нашем случае, что теоретически расширяет чувствительность до грамм.

Но на самом деле, электромагнитные наводки сильно портят картину, что уж говорить о разьемных соединениях, делающих измерения почти невозможными.

Отсюда и вытекает необходимость пайки моста к плате АЦП и дальнейшая изоляция контактов от влаги

Но хватит сухой теории, пора вскрывать весы:

Тут стоит заметить, что хитрые китайцы (а может не китайцы а может и не хитрые, но тоже молодцы 😉 придумали, как соединить 4 полумоста в 1 мост, сэкономив на АЦП:

Для того, чтобы разобраться, где какой вывод (на фотографии овал №3), Вам понадобится тестер, DT-830 вполне подойдет, ну или дедовский стрелочный, главное чтобы мог измерять сопротивление 1-3кОм.

Ищем пары выводов с сопротивлением 2К (если 1.5К – не оно)

Если тестера нет, можно еще подразобрать весы и проследить все по проводам!

Мне повезло, и соединения были выполнены в соответствии с приведеной схемой.

Только вот порядок подключения проводов к АЦП другой (следите за очередностью подключения красных!):

Будьте внимательны, иначе весы будут показывать отрицательный вес(тогда достаточно поменять местами провода A+ и А-), либо вообще не показывать ничего (проверить схему еще раз).

Соединения 1 и 2 нужно сохранить, остальное (плату и экран)- удалить:

Можно сразу подключить провода мама-мама (на фото в желтом овале), покрывать контакты и плату АЦП лаком будем когда все заработает.

Теперь откладываем нашу измерительную часть и собираем схеу на макетной плате:

Обратите внимание, справа – шина питания 5V (подаем из компьютера), слева – 4V

Они получаются за счет падения напряжения на диоде (обведен синим овалом) – устанавливается серебристым ободком влево!

Не перепутайте полярность электролитического конденсатора (минус обозначен белой полосой на корпусе).

Фоторезистор (в желтом кружочке) полярности не имеет – ему все-равно.

Да, и не забудьте вставить сим карту (предварительно нужно пополнить и отключить запрос пин-кода).

На фото я ее специально не дослал в держатель модуля SIM800L – сверху, контактами к себе, скосом в сторону буквы f макетной платы.

А теперь берем наши соединительные провода, и вперед “втыкать” я для удобства разложил провода в форме клевера:

Для начала соединяем питание: красный и коричневый провода с USB-TTL (“свисток” справа от макетной платы) на левую шину питания.

Далее соединяем землю левой и правой шин (черный провод снизу).

С правой шины подаем питание на arduino – коричневый и красный (gnd и raw), SIM800l.

Далее, подключаем провода передачи данных (желтый и оранжевый) между arduino и USB-TTL, arduino и SIM800l

Да, у Вас не будет столько проводов одинакового цвета, но у меня есть, поэтому для понятности и соблюдения цветовой дифференциации штанов сделал так.

Просто соединяйте в соответствии с фотографией.

Ок, осталось подключить синий провод выключения модуля GSM и шлейф от наших весов (слева).

Хочу акцентировать внимание – питание на HX711 берется со внутреннего стабилизатора Ардуино – сиреневый провод на VCC!

Вроде ничего сложного, но как по мне, на обычной макетной плате все было-бы несколько попроще (вид со стороны установки модулей):

А всего-то 16 точек пайки!

Теперь, если включить USB-TTL в порт компьютера(лучше через USB-удлинитель), и Ваш ардуино новый в целофане, то он заморгает светодиодом с частотой раз в секунду.

Модуль связи тоже начнет подмигивать, сигнализируя что у него все в порядке.

В первом приближении можно считать нашу систему собраной, приступим теперь к прошивке программы (в Ардуино они зовутся скетчами).

Буду описывать последовательность действий для Windows:

Во-первых, необходимо скачать и установить/распаковать программу Arduino IDE – текущая версия – 1.8.9, но я пользуюсь 1.6.4

Для простоты распаковываем архив в папку C:arduino-“номер Вашей версии”, внутри у нас будут папки /dist, drivers, examples, hardware, java, lib, libraries, reference, tools, а также исполняемый файл arduino (помимо прочих).

Содержимое (папка HX711-master) ложится в каталог C:arduino-“номер Вашей версии”libraries

Ну и конечно-же драйвер для USB-TTL с того-же github – из распакованного архива просто запускается инсталяха файлом SETUP.

Запускаем и настраиваем программу C:arduino-“номер Вашей версии”arduino

Заходим в пункт “Инструменты”-выбираем плату “Arduino Pro or Pro Mini” , процессор Atmega 328 3.3V 8 MHz , порт – номер кроме системного COM1 (он появляется после установки драйвера CH340 при подключенном USB-TTL адаптере).

Ок, копируем нижеследующий скетч (программу), и вставляем ее в окно Arduino IDE

В первой строке, в кавычках char phone_no[]=”+123456789012″; – вместо 123456789012 ставим свой номер телефона с кодом страны, на который будут приходить СМС.

Жмем кнопку проверить (над цифрой один в скриншоте выше) – если внизу (под тройкой на скрине) “Компиляция завершена” – то можем прошивать микроконтроллер.

Так, USB-TTL подключен к ARDUINO и компьютеру – приступаем:

Для начала, тренируемся нажимать красную(серебристую) кнопку микроконтроллера – это нужно будет сделать строго в определенный момент.

Есть? Жмем кнопку “Вгрузить” (над двоечкой на скриншоте), и внимательно смотрим на строку внизу интерфейса (под тройкой скрина).

Как только надпись “компиляция” сменится “загрузкой” – жмем красную кнопку (ресет) – если все ок – на USB-TTL адаптере радостно заморгают огоньки, а внизу интерфейса надпись “Вгрузили”

Пока мы ждем прихода тестовой СМС на телефон, расскажу как работает программа:

При первом включении система сверяет байты номер 500 и 501 EEPROM если они равны, значит калибровочные данные не записаны, и алгоритм переходит к разделу настройки.

То-же самое происходит, если при включении фоторезистор затенен (колпачком от авторучки/пальцем) – активируется режим сброса параметров.

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

На ардуино при этом начнет моргать встроенный светодиод пина 13.

Если сброс не происходит, светодиод просто загорается на 12 секунд.

После этого отправляется тестовая СМС с сообщением “INITIAL BOOT OK” , качеством приема GSM-сигнала и процентом заряда батареи.

Дальше, у нас работает прерывание по фотодатчику на втором пине (включена подтяжка плюса функцией pullup), обычно срабатывает на закате.

При этом снимаются показания тензодатчиков, вычисляется изменение веса с предыдущего срабатывания(первое число в строке после Hive) и от первого включения, проверяется напряжение батареи и эта информация отправляется в виде СМС:

Кстати, получили СМС? Поздравляю!

Возможно, мы почти закончили.

Теперь набираем в пластиковую тару воду и ставим на весы, после чего затеняем фоторезистор(на Ардуино загорится светодиод против вывода 13)

В идеале, нам придет СМС, с весом, соответствующим литражу.

Но возможны варианты:

    Если вес со знаком минус, тогда достаточно поменять местами провода A+ и А-.

Если вес не соответствует действительности, нужно корректировать строку word calibrate0=20880;
При больших показаниях, увеличиваем число 20880 во столько раз, во сколько измеренный вес больше реального, ну и наоборот.

Если в строке веса пришло nan nan (not a number) – неправильно подключены тензодатчики/обрыв провода.
Сопротивление одного плеча отключенного от всего отдельного датчика (красный-черный и черный-белый) должно составлять 1килоОм.

Надеюсь у Вас все получилось!

Помните, я обещал спасти планету от загрязнения старыми батареями? Время пришло 😉

Программа написана так ,что система постоянно находится в режиме сна, потребляя при этом около 4 миллиампер (или 2, если выковырять постоянно горящий на Ардуино светодиод зубочисткой)

Вроде и немного, но возьмем к примеру батарею от старой Nokia (BL-5C), емкостью 1020 мАч, допустим, она сильно подустала, до 600.

тогда 600/2 = 300ч/24=12.5 суток.

Откуда можно взять батареи еще?

Старые смартфоны, сломаные планшеты, там они широкие и плоские , но более емкие, и наконец батареи ноутбуков.

Если разобрать “сдохший” элемент компьютера, то там мы найдем минимум три батареи стандарта 18650!

Берем тестер, замеряем напряжение каждой, та что с наименьшим – несем в пункт сбора на утилизацию, остальные – очень еще послужат!

У меня две таких, емкость составляет около 1800мАч.

Откуда я узнал емкость? Все просто – есть куча измерителей в стиле вот такого:

Помимо возможности оценить емкость батареи, данный приборчик помогает мне выявить битые USB-шнуры, зарядки и порты, не “тянущие” по току.

Но мы отклонилились от темы.

Вот теперь, когда уже все работает, пришло время как минимум покрыть плату АЦП лаком/воском/парафином.

Ну и конечно-же, увековечить конструкцию с помощью паяльника, как я писал выше.

Будет-ли работать все на беспаечной макетной плате под открытым небом?

Да на любой плате незакрытая от осадков конструкция просуществует до первого дожя!

Вот почему выше писалось о прозрачном судке для продуктов (ведь нам нужно, чтобы фотоэлемент “видел” небо)!

Но если Вы все-же решились использовать систему не прибегая к пайке, весьма нелишним будет использование аэрозольной смазки XADO/WD40.

Что-же еще можно сделать на базе уже собраной системы?

В интернете есть множество Ардуино-сообществ и форумов, over 100500 примеров работы с разным оборудованием.

А самое главное, все это достаточно просто обьединяется в Ваши проэкты (если конечно не прогуливали информатику в школе 😉

Самое простое в данном случае – подключение экранчика и кнопок для просмотра веса а также датчика влажности/температуры.

Главное, помнить – в мире нет ничего невозможного! Есть только вещи к которым мы недостаточно стремимся!

Источники:

http://arduinoplus.ru/delaem-vesi-arduino/

http://digitrode.ru/computing-devices/mcu_cpu/1177-vesy-na-osnove-arduino-i-hx711-svoimi-rukami.html

http://beefree.xyz/?p=95

http://wiki.amperka.ru/diy:arduino

Ссылка на основную публикацию