В тази статия ще конструираме цифров измервател на честота, използвайки Arduino, чиито показания ще бъдат показани на 16x2 LCD дисплей и ще имат обхват на измерване от 35 Hz до 1MHz.
Въведение
Като ентусиасти в електрониката, всички щяхме да се натъкнем на момент, в който трябва да измерваме честотата в нашите проекти.
Тогава щяхме да разберем, че осцилоскопът е толкова полезен инструмент за измерване на честотата. Но всички знаем, че осцилоскопът е скъп инструмент, който не всички любители могат да си позволят, а осцилоскопът може да е прекалено голям инструмент за начинаещи.
За да преодолее проблема с измерването на честотата, любителят не се нуждае от скъп осцилоскоп, ние просто се нуждаем от честотомер, който може да измерва честотата с разумна точност.
В тази статия ще направим честотомер, който е лесен за конструиране и удобен за начинаещи, дори noob в Arduino може да постигне с лекота.
Преди да влезем в конструктивни детайли, нека изследваме какво е честотата и как тя може да бъде измерена.
Какво е Честота? (За noobs)
Познати сме с термина честота, но какво всъщност означава той?
Е, честотата се определя като брой трептения или цикли в секунда. Какво означава това определение?
Това означава, колко пъти амплитудата на 'нещо' се покачва и намалява за ЕДНА секунда. Например честота на променливотоковото захранване в нашата резиденция: Амплитудата на „напрежение“ („нещо“ се заменя с „напрежение“) се увеличава (+) и намалява (-) за една секунда, което е 50 пъти в повечето страни.
Един цикъл или едно трептене се състои от нагоре и надолу. Така че един цикъл / трептене е амплитудата преминава от нула до положителен пик и се връща към нула и отива отрицателен пик и се връща към нула.
„Период от време“ също е термин, използван при работа с честотата. Периодът от време е времето, необходимо за завършване на „един цикъл“. Това е и обратната стойност на честотата. Например 50 Hz има период от 20 ms.
1/50 = 0,02 секунди или 20 милисекунди
Досега бихте имали представа за честотата и свързаните с нея термини.
Как се измерва честотата?
Знаем, че един цикъл е комбинация от висок и нисък сигнал. За да измерим продължителността на високите и ниските сигнали, използваме “pulseIn” в arduino. pulseIn (pin, HIGH) измерва продължителността на високите сигнали и pulseIn (pin, LOW) измерва продължителността на ниските сигнали. Добавя се продължителността на импулса и на двете, които дават период от време на един цикъл.
След това определеният период от време се изчислява за една секунда. Това се прави по следната формула:
Честота = 1000000 / период от време в микросекунди
Периодът от време на arduino се получава в микросекунди. Arduino не взема проби от входната честота за цяла секунда, но предсказва честотата често, като анализира само периода от време на един цикъл.
Сега знаете как arduino измерва и изчислява честотата.
Веригата:
Веригата се състои от arduino, който е мозъкът на проекта, 16x2 LCD дисплей, инвертор IC 7404 и един потенциометър за регулиране на контраста на ЛСД дисплей .
Предложената настройка може да измерва от 35Hz до 1 MHz.
Връзка с дисплей Arduino:

Горната схема е обяснима, обяснителната връзка между arduino и дисплея е стандартна и можем да намерим подобни връзки в други проекти, базирани на arduino и LCD.

Горната схема се състои от инвертор IC 7404. Ролята на IC 7404 е да елиминира шума от входа, така че шумът да не се разпространява до arduino, което може да даде фалшиви показания, а IC 7404 да може да толерира късо напрежение на пика, което няма да премине към щифтове arduino. IC 7404 извежда само правоъгълни вълни, където arduino може лесно да измерва с аналогови вълни.
ЗАБЕЛЕЖКА: Максималният пик до пик на входа не трябва да надвишава 5V.
Програма:
//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time
float frequency
const int input = A0
const int test = 9
void setup()
{
pinMode(input,INPUT)
pinMode(test, OUTPUT)
lcd.begin(16, 2)
analogWrite(test,127)
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Frequency Meter')
X=pulseIn(input,HIGH)
Y=pulseIn(input,LOW)
Time = X+Y
frequency=1000000/Time
if(frequency<=0)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Frequency Meter')
lcd.setCursor(0,1)
lcd.print('0.00 Hz')
}
else
{
lcd.setCursor(0,1)
lcd.print(frequency)
lcd.print(' Hz')
}
delay(1000)
}
//-----Program Developed by R.Girish-----//
Тестване на честотомера:
След като успешно сте конструирали проекта, е необходимо да проверите дали всичко работи добре. Трябва да използваме известна честота, за да потвърдим показанията. За да постигнем това, използваме вградената PWM функционалност на arduino, която има честота 490Hz.

В програмата pin # 9 е активиран да дава 490Hz при 50% работен цикъл, потребителят може да вземе входния проводник на честотомера и да вкара в pin # 9 на arduino, както е показано на фигурата, можем да видим 490 Hz на LCD дисплея (с известна толерантност), ако споменатата процедура е била успешна, вие честотомерът е готов да ви сервира експерименти.
Прототип на автора:


Потребителят може също да тества този прототип на веригата на честотомер Arduino, като използва външен честотен генератор, който е показан на горното изображение.
Предишна: Инверторна верига с чиста синусоида Arduino с пълен програмен код Напред: Създаване на едноканален осцилоскоп с помощта на Arduino