Весы на Arduino, HX711 и тензодатчика

Датчик веса (тензодатчик) является очень важным элементом во многих проектах Arduino. Измеряя вес, можно отследить массу, а затем выполнить некоторое действие, например можно сделать дозатор жидкости или произвести расчет массы меда в улий за лето и так далее. В статье расскажу как с помощью Arduino UNO, платы HX711 и тензодатчика собрать весы.

Технические параметры HX711:

► АЦП собран на микросхеме: HX711;
► Разрядность АЦП: 24-бит;
► Коэффициент усиления канала A: 64 или 128;
► Коэффициент усиления канала B: 32;
► Скорость измерений: 10 измерений в секунду (Гц) или 80 измерений в секунду (Гц);
► Напряжение питания: 2,6 – 5,5 В;
► Потребляемый ток: <10 мА;
► Дифференциальное входное напряжение: ±40мВ;
► Размеры: 38 х 21 х 10 мм;
► Вес: 3 г.

Общие сведенья об HX711

Микросхема HX711 производится кампанией «Avia Semiconductors» и представляет собой аналого-цифровой преобразователь (АЦП) с частотой дискретизации 24 бита и встроенным операционным усилителем. Мультиплексор позволяет выбрать один из двух доступных входных каналов. Канал А имеет программируемый выбор усиления, который может быть 64 или 128. Канал B работает с заданным коэффициентом усиления 32.
Встроенный стабилизатор напряжения встроен в микросхему HX711, что позволяет работать без внешнего стабилизатора. Так же, на вход синхронизации может подаваться любой импульсный сигнал от внешнего источника, однако АЦП позволяет работать от встроенного генератора.

На плате есть два разъема JP1 и JP2, которые имеют следующие обозначения:

Назначение контактов, разъема JP1:
E+, E- —  источник питания;
A-, A+ — дифференциальный вход канала A;
B-, B+ — дифференциальный вход канала B.

Назначение контактов, разъема JP2:
VCC, GND — источник питания;
DT, SCK — информационные шины.

Общие сведенья об тензодатчиках

Существуют несколько видов тензодатчиков: пневматические (газовые), гидравлические (жидкостные) и резистивные (тензометрические), в статье расскажу о резистивных тензодатчике.
Резистивный тензодатчик содержит тензометрические датчик, который изменяет свое сопротивление при воздействии силы. Сам датчик плоский и имеет небольшие размеры, его помещают между пластинами, когда на них действует сила датчик деформируется, следствие чего меняется его сопротивление. Это значение очень маленькое и микроконтроллеру очень трудно измерить показания, поэтому тензодатчики подключают в мостовую схему (так называемую мост Уитстона).

Суть заключается в том, что если мы имеем одинаковое сопротивление на всех тензодатчиках (1 кОм), то ток не проходит через центр моста и это называют балансировка моста. Но если какой либо из тензодатчиков испытывает давление, то изменится сопротивление. Это приведет к дисбалансу моста, и появится напряжение между точками 1 и 2.

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

Схему подключения можно посмотреть ниже:

Второй вариант, датчик содержит один тензодатчик и собран виде делителя напряжения (полумост), для подключения к HX711 необходимо объединить несколько и собрать мостовую схему, это позволяет увеличить измеряемый вес (например взять четыре датчика по 50 кг, получим 200 кг). Датчик выполнен из алюминия в виде квадрата, в центре находится выступающая часть с тензодатчиком. При установке датчика, необходимо закрепить боковые стенки, а центральная часть должна свободно прогибаться.

Схема подключения, полумост с дополнительными резисторами:

Схема подключения двух тензодатчика:

Схема подключения четырех тензодатчика:

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

Подключение тензодатчика к Arduino

Необходимые детали:
► Arduino UNO x 1 шт.
► Тензодатчик для весов до 50 кг x 4 шт.
► Модуль 24-битного АЦП/ЦАП для тензодатчиков на HX711 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Описание:
В примере покажу как подключить четыре тензодатчика на 50 кг к Arduino UNO, полученные данные будем отправлять в последовательный порт.

Подключение:
Первым делом подключаем четыре тензодатчика к плате HX711, для этого согласно схеме ниже, из четырех датчиков собираем мостовую схему и соединяем провода E+ и E-, а затем A+ и A+. Теперь осталось подключить HX711 к Arduino, для этого подключаем Vcc и GND от HX711 к выводам 5В и GND на Arduino, затем подключаем вывод DT от HX711 к 2 на Arduino и вывод SCK к 3 на Arduino, схема собрана. Для удобства приведу схему подключения ниже.

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

Установка библиотек:
Для работы с модулем необходимо установить библиотеку «HX711», для этого, перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «HX711», найдите библиотеку «HX711 by Rob Tillaart» и установите данную библиотеку.

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

 Скачать скетч

Открываем мониторинг порта, после сообщения «You have 10 seconds to set your known load» кладем эталонный предмет на весы и ждем 10 секунд, следующим сообщении получим калибровочный коэффициент, в моем случаи это -0.89.

Программа расчета веса:
Все данные для расчета веса готовы, указываем в параметре «calibration_factor» коэффициент полученный выше и загружаем скетч в Arduino.

 Скачать скетч

Открываем мониторинг порта и устанавливаем любой предмет

Вот и все в следующей статье расскажу о проекте расчета веса в улии и отправка всех данных раз в сутки по смс.

Ссылки
  Библиотека HX711
 Документация на HX711

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Комплект проводов DuPont, 2,54 мм, 20 см
  Тензодатчик для весов до 50 кг
  Модуль 24-битного АЦП/ЦАП для тензодатчиков на HX711

Вам может также понравиться...

комментариев 70

  1. Михаил:

    Не подскажете, такая ситуация, загружаю программу калибровки, кладу предмет, но вместо калибровочного фактора — Пустота. То есть пишет calibration factor: , но само значение не показывает. Делал по Вашему алгоритму. Схема с четырьмя тензодатчиками по 50 кг. У меня вопросы: нуждается ли плата HX711 в какой-нибудь прошивке осле покупки, и ещё, как я понял, в этой схеме дополнительные резисторы не нужны? На этом мои размышления о причине зашли в тупик. Пробовал загружать программа расчета веса, показывает 2-3 измерения с неправильными (очевидно) значениями, а потом останавливается. Я просто думал, что должно быть +- непрерывный процесс взвешивания. Что я никак не могу увидеть?

    • Сергей:

      Здравствуйте, проверьте подключение и самое главное, центр датчика должен быть свободным, то-есть цент должен свободно ходить под грузом.

  2. Михаил:

    Здравствуйте, показания веса просто колеблются от 2 до 120 г, при условии, что лежит груз сильно тяжелее. Причём на изменение груза не реагирует никак. Просто значения постепенно растут, потом также плавно падают, чтобы снова постепенно вырасти. И всё. Можете указать на ошибку?

  3. Егор:

    ну.. и где «Вот и все в следующей статье расскажу о проекте расчета веса в улии и отправка всех данных раз в сутки по смс.»

    Где статья!?

  4. Сергей:

    Отправил

    • Олег:

      Добрый день. Отправьте и мне пожалуйста. Самая лучшая статья! Как пчеловоду — очень интересно продолжение

    • Василий:

      Добрый день, прошу отправьте и мне с отправкой смс с данными

  5. Николай:

    Добрый день.
    Собрал схему на 4х полумостовых тензодатчиках до 50кг.
    При калибровке показало calibration factor : 0.01 его и указал во второй части скетча (это норм цифры?)
    Но потом показания «пляшут»: при стандартном весе 1150гр показания 1238гр до 1834гр
    Если всё убрать тоже не спокойно: от -31,75гр до 490гр
    Сборку проверил, скетч весь просмотрел (местами знаю наизусть уже) подскажите пожалуйста куда еще смотреть? Быть может есть вариант проверки самих дачиков?

  6. Сергей:

    Буду признателен за продолжение статьи в почту. Спасибо
    Калибровка — используется одна реперная точка? А если для точности нужно 2 или 3, как их можно запрограммировать?

  7. Сергей:

    Цвет текста статьи надо сделать ещё светлее. В таком цвете текст ещё с трудом, но читается.

  8. Александр:

    Здравствуйте, очень хотелось бы получить информацию по следующей статье (об отправке данных раз в сутки)!

  9. Александр:

    Здравствуйте. Хотелось бы прочесть следующую статью на эту тему. Где можно посмотреть?

  10. Здравствуйте, Сергей! Вы написали, что » в следующей статье расскажу о проекте расчета веса в улии и отправка всех данных раз в сутки по смс.» , а когда выйдет эта статья и где можно посмотреть (почитать)? Я собрал, но есть вопросы и хотел бы почитать о вашей версии.

  11. Евгений:

    Добрый день.
    Буду очень благодарен если скинете продолжение статьи и мне на почту.
    Спасибо!

  12. Артемий:

    Здравствуйте!
    Так же хотелось бы прочесть следующую статью на эту тему.
    Спасибо!

  13. Евгений:

    Добрый день.
    Можете и мне сбросить на почту продолжения статьи?
    Спасибо.

  14. Здравствуйте! Скиньте пожалуйста и мне информацию о проекте расчета веса в улии и отправка всех данных раз в сутки по смс.

  15. Владимир:

    Сергей, здравствуйте!
    Если не сложно, скиньте, пожалуйста, на почту свою статью о проекте расчета веса в улье и отправка всех данных раз в сутки по смс.
    Заранее благодарен.

  16. Евгений:

    Добрый день
    Пробую по диджитал, вообще считывать не начинает, просто пустой монитор. Скорость одинаковая
    И по уликам интересно тоже очень

  17. Марина:

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

  18. Владимир:

    Ошибка в строчке 23. Должно быть:
    units += scale.get_units(), 10;

    Кроме того переменная units должна обнуляться перед входом в цикл 10 измерений.

  19. Денис:

    Добрый вечер можно мне скинуть скетч пасечных весов. Спасибо.

  20. Дмитрий:

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

  21. рашит:

    Пожалуйста опубликуй те дальнейшую доработку пасечных весов

  22. Ваче:

    hx711 неточный. на ad7799 точнее работает. в инете (в vk например) опубликовал схему и инструкцию. тут фотки не выкладываются

  23. Павел:

    Покажите пример подключения двух мостов, на входы А и на входы В.

    • Анатолий Трембач:

      Сергей, добрый день.
      Можете скинуть мне на почту тоже? Очень надо, я пчеловод))

  24. Артем:

    Здравствуйте, можете мне тоже статью отправить на почту?

  25. Вячеслав Александрович Челединов:

    Здравствуйте! я начинающий пчеловод и меня очень заинтересовала ваша статья! Скиньте, пожалуйста, продолжение статьи, очень интересно!

  26. Вячеслав:

    Сергей,добрый день .Будьте скиньте пожалуйста мне на почту статью весы для улья.С уважением Вячеслав.

  27. Егор:

    Здравствуйте!
    Почему-то схема вообще не работает, значения полностью нулевые, схему перепроверял очень много раз, если кто сталкивался — расскажите, пожалуйста! Уже больше месяца бьюсь, и ничего((((
    P.S. тоже хотел бы увидеть следующий проект, вдруг с ним что-то получится. Заранее спасибо

  28. Максим:

    Здравствуйте. не могли бы вы скинуть статью про gsm весы? спасибо.

  29. Максим:

    Здраствуйте! очень интересная статья! не могли бы вы выслать продолжение про gsm?

  30. Денис:

    Сергей,добрый день .Cкиньте пожалуйста мне на почту статью весы для улья.Заранее Спасибо.

  31. Андрей:

    Здраствуйте! очень интересная статья! не могли бы вы выслать продолжение про gsm?

  32. Александр:

    Здравствуйте . скиньте и мне продолжение. Я только заказал комлектующие, хочу сделать умный улей. Я пчеловод.

  33. Гульчира Габдулловна Яруллина:

    Здравствуйте ! Скинте и мне продолжение !

  34. Вячеслав:

    Здравствуйте, можете мне тоже статью про смс отправить на почту?

  35. Иван:

    Здравствуйте, можно пожалуйста тоже продолжение статьи на тему подключения к улья с gsm. Почта Korotchenko.Ivan@yandex.ru

  36. Виктор:

    Здравствуйте. Возможно ли подключать несколько весовых терминалов (для дозаторов) к одной АРДУИНО считывать показания каждого и отправлять в порт каждый под своим номером или для каждого терминала своя АРДУИНО

  37. Дмитрий:

    Здравствуйте, можно пожалуйста тоже продолжение статьи на тему подключения к улья с gsm. Почта mahbyachelo@yandex.ru.
    И не подскажите сколько можно подключить HX711 к одному модулю.

  38. Роман:

    Добрый день. Пожалуйста пришлите статью про взвешивание ульев и отправка результатов по смс. Оплачу.

  39. Евгений:

    Добрый день! Скажите а как правильно подключить 4 шт тензодатчика с 4мя проводками, чтобы сделать платформенные весы. И еще такой вопрос, сама же платформа на которую будут помещяться груз тоде весит какой-то вес, выбирать нужно тензодатчики нужно из расчета веса платформы в том числе же?

    к примеру платформа весит 10 кг, значит датчики нужно брать 4 шт минимум по 20 кг\шт?

  40. Загрубин Вячеслав:

    Сергей, добрый день .Cкиньте пожалуйста мне на почту статью весы с смс для улья. Заранее благодарен.

  41. Пчеловод:

    Здравствуйте! Можете мне тоже отправить статью про вес в ульях?

  42. Владимир:

    Доброго. Очень бы пригодилась статья Ваша про весы с СМС. Скидывайте. Благодарю.

  43. Глеб:

    Добрый день! собрал данную систему полностью по статье уже много раз.
    1-10 попытки все выдает не корректно показания скачут 500-2500 хотя груз 800
    10-15 попытки после замены АЦП HX711 ( грешил что плохо припаял ножки или перегрел плату) значения все так же скачут но с меньшим диапазоном 700-1100
    15-30 прочитал кучу статей в итоге поставил радиатор охлаждения на АЦП HX711 и так же начал подавать питание через AC/DC адаптер все так же точных данных не получил. Калибровочный коэффициент скачет от -0.12 до -0.36. данные на выходе так же скачут 700-1100.
    Уже даже не знаю что делать, очень нужна ваша помощь.

  44. Дмитрий:

    Народ, а у кого-нибудь это вообще работает?
    Ну для начала нет у меня под рукой Ардуино, делаю на ESP8266. Разные порты пробовал. Но это не важно.
    Возможно для ESP нужна другая библиотека? Не факт, но сталкивался с таким.
    Во первых все время разное калибровочное число.
    Во вторых ну скажем взвесил я себя, 92кг написал, но потом в 0 не возвращается.
    Использую остатки от весов LUMME LU-1307. Ну не могли же тензодатчики сдохнуть?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *