Cara Membuat AC Frequency Meter dengan Zero Crossing Detector dan Arduino
Jika pada postingan sebelumnya telah ditulis tentang rangkaian zero crossing detector (ZCD), pada tulisan kali ini kita akan membahas salah satu penggunaan ZCD yaitu frequency meter (pengukur frekuensi) khususnya untuk gelombang listrik AC. Rangkaian zero crossing detector yang akan dicoba pada rangkaian ini masih sama dengan rangkaian zero crossing detector sebelumnya yaitu menggunkan opto coupler 4N25. Pada percobaan kali ini keluaran dari rangkaian zero crossing detector akan di hubungkan dengan pin interrupt arduino. Selanjutnya didalam program arduino akan dihitung nilai frekuensinya. Ilustrasinya sebagai berikut:
Karena 1 periode (T) adalah waktu untuk 1 gelombang penuh maka:
Periode (T) = t1 + t2
Seperti kita ketahui hubungan antara periode (T) dan frekuensi (f) adalah berbanding terbalik :
Dimana: f = frekuensi (Hz)
T= perode (detik)
Maka dengan persamaan diatas kita bisa membuat sebuah program yang menghitung frekuensi dengan memanfaatkan pendeteksi zero crossing. Adapun bagian-bagian programnya sebagai berikut:
Kita gunakan pin interupt (pin 3) pada arduino sebagai input yang terhubung dengan keluaran zero crossing detector
Disini digunakan interrupt pin 3 dengan transisi falling, jadi interupt akan aktif dan memanggil fungsi zero saat mendapat transisi turun (HIGH to LOW).
Kemudian kita buat fungsi zero yang akan dijalankan ketika interuppt aktif. Pada bagian ini kita gunakan micros untuk menghitung waktu antara zero crossing yaitu selisih antara waktu zero crossing saat ini dan waktu saat zero crossing sebelumnya kita sebut saja waktu ini sebagai waktu setengah gelombang. Waktu zer crossing setengah gelombang pertama kemudian ditambahkan dengan waktu zero crossing setengah gelombang kedua. Hasil penjumlahan ini merupakan periode gelombang dalam satuan micro detik. Sehingga kita bagi dengan 1000000 untuk merubahnya ke satuan detik. Maka terakhir untuk menghitung frekuensinya yaitu 1 dibagi periode. Programnya seperti ditunjukan gambar dibawah ini:
Selanjutnya untuk void loop nya kita isikan dengan program untuk menampilkan data frekuensi dan periode ke serial monitor. Disini tidak menggunakan delay melainkan millis untuk menghitung interval tampilan setiap 500 detik.
Sehingga program selengkapnya seperti berikut:
float pertama,kedua;
int count=1;
float periode,frekuensi;
long micros_sekarang,selisih;
long micros_sebelum=0;
long millis_display, millis_display_1=0;
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(3),zero,FALLING);
}
void loop() {
millis_display=millis();
if (millis_display-millis_display_1>=500){
millis_display_1=millis_display;
Serial.print("FREKUENSI :");
Serial.print(frekuensi);
Serial.println(" Hz");
Serial.print("PERIODE :");
Serial.print(periode,3);
Serial.println(" s");
}
}
void zero(){
micros_sekarang=micros();
selisih=micros_sekarang-micros_sebelum;
if (count==1){
pertama=selisih;
count=2;
micros_sebelum=micros_sekarang;
}
else if(count==2){
kedua=selisih;
count=1;
periode=pertama+kedua;
periode=periode/1000000;
frekuensi=1/periode;
micros_sebelum=micros_sekarang;
}
}
Sekarang kita buat rangkaian simulasinya di proteus, seperti terlihat pada gambar dibawah ini:
Kemudia masukan program yang telah dibuat dan jalankna simulasinya untuk nilai frekuensi vsine tertentu misal untuk 60Hz:
Maka hasilnya sebagai berikut:
Video simulasinya dapat dilihat pada video dibawah ini:
Sekian tulisan tentang AC frequency meter dengan zero crossing detector dan arduino kali ini. Mohon maaf apabila ada kesalahan dan semoga bermanfaat.
Bagikan Ke:
Karena 1 periode (T) adalah waktu untuk 1 gelombang penuh maka:
Periode (T) = t1 + t2
Seperti kita ketahui hubungan antara periode (T) dan frekuensi (f) adalah berbanding terbalik :
Dimana: f = frekuensi (Hz)
T= perode (detik)
Maka dengan persamaan diatas kita bisa membuat sebuah program yang menghitung frekuensi dengan memanfaatkan pendeteksi zero crossing. Adapun bagian-bagian programnya sebagai berikut:
Kita gunakan pin interupt (pin 3) pada arduino sebagai input yang terhubung dengan keluaran zero crossing detector
Disini digunakan interrupt pin 3 dengan transisi falling, jadi interupt akan aktif dan memanggil fungsi zero saat mendapat transisi turun (HIGH to LOW).
Kemudian kita buat fungsi zero yang akan dijalankan ketika interuppt aktif. Pada bagian ini kita gunakan micros untuk menghitung waktu antara zero crossing yaitu selisih antara waktu zero crossing saat ini dan waktu saat zero crossing sebelumnya kita sebut saja waktu ini sebagai waktu setengah gelombang. Waktu zer crossing setengah gelombang pertama kemudian ditambahkan dengan waktu zero crossing setengah gelombang kedua. Hasil penjumlahan ini merupakan periode gelombang dalam satuan micro detik. Sehingga kita bagi dengan 1000000 untuk merubahnya ke satuan detik. Maka terakhir untuk menghitung frekuensinya yaitu 1 dibagi periode. Programnya seperti ditunjukan gambar dibawah ini:
Selanjutnya untuk void loop nya kita isikan dengan program untuk menampilkan data frekuensi dan periode ke serial monitor. Disini tidak menggunakan delay melainkan millis untuk menghitung interval tampilan setiap 500 detik.
Sehingga program selengkapnya seperti berikut:
float pertama,kedua;
int count=1;
float periode,frekuensi;
long micros_sekarang,selisih;
long micros_sebelum=0;
long millis_display, millis_display_1=0;
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(3),zero,FALLING);
}
void loop() {
millis_display=millis();
if (millis_display-millis_display_1>=500){
millis_display_1=millis_display;
Serial.print("FREKUENSI :");
Serial.print(frekuensi);
Serial.println(" Hz");
Serial.print("PERIODE :");
Serial.print(periode,3);
Serial.println(" s");
}
}
void zero(){
micros_sekarang=micros();
selisih=micros_sekarang-micros_sebelum;
if (count==1){
pertama=selisih;
count=2;
micros_sebelum=micros_sekarang;
}
else if(count==2){
kedua=selisih;
count=1;
periode=pertama+kedua;
periode=periode/1000000;
frekuensi=1/periode;
micros_sebelum=micros_sekarang;
}
}
Sekarang kita buat rangkaian simulasinya di proteus, seperti terlihat pada gambar dibawah ini:
Kemudia masukan program yang telah dibuat dan jalankna simulasinya untuk nilai frekuensi vsine tertentu misal untuk 60Hz:
Maka hasilnya sebagai berikut:
Bagikan Ke:
Komentar
Posting Komentar
berkomentarlah dengan bijak