Частотометр на ATmega8 для діапазону частот 1Гц
У цій статті я хотів би вас познайомити із "саморобкою вихідного дня" - частотоміром на вже "легендарному" мікроконтролері ATmega8. Цей прилад не позиціонується як "найкращий" за параметрами, та й схемотехніка не претендує на оригінальність. Єдина його відмінність від більшості конструкцій, яку можна знайти в мережі – підвищена точність у діапазоні низьких частот (1 – 1000Гц). Це досягається за рахунок різного підходу при вимірі НЧ та СЧ з ВЧ. При вимірі НЧ проводиться підрахунок кількості тактів мікроконтролера за кілька імпульсів на вході приладу. При вимірі СЧ і ВЧ, зазвичай вважається кількість імпульсів за певний проміжок часу.
Характеристики частотоміра:
- Діапазон частот з похибкою виміру +/- 1Гц: 1000Гц - 1МГц (при похибці +/- 20-200Гц, [> частота, погрішність] можливий вимір частот до 10МГц без предделителя).
- Напруга живлення: 5В
- Споживаний струм: 1кГц).
- Час індикації: 3с

Проект був зібраний і протестований уProteus, а потім і "на живу". Для створення прошивки використовувався компілятор avr-gcc (він жеWinAVR під Windows).
Основа схеми, як говорилося, мікроконтролер ATmega8. Відображення даних проводиться на семисегментному світлодіодному (не обов'язково) індикаторі на 8 знайомств із загальним анодом. У моєму випадку був використаний малогабаритний індикатор, відповідно, і друкована плата була розроблена невеликих розмірів. На схемі, як ви бачите, є контакти для підключення кнопки (J7, J8), але це "на майбутнє", і зараз вони не використовуються. Для тактування мікроконтролера застосовано кварцовий резонатор на 16МГц.Світлодіод D1 відображає дії приладу – при циклі вимірювання він вмикається. Вимірювання триває 1 секунду. Після пауза в 3 секунди, а потім знову вимір і т.д.
Для індикаторів із загальним катодом необхідно в такий спосіб змінити транзисторні ключі:

Крім цього, потрібно підправити програму.
У заголовному файлі "display7seg_lib.h " необхідно цей рядок:
А потім рекомпілювати проект.
До речі, бібліотеку для семисегментного індикатора я робив не тільки для цього проекту, і можливо вона стане вам у пригоді, оскільки має кілька корисних функцій (наприклад, виведення рядка).
Для вимірювання частоти, як вже згадувалося вище, у пристрої використовуються два методи: рахунок тактів мікроконтролера за кількість імпульсів і рахунок вступників на вхід приладу імпульсів за певний час.
Порядок виміру наступний:
- Здійснюється вимірювання частоти за допомогою рахунку імпульсів на ході
- Якщо кількість імпульсів більше тисячі (частота більше одного кілогерця), то результат виводиться на дисплей, а пристрій чекає 1 секунду і повторює вимір
- Якщо кількість імпульсів менше тисячі, то відбувається додатково порівняння. У тому випадку, коли частота менше 10Гц проводиться рахунок тактів протягом 20 імпульсів на вході (10 ATmega8A-AU