Частотомер с БИХ‑фильтром НЧ в 1 Кбайте на ATtiny13 или как запрячь одну лошадь в три телеги

habrahabr.ru · world
Full story

The author needed a frequency meter for tuning a gasoline generator. The task is to measure a sinusoidal voltage in the 40–70 Hz range under heavy noise and distortion from the generator, with accuracy around ±0.1 Hz. The implementation targets an ATtiny13 microcontroller and includes an IIR low-pass filter in 1 KB, according to the title. The text begins by noting that most people associate the ATtiny13 with simple blinking projects.

Появилась необходимость сделать частотомер для настройки бензинового генератора. Т.е. сама по себе задача простая: измерить частоту синусоидального напряжения в пределах 40..70 Гц, но при условии больших шумов и искажений, которые возникают при работе генератора, с точностью около ±0.1 Гц. Когда речь заходит о микроконтроллере ATtiny13, большинство представляет себе простые «мигалки», таймеры, или, в лучшем случае, драйверы фонариков. Но что, если бросить вызов и выжать из этого «малыша» максимум, превратив его в полноценный вычислительный узел. Пожалуй, в рамках одной статьи не получится рассказать обо всем проекте. Прибор получился весьма нагруженный: а) динамическая индикация на одном сдвиговом регистре 74HC164 на 3-х пинах; б) ФНЧ с применением 2-х каскадного БИХ‑фильтра (фильтр с бесконечной импульсной характеристикой или IIR‑фильтр от англ. Infinite Impulse Response) — это линейный цифровой или электронный фильтр, в котором выходной сигнал зависит не только от текущих и прошлых входных значений, но и от предыдущих значений самого выхода); в) аппроксимация точки перехода синусоиды через 0 (для увеличения точности до ±0.1Гц); г) счетчик и табличный преобразователь для получения частоты со сглаживанием результата на 32 измерениях; д) температурная подстройка частоты внутреннего RC‑генератора при помощи датчика ds18b20. Читать далее

Read full article → Compare