Макетный образец весов для ульев

В данной статье описана сборка макетного образца весов для ульев. Устройство измеряет вес четырех ульев по отдельности и выводит показания на Oled дисплей. Вся сборка происходит на макетной плате с использованием проводов Dupont. Поэтому их легко повторить. Данные весы являются переносными, то есть их не надо постоянно держать рядом с ульями. В статье не будет теории, ее достаточно на просторах интернета. Описывается сборка, настройка и практическое применение.

 

Описание

В качестве микроконтроллера устройства используется Arduino Nano. Скетчи разрабатывались в среде разработки Arduino IDE. Разработана два скетча
калибровочный
основной

В калибровочном скетче используется только библиотека <HX711.h>.

В основном скетче используются библиотеки: <Arduino.h>, <U8g2lib.h>, <EEPROM.h>, <HX711.h>, <GyverButton.h>, <microDS18B20.h>.

Калибровочный скетч необходим для определения двух коэффициентов измеряемой платформы
коэффициент смещения
коэффициент усиления

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

Платформа состоит из четырех тензодатчиков на 50 кг и платы АЦП HX711 24 бит. Плата АЦП HX711 соединяется по I2C с Arduino Nano с помощью USB провода. Максимально возможный измеряемый вес до 200 кг.

Измеренный вес и привес сохраняются в EEPROM. Эти показания можно посмотреть вне зависимости от подключения к платформе. Основной скетч также позволяет подключить датчик температуры DS18B20. Его показания также отображаются на экране и сохраняются в EEPROM. Добавлена эта функция для того, чтобы понимать при какой температуре произведены измерения, так как из за влияния температуры показания тензодатчиков начинают плавать. Но на моем опыте могу сказать, что для веса ульев погрешность показаний из за температуры не играет весомого значения. Я проводил измерения при 17 °C и при 7 °C. При разнице в 10 °C показания изменились примерно на 150 грамм. Не критично для ульев, которые весят по полсотни килограмм.

 

Сборка устройства

Приведена принципиальная схема из симуляции в Proteus. Файл симуляции в Proteus в закрепе.

 

Сборка происходит на макетной плате с использованием проводов Dupont. Устанавливаем Arduino Nano, Oled ssd1309 1,54 дюйма SPI (WEA012864AWAP3N00000), тактовые кнопки, и разъем USB. В качестве источника питания используем две высокотоковые батарейки ER14505M/S (AA) 3,6 В. Подсоединяем их последовательно для получения напряжения 7,2 В. Используем для этого закрытый отсек для двух батареек АА с выключателем. Провод питания отсека соединяем с выводом Vin Arduino. Кнопки подключены в режиме LOW_PULL через резисторы 10 кОм.

 

Сборка платформы

Платформа состоит из четырех полу-мостовых тензодатчиков до 50 кг и платы АЦП HX711 24 бит. Она в коробочке.

Тензодатчики крепятся на деревянное основание и фиксируются саморезами.

Тензодатчики соединяются пайкой между собой и к разъему P2 платы HX711 по данной схеме

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

К разъему P1 припаиваем USB провод. Распиновка следующая
GND – черный провод
VCC – красный провод
DT – зеленый провод
SCK – белый провод

 

В качестве HX711 используется китайская зеленая плата. Она может работать только от 5В. Рекомендую использовать красную плату с экраном. Она может работать от 2,7В. И как пишут пользователи ее показания меньше плавают при использовании с четырьмя полу-мостовыми тензодатчиками.

Тензодатчики необходимо располагать по углам улья. Желательно не устанавливать улей на тензодатчики, а устанавливать улей на основание из фанеры, а уже ее на тензодатчики.

 

Калибровка

Для правильного измерения необходимо провести калибровку платформы. Разработан калибровочный скетч.

Инструкции по калибровке:

— подключить платформу. Соединить провод USB от HX711 к разъему USB устройства. На платформе не должен быть установлен никакой вес. Это необходимо для определения коэффициента смещения.
— выставить флаг is_calibration = true. Это необходимо для калибровки. Для измерений веса необходимо выставить false.
— в скетче ввести эталонный вес измеряемого груза в граммах.
— подключить Arduino Nano к ПК, прошить калибровочным скетчем и включить монитор порта. Высветится коэффициент смещения.
— поставить измеряемый груз на платформу. И ввести в командной строке «y».
— скетч произведет расчет и выведет рассчитанный вес в граммах и коэффициент усиления.
— полученные в ходе калибровки коэффициент смещения и коэффициент усиления занести в основной скетч в параметры улья, который собираетесь измерять.

Данным скетчем можно не только калибровать, но измерять вес. Полезно для того, чтобы проверить работоспособность платформы. Регулируется режим флагом is_calibration.

 

Измерения

Платформа и устройство могут находится отдельно друг от друга. Платформа под ульем, а устройство, например, дома. Рекомендую на вилку провода USB надеть колпачок, так как он находится под ульем на улице. Измерения проводить по инструкции:
— подключить провод USB от HX711 к устройству. Включить устройство.
— выбрать режим «Измерение».
— кнопкой перебора выбрать измеряемый улей. Нажать кнопку «Выбор».
— Высветится в первой строке номер улья. Во второй строке вес улья в граммах. В третей строке привес улья в граммах, то есть разница между текущем измерением и предыдущим. Текущей вес сохраняется в EEPROM.
— для выхода из измерения нажать кнопку «Выбор».
— дальнейший просмотр показаний возможен при отключении от платформы. Для этого надо выбрать режим «Результаты».

 

На данной фотографии измерение улья, когда я на него ставил планшет весом 490 грамм. Как видите отображается привес в 489 грамм. Вполне приемлемая точность. Улей вместе с планшетом весит 74 кг.

 

На этой фотографии измерение другого улья. Как видно он весит 46,6 кг. Измерение проводилось буквально через минуту после предыдущего. Как видно привес меньше грамма. Это погрешность.

 

Стоимость устройства

Комплектующие покупались из местных магазинов. Из Китая было бы дешевле.

— Arduino Nano – 389 руб.
— USB разъем – 166 руб. за 3 шт.
— Тактовые кнопки с колпачком – 100 руб. за 2 шт.
— Oled ssd1309 1,54 дюйма SPI (WEA012864AWAP3N00000) – 1500 руб.
— Плата HX711 – 292 руб.
— Тензодатчики на 50 кг – 574 руб. за 4 шт.
— Батарейки ER14505M/S (AA) 3,6 В – 860 руб. за 2 шт.
— Отсек для батареек с выключателем – 86 руб.
— Датчик температуры DS18B20 – 330 руб.
— Резисторы 10 кОм и 4,7 кОм были в наличии
— USB провод был в наличии
— Макетные провода были в наличии
— Макетная плата была в наличии
— Деревянные основания были самостоятельно сделаны

Общая стоимость – 4297 руб.

Весы получились очень простыми, но со своими обязанностями справляются весьма точно.

Прикрепленные файлы

Scale — калибровочный скетч
Bee_Scale — основной скетч
Bee_Scale_Proteus — архив проекта симуляции в Proteus. В папке лежит файл компиляции Arduino IDE — Bee_Scale.ino.hex.

Видео работы

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Arduino Nano 1
Oled ssd1309 WEA012864AWAP3N00000 1
Плата АЦП HX711 1
Батарейка ER14505M/S (AA) 3,6 В 2
Резистор 10 кОм 2
Резистор 4.7 кОм 1
Тензодатчик 50 кг 4
Датчик температуры DS18B20 1
USB разъем 2.0 Тип A 1
USB провод 2.0 Тип A 1
Тактовые кнопки с колпачком 2
отсек для батареек с выключателем 1
Макетные провода Dupont 1
Макетная плата 1
Деревянные основания 4