krom23 писал(а):Не поделитесь задумкой, для чего два канала?
Я ссылку уже давал, повторю её
http://forum.easyelectronics.ru/viewtop....p321030 , процитирую оттуда сообщение:
Все можно сделать несколько проще, если не пытаться возбуждать точным значением тока. Достаточно просто взять более или менее стабильный источник напряжения (например опорник через повторитель), и запитать им связку из RTD и референсного резистора. Двумя каналами АЦП измеряем падение там и там, и строим простое отношение, из которого, зная точное сопротивление референсного резистора, получаем точное значение сопротивления датчика.
Плюсы - не надо париться напряжением возбуждения, строго говоря оно вообще может быть любым. Желательно подобрать такое, чтобы падение на резисторах было как раз в диапазоне АЦП. Убираются ошибки источника тока. Убираются ошибки АЦП, такие как дрифт и нелинейность (если сопротивление датчика и сопротивление референсного резистора одинаковы).
Для простоты можно взять любой достаточно быстрый АЦП с как минимум двумя каналами, лучше дифференциальный. В идеале - два полностью синхронных канала, но если переключение будет достаточно быстрым, то тоже ничего страшного.
Ток в подобной схеме достаточно большой, так что особенно париться с фильтрацией на входе не надо. Однако между дифференциальными входами не мешает поставить по конденсатору нанофарад на десять, и посадить их на землю также через конденсаторы по нанофараду. Частота оцифровки - не менее 500 Гц, после оцифровки фильтр на 50 Гц. Усреднение, и будет вам щасте.
И прилагаю свой вариант схемки подключения Pt100 к HX711.
Тестирование этой схемы ещё не окончено, как закончу – опишу результаты.
Резистор Rref – «опорный», выделяемое на нём напряжение будет измеряться каналом А с усилением х64 (+/-40мВ). Напряжение с Pt100 измеряется каналом В с усилением х32 (+/-80мВ). В FLProg, упрощенно это будет выглядеть так: c пользовательского блока оцифрованные значения с А и В поступят на математический блок деления и значение Pt100 будет равно: Pt100 = B/A, далее калибровка (ноль и диапазон).
Как уже писали
http://forum.easyelectronics.ru/viewtop....p321030 в таком включении не надо источника опорного напряжения. И я надеюсь, что не надо будет прецизионных резисторов =10кОм, а будет достаточно использование равных по сопротивлению между собой резисторов -> измерил из одной ленты ЧИП-резисторы, были равны между собою в пределах 1%. Также бывают счетверённые ЧИП резисторы (их много в «материнках»).
------------------------------------------------------------------------------
kot55 писал(а):Пробовал проверить или я чего то не понимаю..... Тензодатчики не как не реагируют на вес. В сом порту плывет 1 0.000 кг. А при копировании скетча в ардуино 1.6.11 возникает ошибка
Судя по приведённому коду – ошибка не из моего пользовательского блока, а встроенных блоков для добавления «кг» в строку. У меня в ардуино 1.6.3 - ошибок нет. Попробуйте этот пример – должно быть всё тоже самое, кроме индикации «кг» и аварийных значений. И проверьте, Вы правильно указали в блоке НХ711 выводы Ардуинки, к которым подключен модуль НХ711?
Добавлено (23.10.2016, 05:26)
---------------------------------------------
****************************************************************************************
Почему то не добавляется новое сообщение, а присоединяется...... , очень неудобно...
****************************************************************************************
Наконец то, сделал блок с двумя выходами (канал А и канал В). Может кому ни будь и сгодиться…
Судя по буржуйским форумам, некоторые пользователи – подключают по 2 тензодатчика на платку (по одному на каждый канал) и уже отдельные данные с каждого датчика обрабатывают, затем объединяют и выводят на индикацию.
Возможны также варианты, когда используют, например, 6 тензодатчиков и сигнал с них подают на индивидуальный модуль АЦП. Такой вариант удобен при больших расстояниях от тензомоста, в этом случае платку с НХ711 располагают рядом с тензодатчиком и уже «цифровой» сигнал «пускают» на весовой терминал, т.е. такой вариант более помехоустойчив. Для такого варианта (когда используется несколько платок с НХ711 и у них объединены вывода SCK) есть ардуиновская библиотека
https://github.com/compugician/HX711-multi .
У НХ711 при переключении каналов обнаружился один существенны недостаток – нужно достаточно долго ждать, пока не появятся «нормальные» данные (параметр из DataSheet "Output settling time" ("Время установления данных") = 400ms, при RATE (pin15) = 0 или равно 50ms, при RATE (pin15) = DVDD).
Поэтому, для уменьшения времени обработки блока в одном цикле программы, я в своём пользовательском блоке (с двумя выходами) реализован следующий алгоритм опроса НХ711:
- в каждом новом цикле опроса блока считывается только один канал и только один раз (расчётное время одного опроса блока (преобразования АЦП) = 100ms, при RATE (pin15) = 0 или 12,5ms при RATE (pin15) = DVDD)
- первые 4 цикла опроса блока - "пустые" считывания канала А
- 5 цикл - считывание канала А с суммированием (если на входе "N_Read" >1)
- 6..9 циклы - "пустые" считывания канала В
- 10 цикл - считывание канала В с суммированием (если на входе "N_Read" >1), масштабирование и вывод результатов измерения на выхода
- далее циклы повторяются сначала
При использовании блоков НХ711 следует учесть, что если в программе, используются критичные по времени выполнения задачи, то могут возникнуть проблемы с этими задачами, т.к. пока происходит ожидание ответа от НХ711 (появление лог. «0» на выходе DOUT, после окончания преобразования), контроллер занят и основной цикл не выполняется. Для уменьшения влияния на ход выполнения других задач, желательно блок включать по таймеру (вход «En»).
Для того, чтобы ещё меньше «зависеть» от НХ711, нужно сделать новые пользовательские блоки, на внешних прерываниях, т.е. при возникновении прерывания от лог. «0» на выходе DOUT. Надеюсь, кто-то возьмётся и продолжит «оцифровку» НХ711, т.к. я наверное, уже не смогу это сделать из-за нехватки времени и из-за того, что я уже получил, что хотел
http://forum.flprogwiki.ru/viewtopic.php?f=20&t=1379 и результат меня устраивает.
Оба блока выложил здесь
http://flprog.ru/load/bloki_polzovatele ... /2-1-0-158 .