Salah satu aplikasi yang banyak digunakan baik di dunia industri ataupun robotika adalah aplikasi pencacah atau lebih akrab disebut counter. Dalam dunia industri biasanya digunakan dalam conveyor dan berbagai jenis alat otomasi lainnya, dalam dunia robotika biasanya digunakan dalam memprogram untuk menghitung persimpangan yang dilalui oleh robot.
Dalam artikel kali ini akan ditekankan aplikasi dalam bentuk simulasi program counter pada mikrokontroler dengan menggunakan program Bascom AVR.
Deskripsi Sistem
Sistem ini akan membaca sensor yang terhubung di salah satu pin di mikrokontroler, di PinA.0 dan PinA.1. Ketika PinA.0 bernilai 1 maka program akan menghitung maju, dan ketika PinA.1 bernilai 1 maka program akan menghitung nmundur, lalu port B dihubungkan ke LCD sebagai penampil jumlah perhiutngan serta keluaran dari sistem ini dihubbungkan ke PortD, jika sensor talah menghitung sebanyak 5 kali atau lebih, maka lampu di PortD akan menyala.
Program
$regfile = "8535def.dat"
$crystal = 1000000
$sim
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs=Portb.5
Config Lcd = 16 * 2
Dim Hitung As Byte
Config Porta = Input
Config Portd = Output
Sensor_a Alias Pina.0
Sensor_b Alias Pina.1
Led Alias Portd
Porta = 1
Hitung = 0
Led = 0
Do
Locate 1 , 1
Lcd "hitung = "
If Sensor_a = 0 Then
Hitung = Hitung + 1
Do
Loop Until Sensor_a = 1
End If
If Sensor_b = 0 Then
Hitung = Hitung - 1
Do
Loop Until Sensor_b = 1
End If
Locate 2 , 1
Lcd Hitung
If Hitung >= 5 Then
Portd = &HFF
Else
Portd = &H00
End If
Loop
Hasil Percobaan
Ketika jumlah perhitungan telah mencapai 5 atau selebihnya maka lampu pada Port.D akan hidup, sedikit tambahan pada layar simulasi port sebelah kanan (lampu hijau) merupakan input pada simulasi, sedangkan port pada layar sebelah kiri (lamu merah) merupakan output pada simulasi. Baca Simulasi Program Mikrokontroler dengan BASCOM AVR.
Semoga bermanfaat..
Dalam artikel kali ini akan ditekankan aplikasi dalam bentuk simulasi program counter pada mikrokontroler dengan menggunakan program Bascom AVR.
Deskripsi Sistem
Sistem ini akan membaca sensor yang terhubung di salah satu pin di mikrokontroler, di PinA.0 dan PinA.1. Ketika PinA.0 bernilai 1 maka program akan menghitung maju, dan ketika PinA.1 bernilai 1 maka program akan menghitung nmundur, lalu port B dihubungkan ke LCD sebagai penampil jumlah perhiutngan serta keluaran dari sistem ini dihubbungkan ke PortD, jika sensor talah menghitung sebanyak 5 kali atau lebih, maka lampu di PortD akan menyala.
Program
$regfile = "8535def.dat"
$crystal = 1000000
$sim
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs=Portb.5
Config Lcd = 16 * 2
Dim Hitung As Byte
Config Porta = Input
Config Portd = Output
Sensor_a Alias Pina.0
Sensor_b Alias Pina.1
Led Alias Portd
Porta = 1
Hitung = 0
Led = 0
Do
Locate 1 , 1
Lcd "hitung = "
If Sensor_a = 0 Then
Hitung = Hitung + 1
Do
Loop Until Sensor_a = 1
End If
If Sensor_b = 0 Then
Hitung = Hitung - 1
Do
Loop Until Sensor_b = 1
End If
Locate 2 , 1
Lcd Hitung
If Hitung >= 5 Then
Portd = &HFF
Else
Portd = &H00
End If
Loop
Hasil Percobaan
Ketika jumlah perhitungan telah mencapai 5 atau selebihnya maka lampu pada Port.D akan hidup, sedikit tambahan pada layar simulasi port sebelah kanan (lampu hijau) merupakan input pada simulasi, sedangkan port pada layar sebelah kiri (lamu merah) merupakan output pada simulasi. Baca Simulasi Program Mikrokontroler dengan BASCOM AVR.
Semoga bermanfaat..
mas,,mohon bantuannya,,aku mo bkin penghitung orang masuk dan orang yg keluar suatu ruangan dgn 2 buah sensor photodioda yg di pasang dalam satu pintu.. tolong programnya seperti apa mas menggunakan bascom,,
BalasHapusTO mas fre's: programnya hampir sama dengan diatas, tinggal buat rangkaian photodioda nya saja biar mendeteksi orang memberi perubahan logika ke mikrokontroler
BalasHapusMas mohon bantuannya...
BalasHapusbisa tolong cekkan program bascom ini
dan mohon di betulkan
$regfile = “m8535.dat” ‘Mikrokontroler yang digunakan = ATMEGA8535
$crystal = 8000000 ‘Kristal Oscilator yang digunakan = 8 MHz
‘Inisialisasi RAM yang akan digunakan sebagai register:
Dim Data7 As Byte
Dim Koma7 As Byte
Dim Dataadc As Word
Dim Suhu As Single
Dim S10 As String * 10
Dim S2a As String * 2
Dim S2b As String * 2
Dim Panjang As Byte
‘Inisialisasi ADC:
Config Adc = Single , Prescaler = Auto
Start Adc
‘Inisialisasi PORT I/O:
Config Porta.0 = Output ‘Inisialisasi PORTA.0 sebagi output
Config Porta.5 = Output
Config Porta.6 = Output
Buzzer Alias Porta.0 ‘PORTA.0 = Buzzer
Enlo Alias Porta.5 ‘PORTA.5 = Pengendali 7-Segment (bilangan pecahan)
Enhi Alias Porta.6 ‘PORTA.6 = Pengendali 7-Segment (bilangan bulat)
Config Portc = Output ‘Inisialisasi PORTC sebagai output
Buzzer = 1 ‘Buzzer = OFF (Buzzer = active-low)
Enlo = 1 ‘7-Segment pecahan = di-latch (tidak menerima data)
Enhi = 1 ‘7-Segment bulat = di-latch
Do
Dataadc = Getadc(7) ‘Ambil data ADC kanal 7 (PORTA.7)
‘Proses kalibrasi data suhu:
Suhu = Dataadc / 10.23
Suhu = Suhu * 5.03
S10 = Fusing(suhu , “#.##”)
Panjang = Len(s10)
Panjang = Panjang – 3
S2a = Left(s10 , Panjang)
S2b = Right(s10 , 2)
Data7 = Val(s2a)
Koma7 = Val(s2b)
‘Proses menampilkan data bilangan pecahan ke 7-Segment:
Portc = Makebcd(koma7)
Enlo = 0 ‘7-Segment pecahan diaktifkan (siap menerima data)
nop
nop
Enlo = 1 ‘7-Segment bulat di-latch
‘Proses menampilkan data bilangan bulat ke 7-Segment:
Portc = Makebcd(data7)
Enhi = 0
nop
nop
Enhi = 1
Waitms 200 ‘Tunda 200ms
Loop
untuk mas aghoy:
BalasHapusmaaf telat bales, saya jarang buka komentar
itu deklarasi mikrokontroler yg digunakan salah,
program mas aghoy : $regfile = “m8535.dat”
harusnya $regfile = “8535def.dat”
untuk melihat file reg mikro pada bascom bisa buka folder instalasinya,misal "C:\Program Files\MCS Electronics\BASCOM-AVR-DEMO\
terus pada program deklarasi I/O
pada program mas aghoy:
Config Porta.0 = Output
Config Porta.5 = Output
Config Porta.6 = Output
harusnya gini aja
Config Porta = Output
Sudah saya coba dan gak ada error
semoga bermanfaat
software yang digunakan apa mas??
BalasHapuscodevision avr bisa gak??
Bisa, kalo mau simulasi bisa dikombinasikan dengan software proteus
BalasHapusmas aku mo bkin penghitung orang masuk dan orang yg keluar suatu ruangan dgn 2 buah sensor photodioda yg di pasang dalam satu pintu
BalasHapusini program yang udah aku buat tp msh ada kekurangan yaitu jika orang berdiri di depan sensor dalam waktu yang cukup lama maka alat akan terus menghitung jumlah orang..
mohon bantuannya
$regfile = "m16def.dat"
$crystal = 11059200
Config Pina.1 = Input
Config Pina.0 = Input
Config Pinb.5 = Input
Config Pinb.6 = Input
Config Pinb.7 = Input
Tombol1 Alias Pinb.5
Tombol2 Alias Pinb.6
Tombol3 Alias Pinb.7
Fd1 Alias Pina.1
Fd2 Alias Pina.0
Set Portb.5
Set Portb.6
Set Portb.7
Declare Sub Kalibrasi
Declare Sub Bacaadc
Declare Sub Ceksensor
Dim Href0 As Word , Lref0 As Word , Vref0 As Word
Dim Href1 As Word , Lref1 As Word , Vref1 As Word
Dim Dataadc0 As Word , Dataadc1 As Word
Dim X As Byte , Y As Byte , Z As Byte
Dim Eeprom0 As Eram Byte , Eeprom1 As Eram Byte
Config Adc = Single , Prescaler = Auto , Reference = Avcc
'-------------------------------->> konfigurasi LCD <<-------------------------------------------------------------
Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4 , Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.6 , Rs = Porta.7
Config Lcdbus = 4
Config Lcd = 16 * 2
Cursor Off
Cls
Eeprom0 = Vref0
Eeprom1 = Vref1
'------------------------------------------------------------------------------------------------------------------
Primer:
Do
Cls
Locate 1 , 1
Lcd "coba PD"
Locate 2 , 1
Lcd "kalbrasi counter"
Waitms 100
If Tombol1 = 0 Then
Call Bacaadc
Call Kalibrasi
End If
If Tombol3 = 0 Then Goto Mulai
Loop
'X = 0
'Y = 0
Mulai:
X = 0
Y = 0
Do
Call Ceksensor
Gosub Counterpd
If X > Y Then Z = X - Y
If X < Y Then Z = Y - X
If X = Y Then Z = X - Y
Cls
Locate 1 , 1
Lcd "IN=" ; X
Locate 1 , 9
Lcd "OUT=" ; Y
Locate 2 , 1
Lcd "Jml=" ; Z
Locate 2 , 9
Lcd "S=" ; Pina.1 ; Pina.0
Waitms 200
Loop
Counterpd:
Do
If Fd2 = 1 Then
Incr X
Waitms 500
End If
Loop Until Fd1 = 1
Do
If Fd1 = 1 Then
Incr Y
Waitms 500
End If
Loop Until Fd2 = 1
'-------------------------------------------------------------------------------
Sub Bacaadc:
Start Adc
Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Stop Adc
End Sub
'-------------------------------------------------------------------------------
Sub Kalibrasi
Cls
Lcd "proses kalibrasi"
Waitms 500
Do
Call Bacaadc
If Dataadc0 < Href0 Then Lref0 = Dataadc0
If Dataadc1 < Href1 Then Lref1 = Dataadc1
If Dataadc0 > Lref0 Then Href0 = Dataadc0
If Dataadc1 > Lref1 Then Href1 = Dataadc1
Cls
Locate 1 , 1
Lcd "adc=" ; Lref0
Waitms 100
Cls
Locate 2 , 1
Lcd "adc=" ; Lref1
Waitms 100
Loop Until Tombol1 = 0
Vref0 = Lref0 + Href0
Vref1 = Lref1 + Href1
Vref0 = Vref0 / 2
Vref1 = Vref1 / 2
Kalibrasi_x:
Cls
Lcd "kalibrasi sukses"
Wait 2
Eeprom0 = Vref0
Eeprom1 = Vref1
Do
Cls
Lcd ; Pina.0 ; Pina.1
Waitms 200
Loop Until Tombol2 = 0
Goto Primer
End Sub
Sub Ceksensor
Call Bacaadc
If Dataadc0 > Vref0 Then
Pina.0 = 1
End If
If Dataadc0 < Vref0 Then
Pina.0 = 0
End If
If Dataadc1 > Vref1 Then
Pina.1 = 1
End If
If Dataadc1 < Vref1 Then
Pina.1 = 0
End If
End Sub
program konter yang mas imam buat seperti ini:
BalasHapus"untuk counter 1"
Do
If Fd2 = 1 Then
Incr X
Waitms 500
End If
Loop Until Fd1 = 1
"untuk counter 2"
Do
If Fd1 = 1 Then
Incr Y
Waitms 500
End If
Loop Until Fd2 = 1
saran saya sebelum perinta if diakhiri ditambahkan perintah
Do
Loop Until Fd2 = 0
"untuk counter 1"
Do
Loop Until Fd1 = 0
"untuk counter 2"
jd perintahnya
Do
If Fd2 = 1 Then
Incr X
Waitms 500
Do
Loop Until Fd2 = 0
End If
Loop Until Fd1 = 1
"untuk counter 2"
Do
If Fd1 = 1 Then
Incr Y
Waitms 500
Do
Loop Until Fd1 = 0
End If
Loop Until Fd2 = 1
jadi counter tidak akan menghitung sampai terjadi perubahan logika pada pin yang dijadikan counter
mass,,saya uga mo bikin counter pngunjung pke infra,,klo misal pke CV avr gmn yaa?
BalasHapuslnjutan diatas,,saya bikin,,cm pda saat snsor trtutup,,progrm trus mncacah,,gmn...??tlng bntuanya
BalasHapussecara logika sama dengan diatas, tinggal ganti aja dengan rulu-rule di bahasa c
BalasHapusjarak antar 2 buah photodioda itu berapa ya mas?
BalasHapusjarak apanya mas?
Hapusmas saya bikin counter up down 2 digit dan input dengan 2 sensor....lo saya pakai at mega 16 programnya seperti apa ya mas...mohon bantuanya mas...makasi mas,ditnggu blsanya
BalasHapusHampir sama logika nya dengan program diatas
Hapusmas tolong bantuanya untuk bahasa c nya?? yg di avr codevision
Hapusmas maaf mw tanya nih, kalo misal program counter data penghitungannya bisa di save gx? , misalnya pada lcd menghitung sampai 5 tiba" ada gangguan tekhnis sperti power mati atau mati listrik nih, apakah begitu dinyalakan kmbali data counter yang tadi masih bisa tersimpan? kalo bisa gmn caranya? atau boleh minta contoh programnya mas,, tolong ya mas "saya lagi nyusun tugas akhir"
BalasHapusSetau saya bisa mas, tapi belum pernah coba, nanti saya tanyakan lagi sama teman yang lebih ahli
Hapusmas tolong bantuannya
BalasHapusmas tolong bantuanya untuk bahasa c nya??
BalasHapusmas, boleh minta program sistem di atas dalam bentuk bahasa C-nya?
BalasHapusmas ad program bascom 8051 / AVR untuk lift 3 lantai gak .......
BalasHapusmas , gimna listing programnya kalau mau menggabungkan dua buah sensor untuk mematikan dan menyalakan 1 buah lampu. (fungsi IF) contoh :
BalasHapusif sensor_1 = 0 and sensor_b = 0 then
hitung = hitung +1
port b = menyala
mohon pencerahanya
mass boss, kalau mau dibikin penghitung kecepatan motor bisa gak mas ???, sekalian jadi umpan balik buat pengontrolannya mass boss, terimakasih sebelum nya :D
BalasHapusterimakasih mas, sangat membantu��
BalasHapus