Простой измеритель частоты своими руками до 6,5 МГц
Компоненты и расходные материалы
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 |
Необходимые инструменты и машины
![]() |
|
Приложения и онлайн-сервисы
![]() |
|
Об этом проекте
Представленное на видео устройство представляет собой частотомер, сделанный на микроконтроллере Arduino Nano. Он может измерять частоту сигналов прямоугольной, синусоидальной и треугольной формы.
Диапазон измерения составляет от нескольких герц до 6,5 мегагерц. Также доступны три временных интервала измерения - 0,1, 1 и 10 секунд. Если мы измеряем только прямоугольные сигналы, тогда нет необходимости в усилителе-формирователе, и сигнал подается непосредственно на цифровой вывод 5 от Arduino.
Код очень простой благодаря библиотеке FreqCount, которую вы также можете скачать ниже.
Устройство очень простое и состоит из нескольких компонентов:
- микроконтроллер Arduino Nano
- Плата формообразующего усилителя
- ЖК-дисплей
- Селектор формы входного сигнала
- Входной ДЖЕК
- и переключатель временного интервала:мы можем выбрать три интервала 0,1 -1 и 10 секунд.

Как вы можете видеть на видео, прибор очень точен во всем диапазоне, и мы также можем откалибровать частотомер с помощью простой процедуры, описанной ниже:
В папке с библиотеками Arduino найдите библиотеку FreqCount,
в файле FreqCount.cpp найдите строки:
#if defined (TIMER_USE_TIMER2) &&F_CPU ==12000000L
с плавающей точкой правильно =count_output * 0,996155;
и замените их на:
#if defined (TIMER_USE_TIMER2) &&F_CPU ==16000000L
с плавающей точкой правильно =count_output * 1.000000;
где 1.000000 - ваш поправочный коэффициент,
Коррекция должна производиться подачей 1 МГц на вход частотомера.
После изменения файла загрузите новый скетч на плату Arduino.
Наконец, частотомер встроен в подходящий пластиковый ящик и является еще одним полезным инструментом в электронной лаборатории.
Код
- Код
- FreqCount-master
Код C / C ++
#include//https://github.com/PaulStoffregen/FreqCount/archive/master.zip#include LiquidCrystal lcd (12, 11, 6, 4, 3, 2 ); // RS, E, D4, D5, D6, D7void setup () {lcd.begin (16, 2); // LCD 16X2 pinMode (7, INPUT); FreqCount.begin (1000);} unsigned long f; float f0; int x, n =3, r; void loop () {if (digitalRead (7) ==HIGH) {n ++; x =0; delay (100);} lcd.setCursor (0,1); if (n ==1) {x ++; if (x ==1) {FreqCount.begin (100);} r =-1; lcd.print ("T =0,1 с");} if (n ==2 ) {x ++; if (x ==1) {FreqCount.begin (10000);} r =1; lcd.print ("T =10 s");} if (n ==3) {x ++; if (x ==1) {FreqCount.begin (1000);} r =0; lcd.print ("T =1 s");} if (n> 3) {n =1;} lcd.setCursor (0,0); lcd.print ("F ="); if (f> =1000000 &&n ==3) {f0 =f / 1000000.0; lcd.print (f0,6 + r); lcd.print ("MHz");} if (f <1000000 &&n ==3 ) {f0 =f / 1000.0; lcd.print (f0,3 + r); lcd.print ("kHz");} if (f> =100000 &&n ==1) {f0 =f / 100000.0; lcd. print (f0,6 + r); lcd.print ("MHz");} if (f <100000 &&n ==1) {f0 =f / 100.0; lcd.print (f0,3 + r); lcd. print ("kHz");} if (f> =10000000 &&n ==2) {f0 =f / 10000000.0; lcd.print (f0,6 + r); lcd.print ("MHz");} if ( f <10000000 &&n ==2) {f0 =f / 10000.0; lcd.print (f0,3 + r); lcd.print ("kHz");} if (FreqCount.available ()) {f =FreqCount. читать(); lcd.setCursor (10,1); lcd.print ("***"); } задержка (200); lcd.clear ();}
FreqCount-master C / C ++
Нет предварительного просмотра (только загрузка).
Схема

Производственный процесс
- Простой кодовый замок
- Мультиметры
- Измерение частоты и фазы
- Самодельные простейшие часы Numitron IV9 с Arduino
- DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110
- Рулетка DIY 37 LED
- Чувствительный датчик землетрясений ADXL335 для самостоятельного изготовления
- Управление паяльником DIY для 862D +
- Игра Arduino Nano Tetris на самодельной матрице 16x8
- Никогда не ездить в одиночестве