реклама на сайте
подробности

 
 
> Тахометр на AVR, тонкости алгоритма
ivainc1789
сообщение Sep 1 2005, 18:22
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Есть необходимость сделать автомобильный тахометр 300...6000 об/мин. Для этого в программе организован буфер unsigned int TaxBuf[BufSize], написана п/программы взятия отсчета, сдвига буфера, вычисления результата как среднего арифметического содержимого буфера. Т. е. наблюдаются последние BufSize отсчетов. Проблема в том, что данные о текущей частоте вращения необходимо выводить на LCD с "точностью" до +-1 об/мин. Понятно, что на самом деле такая точность не нужна, а отображать на дисплее практически невозможно - цифры "скачут", считать показания затруднительно.
Хотелось бы написать алгоритм аналога стрелки обычного микроамперметра стрелочных тахометров. При этом неравномерность вращения коленвала на холостых оборотах в соседних отсчетах может достигать +-50 об/мин.
Помогите с идеей такого алгоритма для AVR...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lolikandr
сообщение Sep 5 2005, 11:21
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 25-06-05
Пользователь №: 6 300



Для того, чтобы получить фиксированную величину неравномерность получаемых значений, необходимо иметь фиксированную длину буфера. Ждать когда заполнится буфер - несерьезно. Буфер надо организовать кольцевой и усреднять его в необходимые моменты времени для индикации.
Правда такой подход будет работать с инерционностью равной времени заполнения буфера.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Sep 5 2005, 19:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



После серии экспериментов удалось прийти к следующим выводам:
1. Применение только программных ФНЧ с дополнительным последующим усреднением последних 16 отсчетов буфера недостаточно для нормального отображения данных пользователю. Как не подстраивай постоянную времени фильтра, результат будет или сильно запаздывать, или цифры "бегать". Можно было бы попытаться сделать постоянную времени адаптивной на основе выходных данных ФНЧ, но мне не показалось, что это перспективный путь...
2. Наверное единственное решение - "загрублять" показания перед выводом на LCD. Вычислять среднее значение последних n отсчетов и определять текущие допуски вверх и вниз для этих отсчетов. Допустим, после такой обработки получены данные: 1000 об/мин +10 об/мин -20 об/мин. На дисплей выводим 1000 об/мин. Каждый новый отсчет записывается в буфер и проверяется на значение в допуске 980...1020 об/мин. Если значение в допуске, на индикаторе сохраняется показание 1000 об/мин., иначе содержимое буфера с записанным новым отсчетом перерассчитывается и получаются новые среднее значение и новые допуски. Таким образом, если приходит новый "похожий" на предыдущие отсчет, это не требует изменения показаний LCD.
3. Сами допуски я рассчитывал как среднеквадратическое отклонение от среднего для всех отсчетов больших среднего и соотв. меньших. Можно было бы вообще за допуск "вверх" и "вниз" от среднего брать величину самого большого по величине отсчета, но это ведь не учитывает статистику других отсчетов буфера...
4. Хотя во внутреннем представлении микроконтроллера результат тахометра все равно изменяется часто, на LCD выводим три раза в секунду.

В принципе после всего этого, удалось получить приемлемую работу прибора. Но достичь иллюзии поведения стрелочного тахометра в части отображения при максимальной достоверности показаний полностью не удалось...
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 7 2005, 15:00
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(ivainc1789 @ Sep 5 2005, 23:07)
4. Хотя во внутреннем представлении микроконтроллера результат тахометра все равно изменяется часто, на LCD выводим три раза в секунду.

В принципе после всего этого, удалось получить приемлемую работу прибора. Но достичь иллюзии поведения стрелочного тахометра в части отображения при максимальной достоверности показаний полностью не удалось...
*


Частоты вывода 3-раза в секунду - недостаточно!!! Вы 'проглатываете' много промежуточных значений (которые также создают эффект линиаризации). Вывод должен быть в три раза чаще (8 - 12 раз в секунду).
А при усреднении равномерность у Вас такая же, как и у стрелочника (однозначно). Просто работает психо-визуальный эффект восприятия нестандартной информации.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ivainc1789   Тахометр на AVR   Sep 1 2005, 18:22
- - _sR_   Цитата(ivainc1789 @ Sep 1 2005, 21:22)Хотелос...   Sep 1 2005, 20:16
|- - yung   Стрелочный амперметр представляет собой интегратор...   Sep 1 2005, 20:52
- - CDT   В программе Sonic Foundry Sound Forge есть линейны...   Sep 2 2005, 03:58
- - BVU   Да просто вычисляйте среднее значение своих измере...   Sep 2 2005, 05:16
|- - bzx   BVU сделал вполне уместное замечание. Надо увеличи...   Sep 2 2005, 07:33
|- - ivainc1789   Цитата(BVU @ Sep 2 2005, 08:16)Да просто вычи...   Sep 2 2005, 15:30
|- - yung   Медианный фильтр. Смысл - все элементы массива упо...   Sep 2 2005, 20:51
|- - ivainc1789   Индикация - абсолютно отдельный постпроцесс. Вед...   Sep 7 2005, 17:33
- - lolikandr   Странно, что вообще есть большие отклонения. С как...   Sep 7 2005, 14:48
|- - ivainc1789   Цитата(lolikandr @ Sep 7 2005, 17:48)Странно,...   Sep 7 2005, 17:14
- - Айский   Все-таки читаемость аналоговых индикаторов гораздо...   Jun 24 2006, 18:22
- - white.wind   А может быть использовать пишалку или светодид миг...   Jun 27 2006, 09:20
- - vooon   Кстати зря отметаете стрелочный индикатор только с...   Jun 28 2006, 21:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016