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

Измеритель частоты можно приобрести в магазине, а можно сделать самостоятельно для приложений с не очень высокой рабочей частотой, что обойдется значительно дешевле по сравнению с покупкой заводского частотомера. В этом проекте мы рассмотрим, как сделать такое устройство на основе Arduino своими руками.
Диапазон измерений нашего частотомера составляет от нескольких герц до 6,5 мегагерц. Также доступны три временных интервала измерения – 0,1, 1 и 10 секунд. Если мы измеряем только прямоугольные сигналы, тогда нет необходимости в усилителе-формирователе, и сигнал подается непосредственно на цифровой вывод 5 от Arduino. Схема подключения компонентов для создания измерителя частоты на основе Arduino выглядит следующим образом.

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

Код программы для Arduino очень простой благодаря библиотеке FreqCount. Она позволяет измерять частоту сигнала, подсчитывая количество импульсов в течение фиксированного времени.
#include <FreqCount.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 6, 4, 3, 2);// RS,E,D4,D5,D6,D7
void 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 s ");}
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.read();
lcd.setCursor(10,1);lcd.print("***");
}
delay(200);
lcd.clear();
}
Этот частотомер будет полезным инструментом в электронной лаборатории.
© digitrode.ru