Подсчет количества пиковых значений в минуту.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Приветствую други. Ситуация- аналоговый датчик при работе выдает значени в форме синусоиды.

Для имитации берем analogRead(A0); Вполне себе повторяет ситуацию в железе.

То есть у нас есть значения: 300-320-298, 200-250-210, и т.д.

То есть вседа есть некое 3начение максимальное, за которым всега идет меньше максимального, в ощем синусоида. Задача сосчитать именно пиковые значения и привести их количество в минуту. Полчучится своего рода тахометр. Натолкните на мысль, с чего начать. 

vk007
Offline
Зарегистрирован: 16.06.2015

Если значения не дребезжат, то если текущее значение меньше предыдущего, значит пик пройден - добавляем к счетчику единицу. Не?

И да, после этого ничего не прибавляем к счетчику, пока не найдем подобным образом минимум, а потом снова ищем максимум и т.д.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Hayabusa пишет:

с чего начать. 

1. Сесть за стол
2. Определить чёткий критерий "пиковости" (у Вас его нет, а без него ничего не выйдет)
3. Почеасать репу
4. написать программу. 

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Да, примерно так и думал. У самого датчика есть некий "шум", то есть он не выдает в состоянии покоя 300-300-300. Как вариант я могу взять 10 его значений и вывести среднее, получится тишина по факту. Или нужно определить синусоиду шума, програмно ее отсечь, и считать только явную синусоиду, так?

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Четкого критерий таков, для низких оборотов (1500) синусоида красивая, но с увеличением, высота пика сильно падает (датчик то аналоговый)- но все же отследить реально. Меня устроит стабильная работа (точная) до 3к оборотов. 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Hayabusa пишет:

Четкого критерий таков, для низких оборотов (1500) синусоида красивая, но с увеличением, высота пика сильно падает (датчик то аналоговый)- но все же отследить реально. Меня устроит стабильная работа (точная) до 3к оборотов. 

Это ни хрена не чёткий кртиерий, а бабабольство про красивую синусоиду. Чёткий критерий, это однозначное, формальное, тупое определение "сравни это с тем ... привать то к этому ... и если получилось > 0 то вот оно и есть", такое. чтобы однозначно перекладывалось на программу.

vk007
Offline
Зарегистрирован: 16.06.2015

А почему бы этот аналоговый сигнал не преобразовать в меандр? Тогда все становится проще.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Значит четкого криетрия нет, и есть толь входные данные.

1. Датчик имеет собственный шум в пределах 378-384 =6 единиц (из 1024); С ним поборюсь с помощью среднего арифметическиго.

2. Чем ниже обороты- тем четче виден пик.

 

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Попобдробнее, про меандр? Может есть кусок кода? Что это нам даст?

vk007
Offline
Зарегистрирован: 16.06.2015

Меандр - прямоугольный сигнал. Можно сделать преобразование с помощью компаратора.

А что касается, что это даст - это даст возможность просто считать импульсы.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Если я правильно уловил вашу мысль, то я беру к примеру АЦП ADS1115 https://www.adafruit.com/product/1085

У него встроен программируемый компаратор, и просто считаю свои импульсы. Так?

vk007
Offline
Зарегистрирован: 16.06.2015

Дороговастенькое решение. Погуглите что-то типа преобразование синусоиды в прямоугольные импульсы.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

У меня уже приобретены эти АЦП в Китае за 3 уе. Но направление я понял. Вы считаете это самое лучшее решение будет?

vk007
Offline
Зарегистрирован: 16.06.2015

Не могу сказать, лучше или нет. Но если программно не получается получить стабильный результат, то остается аппаратный или их комбинация.