20.02.2021

Весы на HX711 с дисплеем TM1637

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

    За основу был взят тензометрический датчик веса с платой специализированного 24bit АЦП HX711. В ходе экспериментов и изучении информации по готовым платом с данным АЦП, была найдена статья - АЦП HX711 от 3.3V — не верьте китайской документации и не только, в которой были описаны основные проблемы китайских зеленых плат, которые были ранее приобретены.

    После прочтения той статьи я доработал плату, а именно:
    - заменил резисторы по входу на указанные в даташите 100Ом;
  - заменил резисторы в делителе, для изменения опорного напряжения (как в статье) для обеспечения уровня опорного напряжения в раене 3-4В (но при питании от источника 5В это можно не делать);
    - ну и самое главное - перемычка, соединяющая общий провод выхода с реальным общим (так как про него забыли, и схема работала через диоды защиты в микросхеме, что не дает нам никакой стабильности показаний);
    - ну и на всякий случай завернул плату в слой каптонового скотча и слой медной фольги, для экранирования.

    Основой данных весов я выбрал плату Arduino Nano v3.0, за свою миниатюрность и порт для прошивки (который я вывел наружу корпуса).

    Схему я не рисовал, так как она состоит из нескольких проводов, и всё подключается по документации к каждой из плат.
    Коротко о подключении к плате Arduino:
    - A0 (PC0) - TM1637 Clock
    - A1 (PC1) - TM1637 Data

    - D3 (PD3) - HX711 SCK
    - D4 (PD4) - HX711 Data

    - D2 (PD2) - Key - GND (обязательно ставим блокировочный конденсатор на 0,1мкФ, и при необходимости при наличии больших помех - подтяжку 5,1кОм на +5В).

    В роли дисплея я использовал светодиодный семисегментный Китайский дисплей на TM1637 на 6 символов. Программу сосответственно писал на BascomAVR для минимизации времени разработки.

    Вся контсрукция запросто поместилась в корпус GAINTA G304. В последней версии для избавления от проблем с точным пропиливанием окна под дисплей - было решено сделать накладку из нержавейки, вырезанную на лазерной резке.

    Для питания был применен китайский миниатюрный источник 3W 5V 0,6A PLA03B/C-05.

    Коротко опрограмме:
    - для управления в данных весах используется одна кнопка, основной задачей которой является устоновка "0";
    - для борьбы с шумами и плавающими показаниями был применен Фильтр Калмана;
    - для калибровки используется стандартный алгоритм с установкой нуля без груза, и калибровка по номинальному грузу конкретного датчика.

    Калибровка запускается удержанием кновки при включении питания, далее всё производится по подсказкам на дисплее (с большими паузами).

    Для изменения калибровочного веса в самом начале программы есть область с Константами, в которой необходимо поменять эти 3 строки (указаны значения на 1кг):
Const CCW = 1000                     'Вес для калибровки (грамм)
Const MCW = "  1.000"              'Сообщение с весом калибровки (6 разрядов)
Const MCWOk = "-1.000-"        'Сообщение процесса калибровки (6 разрядов)
    В принципе на этом всё. Собираем в кучу, прошиваем, пользуемся. Все програмные решения находятся в архиве с проектом.

    Прект BascomAVR, даташит, рисунок панели: Scales_HX711.zip

Комментариев нет:

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