Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 43

Тензодатчик с HX711 для построения своих весов и автоматизации процессов

Общие сведения:

Тензодатчики (типа «мост» и типа «полу-мост») и микросхема HX711 — связка, которая позволит создавать устройства для измерения веса или давления, оказываемого на поверхность датчика, а затем передавать эти показания (с высокой точностью) на плату Arduino.

Видео:

<center></center>

Спецификация:

Спецификация HX711

  • Разрядность АЦП: 24 бит;
  • Коэффициент усиления:
    • Вход А: 64 или 128;
    • Вход В: 32;
  • Частота измерений: 10/80 Гц;
  • Напряжение питания: 5В;
  • Потребляемый ток: до 10 мА;
  • Размеры: 34мм х 21мм;

Спецификация тензодатчиков мостовых

  • Максимальный вес: 1/5/10/20 кг;
  • Отверстия под винты: M4/M5 (подходит под винт с потайной головкой);
  • Размеры: 14мм х 14мм х 80.5мм;
539f32bb9541872aacbccff79e64744f.png

Спецификация тензодатчика полумостового

  • Максимальный вес: 50 кг;
  • Размеры: 34мм х 34мм х 9мм;

Подробнее о плате HX711:

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

Микросхема имеет 2 канала считывания показания счётчика: А и В:

  • Канал А имеет возможность выбора коэффициента усиления: 64 или 128.
  • Канал В имеет фиксированный коэффициент усиления, равный 32.

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

Подробнее о датчиках:

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

В основе своей конструкции имеют тонкоплёночные резисторы, которые изменяют своё сопротивление при деформации. 

Существует 2 версии данных датчиков:

  • 1 — те, в которых резисторы объединены в мост, подключённый непосредственно к АЦП, который фиксирует изменения значений резисторов. Датчики выполнены из алюминия, имеют форму бруска с 4 отверстиями на одной плоскости и особым сдвоенным отверстием на другой. При установке датчике в рабочее положение необходимо жёстко закрепить одну его сторону, а на вторую установить (при необходимости) платформу для завешивания грузов. Имеют на выходе из датчика 4 провода.

Схема устройства и подключения мостового датчика к микросхеме HX711:

51b9cee58da509c83c6fa1cef767da90.png
  • 2 — те, в которых резисторы объединены в полумост, подключаются между собой, чтобы образовать полный мост и, затем, подключаются к АЦП, который фиксирует изменения значений резисторов. Имеют на выходе из датчика 3 провода. Схема их устройства и подключения следующая:

Схема устройства и подключения полу-мостового датчика к микросхеме HX711:

Для 1 тензодатчика:

860170eb9e9d195332ad01c811a698ed.png

Для 4 тензодатчиков:

Обратите внимание на то, что если полученные значения имеют отрицательный знак, то вам следует поменять местами датчики, подключенные к выводам А+ и А —

Следует также отметить, что показания тензодатчиков зависят от температуры окружающей среды — при разных температурах показания могут отличаться. Помните это и используйте «тарирование» (обнуление значений датчика) каждый раз при резких перепадах температуры. Если же работа датчика предполагается в условиях перепада температур в известном диапазоне, то вы можете воспользоваться одним из датчиков температуры и создать таблицу зависимости калибровочного коэффициента (calibration_factor) от температуры.

Подключение:

Микросхема HX711

На плате есть два разъёма – P1 и P2, на которых имеются следующие обозначения:

Разъём P1

  • GND — земля;
  • VCC — питание 5В;
  • DT, SCK – информационные выводы;

Разъём P2

  • E– , E+  — питание тензорного моста;
  • A– , A+  — подключение канала А;
  • В– , В+  — подключение канала В;

Тензодатчик (мостовой)

У данного тензодатчика 4 выходных провода:

Провода тензодатчика Выводы микросхемы HX711
Красный провод E+
Чёрный провод E-
Зелёный провод A-
Белый провод A+

Тензодатчик (полумостовой)

У данного тензодатчика 3 выходных провода:

Провода тензодатчика Выводы микросхемы HX711
Красный провод E+
Чёрный провод E-
A+

В схему необходимо добавить делитель напряжения и выход подключить к плате HX711 (см. рисунок выше!):

Провода тензодатчика Выводы микросхемы HX711
Зелёный провод A-

HX711

Данная плата подключается к Arduino по 4 проводам:

Выводы микросхемы HX711 Выводы Arduino
GND GND
VCC 5V
DT любой цифровой вывод (указывается в скетче)
SCK

Подключение HX711 к Arduino можно осуществить одним из 2 способов:

  1. Напрямую к плате Arduino/Piranha UNO:
  2. К одному из шилдов для подключения:

Питание:

Примеры:

Калибровочный скетч для мостового датчика

Вывод значений веса с 1 мостового тензодатчика в монитор последовательного порта (после калибровки)

Вывод значений веса с 4 мостовых тензодатчиков в монитор последовательного порта (после калибровки)

Калибровочный скетч для полумостового датчика

Вывод значений веса с 1 полумостового тензодатчика в монитор последовательного порта (после калибровки)

Вывод значений веса с 4 полумостовых тензодатчиков, объединённых в мост в монитор последовательного порта (после калибровки)

Подключение библиотеки:

Функция begin();

  • Назначение: инициирование работы микросхемы;
  • Синтаксис: begin(ПАРАМЕТР_1, ПАРАМЕТР_2, ПАРАМЕТР_3);
  • Параметры:
    • Обязательные:
      • ПАРАМЕТР_1 — указание вывода Arduino, к которому подключен вывод DOUT микросхемы HX711;
      • ПАРАМЕТР_2 — указание вывода Arduino, к которому подключен вывод SCK микросхемы HX711;
    • Необязательный:
      • ПАРАМЕТР_3 — указание коэффициента усиления по входу: 32 (канал В), 64/128 (канал А). Если параметр не указан, будет установлено значение 128.
  • Возвращаемые значения: Нет;
  • Примечание:
    • Функцию необходимо вызвать до обращения к любым другим функциям библиотеки;
    • Функцию достаточно вызвать один раз в коде setup;
  • Пример:

Функция is_ready();

  • Назначение: проверка готовности АЦП к работе;
  • Синтаксис: is_ready();
  • Параметры: нет
  • Возвращаемые значения:
    • true — готов к работе / false — не готов;
  • Примечание: нет;
  • Пример:

Функция set_gain();

  • Назначение: установка коэффициента усиления;
  • Синтаксис: set_gain(ПАРАМЕТР);
  • Параметры: 
    • ПАРАМЕТР — значение коэффициента усиления: 32, 64, 128;
  • Возвращаемые значения: нет;
  • Примечание:
    • Для канала А это значения 64 или 128;
    • Для канала В это значение 32;
  • Пример:

Функция read();

  • Назначение: считывание «сырых» значений из АЦП;
  • Синтаксис: read();
  • Параметры: нет;
  • Возвращаемые значения: «сырое» значение из АЦП;
  • Примечание:
    • Можно указать как до функции set_scale(), так и после неё. Это влияет на конечный результат, так как в первом случае калибровочный коэффициент не учитывается;
  • Пример:

Функция read_average();

  • Назначение: запрос среднего значения веса из АЦП (в унциях);
  • Синтаксис: read_average(ПАРАМЕТР);
  • Параметры:
    • ПАРАМЕТР — количество измерений, взятых из АЦП, по которым вычисляется среднее значение;
  • Возвращаемые значения: среднее значение измерений из АЦП;
  • Примечание:
    • Можно указать как до функции set_scale(), так и после неё. Это влияет на конечный результат, так как в первом случае калибровочный коэффициент не учитывается;
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция get_value();

  • Назначение: запрос значения, скорректированного с учётом веса тары (в унциях);
  • Синтаксис: get_value(ПАРАМЕТР);
  • Параметры:
    • ПАРАМЕТР — количество измерений, взятых из АЦП, по которым вычисляется среднее значение;
  • Возвращаемые значения: значение веса с учётом тары;
  • Примечание:
    • Можно указать как до функции set_scale(), так и после неё. Это влияет на конечный результат, так как в первом случае калибровочный коэффициент не учитывается;
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция get_units();

  • Назначение: запрос значения, скорректированного с учётом веса тары и калибровочного коэффициента (в унциях);
  • Синтаксис: get_units(ПАРАМЕТР);
  • Параметры: 
    • ПАРАМЕТР — количество измерений, взятых из АЦП, по которым вычисляется среднее значение;
  • Возвращаемые значения: значение веса с учётом тары и калибровочного коэффициента;
  • Примечание:
    • Можно указать как до функции set_scale(), так и после неё. Это влияет на конечный результат, так как в первом случае калибровочный коэффициент не учитывается;
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция tare();

  • Назначение: запрос значения тары, который будет вычтен из конечного значения веса (в унциях);
  • Синтаксис: tare(ПАРАМЕТР);
  • Параметры: 
    • ПАРАМЕТР — количество измерений, взятых из АЦП, по которым вычисляется среднее значение;
  • Возвращаемые значения: значение веса тары;
  • Примечание:
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция set_scale();

  • Назначение: задание калибровочного коэффициента для перевода «сырых» значений АЦП в «удобочитаемые»;
  • Синтаксис: set_scale(ПАРАМЕТР);
  • Параметры: 
    • ПАРАМЕТР — значение калибровочного коэффициента;
  • Возвращаемые значения: нет;
  • Примечание:
  • Пример:

Функция get_scale();

  • Назначение: запрос значения установленного калибровочного коэффициента;
  • Синтаксис: get_scale();
  • Параметры: нет
  • Возвращаемые значения: значение калибровочного коэффициента;
  • Примечание: нет;
  • Пример:

Функция set_offset();

  • Назначение: задание веса тары «вручную» (в унциях);
  • Синтаксис: set_offset(ПАРАМЕТР);
  • Параметры: 
    • ПАРАМЕТР — значение веса тары (в унциях);
  • Возвращаемые значения: нет;
  • Примечание:
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция get_offset();

  • Назначение: запрос значения установленного веса тары (в унциях);
  • Синтаксис: get_offset();
  • Параметры: нет
  • Возвращаемые значения: значение веса тары;
  • Примечание:
    • Для перевода веса из унций в граммы, необходимо полученное значение умножить на 0.035274;
  • Пример:

Функция power_down();

  • Назначение: перевод модуля в спящий режим;
  • Синтаксис: power_down();
  • Параметры: нет
  • Возвращаемые значения: нет;
  • Примечание: нет;
  • Пример:

Функция power_up();

  • Синтаксис: power_up();
  • Параметры: нет
  • Возвращаемые значения: нет;
  • Примечание: нет;
  • Пример:
  • системы контроля и измерения веса;
  • концевые датчики, системы;

Ссылки:

  • Библиотека HX711;
  • Тензодатчик мостовой 1кг;
  • Тензодатчик мостовой 5кг;
  • Тензодатчик мостовой 10кг;
  • Тензодатчик мостовой 20кг;
  • Тензодатчик полумостовой 50кг;
  • Микросхема HX711;
  • DataSheet;
  • Цена: $3.41

Конечно, сейчас электронными весами никого не удивишь, их много, причем дешевых и сравнительно точных. Но иногда требуется узнать вес в своей поделке, или передать его куда-то для последующей обработки. Такие весы будут отличаться своей логикой. Либо, можно сделать весы с уникальным дизайном, например, ретро и т.п. Под катом описание одного из самых распространенных современных инструментов электронного измерения веса, пригодного для использования в поделках. Тензометрический датчик (тензодатчик; от лат. tensus — напряжённый) — датчик, преобразующий величину деформации в удобный для измерения сигнал (обычно электрический, чаще напряжение). Существует множество способов измерения деформаций: тензорезистивный, пьезоэлектрический, оптико-поляризационный, пьезорезистивный, волоконно-оптический, или простым считыванием показаний с линейки механического тензодатчика. Среди электронных тензодатчиков наибольшее распространение получили тензорезистивные датчики (именно такой используется в обозреваемом приборе). Тензорезистивный датчик обычно представляет собой специальную упругую конструкцию с закреплённым на ней тензорезистором и другими вспомогательными деталями. После калибровки, по изменению сопротивления тензорезистора можно вычислить степень деформации, которая будет пропорциональна силе, приложенной к конструкции. Сам датчик добрался без последствий в пупырчатом пакете. внутри в зип-локе датчик и плата считывания данных с него: Вынимаем содержимое: Данный датчик рассчитан на вес до 2х килограмм: В центре датчика имеется характерное отверстие: Соединение проводов с датчиком залито компаундом: Обращаться с ним следует аккуратно, у меня один из проводков отвалился в ходе сооружения конструкции, пришлось расковыривать компаунд и припаиваться. Проводки имеют длину порядка 22 см: Сам датчик длиной порядка 8 см: Для крепления датчика и измеряющего механизма имеются отверстия с резьбой: Резьба разная на части крепления датчика и измерительного механизма (М5 и М4): Больший диаметр отверстий предусмотрен со стороны крепления датчика (неподвижной части):

Вес датчика веса 🙂 29 грамм: Платка подключения была в отдельном пакетике вместе со штырьками: Основным элементом платы является микросхема HX711, это 24 битный аналого-цифровой преобразователь специализированный для весов, к которому подключается тензодатчик. Для проверки работоспособности датчика требуется собрать некую конструкцию. Дизайнерские вещи в этот раз мы делать не будем, а используем набор для детского творчества: Данный набор содержит все необходимое, для создания минималистичных весов:
Получились не самые симпатичные дизайнерские весы, но нам на этом этапе будет вполне достаточно. Как я и писал ранее, красный проводок в ходе построения просто отвалился, пришлось произвести оперативный ремонт паяльником и малярным скотчем: К плате я припаял гребенку и проводки от датчика: Подключение датчика производится так: DT и SCK можно подключить к любым цифровым пинам Arduino, я использовал для тестов Arduino Nano (SCK к выводу 2, DT к выводу 3), получилось как-то так: Для работы с датчиком существует простая библиотека HX711.Загрузим пример, идущий с библиотекой, поправив на свои пины Данный пример при запуске устанавливает текущий вес нулевым и далее в цикле считывает все что прибавилось и выдает в консоль результат измерений. Конечно же, он выдал ерунду, так как датчик нуждается в калибровке. Для калибровки требуется предмет вес которого известен, я использовал это: Далее согласно README к библиотеке пишем нехитрый код калибровки:Код калибровки weight_of_standard известный вес нашего предмета. Программа позволяет вычислить поправочный коэффициент, который будет использоваться при взвешивании, в нашем случае, он равен 989. Пробуем измерять и сравнивать с «эталонными весами». Остаток свечки:
Малярный скотч:
Стружка для чистки паяльника с подставкой:
Таким образом, предмет обзора оказался рабочим, выдает то, что требуется. Если более тщательно подойти к калибровке и обеспечить большую жесткость конструкции «весов», то можно добиться неплохой точности, которой во многих случаях будет достаточно. Следует сказать, что взвешивающий элемент такого типа существует на разные диапазоны веса, и вполне можно подобрать подходящий для конкретной задачи. На основе этого датчика можно сделать красивые весы с уникальным дизайном. Можно передавать данные взвешивания на сервер посредством WIFI или Ethernet. Можно автоматизировать какие-то процессы — например наливать напитки по весу (в том числе и из нескольких ингредиентов. Конкретно этот датчик покупался для автоматизации самогоноварения — отсечь головы от основного продукта в автоматическом режиме. Спасибо всем, кто дочитал этот обзор до конца, надеюсь кому-то данная информация окажется полезной.

В этой статье мы рассмотрим модуль hx711 Arduino, примером использования которого и будет создание весов на Ардуино.

Описание модуля

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

Это могут быть как автоматизированные системы, теплица, так и полноценные электронные весы, которые можно сделать своими руками.

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

hx711-arduino-780x444.jpg

Под Ардуино существует десяток разнообразных модулей и чипов, способных расширить функционал МК. И условно их можно разделить на три группы:

  1. Датчики и подобные им модули. В этой группе находятся все чипы, которые предназначены для измерения любых параметров окружающей среды и трансформации их в электронный сигнал. Именно датчики позволяют измерять вес, засечь звуковые волны при хлопке или уловить удар о поверхность. Без них большая часть проектов и систем в современном мире просто не могли бы существовать. Так что на деле их можно сравнить с трансформаторами внешних сигналов, которые они переводят во внутренние.
  2. Чипы и микроконтроллеры, позволяющие расширить стандартные возможности Ардуино. Могут, например, добавить немного постоянной или оперативной памяти, позволить подключать различные источники питания параллельным соединением. В большей своей части влияют на программную часть системы, в то время, как датчики и переходники напрямую модифицируют аппаратную. Могут быть использованы в том случае, если нет желания спаивать несколько МК, но ресурсов для выполнения вычислений не хватает.
  3. Переходники и вспомогательные средства для усиления сигнала. Именно к ним относится hx711, который усиливает сигнал от датчика веса и переводит его в цифровой, который может воспринимать Ардуино. Между предыдущим и этим пунктом есть небольшая грань, которую зачастую стирают и совмещают их в один класс. Тем не менее, если «расширители» влияют именно на программную часть, то разнообразные переходники позволяют усовершенствовать аппаратную.

Встречаются и комбинированные разновидности, например, слот под флешку, для расширения постоянной памяти стандартным физическим носителем.

Итак, мы разобрались, что hx711 – это 24-х битный АЦП, необходимый для адаптации тензодатчиков и весов в Ардуино. Однако подходит он лишь для простых систем Ардуино, где необходимы точные показание с тех же тензодатчиков.

plata-711.jpg

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

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

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

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

Характеристики и распиновка 711 модуля

В самом чипе имеется несколько разъемов для подключения датчиков и МК, и для подачи питания, соответственно. J1 является разъемом для подключения датчиков, а вот E+ и Е необходимы для подключения их питания, в то же время, JP2 необходим для подсоединения чипа к микроконтроллеру Ардуино и последующей подачи питания через него.

Также присутствует несколько пинов, нужных для измерения различных данных системы: от напряжения, подаваемого на прибор, до частоты передачи данных. И, конечно, в плате присутствует интерфейс, распределённый на IIC или I2C. Всё это стоит изучить прежде, чем приступать к непосредственной пайке.

По А каналу можно установить коэффициенты усиления сигнала от датчиков, их имеется две разновидности – в 64 и в 128 раз. Это позволит измерять десятые доли килограммов, которые попадают на тензодатчики. Сам чип способен потреблять энергию не только непосредственно из Ардуино, но и из внешних источников через дополнительно подключенное питание.

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

raspinovka711-780x488.jpg
Распиновка HX711

Пример использования модуля

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

  1. Весы через hx711, о которых мы и поговорим ниже. Здесь система достаточно простая: состоит из датчика, МК и самого чипа. Логика построения кода и самого проекта также незамысловата, достаточно всё это подключить последовательно и в правильном порядке. Естественно, ко всему вышеперечисленному, стоит докупить интерфейс, который будет выводить полученные данные. Или же специальный блютуз модуль, позволяющий подключить систему к смартфону и смотреть всю информацию уже непосредственно на нём. Всё зависит от того, каким проект вы видите сами. Также, для большего усиления сигнала, если потребуется, можно последователь подсоединять несколько чипов.
  2. Датчики на различных устройствах, от 3Д принтера, до специальных приспособлений для тестирования продукции. Чип выдаёт данные именно о давлении, и уже через формулы в коде вы их преобразовываете в килограммы веса. Соответственно, если нужно измерить силу, достаточно применить соответствующие алгоритмы перевода единиц, и у вас на руках будет уже совершенно другое устройство. Сферы его применения зависят исключительно от фантазии инженера, но чаще всего такие датчики используют именно в 3Д-принтерах, по понятным причинам.

Как сделать Ардуино весы на hx711

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

vesi-780x479.jpg

Это может быть блютуз или wi-fi модуль, который будет передавать всё на другое устройство. Но можно использовать и обычный LED-экран. Однако, в таком случае, учитывайте, что вам необходимо будет написать немало строчек кода и для того, чтобы этот экран научить выводить нужные вам числа, а в некоторых ситуациях и буквы.

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

Выше на картинке вы можете увидеть примерный вариант устройства весов на Arduino Uno. В комплекте с модулем HX711 идет тензорезистор. На фото к нему прикреплены два небольших куска оргстекла — как основа и как опора для измеряемого предмета.

Схема устройства самая простая:

shema-1.jpg

Осталось добавить код. Но прежде — скачайте библиотеку для нашего модуля HX711 по ссылке — https://github.com/bogde/HX711.

После того как библиотека скачана мы можем добавить наш код. Сначала код программы для калибровки:

/*   Setup your scale and start the sketch WITHOUT a weight on the scale   Once readings are displayed place the weight on the scale   Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight   Arduino pin 6 -> HX711 CLK   Arduino pin 5 -> HX711 DOUT   Arduino pin 5V -> HX711 VCC   Arduino pin GND -> HX711 GND   */    #include "HX711.h"    HX711 scale(A1, A0);   // DT, CLK    float calibration_factor = -3.7; // this calibration factor is adjusted according to my load cell  float units;  float ounces;    void setup() {    Serial.begin(9600);    Serial.println("HX711 calibration sketch");    Serial.println("Remove all weight from scale");    Serial.println("After readings begin, place known weight on scale");    Serial.println("Press + or a to increase calibration factor");    Serial.println("Press - or z to decrease calibration factor");      scale.set_scale();    scale.tare();  //Reset the scale to 0      long zero_factor = scale.read_average(); //Get a baseline reading    Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.    Serial.println(zero_factor);  }    void loop() {      scale.set_scale(calibration_factor); //Adjust to this calibration factor      Serial.print("Reading: ");    units = scale.get_units(), 10;    if (units < 0)    {      units = 0.00;    }    ounces = units * 0.035274;    Serial.print(ounces);    Serial.print(" grams");     Serial.print(" calibration_factor: ");    Serial.print(calibration_factor);    Serial.println();      if(Serial.available())    {      char temp = Serial.read();      if(temp == '+' || temp == 'a')        calibration_factor += 1;      else if(temp == '-' || temp == 'z')        calibration_factor -= 1;    }  }

И сам код для весов ниже.

В коде добавлен перевод единицы измерения веса из унций в граммы.

#include "HX711.h"    HX711 scale(A1, A0);                              float calibration_factor = -3.7;          // калибровка!  float units;  float ounces;    void setup() {    Serial.begin(9600);     scale.set_scale();    scale.tare();                              //Сбрасываем на 0    scale.set_scale(calibration_factor);       //Применяем калибровку  }    void loop() {       Serial.print("Reading: ");        for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10;   // усредняем показания считав 10 раз     units / 10;                                                   // делим на 10         ounces = units * 0.035274;                                    // переводим унции в граммы                  Serial.print(ounces);                                          // отправляем в монитор порта    Serial.print(" grams");      Serial.println();   }

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

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

Используемые источники:

  • https://wiki.iarduino.ru/page/hx_711_with_tenzo/
  • https://mysku.ru/blog/aliexpress/59749.html
  • https://arduinoplus.ru/hx711-arduino/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации