Translate

Membuat Frequency Counter ( Pencacah Frekuensi ) 0.01 Hz - 100 Hz

Membuat Frequency Counter ( Pencacah Frekuensi ) 0.01 Hz - 100 Hz


                 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