Взаимодействие Loadcell и Sparkfun Qwiic Scale NAU7802 с ESP32
В настоящее время я работаю над проектом IOT, в котором я пытаюсь связать Loadcell и Sparkfun Qwiic Scale NAU7802 , чтобы я мог считывать вес и отображать его на семисегментном дисплее.
Для этого я подключил следующие контакты:
Сначала я откалибровал свой тензодатчик с весом 5 кг . После этого я попытался извлечь вес из весов Qwiic и одновременно отобразить его на семисегментном дисплее с помощью потоковой передачи.
После калибровки я поместил тот же 5-килограммовый груз на тензодатчик, чтобы проверить показания, но я получаю переменные показания . Я пробовал этот цикл калибровки и проверки вывода много раз, но мой вывод по-прежнему изменчив. Показания очень колеблются, около 50 грамм на 5 кг.
4.985
5.015
4.965
4.99
5.025
5.04
5.025
5.025
5.025
4.995
5.025
5.01
4.99
5.01
5.01
5.05
4.99
5.03
4.985
5.015
5.015
5.015
4.995
4.96
5.01
5.01
4.995
4.995
4.995
4.995
4.995
5.015
4.985
5.0
5.0
5.025
5.04
4.985
5.01
5.025
5.025
5.045
5.03
5.005
5.005
5.005
5.005
5.025
5.005
5.005
4.975
5.025
5.045
5.005
Код, который я использовал >>
scale = QwiicScale() # Created Qwiic Scale Object
s = SevenSegment(scale) # Created Seven Segment Object
# Calibration code
OF = scale.getZeroOffsetFromQwiic() # Get Offset From Loadcell without putting any weight
# Place Known Weight
KnownWeight = float(input('Enter Known Weight : ')) # Take input known Weight
cal = scale.getCalibrationFactorFromQwiic(KnownWeight) # Calculate Calibration Factor
#Created Thread for showing weight on Seven Segment Display
SevenSegmentThread = Thread(target=s.ShowOnSevenSegment)
SevenSegmentThread.start() #ran that thread here
# Loop continuously running to get weight and setting it to Seven Segment
while KeyboardInterrupt:
Weight = float(scale.getWeightFromQwiicScale())
print(Weight)
Weight = str(int(Weight*1000))
s.SetWeight(''.join(reversed(Weight)))
Любое предложение или помощь очень ценятся ..... Заранее
спасибо...
2 ответа
Я наткнулся на этот разговор, когда исследовал другую проблему. Я предполагаю, что шум, который вы видите во время многопоточности, вызван небольшими колебаниями напряжения питания на шине i2c платы QwiicScale, что, в свою очередь, приведет к аналогичному изменению напряжения V+ на тензодатчике. Переключение потока на вашем ESP32 может вызвать состояние нагрузки, которое выходит за пределы встроенного регулятора напряжения. Цифровые схемы не заботятся о перепаде напряжения на 1%, но аналоговые схемы будут весьма чувствительны к этому! Попробуйте добавить конденсатор в линию напряжения питания тензодатчика и посмотрите, улучшит ли это ваши результаты.
Это вполне нормально. Тензодатчики создают крошечные изменения напряжения, которые усиливаются чипом, измеряющим выход H-моста. Усиление создает шум, который каждый раз дает немного разные показания. Колебание менее 0,5%, кстати, довольно чистый результат. Добро пожаловать в измерение вещей в реальном мире.
Во всяком случае, округлите это примерно до 1%, и все готово. Точность измерения дешевых датчиков веса для ванных комнат в любом случае не даст вам гораздо большего разрешения.