Tentang proyek ini
Perangkat yang disajikan dalam video adalah pengukur frekuensi yang dibuat menggunakan mikrokontroler Arduino Nano. Ini dapat mengukur frekuensi sinyal dengan bentuk persegi panjang, sinusoidal, dan segitiga.
Rentang pengukurannya adalah dari beberapa hertz hingga 6,5 Megahertz. Tiga interval waktu pengukuran juga tersedia - 0,1, 1 dan 10 detik. Jika kita hanya mengukur sinyal persegi panjang, maka tidak perlu penguat pembentuk dan sinyal diumpankan langsung ke pin digital 5 dari Arduino.
Kodenya sangat sederhana berkat pustaka "FreqCount" yang juga dapat Anda unduh di bawah.
Perangkat ini sangat sederhana dan terdiri dari beberapa komponen:
- Mikrokontroler Arduino Nano
- Membentuk papan amplifier
- Layar LCD
- Pemilih bentuk sinyal masukan
- Masukan JACK
- dan Sakelar interval waktu :kita dapat memilih tiga interval 0,1 -1 -dan 10 detik.
Seperti yang Anda lihat di video, instrumen sangat presisi di seluruh rentang, dan kami juga dapat mengkalibrasi pengukur frekuensi dengan prosedur sederhana yang dijelaskan di bawah ini:
Di folder perpustakaan Arduino temukan perpustakaan FreqCount,
dalam file FreqCount.cpp temukan baris:
#jika ditentukan (TIMER_USE_TIMER2) &&F_CPU ==12000000L
float benar =count_output * 0.996155;
dan ganti dengan:
#jika ditentukan (TIMER_USE_TIMER2) &&F_CPU ==16000000L
float benar =count_output * 1.000.000;
di mana 1.000.000 adalah faktor koreksi Anda,
koreksi harus dilakukan dengan menerapkan 1 MHz ke input pengukur frekuensi.
Setelah mengubah file, unggah sketsa baru ke papan Arduino.
Terakhir, pengukur frekuensi dibangun ke dalam kotak plastik yang sesuai dan merupakan instrumen lain yang berguna di laboratorium elektronik.
Kode
- Kode
- Penghitung Frekuensi
KodeC/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 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. Baca(); lcd.setCursor(10,1);lcd.print("***"); } penundaan (200); lcd.clear();}
FreqCount-masterC/C++
Tidak ada pratinjau (hanya unduhan).
Skema