Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Электронные весы на базе HX711

На сегодняшний день в продаже имеются необходимые инструменты, чтобы буквально «на коленке» собрать свои электронные весы: микросхема АЦП HX711 (продается на AliExpress), специально предназначенная для применения в весах разрядностью 24 бита и датчик массы, представляющий собой мостовой или полумостовой измеритель на базе тензорезисторов в качестве чувствительного элемента.

Если при подборе элементной базы микросхемы HX711 представлены практически одними и теми же модулями, то датчики массы можно подобрать различной конфигурации. Главный параметр таких датчиков – это измеряемая масса (1 кг, 3 кг, 5 кг, 50 кг и так далее), в зависимости от этого параметра датчики могут иметь так же различную форму и исполнение. По сути, датчики массы измеряют приложенное усилие относительно плоскости датчика – вес тела, но при помощи несложных физических формул можно вычислить массу тела. А раз мы измеряем силу, с которой тело давит на датчик, то и сфера применения подобных схем резко увеличивается. В самом простом случае – это обычные весы, для которых масса тела будет пропорциональна данным, получаемым от АЦП. В более сложных случаях при помощи схем на основе данной элементной базы можно измерять, например, скорость ветра (сила, с которой ветер давит на опору датчика, будет пропорциональна размеру опоры и скорости ветра) или регулировать прикладываемую силу к какому-либо предмету относительно получаемых данных.

При измерении массы тела данным методом стоит учитывать при разработке некоторые нюансы. Как уже отмечалось, датчик регистрирует вес тела, а вес тела это масса, умноженная на ускорение свободно падения или силу тяжести (~9,8 м/c2). Таким образом, видим, что измеренная масса тела будет зависеть от значения силы тяжести планеты, что значит, что в разных точках Земли, а также с увеличением высоты (расстояния от поверхности земли) сила тяжести будет изменяться, что повлияет на то, что масса тела в различных условиях может быть в небольшой степени различна. Хотя масса тела неизменна, но способ измерения связан этими физическими явлениями, поэтому это может являться причинами погрешности измерений кроме основных причин.

Как же мы все-таки измеряем массу (вес) тела этим датчиком, с виду напоминающим железную болванку?

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

Тензорезистор – это резистор, сопротивление которого изменяется в зависимости от его деформации.

С этим понятно – есть некий резистор (обычно это гибкая пластинка – пленочный тензорезистор, на который напылены проводящие элементы), который при изгибе, растяжении и прочих деформациях изменяет свое сопротивление. На датчике массы тензорезистор располагается под слоем белого защитного полимера. Основание датчика – алюминиевый брусок с отверстиями для крепления и большим отверстием для задания модуля упругости бруска таким образом, чтобы тензорезистор улавливал упругую деформацию этого бруска в заданном диапазоне измерения массы. Итак, собирая воедино способность тензорезистора изменять свое сопротивление при его деформации и способность металла бруска при упругой деформации растягиваться или сжиматься (деформироваться) при воздействии силы, получаем датчик, который измеряет деформацию при приложенной силе к этому датчику. А так как модуль упругости в самом распространенном варианте имеет линейный характер (закон Гука), получаем вполне точный датчик, с помощью которого можно измерять усилие, приложенное к датчику в заданной плоскости, и, следовательно, вес тела (и массу), прикладывая груз перпендикулярно датчика.

Направление усилия (приложения груза) указывается на самом датчике, там же указывается и вес, на который рассчитан этот датчик. Схема измерителя на этом датчике является полумостовой – один тензорезистор сверху, второй снизу, при приложении усилия один тензорезистор растягивается, второй сжимается. Схема способна регистрировать вес до сотой грамма, но в этом диапазоне очень много шумов, поэтому схема вполне стабильно способна регистрировать вес до десятых долей грамма. Однако, это применительно к датчику FZ0967 на 5 кг, если взять датчик на 1 кг, то теоретически минимально стабильный порог будет меньше. И аналогично при применении датчиков на больший вес минимально стабильный порог увеличится. Таким образом, при выборе датчика стоит учитывать сферу применения для получения максимально точного результата.

Для измерения массы различных тел был сделан измерительный столик из подручных материалов, а именно старой коробки DVD дисков и самих дисков (или подкладных болванок).

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

Для работы с такими датчиками была специально разработана микросхема АЦП HX711.

На базе этой микросхемы в поднебесной делается несколько видов модулей: копеечные модули без экрана и чуть дороже с экранированием элементов. Модуль с экранированием теоретически должен давать более стабильный результат измерений.

Основные параметры микросхемы АЦП HX711:

  • Два входных канала для измерения
  • Регулируемый коэффициент усиления 32, 64, 128
  • Простой цифровой интерфейс, не требующий программирования (так гласит даташит, хотя по большому счету программирование параметров присутствует)
  • Регулируемое количество выборок 10 или 80
  • Разрядность АЦП 24 бита
  • Фильтр на 50 и 60 Гц питания
  • Потребление тока до 1,5 мА
  • Напряжение питания от 2,7 до 5,5 вольт
  • Диапазон рабочих температур от минус 40 до плюс 85 градусов Цельсия
  • Знаковые выходные данные от 800000h до 7FFFFFh

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

После того, как получим данные от АЦП необходимо учесть два нюанса. Первое, значение представляет собой чистые данные АЦП, то есть количество отсчетов относительно приложенного веса. Что бы не забивать себе голову пересчетами количества отсчетов в значение веса или массы, вспоминаем, что все зависимости у нас линейные, а значит пропорциональные, поэтому нам нужен всего один общий коэффициент для этого пересчета. Для моего экземпляра коэффициент равен 430 при пересчете в единицы грамм. Как это узнать? Есть два способа – строгий математический, с поиском различных справочных данных по материалу из которого изготовлен датчик, поиска параметров тензорезисторов для выведения зависимости модуля упругости материала в данной геометрической конфигурации к сопротивлению тензорезисторов при упругой деформации датчика. Второй способ не самый точный, но крайне быстрый и простой. Необходимо просто замерить сколько отсчетов АЦП приходится на единицу приложенной массы. Для этого необходимо учесть второй нюанс – сама конструкция имеет некоторый вес и перед измерениями его нужно просто убрать – вычесть и получить «ноль» на весах. Далее поставить на весы гирьку определенной известной массы и получить некоторое значение АЦП. Это количество отсчетов будет приходится на единицу массы на весах:

К=(количество отсчетов с массой гирьки – количество отсчетов без приложенной массы) / масса гирьки

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

Для сборки весов используем микроконтроллер STM32.

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

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

Как видим, схема показывает весьма неплохие результаты точности измерения (небольшое видео находится в конце статьи). Стоит помнить также о том, что датчик рассчитанный на измерение массы до 200 кг не даст такой точности до сотых долей грамма как датчик, рассчитанный на измерение массы до 100 г. Поэтому при выборе датчика обязательно нужно учитывать сферу применения весов для получения наиболее оптимальных результатов.

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

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
IC1 МК STM32
STM32F103C8
1 Поиск в магазине ОтронВ блокнот
HG1 LCD-дисплейILI93411 Поиск в магазине ОтронВ блокнот
MOD1 Модуль АЦПHX7111 Поиск в магазине ОтронВ блокнот
MOD2 ТензодатчикFZ09671 5 кгПоиск в магазине ОтронВ блокнот
VR1 Линейный регулятор
AMS1117-3.3
1 Поиск в магазине ОтронВ блокнот
Z1 Кварц8 МГц1 Поиск в магазине ОтронВ блокнот
S1, S2 Кнопка тактовая2 Поиск в магазине ОтронВ блокнот
HL1 Светодиод1 Поиск в магазине ОтронВ блокнот
R1 Резистор
100 Ом
1 Поиск в магазине ОтронВ блокнот
R2-R4 Резистор
10 кОм
3 Поиск в магазине ОтронВ блокнот
R5 Резистор
390 Ом
1 Поиск в магазине ОтронВ блокнот
C1, C2 Конденсатор22 пФ2 Поиск в магазине ОтронВ блокнот
C3-C7, C9 Конденсатор100 нФ6 Поиск в магазине ОтронВ блокнот
C8 Электролитический конденсатор220 мкФ1 Поиск в магазине ОтронВ блокнот
C10 Электролитический конденсатор100 мкФ1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

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

Теги:

Опубликована: Изменена: 02.11.2016 0 7
Я собрал 0 7
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.5 Проголосовало: 7 чел.

Комментарии (31) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
tim5777 #
А нет версии с LCD экраном 1602?
Ответить
0
Михаил #
Тоже есть необходимость собрать весы на 1000, 5000 и 10000 кг. Как себя поведет эта плата при большом весе?
Ответить
+1
jarinov #
Хорошая статья, автор молодчик
Ответить
0

[Автор]
Gauss #
Спасибо, надеюсь будет многим полезна, буду так же рад каким-нибудь интересным мыслям
Ответить
0
Hork112 #
Такой столик весов наверняка не выдержит 5 кг?
Ответить
0
андрей #
Можно использовать блин от HDD, чтобы выдержало
Ответить
0

[Автор]
Gauss #
Тоже вариант, более жестко будет
Ответить
0

[Автор]
Gauss #
Прогибается под весом 0,5 - 1 кг, конечно, это же слабенький пластик, зато из подручных средств, которые должны быть у каждого
Ответить
0
dev #
О способах вычисления коэффициента: именно калибровка является более точной, это же очевидно в силу вышесказанного про g.
Ответить
0

[Автор]
Gauss #
Да, но при этом настолько точно откалибровать большая проблема - должен быть образцовый груз, взвешенный на образцовых весах в той же точке земного пространства,
но как ни крути, погрешность всегда была и останется, от нее избавиться невозможно, можно лишь минимализировать
Ответить
0
dev #
Да, нужен образцовый груз. Можно купить готовый; а можно взять любую железяку и взвесить ее на более точный весах, но когда угодно и где угодно. А вот весы уже калибровать по месту.
Ответить
0

[Автор]
Gauss #
А как тогда образцовый груз в разных точках земли будет оставаться постоянно одинаковой массы? В таком случае измерения будут производится относительно образцового груза, даже если его реальная масса в данной точке немного отличается. В общем случае усредняя данную погрешность весы калибруются один раз точно и пренебрегают некоторыми погрешностями (учитывая, что они могут быть незначительными в общей сфере применения) при измерении. А вот в каких-то специальных случаях для каких-то специфических измерений это уже действительно может быть существенно.
Ответить
+1
dev #
Масса тела не меняется, на то она и масса. Меняется вес - это произведение массы тела на g в данной точке. Поэтому калибровка в данной точке и решает проблему.
Ответить
0

[Автор]
Gauss #
Извиняюсь, имел ввиду вес.
Еще я имел ввиду, что для калибровки по месту образцового груза не достаточно, так как его образцовый вес измерен в другом месте скорее всего. Нужно использовать образцовые весы для точного определения веса образцового груза по месту для калибровки других весов по месту. Это по толку если. И все равно останется вероятность погрешности. Не удивительно, что такой работой занимаются целые лаборатории.
А вообще действительно существует эталон, по которому принято считать единицы измерения, поэтому этой погрешностью пренебрегают или усредняют при изготовлении большинства весов.
Получается, что решить проблему не получится, а лишь в той или иной степени уменьшить ее.
Ответить
0
андрей #
А чем программируется этот чудо микроконтроллер? Вроде бы не указывается
Ответить
0

[Автор]
Gauss #
Пользуюсь ST-Link V2
Ответить
0
mixaDD #
Кто подскажет как можно сделать процесс измерения менее инерционным?
Это китайская плата так долго делает преобразования?
Ответить
0

[Автор]
Gauss #
Для стабильности результатов идет усреднение нескольких измерений перед выводом на экран, а количество выборок в секунду может быть или 10, или 80 - это не медленно
Ответить
0
Алексей #
Можно, пожалуйста, подробнее про программирование контроллера? В какой среде, что зачем делается. В папке "12" куча файлов, а описания что и зачем нет.
Ответить
+1

[Автор]
Gauss #
Это совсем другая история, как пользоваться компилятором каждый раз удваивать объем статьи нет смысла
Ответить
0
Artos5 #
Уважаемый автор!
Скажите, у вашего экземпляра тоже наблюдается термонестабильность hx711?
У меня, если начинаю плату греть к примеру до 40 град. Вес уезжает грамм на 100 . Тензодатчик я применяю на 200кг. Дискрет 10грамм. Для меня такой результат не годится.
У меня модуль в экране.
Ответить
0

[Автор]
Gauss #
Я не грел ничего специально, у меня такого эффекта не было в комнатных условиях
Ответить
0
Artos5 #
Пальцами прикасаюсь к экрану (начинаю греть темп.тела) вес через 10 сек. Начинает потихоньку уплывать..
Ответить
0

[Автор]
Gauss #
Какому экрану?
Ответить
0
Artos5 #
У меня плата та что дороже (с экранированной коробкой) вот когда пальцем начинаю греть , начинает вес уплывать :)
Ответить
0

[Автор]
Gauss #
Может стоит попробовать без экрана плату и сравнить, я не пользовался экранированными платами, а если греть феном, не трогая плату, а не пальцами?
Ответить
0
Artos5 #
Без экрана еще хуже. Если феном греть то вообще на килограммы уплывает .
Я вот что думаю:
Что возможно проблема из за питания от usb . Попробую на днях запитать от "хороших" +5В.
Ответить
0

[Автор]
Gauss #
Да и конденсаторов по питанию добавить можно попробовать
Ответить
0
SerGO #
Коллеги, я правильно понимаю, что точность измерения массы груза очень зависит от расположения груза на измерительной чашке?
Если поставить на противоположной стороне от крепления, то можно ли увидеть отрицательные показания массы?
Ответить
0
Иван #
А на атмеге16 собрать если? Можно? И есть схемы принципиальные функциональные?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Паяльник с регулировкой температуры Мини гравер 125 Ватт
вверх