HX711 спорадические неправильные значения
Я соединяю HX711 с Arduino, чтобы измерить нагрузку на что-то. Однако в моем проекте мне нужно постоянно следить за нагрузкой.
В большинстве случаев я получаю довольно точные значения, однако иногда я внезапно получаю ненужное значение. Например, я вызываю функцию веса каждые 3 секунды и помещаю груз весом 10 кг, вот что я получаю. 17.25 вызывает озабоченность.
10.04, 10.03, 17.25, 10.04, 10.03, 10.03
Я использую библиотеку HX711, и моя функция процесса представляет собой простой вызов, как показано ниже.
float Processweight()
{
Serial.print(scale.get_units(40), 2);
scale.power_down(); // перевести АЦП в спящий режим
delay(500);
scale.power_up();
}
Есть что-то, чего не хватает? Что может привести к неверным значениям?
@shankar narayan, 👍2
Обсуждение2 ответа
В большинстве случаев я получаю довольно точные значения, однако иногда я внезапно получаю ненужное значение.
если вы используете плату ebay, она имеет неправильное заземление, что может способствовать тому, что вы видели спорадические значения.
Например, я вызываю функцию веса каждые 3 секунды
другой возможностью могут быть библиотеки низкого качества.
Я довольно часто использовал эту плату, и если не считать ее темпа, она довольно надежна. вы можете увидеть здесь: https://dannyelectronics.wordpress.com/2015/ 10/25/a-hx711-на основе миллиомметра/
когда все сделано правильно (и в условиях постоянной температуры), получается очень хорошая консистенция.
Большое спасибо Дэнни за вклад. проверю так же., @shankar narayan
Наконец-то я добился этого, добавив код, который проверяет, достаточно ли близки 5 последовательных значений, и только затем отвечаю. Таким образом, я смог избавиться от внезапных изменений. Тем не менее, я до сих пор не уверен, что вызывает этот скачок.
Выключение и включение питания могут быть проблемой. Вероятно, вам следует добавить некоторую задержку между включением питания и попыткой чтения. Кроме того, вы можете проверить неправильные значения и посмотреть, нет ли в них какой-либо закономерности., @Chris Stratton
Спасибо за наводку, Крис, неправильные значения не имели узнаваемой закономерности. Я попытался добавить задержку, на самом деле я полностью удалил цикл включения и выключения питания (всегда оставлял его включенным), и я все еще видел проблему., @shankar narayan
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
На самом деле отладка, которая потребует подробного изучения кода и схемы. Если вам не нужны быстрые ответы, вы можете попробовать фильтр; не то, что *усредняет*, а то, что отвергает быстрые изменения. Также имейте в виду, что в вашем приложении поведение тензодатчика называется «ползучестью»., @Chris Stratton
Спасибо, Крис, я попробую написать корреляцию, чтобы отклонить внезапные изменения. Однако мне было любопытно понять, есть ли такие проблемы у самого HX 711. Я обязательно воспользуюсь фильтрацией, если буду уверен, что все остальное сделал правильно., @shankar narayan