Как уменьшить шум при использовании режима 80 Гц?
У меня 4 hx711, и каждый из них читает по 1 ячейке, я использовал режим 10 Гц, однако это сильно замедляло работу моего приложения, так как мне нужно было снять 5 показаний и получить среднее из них, когда я поставил 15 СТАВКА в 1, сильно шумит, несмотря на ускоренное считывание весов, иногда разброс до 3-х цифр в конце. Смотрите код для чтения модулей, где я уже показываю вес в кг:
n=6;
for(int x=0;x<n;x++){
v1[x] = CELL1.read();
v2[x] = CELL2.read();
v3[x] = CELL3.read();
v4[x] = CELL4.read();
}
v1m=0;
v2m=0;
v3m=0;
v4m=0;
for(int x=1;x<n;x++){ // сумма массива
v1m=v1m+v1[x];
v2m=v2m+v2[x];
v3m=v3m+v3[x];
v4m=v4m+v4[x];
}
//средний массив
v1m=v1m/(n-1);
v2m=v2m/(n-1);
v3m=v3m/(n-1);
v4m=v4m/(n-1);
p1=p;
p=((v1m-v10)/(M[1]) +(v2m-v20)/(M[2]) +(v3m-v30)/(M[3]) +(v4m-v40)/(M[4]))/2.5; // показать
weight in Kg
p=p*.7+p1*.3; // конвертируем в кг
// ... сейчас я печатаю p (вес в кг)...
@luke cross, 👍2
Обсуждение1 ответ
У меня была очень похожая проблема с 4 датчиками веса. Я выполнил более 10 000 показаний при частоте 80 Гц, скопировал последовательный монитор в MS Word, чтобы найти метки строковых (текстовых) значений и ничем их не заменить. Это позволяет мне сохранять цифры. Если вы скопируете это в Excel и создадите диаграмму рассеяния, вы сможете увидеть, где находятся ваши максимумы и минимумы, а также их величины. Я смог просто написать условие ЕСЛИ, чтобы отклонить эти выбросы. Интересно, что выбросы очень велики (положительные или отрицательные), и это не просто случайные значения. Они также происходили с определенной частотой, что могло быть больше связано с моим приложением, чем с элементом вашего решения.
Ваш ответ можно сделать более полным, включив в него часть кода, которая выполняет фильтрацию выбросов, или описав ее более подробно. Вы использовали какой-то медианный фильтр или что-то другое?, @StarCat
- Взаимодействие ADS8319 с Arduino UNO
- Ускорение двигателя постоянного тока с помощью ШИМ
- Как найти пиковое значение аналогового сигнала?
- Как преобразовать эту программу в сборку из c++
- Чтение сигнала 4-20 мА на ардуино
- Бинарный светодиодный 10-битный дисплей Arduino
- Питание Arduino от батареи и считывание напряжения батареи
- Как получить среднее значение 16-битного АЦП?
Пожалуйста, покажите свой полный код, проводку и какие отклонения вы фактически получаете по сравнению с настройкой 10 и 80SPS., @chrisl