Kali ini saya akan menjelasksn mengenai bagaimana cara membuat alat untuk menghitung frekuensi yang masuk atau bahasa lainnya yaitu frekuensi counter, frekuensi counter biasanya digunakan untuk mendeteksi frekuensi misalnya sinyal tegangan AC PLN 50 Hz dan sinyal frekuensi rendah lainnya, alat ini dibuat untuk mendeteksi sinyal antara frekuensi 0.01 Hz sampai 100 Hz dan cocok dipakai untuk detektor kerusakan aliran listrik 220v AC 50 Hz, jadi jika yang terdeteksi tidak 50 Hz berarti ada kerusakan yang terjadi, dan bisa dengan otomatis mematikan listrik melalui relay, itu merupakan contoh aplikasi dari alat ini.
a. Minimum System
b. Program Bascom AVR
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 115200
$hwstack = 64
$swstack = 64
$framesize = 64
Config Timer2 = Timer , Prescale = 1
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Cls
Cursor Off
Dim Cycle_status As Byte
Dim Countvar1 As Long 'CONTINUING COUNT
Dim Countvar2 As Long 'VALUE FOR CALC. DISPLAY
Dim Divi As Long
Divi = 40750 'USE TO CALCULATE FREQUENCY
Dim Frequ As Single
Dim Tim1_count As Word
Cycle_status = 1
Config Portd.2 = Input 'FREQUENCY INPUT
Portd.2 = 1 'PULL UP RESISTOR ON
Config Int0 = Falling 'RISING EDGE OF PULSE
On Timer2 Lcount_isr 'LOOP COUNTER
On Int0 Status_update_isr 'STATUS OF CYCLE
Enable Timer2 'USE AS COUNTER
Enable Int0
Enable Interrupts
Cls
Timer1 = 0
Do
Frequ = Divi \ Countvar2
Locate 1 , 1
Lcd Fusing(frequ , "#.##") ; " Hz "
Loop
End
'******* ISR ROUTINES ********
Lcount_isr:
'TIMER2 OVERFLOW INT
If Cycle_status = 0 Then Incr Countvar1
Timer2 = 155
Return
'***
Status_update_isr: 'INT0 FROM FREQUENCY INPUT
If Cycle_status = 0 Then
Countvar2 = Countvar1
Countvar1 = 0
Cycle_status = 1
Else
Cycle_status = 0
Countvar1 = 0
End If
Return
c. VIDEO HASILNYA
No comments:
Post a Comment