Nama : Erni Solijah
Kelas : TI 11 S
NIM : 11.11.2003
Mengendalikan Keluaran
Relay Dengan PC Pada Seri Mikrokontroler AT89
Sebuah mikroprosesor tidak dapat berdiri
sendiri, ia membutuhkan peranti lainnya untuk dapat berfungsi yaitu ROM (read
only memory) untuk menyimpan program dan data, RAM (random access memory) untuk
menyimpan data dan hasil proses serta peranti I/O untuk berinteraksi dengan
perangkat lainnya di luar sistem mikroprosesor itu sendiri. Bayangkan! Contoh
sederhana yang pernah aku buat adalah sistem minimum mikroprosesor 8085 di mana
untuk melengkapinya dengan gerbang I/O menggunakan sebuah PPI (programmable
Peripheral Interface) 8255 dan ketika menginginkan sistem dapat berkomunikasi
secara serial menggunakan USART (universal synchronous asynchronous receiver
transmitter) 8251.
Sebagai gambaran saja, untuk membuat sistem
minimum seperti di atas setidaknya kita memerlukan 5 komponen utama seperti uP
8085, E2PROM 2864, SRAM 6264, PP1 8255 dan USART 8251. Belum 3
komponen pendukungnya seperti 74LS373, 74LS245 dan 74LS139. Total ada 8
komponen belum termasuk regulator dan komponen lainnya seperti resistor,
kapasitor, kristal dan diode.
Sekarang sudah banyak mikrokontroler yang
bisa menggantikan sistem minimum seperti di atas. Ambil contoh adalah seri AT89
bahkan memiliki gerbang I/O lebih banyak jika menggunakan AT8951.
Membuat perangkat keluaran relay yang dapat dikendalikan
menggunakan PC dengan AT89C2051 seperti gambar berikut:
Rangkaian di atas diperlukan sebagai
langkah awal persiapan perangkat keras meski tidak memperlihatkan komponen
relaynya. Keluaran ULN2803 dapat digunakan untuk keperluan apa saja tidak harus
relay.
Setelah rangkaian siap, masukkan program
berikut ini ke mikrokontroler AT89C2051 agar simulasi keluaran yang
dikendalikan melalui PC dapat dijalankan.
$mod51
BufSerial data 8h
RegStack data 10h
SerialSiap bit p3.7
org 0h
Inisialisasi:
mov sp, #RegStack-1
mov pcon, #0
mov scon, #50h
mov tmod, #20h
mov ie, #90h
mov tl1, #0fdh
mov th1, #0fdh
setb
tr1
ajmp
Mulai
org 23h
jnb ri, $
clr ri
mov a, sbuf
cjne
a, #'<', ProsesSerial
mov r0, #BufSerial
reti
ProsesSerial:
cjne
a, #'>', PeriksaSerial
cjne
r0, #BufSerial+8, ResetSerial
clr SerialSiap
reti
ResetSerial:
mov r0, #0
reti
PeriksaSerial:
cjne
r0, #0, SimpanSerial
reti
SimpanSerial:
mov @r0, a
inc r0
reti
Mulai:
jb SerialSiap, $
mov r0, #BufSerial
mov r1, #8
ProsesKeluaran:
mov a, @r0
cjne a, #'0', Logika1
clr c
ajmp GeserKeluaran
Logika1:
cjne a, #'1', SalahKarakter
setb c
GeserKeluaran:
rlc a
inc r0
djnz r1, ProsesKeluaran
mov p1, a
SalahKarakter:
mov r0, #0
setb SerialSiap
ajmp Inisialisasi
end
Nah, langkah persiapan perangkat keras dan
lunak untuk kemudi keluaran sudah selesai. Saatnya membuat aplikasi berbasis
Visual Basic untuk dioperasikan pada PC. Setelah aplikasi Visual Basic siap
ikuti langkah berikut untuk pembuatan aplikasinya. Kita akan membuat tampilan
aplikasi seperti berikut ini:
Pertama kita akan menamai pekerjaan ini
dengan prjRelay. Selanjutnya untuk form yang dibuat akan dinamai frmRelay
dengan property caption “Simulasi Remote Relay”. Untuk BorderStyle dipiliah 1 –
Fixed Single. Setelah form selesai selanjutnya kita akan mengisinya dengan
beberapa obyek dan tool.
Tambahkan obyek CommandButton untuk
perintah ON dalam bentuk array sebanyak 8 buah untuk masing-masing relay dengan
nama cmdON(0) sampai dengan cmdON(7). Begitu juga dengan untuk perintah OFF
sebanyak 8 buah dengan nama cmdOFF(0) sampai(7). Aplikasi juga akan dilengkapi
dengan perintah untuk meng-ON-kan seluruh relay secara bersamaan dengan nama
cmdAllON dan untuk meng-OFF-kan semua dengan nama cmdAllOFF. Nah untuk tombol
perintah selesai.
Untuk memberikan indikator status relay
dapat kita gunakan obyek shape yang dibuat secara array juga yaitu shpRelay(0)
sampai shpRelay(7) dengan property shape adalah 3 – Circle.
Pada perintah semua relay ditambahkan
dengan label dengan nama lblIndikator dan property caption bertuliskan “ALL”
dengan property BackStyle 0 – Transparent.
Paling kanan aku secara iseng menambahkan
sebuah obyek image dengan nama imgControl. Pada property Picture Sobat bisa
memilih gambar apa saja bahkan foto juga bisa.
Terakhir adalah menyiapkan komponen
komunikasi serial. Pada keyboard ketiklah Ctrl+T atau pilih dari menubar Project dan pilih Component
untuk menampilkan jendela Components. Pilihlah pada Control dengan menandai
pada Microsoft Comm Control 6.0 lalu Apply dan OK. Pada tabulasi Toolbox
General akan muncul ikon bergambar telepon, dengan mouse klik 2 kali untuk
menambahkan pada form kita. Sekarang kita sudah mempunyai tool MSComm1 yang mengendalikan
komunikasi secara serial biarkan tetap pada property default-nya.
Setelah Option Explicit kita perlu
menetapkan variabel yang akan digunakan yaitu No as Integer dan Relay as
String.
Option Explicit
Dim No%, Relay$
Berikut adalah pernyataan perintah yang
akan dilaksanakan pada tombol-tombol CommandButton. Untuk subrutin cmdAllON dan
cmdAllOFF kita menggunakan perintah looping For – Next untuk memanipulasi
seluruh tombol cmdON dan cmdOFF serta shpRelay. Sementara untuk masing-masing
cmdON dan cmd OFF kita memanfaatkan indeks saja. Semua perintah nantinya akan
dilaksanakan pada Sub Kirim yang dibuat.
Private Sub cmdAllOFF_Click()
For No = 0 To 7 Step 1
cmdON(No).Enabled = True: cmdOFF(No).Enabled = False: shpRelay(No).FillColor =
vbBlack
Next No
Kirim
End Sub
Private Sub cmdAllON_Click()
For No = 0 To 7 Step 1
cmdON(No).Enabled = False: cmdOFF(No).Enabled = True: shpRelay(No).FillColor =
vbGreen
Next No
Kirim
End Sub
Private Sub cmdOFF_Click(Index As Integer)
cmdON(Index).Enabled = True:
cmdOFF(Index).Enabled = False: shpRelay(Index).FillColor = vbBlack
Kirim
End Sub
Private Sub cmdON_Click(Index As Integer)
cmdON(Index).Enabled = False:
cmdOFF(Index).Enabled = True: shpRelay(Index).FillColor = vbGreen
Kirim
End Sub
Pada Private Sub Form Load kita perlu
mempersiapkan kondisi awal dengan menon-aktifkan seluruh cmdOFF dan
mengaktifkan gerbang serial. Pada imgKontrol aku menambahkan sebuah property
ToolTipText yang akan tampil jika penunjuk mouse melintasinya.
Private Sub Form_Load()
On Error Resume Next
For No = 0 To 7 Step 1
cmdOFF(No).Enabled = False
Next No
MSComm1.PortOpen = True
imgKontrol.ToolTipText = "Klik di
sini untuk ON dan OFF"
End Sub
Berikut adalah Sub Kirim yang dibuat yang berisi
pernyataan untuk mengirim data ke perangkat secara serial. Data diawali dengan
karakter “<” kemudian dilanjutkan dengan 8 karakter angka “0” atau “1” dan
diakhiri dengan “>”.
Private Sub Kirim()
On Error Resume Next
Relay = "<"
For No = 0 To 7 Step 1
If
shpRelay(No).FillColor = vbGreen Then
Relay = Relay & "0"
Else
Relay = Relay & "1"
End If
Next No
MSComm1.Output = Relay &
">"
End Sub
Nah, imgKontrol juga bisa dimanfaatkan untuk perintah
togle ON dan OFF untuk seluruh relay.
Private Sub imgKontrol_Click()
If shpRelay(0).FillColor = vbBlack
Then
cmdAllON_Click
Else
cmdAllOFF_Click
End If
End Sub