Электронные весы на HX711 | Все своими руками






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

Рубрика: Измерения

Электронные весы своими руками

В данной статье будет рассмотрена схема самодельных электронных весов на PIC16F628A, модуле АЦП с микросхемой HX711 и тензодатчиком. В прошлой статье «Микросхема HX711 с микроконтроллером PIC» я приводил подпрограмму взаимодействия модуля HX711 с PIC16F628A. А еще ранее на сайте была размещена статья так же посвященная электронным весам –«Электронные весы с тензодатчиком».
Сейчас рассмотрим практический вариант применение данного модуля в электронных весах. Схема весов приведена на рисунке 1.


Электронные весы своими руками

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

Тензодатчик

Данный тензодатчик, примененный в схеме весов, представляет собой резистивный мост, величина сопротивления резисторов в котором меняется в зависимости от их механической деформации. В идеальном случае на выходе моста в нормальных условиях, (на резисторы не действуют ни какие силы), должен быть нулевой потенциал. То есть мост должен находиться в сбалансированном состоянии. У купленных мной тензодатчиках, на Aliexpress, на положительном выводе – белый провод, присутствовало напряжения отрицательной полярности. В таком случае можно просто нагрузить датчик таким весом, при котором напряжение сигнала моста выйдет в положительную область и программно сделать это напряжение нулевым. В качестве этого груза может выступить весовая платформа с соответствующим весом. Можно пойти другим путем. Так как электронный мост представляет собой симметричную структуру, то можно просто поменять местами провода выходного сигнала, т.е. зеленый провод поменять с белым. А усилие прикладывать в противоположную сторону относительно указателя на самом тензодатчике. При проведении экспериментов и отладке программы я так и поступил.
Про модуль HX711 я писать не буду, потому что в Сети на эту тему и так много всякого материала. Скажу лишь одно, чувствительность микросхемы одноименного модуля очень высокая. А это говорит о том, что особое внимание необходимо уделить качеству питающего напряжения, качеству монтажа, защите схемы от воздействия внешних электромагнитных помех. Иначе устойчивых показаний измеряемой величины вам не добиться.

На фото ниже показана работа устройства без взвешивания и с взвешиванием гирьки в сто грамм.

Электронные весы своими руками
Электронные весы своими руками

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

Теперь немного о программе микроконтроллера. После всей классической процедуры инициализации регистров начинается программа считывания данных из памяти микросхемы АЦП DA1. За ней следует подпрограмма коррекции нуля. Эта программа активизируется каждый раз при включении питания. Я не стал вводить в схему дополнительной кнопки для этой опции. Естественно, если вы включите весы с установленной на них тарой, то ее вес тоже будет вычитаться из общих значений и у вас на индикаторе будет вес нетто. Так как все датчики невозможно сделать с одинаковыми параметрами, значит, у разных датчиков будет разный наклон преобразовательной характеристики — зависимость уровня выходного сигнала от величины приложенного усилия. Исходя из этого, нам надо будет найти коэффициент, на который мы будем умножать числовое значение данных полученных с АЦП. В моем случае этот коэффициент равен 1,1295. Как его определить. Включаете весы, ставите контрольный груз, например гирьку в 100г. Считываете показания индикатора, у меня они были равны 88,5347… Потом 100г делите на 88,5347г и получаете нужный коэффициент. Программно мы будет умножать естественно на число без запятой – 11295. Т.е. коэффициент, умноженный на 10000. После умножения обратно делить на 10000, полученное произведение мы не будем, а просто после преобразования двоичного числа в двоично-десятичное, четыре младших разряда не будем выводить на индикацию, что и соответствует делению. В шестнадцатеричном коде это число выглядит: старший байт – 2С, младший – 1F. Ниже приведено окно Disassembly Listing, здесь помечены адреса регистров, в которых лежит этот коэффициент.

Disassembly Listing

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

Программа Ic-prog

В программ К-150, все на том же месте.

Программа K150

После программы умножения идут программы преобразования двоичного числа в двоично-десятичное и вывод информации на индикатор.
На этом у меня все. Удачи! К.В.Ю.

Скачать проект


Просмотров:5 396
13 комментариев




13 комментариев к “Электронные весы на HX711”

  • Григорий
    18 октября, 2018, 1:28

    А если вот этот модуль на 20 кг,его можно использовать с этими весами?

  • admin
    18 октября, 2018, 14:08

    Привет, Григорий, можно, только вычислить нужный тебе масштабирующий коэффициент.

  • Григорий
    18 октября, 2018, 14:51

    Спасибо,выпишу буду собирать.

  • Виктор
    12 января, 2019, 15:55

    R4 должен быть 1К, R5-10К-подстроечный,иначе нет индикации. Прошивка рабочая? У меня измеритель не заработал, мигают тёмные квадраты. Проверил всё и не знаю на что грешить?

  • Виктор
    12 января, 2019, 19:55

    В схеме небольшие неточности:

    R4 должен быть 1К, R5-7,5-10К-подстроечный,иначе нет индикации;

    DD1 кон.10 должен подключатся на LCD кон.6;

    DD1 кон.11 должен подключатся на LCD кон.4.

    Спасибо за проект.

  • admin
    15 января, 2019, 9:58

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

  • Леонид
    24 декабря, 2019, 15:02

    Спасибо автору за статью. Есть вопрос. Откуда возникла необходимость в установке резисторов R1, R2 7.5k? Насколько критичны для стабильности показаний наличие этих резисторов. В доступных данных по схеме включения НХ711 этих резисторов нет, может автор обладает дополнительной информацией...

  • admin
    25 декабря, 2019, 16:11

    Привет, Леонид. Эти резисторы — подтягивающие для цифровых шин SCK и Dout. Через них подается логическая единица на эти шины для общения с микроконтроллером. Эти резисторы являются еще и нагрузкой для выходных транзисторов. R1 — нагрузка выходного транзистора вывода RA4 микроконтроллера, а R2 — для выходного транзистора шины Dout микросхемы НХ711. Их номиналы не критичны от 4,7 до 8,2ком. Естественно на показания они непосредственно влияния не оказывают.

  • Леонид
    26 декабря, 2019, 22:06

    Спасибо за оперативный ответ. Приятно удивлен. Если я правильно понял, наличие данных резисторов вызвана особенностью портов PIC контроллеров. В своей работе пользуюсь ATMEL контроллерами, в частности для Hx711 mega 16. Там нет необходимости подтягивать порты физически. Это можно сделать программно. Но на стабильности показаний это не сказывается,... к сожалению.

  • Леонид
    26 января, 2020, 10:10

    Статья об этом китайском «чуде» действительно поучительна. Я здесь позанимался и... давайте подробности через почту ritm_0@mail.ru/

  • Виктор
    20 марта, 2020, 11:25

    Можно узнать в какой программе строилась данная схема с такими микроконтроллерами?

  • admin
    20 марта, 2020, 20:22

    Привет, Виктор. Среда разработки MPLAB, язык — ассемблер.

  • Леонид
    27 марта, 2020, 19:51

    Здесь есть интересное дополнение к статье admin habr.com/ru/post/487066/ и продолжение habr.com/ru/post/491990/.

Оставить комментарий