28 - 01 - 2013
10 : 24 PM
Ok, kali ini saya akan kembali mereview sebuah rangkaian yang pernah saya buat. Alat ini adalah alat yang digunakan sebagai Penulisan Ilmiah (PI) dari teman saya bernama eko. Judul alat ini adalah 'Payung Otomatis'. Alat ini terdiri dari input berupa : Cahaya, Air, dan beberapa switch sebagai pengontrol. Lalu prosesnya berupa : Mikrokontroller AT89S51, Driver Motor DC L293D, dan IC komparator LM339. Dan terakhir output berupa : Tampilan LCD 16x2, dan Perputaran Motor DC.
Baik, mari saya jelaskan sedikit kinerja alat ini. Karena saya sedang tidak begitu mood mereview listing program secara perbaris seperti sebelumnya. Toh tidak ada yang minat juga sepertinya untuk mengerti alurnya program dari rangkaian. Kalian hanya tinggal menyamakan jalur / rangkaian seperti yang di gambar, lalu mengcopy-paste program yang akan saya berikan di bawah postan ini. Dan selesai, alat bekerja. Benar kan, itu yang kalian inginkan? Baiklah baik.
Alat ini bekerja dengan memproses input dari LDR maupun dari sensor air. Jadi kondisinya, ketika ada cahaya yang banyak (kondisi panas terik). Maka payung akan terbuka, payung terbuka disini di ibaratkan berputar searah jarum jam (Clock Wise). Lalu apabila sensor air terkena air (kondisi hujan), maka payung akan terbuka juga. Kondisi lainnya, maka payung akan menutup atau berputar berlawanan arah jarum jam (Counter Clock Wise). Lalu bagaimana payung akan berhenti berputar? Nah, karena itulah kita pergunakan switch. Switch disini berfungsi sebagai pemberhenti perputaran motor. Jadi ketika payung sudah terbuka maximal ataupun menutup maximal, maka kita buat switch menjadi tertekan. Contoh dengan meletakkan switch pada kedua ujung saat payung terbuka maximal maupun menutup maximal. Lalu LCD disini akan menampilkan tulisan "Terbuka" apabila payung sedang dalam keadaan terbuka. Dan "Tertutup" apabila payung sedang dalam keadaan tertutup.
Yah kurang lebih seperti itulah cara kerjanya. Sedikit simple yah kedengarannya. Baiklah saya langsung saja bagikan gambar dan listing programnya. Selamat menikmati, hope you enjoy !!!
org 00h
DB0 EQU P3.0
DB1 EQU P3.1
DB2 EQU P3.2
DB3 EQU P3.3
DB4 EQU P3.4
DB5 EQU P3.5
DB6 EQU P3.6
DB7 EQU P3.7
EN EQU P2.7
RS EQU P2.5
RW EQU P2.6
DATA_LCD EQU P3
mov p0,#0feh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
lcall lcd_tertutup
start:
mov p1,#0ffh
jnb p0.1,buka
jb p0.0,buka2
sjmp start
buka:
mov p1,#0efh
lcall lcd_terbuka
kondisi1:
jnb p0.2,berhenti
sjmp kondisi1
buka2:
mov p1,#0efh
lcall lcd_terbuka
kondisi5:
jnb p0.2,berhenti2
sjmp kondisi5
tutup:
mov p1,#0dfh
lcall lcd_tertutup
kondisi2:
jnb p0.3,start
sjmp kondisi2
berhenti2:
mov p1,#0ffh
kondisi3:
jnb p0.0,tutup
sjmp kondisi3
berhenti:
mov p1,#0ffh
kondisi4:
jb p0.1,tutup
sjmp kondisi4
lcd_terbuka:
LCALL INIT_LCD
LCALL CLEAR_LCD
MOV A,#'T'
LCALL WRITE_TEXT
MOV A,#'E'
LCALL WRITE_TEXT
MOV A,#'R'
LCALL WRITE_TEXT
MOV A,#'B'
LCALL WRITE_TEXT
MOV A,#'U'
LCALL WRITE_TEXT
MOV A,#'K'
LCALL WRITE_TEXT
MOV A,#'A'
LCALL WRITE_TEXT
ret
lcd_tertutup:
LCALL INIT_LCD
LCALL CLEAR_LCD
MOV A,#'T'
LCALL WRITE_TEXT
MOV A,#'E'
LCALL WRITE_TEXT
MOV A,#'R'
LCALL WRITE_TEXT
MOV A,#'T'
LCALL WRITE_TEXT
MOV A,#'U'
LCALL WRITE_TEXT
MOV A,#'T'
LCALL WRITE_TEXT
MOV A,#'U'
LCALL WRITE_TEXT
MOV A,#'P'
LCALL WRITE_TEXT
ret
WAIT_LCD:
CLR EN ;Start LCD command
CLR RS ;It's a command
SETB RW ;It's a read command
MOV DATA_LCD,#0FFh ;Set all pins to FF initially
SETB EN ;Clock out command to LCD
MOV A,DATA_LCD ;Read the return value
JB p3.7,WAIT_LCD ;If bit 7 high, LCD still busy
CLR EN ;Finish the command
CLR RW ;Turn off RW for future commands
RET
INIT_LCD:
CLR RS
MOV DATA_LCD,#38h
SETB EN
CLR EN
LCALL WAIT_LCD
CLR RS
MOV DATA_LCD,#0Eh
SETB EN
CLR EN
LCALL WAIT_LCD
CLR RS
MOV DATA_LCD,#06h
SETB EN
CLR EN
LCALL WAIT_LCD
RET
CLEAR_LCD:
CLR RS
MOV DATA_LCD,#01h
SETB EN
CLR EN
LCALL WAIT_LCD
RET
WRITE_TEXT:
SETB RS
MOV DATA_LCD,A
SETB EN
CLR EN
LCALL WAIT_LCD
RET
delay: mov r0,#00fh
waktu :
djnz r2,waktu
djnz r1,waktu
djnz r0,waktu
ret
end
Showing posts with label MIDE-51. Show all posts
Showing posts with label MIDE-51. Show all posts
Monday, January 28, 2013
[Review] Rangkaian Payung Otomatis Berbasis AT89S51
Labels:
Assembler,
Elektronika,
MIDE-51,
MikroKontroller,
Review
Monday, January 14, 2013
[Review] Tirai dan Lampu Otomatis Berbasis Mikrokontroler AT89S51
15 - 01 - 2013
07 : 32 AM
----
Baiklah, karena sepertinya masih agak banyak yang kesulitan dalam membaca rangkaian dan membuat program pada sebuah rangkaian mikrokontroller. Maka saya memutuskan untuk me-review rangkaian dan program yang pernah saya buat. Terima kasih kepada semuanya yang telah mau berbagi gambar rangkaian dan programnya kepada saya.
----
Karena ini review pertama saya tentang rangkaian dan program, semoga tidak begitu buruk ya hahaa.
Rangkaian ini adalah Project yang di ajukan oleh teman saya untuk PI (Penulisan Ilmiah) nya. Rangkaian ini berjudul 'Tirai dan Lampu Otomatis Berbasis Mikrokontroler AT89S51'. Kamu dapat mengunjungi blognya jika ingin membaca tulisan-tulisannya di alamat http://raqheelcaze.wordpress.com/
Baiklah langsung saja ya, dapat kita lihat bahwa alat ini memiliki input berupa 3 switch dan sensor. Switch pada p1.0 dan p1.2 terhubung dengan ground yang berarti akan aktif jika terdapat logika low (aktif low / 0). Maka kedua port ini ketika di inisialisasikan di awal harus di berikan logika high (1). Seperti ini :
mov p1, #0ffh
Lalu input pada p3.0 yang mana di dapat dari sensor LDR (Light Dependent Resistor), input dari LDR ini akan di dapat dari output pada rangkaian comparator. Yang berarti bahwa apabila LDR terkena cahaya, maka akan menghasilkan output high (1) pada output comparator. Itu berarti bahwa p3.0 ini harus di inisialisasikan awalnya dengan logika low (0). Begitu juga dengan switch pada p3.2 yang terhubung ke vcc, yang berarti aktif high. Maka harus di inisialisasikan di awal dengan logika low (0). Seperti ini :
mov p3, #000h
Lalu sekarang kita lihat outputnya. Outputnya berupa nyala lampu LED pada port p2.4 yang mana terhubung dengan kaki anoda LED. Ini berarti LED akan aktif jika mendapat logika high (1). Karena LED ini di andaikan adalah sebuah lampu, maka pada inisialisasi awal harus di berikan logika high (1) untuk menyalakan LED, karena kondisi awal LDR nya tadi adalah tidak aktif, yang berarti itu di andaikan kondisi awal adalah malam hari maka lampu harus menyala dan tirai dalam keadaan tertutup. Lalu output lainnya pada kaki p2.0 dan p2.2 yang terhubung ke driver motor DC, yang pada keadaan awal ini motor tidak aktif, maka dapat kita berikan inisialisasi awal berupa logika high (1) maupun logika low (0), tetapi disini kita akan menggunakan logika high agar semua pin pada port p2 berlogika sama, yaitu logika high (1), karena pada pin p2.6 terhubung ke kaki enable juga yang harus di inisialisasikan dengan logika high (1). Seperti ini :
mov p2, #0ffh
Baiklah, semua port input maupun output telah kita inisialisasikan. Saatnya kita membuat logika pengkondisian programnya. Logikanya adalah seperti ini. Alat Tirai ini aktif dengan dua cara, manual dengan switch pada pin p3.2, lalu auto dengan kondisi LDR. Itu berarti apabila switch di tekan, maka tirai akan tertutup. Lalu apabila switch tidak di tekan, itu berarti akan bergantung pada kondisi LDR, jika LDR nya terkena cahaya (output comparator logika 1) maka tirai akan terbuka, lalu jika LDR tidak terkena cahaya (output comparator logika 0) maka tirai akan tertutup. Pengkondisiannya dapat di lakukan dengan sintaks seperti ini :
jb p3.2, tutup
jnb p3.2, pilih
Jb p3.2,tutup berarti bahwa jika pin p3.2 mendapat logika high (1), maka akan melompat ke sub-routine tutup. Lalu jnb p3.2,pilih berarti bahwa jika pin p3.2 mendapat logika low (0), maka akan melompat ke sub-routine pilih.
Baiklah, sekarang saatnya kita membuat outputnya. Apabila tirai terbuka, maka motor akan berputar CW (Clock Wise / Searah Jarum Jam). Lalu apabila tirai tertutup, maka motor akan berputar CCW (Counter Clock Wise / Berlawanan Jarum Jam). Itu berarti kita harus membuat perbedaan pada output pin p2.0 dan p2.2. Seperti ini :
buka :
mov p2, #0eeh
tutup :
mov p2, #0fbh
Lalu bagaimana perputaran motor ini akan berhenti? Perputaran motor ini akan berhenti di picu oleh penekanan pada switch di p1.0 atau p1.2. Saat tirai di buka, maka motor akan berhenti apabila switch p1.0 di tekan. Lalu apabila tirai tertutup, maka motor akan berhenti apabila switch p1.2 di tekan. Seperti ini :
jnb p1.0, mati1
jnb p1.2, mati2
----
Baiklah, sepertinya tugas saya dalam me-review rangkaian dan program hanya sampai disini saja. Sekarang saatnya tugas kalian untuk menyatukan semua puzzle yang terpisah-pisah ini menjadi satu. Saya akan memberikan program lengkapnya di bawah. Semoga review saya ini dapat membantu anda dalam memahami rangkaian dan lalu membuat programnya berdasarkan gambar dan kondisi rangkaian. Kurang lebihnya saya minta maaf. By the way, saya membuka jasa pembuatan program, rangkaian, maupun konsultasi ataupun diskusi tentang rangkaian-rangkaian mikrokontroller seperti ini. Jika tertarik, kalian dapat langsung berkomentar saja pada tulisan ini. Nanti kita akan lanjutkan berkomunikasinya di luar komentar ini, entah dengan email, ym, fb, sms, dan sebagainya. Yang pasti kita tidak akan berdiskusi di kolom komentar. Baiklah, terima kasih banyak karena sudah meluangkan waktu untuk membaca tulisan saya.
----
Compiler : MIDE-51
Language : Assembler
MikroKontroller : AT89S51
$mod51
org 00h
mov p1, #0ffh
mov p2, #0ffh
mov p3, #000h
pil :
mov a,p3
jb p3.2, tutup
jnb p3.2, pilih
pilih :
jnb p3.0, tutup
jb p3.0, buka
buka :
mov p2, #0eeh
jnb p1.0, mati1
cjne a, p3, pil
sjmp buka
tutup :
mov p2, #0fbh
jnb p1.2, mati2
cjne a, p3, pil
sjmp tutup
mati1 :
mov p2, #0eah
cjne a, p3, pil
sjmp mati1
mati2 :
mov p2, #0fah
cjne a, p3, pil
sjmp mati2
end
Labels:
Assembler,
Elektronika,
MIDE-51,
MikroKontroller,
Review
Subscribe to:
Posts (Atom)