Pada penjelasan kali ini akan dibahas mengenai bagaimana cara mengakses water flow meter analog menggunakan mikrokontroller, jenis mikrokontroller yang dipakai yaitu ATMega dengan bahasa basic / bascom AVR, water flow meter ini menggunakan prinsip pulsa dari optocoupler, sehingga output dari device ini hanyalah nilai 1 dan 0 saja tanpa ada nilai lainnya, nah bagaimana cara untuk mengakses device ini agar didapat suatu perhitungan yang tepat tentang berapa liter air yang melalui water flow selama 1 detik.
Karena menggunakan prinsip pulsa optocoupler maka harus dilakukan pencacahan pulsa untuk melakukan perhitungan yaitu menggunakan pencacah dengan interupt, jadi menghitung seberapa banyak nilai 0 yang didapat selama waktu satu detik, dan berapa liter airnya. hardware yang dibutuhkan yaitu minimum sistem dan software bascom AVR.
1. Minimum sistem
Kabel dari water flow meter
1. VCC
2. Data - ke PortD.2
3. GND
Program Bascom AVR
$regfile = "m16def.dat"
$crystal = 12000000
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
Ch Alias Pind.2
Config Pind.2 = Output
Config Ch = Input
Config Int0 = Falling
Const Debouncetime = 1
Dim Wtime As Byte
Dim Encounter As Integer
Set Ch
On Int0 Getencoder
Cls
Wtime = 100
Encounter = 0
Enable Interrupts
Enable Int0
Do
Set Portd.6
Waitms Wtime
Upperline
Lcd "encounter: " ; Encounter ; " "
Reset Portd.6
Waitms Wtime
Loop
Getencoder:
Waitms Debouncetime
If Ch = 0 Then
Incr Encounter
End If
Gifr = 64
Return
End
$crystal = 12000000
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
Ch Alias Pind.2
Config Pind.2 = Output
Config Ch = Input
Config Int0 = Falling
Const Debouncetime = 1
Dim Wtime As Byte
Dim Encounter As Integer
Set Ch
On Int0 Getencoder
Cls
Wtime = 100
Encounter = 0
Enable Interrupts
Enable Int0
Do
Set Portd.6
Waitms Wtime
Upperline
Lcd "encounter: " ; Encounter ; " "
Reset Portd.6
Waitms Wtime
Loop
Getencoder:
Waitms Debouncetime
If Ch = 0 Then
Incr Encounter
End If
Gifr = 64
Return
End
No comments:
Post a Comment