Весы на 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

Читайте также:

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

  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. Сергей:

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

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

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