Причиной написания данного поста является желание разобраться в работе 24-битного модуля дельта-сигма преобразователя АЦП на базе микросхемы Hx711. Сам преобразователь собирается как готовый модуль по схеме подключения, рекомендованной производителем (????).
Комментарии о работе этого модуля есть на этом сайте в блоге Андрея Герасименко.
«АЦП HX711 от 3,3В — не верьте китайской документации и не только…» .
Для тестирования данного модуля была собрана схема на базе микроконтроллера ATmega16, модуля АЦП, двухстрочного ЖКИ BC1602 на базе контроллера HD44780 и четырех кнопок.
В качестве среды разработки использовалась Code Vision AVR, версия 1.25.9 professional, AVR Studio 4, версия 4.09.0.338, USB-программатор AVR JTAG, позволяющий не только программировать кристалл, но и пошагово контролировать, при необходимости, выполнение программа в микроконтроллере практически в реальном времени.
В качестве источника сигнала для АЦП был выбран тензорезистор китайского производства с максимальным пределом взвешивания 40 кг.
и стандартный блок установки датчика.
Следует отметить, что использование «родных» установочных узлов позволяет получить все постулируемые выходные данные от тензорезистора Single Point модели CZL A6. Таким образом, тензорезисторы типа Single Point при использовании типоразмера, указанного в технических характеристиках платформы для места взвешивания груза, устроены так, что сигнал дисбаланса тензорезистора не зависит от положения груза на платформе.
Именно МЕХАНИЧЕСКИЕ свойства корпуса датчика: геометрические размеры, расположение клеевых тензопленок, особенно вырез «косточка» в середине корпуса датчика, размер платформы, влияют на крутящий момент, прикладываемый к датчику.
сенсорный орган, определяющий эту самую независимость.
Ну и последний источник – «ГОСТ 29329-92. Весы для статического взвешивания.
Общие технические требования».
Этот ГОСТ определяет свойства весоизмерительных приборов.
Также важна работа с офисной программой EXCEL. Я использую EXCEL 2003 XP3. Это позволяет быстро обрабатывать результаты по готовым методикам.
Надеюсь, вся информация, необходимая для повторения моих экспериментов, предоставлена в полном объеме.
Теперь сама программа, которую я использую для работы с модулем.
Программа ориентирована на ПРОВЕРКУ и вряд ли напрямую, т.е.
без изменений, может быть использована для каких-то прикладных нужд. Хотя, как говорится, «это смотря где применять».
Сама программа представляет собой блочную структуру.
Состоит из 4 подпрограмм и пятой основной.
Первая подпрограмма: ReadCount, считывает данные из модуля АЦП и формирует их в переменную Count. CreatInput генерирует входной массив данных преобразования из 32 значений.
CreatOutput генерирует массив выходных данных преобразования АЦП путем организации скользящего среднего с размером окна 16 данных.
Keys, простая программа для реакции на нажатие кнопок.
Ну вот и все.
Переменные в основном все глобальные, тем более, что разрешены мегаресурсы.
Основная программа начинается с создания входного массива CreatInput, затем фильтрует входные данные, используя метод скользящего среднего.
Выбор этого фильтра основан на следующем.
При работе программы данные на дисплее меняют свое значение в достаточно большом диапазоне.
Я взял значения АЦП при нулевой силе на платформе и свел их в таблицу.
Значения были получены с помощью USB-отладчика JATAG в среде AVR Studio.
В файле Excel «Сбор данных» на вкладке «Скользящее среднее» приведен результат фильтрации колеблющихся входных данных InputBuff (диапазон колебаний 436 единиц) с окном усреднения 3,12,16 интервалов.
Результат показан в ячейках A37–A40. Из чего видно, что наиболее эффективной в данном случае является скользящая средняя с окном в 16 выборок.
Построенные графики наглядно это показывают. Приведенные данные берутся с работающего контроллера, остановленного в момент перехода к процедуре индикации данных.
Наглядные примеры такого сбора данных показаны на картинках.
Никакие методы фильтрации данных с использованием различных цифровых фильтров не могли НИКАКИМ образом «укротить» входные колебания.
Если посмотреть на график входных данных, то распределением Гаусса оно даже и не пахнет. Что подтверждает пользователь Nikopol_86 в блоге «.
не верьте китайской документации»
Никополь_86 5 февраля 2019 в 09:27 0
Честно говоря, у него достаточно шума по всем коэффициентам.Я провел небольшое исследование по изучению плотности распределения выходных кодов АЦП при закороченных входных цепях, так вот разброс до 1000 1_5В и абсолютно нет нормального закона распределения, что говорит о том, что либо есть проблема с разводка платы, или с АЦП, или все вместе.
Еще я заметил, что у него тоже нет температурной стабилизации, а заявленный диапазон рабочих температур не соответствует действительности.
Хотя бы потому, что при подключении к АЦП тензодатчика массой 5 кг изменение температуры в помещении на 1 градус увеличивает показания на 2 грамма, а если нагреть микросхему просто пальцем, то показания падают до 5-.
7 грамм.
В общем, я пришел к выводу, что это устройство можно использовать только для изготовления дозатора кошачьего корма, где точности одной трамвайной остановки будет более чем достаточно.
Но нормальные решения, увы, не выходят дешево, поскольку приходится использовать качественные АЦП с АО или Т1. Как видим, выводы подтвердились.
Правильно, так и есть: jushabrauser 4 февраля 2019 г.
, 12:52 С соотношением сигнал/шум < 1, this will never help. Даже при мостовой схеме.
Следовательно, в нормальных условиях (без специальной математики и/или схемотехники) как минимум 8 младших битов выдают бессмыслицу (скорее всего).
24 честных китайских бита за 350 рублей? Не смеши мои тапочки.
Если само железо врет, что с этим делать? Здесь не поможет даже нелинейный фильтр 3-го порядка, потому что исходные данные не торт. Именно отсюда мне хотелось посмотреть, на что способен этот модуль в составе весов.
Поиск в сети проблем с джиттером последних бит АЦП привел на форум kazus.ru/forums/showthread.phpЭt=105320&page=4 .
Здесь идет целая дискуссия о стабилизации показаний.
Однако ни один из предложенных математических методов не «успокоил» полученные мной входные данные.
Из самой аппаратуры для стабилизации показаний было внесено: соединение цифровой и аналоговой массы, а также замыкание входа Б на землю.
Использовалось полное экранирование и модуль питался от аккумулятора 6В (с последующим стабилизатором 7805) отдельно от цепей контроллера.
Результата нет, входные данные качаются.
Итак, «чистые» 24 бита получить невозможно, и причина здесь мне кажется в некачественной схеме.
Это означает, что вам необходимо обрезать полученный диапазон преобразования.
Именно для этого в программе ReadCount введена линия, делящая данные на 100. 100 — это чуть меньше 2 в 8-й степени.
Что.
Преобразование AD составляет 16 бит. Однако даже это ограничение не сделало показания надежно стабильными.
И причина здесь в свойствах тензорезистора.
Итак, после применения процесса калибровки (связывания значения АЦП и веса на платформе) вес указывается в граммах.
Он отображает 500 граммов как число 500, один кг как 1000. Цена деления равна 1 грамму.
Те.
получаем 40 000 делений с датчика массой 40 кг.
По техническим данным на тензорезистор мы можем получить от датчика только 3000 делений (символ С3 в названии датчика).
Следовательно, цена деления должна составлять (40000/3000) = 13,3 грамма.
Однако по ГОСТ 29329 весовая метрология не оперирует цифрой 3. Следует использовать следующие цифры: 2.1.3 Величину поверочного деления (д), цены деления шкалы (г) и разрешения отсчета (дд) в единицах массы следует выбирать из следующего диапазона: 1Х10а; 2Х10а; 5X10a, где a — положительное, отрицательное целое число или ноль.
Что.
Цена деления данного датчика, гарантированная производителем, составляет 10 грамм.
То есть выходной формат должен быть 0,0x кг.
где х=1,2,3,….
0. Попробуем сделать деление цены 5 грамм.
Соответствующие действия программы приведены в листинге.
После ТАКОГО ограничения мы «снимаем» с датчика 40000/5=8000 делений, что в 2,6 раза больше допустимого значения.
После этих допущений полученные весы работают достаточно стабильно.
Вышеприведенное замечание по поводу примененного тензодатчика и его «разрешения» не позволяет однозначно утверждать, что данный модуль не может производить преобразование в 24 бита.
Однако я проверял работу этого датчика с разрешением 1 грамм, на другом устройстве, с другим АЦП.
На этом устройстве работу датчика и конвертацию можно считать удовлетворительной, так как колебание веса составило не более 3 грамм.
Что не позволяет использовать этот АЦП в коммерции? Ну и первое и самое главное — это зависимость измерения от температуры.
Во-вторых, использование встроенных в ATMEGA операций деления и умножения, особенно для 8-бит, затрудняет обеспечение калибровки весов во всем весовом диапазоне в этих условиях.
Также следует учитывать, что программа никак не реагирует на перегрузку датчика.
Как преодолеть эти неудобства.
Сначала вставьте датчик температуры и отрегулируйте показания веса в зависимости от значения температуры.
Это довольно сложно.
«Дешевле» — ввести возможность калибровки, под разные нагрузки и в зависимости от погрешности, вызванной температурой, калибровать с использованием гири, используемой в работе.
Второе сложнее.
Замените процедуру умножения и деления табличными операциями и операциями сдвига.
Я считаю, что это лучший способ использовать этот модуль в практике построения весов.
Для полного описания требований к созданию программы для весов необходимо использовать «Метрологическую (аттестационную) программу поверки весов», прилагаемую к каждому весу.
Заключение: Создание весов на базе м/с Hx711 возможно при условии соблюдения всех метрологических требований к весам.
Введение поправок на температурную зависимость конверсии необходимо предусмотреть в отдельной процедуре.
Использование модуля с разрешением более 16 бит требует отдельного подхода и контроля.
Теги: #Программирование микроконтроллеров #АЦП hx711 #электронные весы #цифровые фильтры #свойства тензодатчиков #резисторные датчики веса #ATMega16 #калибровка весов
-
Как Программисту Переехать В Нидерланды?
19 Oct, 24 -
Сталкер. 2 — Bethesda Продолжает Проект
19 Oct, 24 -
Tinywm — Еще Один Хранитель Webmoney
19 Oct, 24 -
Сколько Гаджетов В Московском Метро?
19 Oct, 24