Как уменьшить шум при использовании режима 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 (вес в кг)...

, 👍2

Обсуждение

Пожалуйста, покажите свой полный код, проводку и какие отклонения вы фактически получаете по сравнению с настройкой 10 и 80SPS., @chrisl


1 ответ


1

У меня была очень похожая проблема с 4 датчиками веса. Я выполнил более 10 000 показаний при частоте 80 Гц, скопировал последовательный монитор в MS Word, чтобы найти метки строковых (текстовых) значений и ничем их не заменить. Это позволяет мне сохранять цифры. Если вы скопируете это в Excel и создадите диаграмму рассеяния, вы сможете увидеть, где находятся ваши максимумы и минимумы, а также их величины. Я смог просто написать условие ЕСЛИ, чтобы отклонить эти выбросы. Интересно, что выбросы очень велики (положительные или отрицательные), и это не просто случайные значения. Они также происходили с определенной частотой, что могло быть больше связано с моим приложением, чем с элементом вашего решения.

,

Ваш ответ можно сделать более полным, включив в него часть кода, которая выполняет фильтрацию выбросов, или описав ее более подробно. Вы использовали какой-то медианный фильтр или что-то другое?, @StarCat