Как посчитать пиковые значения аналогового сигнала?

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

Приветствую! Есть аналоговый датчик, map в автомобиле, при работе двигателя на осциллографе он выдает пилообразный сигнал. Разрежением его колебает туда -сюда. Задача, посчитать количество вершин (пиковых, максимальных, верхних мертвых точек, как ещё объяснить), и привести это к количеству колебаний в минуту. То есть получить простейший тахометр. Логику вижу такую, постоянно сравнивать значение,
Если текущее значение больше предыдущего, а последующее меньше, то собственно count++.Пробовал разное, но что-то как-то не ахти. Направьте на путь, спасибо.

nik182
Offline
Зарегистрирован: 04.05.2015

А что google уже отменили? Или настолько лень чут чуть покопать?
Например http://www.cyberforum.ru/cpp-beginners/thread1918231.html

MaksVV
Offline
Зарегистрирован: 06.08.2015

сильно сомниваюсь что будет адекватно работать. На этот сигнал очень многое влияет, от зазора в клапанном механизме, до УОЗ  и забитости глушителя. Тем более во время езды, на разных режимах картина будет сильно отличаться. А когда тапка в пол, там вообще атмосферное давление и никаких пиков особо нет. Не говоря уже про турбомоторы. 

ИМХО есть гораздо более надёжные и правильные способы получить информацию частоты вращения ДВС

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

Меня интересует часто вращения до 2-2.5 к, этого достаточно. На более высоких оборотах конечно, диаграмма будет практически прямой. То что это работает, факт, функция реализована как минимум в двух приборах, один у меня на руках, но его нужно отдать. Все функции кроме тахометра я с него слизал.

GarryC
Offline
Зарегистрирован: 08.08.2016

Вариант 1 - поставить диф цепочку и компаратор и считать переходы через 0 вниз с гистерезисом для отстройки от шумов.

Вариант 2 - ловить сильный переход вниз (надо знать какой он должен быть).

Вариант 2 - то, что предлагаете Вы, но опять таки с программным фильтром от шумов.

Вариант 3 - считать среднее и ловить переход вверх через него.

Вариант 4 - считать среднее измеряемое значение, по нему рассчитывать максимальное и ловить переход на уровне процентов 80.

И еще целая куча вариантов - выбирайте.

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

Благодарю. С компаратором это интересно. Получается аппаратный такой вариант. Но тут интересный момент. У компаратора один какой-то порог. То есть, если обороты двигателя будут ровно 1000, диаграмма красивая. Добавим до 2к, уже не так и пиковые значения будут уже не 4 вольта например, а 2. Но переходы будут. Хотя может выставить минимальный порог, измерянный на 2к, скажем 2в, и опираться на него?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Ну извините, уважаемый, Вы хотите и рыбку (далее по тексту). Выясните пик сигнала, сконструируйте делитель :), а далее Вам уже советовали кучу алгоритмов анализа. Полная программа только в платном разделе - здесь только пинок в нужном направлении.

asam
Онлайн
Зарегистрирован: 12.12.2018

Хм, а не проще ли сделать виток вокруг высоковольтного провода и его как сигнал для тахометра использовать?

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

Смысл все в одном приборе. У меня есть тах который вообще беспроводной, читает наводки вв провода, 600 евро. К нему держатель ещё идёт 70 евро. Если бы просто нужно было чюсваять тах, тут вариантов тьма. Про виток провода скажу, не везде есть вв провода, чаще катушка на свечу тык и все.
Я не прошу написать код. Варианты я получил. Буду пытаться аппаратно компаратором. Мне кажется отличная идея.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Вот тут написано http://www.akellyirl.com/reliable-frequency-detection-using-dsp-techniques/

Сам не проверял, но метод правильный. Гугл переведёт, если что

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Hayabusa пишет:
Приветствую! Есть аналоговый датчик, map в автомобиле, при работе двигателя на осциллографе он выдает пилообразный сигнал. Разрежением его колебает туда -сюда. Задача, посчитать количество вершин (пиковых, максимальных, верхних мертвых точек, как ещё объяснить), и привести это к количеству колебаний в минуту. То есть получить простейший тахометр. Логику вижу такую, постоянно сравнивать значение, Если текущее значение больше предыдущего, а последующее меньше, то собственно count++.Пробовал разное, но что-то как-то не ахти. Направьте на путь, спасибо.

Почти во всех совр. движках есть датчик положения коленвала, он и выдает данные о скорости вращения двигла на тахометр авто и еённый моск. Им не пробовали воспользоваться? А то что Вы хотите измерять - это несколько иной датчик и его показания действительно различны от режимов типа "тапка в пол".

В помощь: https://topmekhanik.ru/datchik-polozheniya-kolenchatogo-vala/

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

Спасибо за советы по альтернативам варианта моему, но именно нужно так, для диагностики. Именно снимать показания с вакуумного датчика, считая колебания мембраны, которые на осциллографе видны как пила. Обороты нужны до 2.5 к, этого достаточно для целей. Повторюсь, на руках два прибора, на арм чипе и на авр в которых эта функция реализована и работает. Так как приборы не мои и достаточно дорогие, их нужно вернуть, к тому же, я все слизал кроме тахометра. С ним затык какой то...

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

Волшебник, беглый взгляд показал очень похожее на то, что мне нужно. Огромное спасибо!

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

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

Собрал такую схему. На выходе меандр. Подскажите, что тут можно добавить, и т.д. выход планируется на прерывание контроллера. На макете  вроде все работает.

 

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

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

Может нужно какой-то фильтр от шумов или ещё что-то. Спасибо.

Микросхема 2и-не. Cd4011