TUGAS AKHIR
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Sains dan Teknologi
Program Studi Teknik Elektro
Disusun oleh:
RICKY NELSON
NIM : 035114007
i
MEDICINE BOX CONTROLLER WITH “ON/OFF”
MODE USING THERMOELECTRIC
FINAL ASSIGNMENT
Presented as Partial Fulfillment of the Requirements
To Obtain the Bachelor of Science and Technology Degree
In Electrical Technique Study Program
By:
RICKY NELSON
NIM : 035114007
ii
LEMBAR PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, me-
ngalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data,
mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media
lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun mem-
berikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.
Dibuat di Yogyakarta
Yang menyatakannya
( Ricky Nelson )
LEMBAR PERNYATAAN KEASLIAN KARYA
“Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini
tidak memuat karya atau bagian karya orang lain,
kecuali yang telah disebutkan dalam kutipan dan daftar pustaka,
sebagaimana layaknya karya ilmiah.”
Ricky Nelson
v
MOTTO DAN PERSEMBAHAN
vi
PENGENDALI SUHU KOTAK OBAT DENGAN
MODE “ON/OFF” MENGGUNAKAN
TERMOELEKTRIK
Ricky Nelson
035114007
INTISARI
Untuk kondisi yang baik obat membutuhkan penyimpanan yang baik pula, salah
satunya adalah faktor suhu. Dengan pengaturan suhu, obat dapat bertahan lebih lama.
Berdasarkan hal ini akan dibuat alat pendingin menggunakan termoelektrik dengan
mode “ on/off ”.
Nilai masukan berasal dari keypad untuk diolah mikrokontroler ATMega8535.
Dengan mode “ on/off ” nilai masukan dijadikan acuan untuk mengaktifkan
pendinginan pada plan yang dihasilkan oleh termoelektrik. Suhu didalam plan
dideteksi menggunakan sensor suhu LM35. Hasil keluaran dari sensor suhu menjadi
masukan mikrokontroler sebagai pembanding dengan nilai masukan. Untuk
menampilkan nilai masukan dan nilai dari sensor digunakan LCD.
Pengendali suhu dapat diimplementasikan dan dilakukan pengujian. Terbukti
bahwa pengendali suhu dapat bekerja dengan baik dari suhu 8 0C hingga suhu 4 0C.
Dengan waktu yang diperlukan sekitar 48,5 menit sampai 63 menit untuk mencapai
waktu stabil.
vii
MEDICINE BOX CONTROLLER WITH “ON/OFF”
MODE USING THERMOELECTRIC
Ricky Nelson
035114007
ABSTRACT
viii
KATA PENGANTAR
Puji dan syukur penulis panjatkan ke hadirat Tuhan Yang Maha Esa yang telah
akhir berjudul “Pengendali Suhu Kotak Obat Dengan Mode “On/Off” Menggunakan
Termoelektrik”. Tugas akhir ini merupakan salah satu syarat untuk memperoleh gelar
Penulisan tugas akhir ini tidak lepas dari bantuan berbagai pihak. Oleh karena
cinta, kasih sayang, doa, dukungan dan segala hal yang tak ternilai.
3. Kakakku Maria Kristin. N tersayang yang telah memberikan doa dan dukungan
4. Ibu Wuri selaku dosen pembimbing I yang telah banyak meluangkan waktu untuk
5. Bapak Tjendro selaku dosen pembimbing II yang telah banyak meluangkan waktu
untuk memberi bimbingan, pengetahuan, kritik dan saran kepada penulis dalam
ix
6. Bapak Petrus selaku dosen penguji saat kolokium yang telah menambahkan ide
7. Bapak Djoko dan ibu Prima selaku dosen penguji saat pendadaran yang telah
8. Bapak Rusdi yang telah memberikan masukan dan pengetahuan mengenai proses
pendinginan.
9. R. Henry. R (TE’04) dan Zaenal Arif (TE’04) yang menjadi satu kelompok untuk
10. Semua rekan-rekan Teknik Elektro yang sudah mendukung, membantu dan
11. Anak-anak “G.B.U” yang selalu menghibur : Luky, Deny, Indra, Wily dan Fery.
12. Semua orang yang terlalu banyak, sehingga tidak dapat disebutkan satu-persatu
karena itu segala kritik dan saran yang membangun akan penulis terima dengan
senang hati.
Akhir kata, semoga tugas akhir ini dapat bermanfaat bagi penulis maupun
Yogyakarta,
Penulis
Ricky Nelson
x
DAFTAR ISI
Halaman
JUDUL ……………………………………………………………………..…. i
xi
1.6. Sistematika Penulisan ………………………………….……… 4
2.6. LM 35 ………………………………………….……………… 13
xii
3.4. Penggunaan Pin Pada Mikrokontroler ………………………… 26
LAMPIRAN DATASHEET
xiii
DAFTAR GAMBAR
Halaman
Gambar 2.10. (a) Diagram Blok Kontrol Dua Posisi; (b) Dengan Celah Diferensial
…………………………………………………..……………… 14
xiv
Gambar 3.6. Rangkaian Reset ……………………….……………..………… 23
Gambar 4.9. LCD Menampilkan Nilai Input dan Nilai Sensor ………….…… 32
Gambar 4.10. Grafik Tegangan Masukan Termoelektrik +6 volt, +7 volt dan +8 volt
………………………………………………..…………………. 35
xv
Gambar 4.18. Tr dan Ts saat set point 5 ºC ……………………………………. 42
xvi
DAFTAR TABEL
Halaman
xvii
1
BAB I
PENDAHULUAN
pula, salah satunya adalah faktor suhu. Dengan pengaturan suhu, obat dapat
bertahan lebih lama. Saat ini telah beredar mesin pendingin berbentuk kulkas
tempat untuk obat dalam sekala kecil. Selain itu pendinginan dengan
menggunakan freon dapat merusak lapisan ozon bila terjadi kebocoran pada
pendingin dapat dibuat dengan bentuk yang kecil yaitu berupa tabung,
ini akan dibuat alat pendingin obat dengan basis mikrokontroler ATMega8535
dengan masukan berupa keypad dan ditampilkan oleh LCD (Liquid Crystal
melakukan pendinginan obat dengan bentuk yang kecil dan dengan suhu
1. Suhu minimum antara 3 0C sampai suhu ruang saat diberi beban berupa
air.
Sistematika penulisan tugas akhir ini terbagi menjadi lima bab yang
BAB I. PENDAHULUAN
Bab ini berisi tentang latar belakang masalah, tujuan dan manfaat
Bab ini berisi tentang diagram blok dan penjelasan cara kerja secara
Bab ini berisi tentang pengamatan kerja dari perangkat keras dan
BAB V. PENUTUP
Bab ini berisi tentang kesimpulan dan saran untuk perbaikan alat dan
penelitian selanjutnya.
5
BAB II
DASAR TEORI
2.1. TERMOELEKTRIK
secara listrik dan terhubung paralel secara termal (lihat pada gambar 2.1.)
dan sebagai isolator listrik antar tiap elemen semikonduktor. Pada sisi dingin
kalor diserap elektron ketika elektron mengalir dari elemen semikonduktor level
energi rendah (tipe p) ke elemen semikonduktor level energi tinggi (tipe n).
sebuah rangkaian tertutup, ketika salah satu ujung dipanaskan akan mengalir
arus listrik. Maka salah satu ujung sambungan menyerap kalor, sehingga
Fenomena ini ditemukan Jean Charles Athanase Peltier pada tahun 1834,
Salah satu jenis termoelektrik adalah TEC 1-127-06, maksudnya adalah nilai
yang bernilai 127 menjelaskan jumlah sambungan tipe p dan tipe n, sedangkan
nilai terakhir yang bernilai 06 menjelaskan nilai maksimal arus masukan pada
sehingga nilai arus variabel. Pengendalian nilai arus sesuai dengan perubahan
nilai tegangan. Sehingga bila arus berubah nilai tegangan pun berubah.
AVR merupakan produk Atmel, ATMega merupakan satu dari empat kelas
AVR dan ATMega8535 merupakan jenis dari kelas ATMega [4]. Dipilihnya
adanya ADC (Analog Digital Converter) 10 bit, saluran I/O sebanyak 32 pin
yang terbagi menjadi empat buah port (port A, port B, port C dan port D) dan
intruksi dikemas dalam kode 16 bit dan sebagian besar intruksi dieksekusi
3. Port A (PA0 ... PA7); sebagai pin I/O dua arah dan sebagai input analog ke A/D
konverter.
4. Port B (PB0 ... PB7); sebagai pin I/O dua arah dan pin dengan fungsi khusus,
5. Port C (PC0 ... PC7); sebagai pin I/O dua arah dan pin dengan fungsi khusus,
6. Port D (PD0 ... PD7); sebagai pin I/O dua arah dan pin dengan fungsi khusus,
buah port yang bernama PortA, PortB, PortC, dan PortD. Port I/O pada
sesuai dengan pengaturan yang digunakan. Untuk mengatur port I/O sebagai
masukan atau keluaran perlu dilakukan pengaturan pada DDR dan port.
clock, tegangan referensi, format output data, dan mode pembacaan. Register
(ADC Control and Status Register A), dan SFIOR (Special Fungtion IO
9
tegangan referensi ADC, format data output, dan saluran ADC yang digunakan.
dari pin AREF. Untuk nilai yang lain dapat dilihat pada tabel 2.2.
ADIF (ADC Interrupt Flag) pada register ADCSRA. ADIF akan bernilai satu
jika konversi saluran ADC telah selesai dilakukan dan data hasil konversi siap
karakter, terbuat dari bahan kristal cair dengan sistem dot matrik. Pada
terdapat 32 karakter. Setiap satu karakter terdiri dari 8 baris dan 5 kolom dot.
Jenis LCD yang digunakan pada perancangan adalah LCD Module M1632
produk dari SEIKO. Berdasarkan gambar 2.7, konfigurasi pin LCD adalah :
11
3. DB0 s/d DB7; sebagai pin jalur data yang digunakan untuk menyalurkan
4. RS (register select); pin yang membedakan jenis data yang dikirim ke LCD.
Jika RS berlogika ‘0’, maka yang dikirim adalah perintah pengaturan LCD.
Jika berlogika ‘1’, maka yang dikirim adalah data kode ASCII.
data dari LCD. Jika R/W berlogika ‘0’, maka terjadi pengiriman data ke
LCD. Jika R/W berlogika ‘1’, maka terjadi pengambilan data dari LCD.
‘0’, maka data di DB0 s/d DB7 akan diterima atau diambil dari port
mikrokontroler.
kolom. Seperti pada gambar 2.8. untuk pembacaan data terbagi menjadi dua,
yaitu pembacaan data pada baris dan pembacan data pada kolom. [7]
Pembacaan bertipe aktif rendah, artinya saat akan mengaktifkan baris atau
kolom yang dituju maka data yang diberikan adalah nol. Pemberian data dapat
sebuah penguat tegangan, baik itu penguatan negatif maupun penguatan positif
akan mengeluarkan nilai positif pula. Untuk rangkaiannya terlihat pada gambar
2.9.
Vo = [ 1 + ( Rf / R ) ] x Vi
Av = Vo / Vi
= (R + Rf) / R
= 1 + (Rf / R)
2.6. LM 35 [8]
LM35 sebuah IC sensor suhu dengan beberapa kriteria seperti :
Dalam sistem kontrol dua posisi, elemen penggerak hanya mempunyai dua
posisi tetap, yang dalam beberapa hal, benar-benar merupakan posisi ”on” dan
posisi ”off”. Kontrol dua posisi atau on-off relatif sederhana dan murah.
Misal sinyal keluaran kontroler adalah m(t) dan sinyal kesalahan penggerak
adalah e(t). Pada kontrol dua posisi, sinyal m(t) akan tetap pada harga
Gambar 2.10 menunjukan diagram blok kontrol dua posisi. Daerah harga
sinyal kesalahan penggerak antara posisi “on” dan posisi “off” disebut celah
2.10(b). Celah diferensial ini menyebabkan keluaran kontroler m(t) tetap pada
harga sekarang sampai sinyal kesalahan penggerak bergaser sedikit dari harga
nol. Pada beberapa kasus, celah diferensial disebabkan oleh gesekan yang tidak
Gambar 2.10. (a) Diagram Blok Kontrol Dua Posisi; (b) Dengan Celah Diferensial
15
Tinjau sistem tinggi muka cairan yang ditunjukan pada gambar 2.11.
Dengan kontrol dua posisi, maka katup akan membuka (penuh) atau menutup
(penuh). Jadi laju aliran air yang masuk adalah konstan positif atau nol. Seperti
ditunjukan pada gambar 2.12, sinyal keluaran berubah-ubah terus diantara dua
harga batas yang diperlukan untuk membuat elemen penggerak perubah dari
satu posisi tetap ke posisi tetap lainnya. Perhatikan bahwa kurva keluaran
mengikuti salah satu diantara dua kurva eksponensial, yaitu kurva pengisian dan
karakteristik respon yang khas dari sistem kontrol dua posisi. Dari gambar 2.12,
dapat dilihat bahwa amplitudo osilasi keluaran dapat di perkecil dengan cara
memperkecil celah diferensial. Akan tetapi hal ini dapat menyebabkan kenaikan
angka switching “on-off” untuk waktu nyang sama. Parameter tanggapan sistem
1. Waktu naik (rise time), Tr : waktu yang diperlukan respon untuk naik
keadaan awal sampai nilai yang ditentukan sebagai set point 0%.
mencapai suatu nilai dalam keadaan stabil yang ditentukan dengan nilai
BAB III
PERANCANGAN ALAT
dengan suhu minimum yang akan dicapai. Sehingga pendinginan dapat terjadi
bentuk luar berupa kotak. Bahan yang digunakan pada bagian dalam adalah
alumunium pejal penghantar suhu yang baik dibandingkan besi. Pada lapisan
luar menggunakan styrofoam dan akrilit untuk menahan udara agar tetap
bersirkulasi didalam. Selain itu busa padat (spon) digunakan sebagai penutup
18
tabung agar pendinginan terjadi dengan cepat dan tidak terganggu dengan suhu
dapat terjadi dengan baik dan suhu panas dapat terbuang dengan cepat.
berbentuk plat segi empat dan keramik sebagai pelapisnya dengan dua sisi yang
memiliki suhu berbeda, satu sisi menghasilkan dingin dan sisi yang lain
menghasilkan panas. Pada sisi yang menghasilkan suhu panas dipasang heat-
sink agar tidak mempengaruhi sisi yang lain, setelah pemasangan heat-sink agar
suhu panas cepat dilepas ke udara sekitar maka dipasang kipas pada bagian
dan perangkat lunak. Untuk perangkat keras dapat dilihat pada gambar 3.2.
inginkan. Untuk rangkaian dapat dilihat pada gambar 3.3. Tombol yang
digunakan bertipe push-on, artinya pada keadaan awal tombol bernilai nol dan
Sesuai dengan dasar teori, LCD yang digunakan adalah LCD 2x16 karakter.
Untuk proses kedua, baris pertama (atas) menampilkan “ Input = ” dan pada
baris (bawah) kosong. Jika input telah diberi masukan maka pada baris kedua
beserta dengan nilai suhu dan baris ke dua menampilkan “ Sensor = “, maksud
dari baris kedua adalah nilai suhu yang terbaca oleh sensor. Tetapi jika
menekan tombol “,” maka akan kembali ke proses kedua untuk memberi nilai
masukan.
penguat non-inverting.
Jika dilakukan penguatan dua kali dari tegangan masukan pada penguat non-
inverting dan nilai resistor sebesar 1000 Ω pada kaki masukan negatif op-amp.
Av = 2x dan R = 1000Ω
Av = 1 + (Rf / R)
2 = 1 + (Rf / 1000)
Rf = (2 - 1) x 1000
= 1000Ω
Untuk perancangan ini suhu yang digunakan adalah dingin, dengan acuan
semakin besar arus yang masuk maka semakin dingin suhu yang di peroleh.
Arus maksimal ditentukan berdasarkan nilai yang tertera pada satu digit
dikedua sisinya, maka suhu panas harus dapat dibuang dengan pemberian heat-
sink dan kipas dibagian panas. Sehingga suhu yang panas tidak mempengaruhi
keluaran berupa tegangan dengan sekala kecil dan kenaikan 10mV/ 0C. Hasil
setiap masukan dari sensor. Rangkaian dioda zener seperti gambar 3.4.
pada jenis kristal yang digunakan dan diletakan diantara pin XTAL1 dan pin
dengan VCC diberi sebuah resistor sedangkan antara pin reset dengan ground
diberi sebuah kapasitor hal tersebut untuk menjaga reset dengan keadaan logika
23
tinggi. Jika kapasitor terisi penuh maka tegangan pada reset menurun dan reset
reset secara manual pada saat program sedang berlangsung. Saat tombol ditekan
maka tejadi pengosongan kapasitor dan reset berlogika tinggi, sedangkan saat
tombol dilepas tegangan pada reset menjadi nol dan reset berlogika rendah.
Program yang akan dibuat adalah suatu program penentuan nilai suhu
dengan mode on-off. Saat nilai suhu kurang dari yang diinginkan maka
termoelektrik akan on (bekerja) dan saat nilai suhu lebih dari yang diinginkan
tiap pin dari sebuah port dan register yang akan digunakan. Selanjutnya
Diagram alir masukan berupa proses terjadinya masukan dari keypad untuk
mengetahui kapan nilai masukan diberikan dan untuk melakukan proses mode
Pada awal proses diperlukan masukan nilai suhu yang diinginkan, setelah itu
nilai masukan tersebut dipertanyakan terlebih dahulu apakah pasti dengan nilai
25
masukan atau tidak. Jika pasti maka tekan tombol “OK” dan proses akan
berlanjut, tetapi jika tidak tekan tombol “,” dan proses akan kembali untuk
Dalam proses pemilihan mode on-off dan memberikan nilai masukan, bila
tidak ada perintah atau masukan dari keypad maka akan terjadi looping hingga
ada masukan.
Dalam diagram alir proses ini menjelaskan saat kontrol on-off berlangsung,
dimana pemilihan mode on-off dan masukan suatu nilai untuk pemrosesan
Seperti yang terlihat pada gambar 3.9 nilai masukan telah ditetapkan pada
proses pemilihan maka termoelektrik mulai aktif, demikian pula dengan sensor
pendeteksi suhu.
26
Perbandingan dari nilai masukan dengan nilai yang diperoleh dari sensor
1. Nilai masukan dan nilai dari sensor sama, maka termoelektrik akan “on”.
2. Nilai masukan lebih besar dari nilai sensor, maka termoelektrik akan “off”.
digunakan sebagai masukan dan keluaran. Pin yang akan digunakan adalah
sebagai berikut :
27
BAB IV
Dari hasil rancangan perangkat keras dan program perangkat lunak bahasa
sebuah alat yang berfungsi untuk melakukan proses pendingin kotak obat.
Bentuk keseluruhan yang dihasilkan dari pendingin kotak obat dapat dilihat
obat, berupa driver arus, pengendali dan kipas. Sumber tegangan untuk driver
arus menggunakan rangkaian yang sudah ada, seperti gambar 4.2. Untuk
tegangan positif dan IC7915 untuk tegangan negatif maka tegangan menjadi
lurus.
29
Tegangan keluaran +12 volt berbentuk sinus dari trafo masuk ke kapasitor
30
gambar 4.4 yang berada pada bagian dalam, sedangkan PCB lainnya digunakan
untuk rangkaian masukan dan keluaran seperti gambar 4.5 yang berada pada
bagian luar.
Cara menggunakan alat ini dengan memberikan set point melalui keypad
sebanyak tiga angka, angka pertama untuk puluhan angka kedua untuk satuan
dan angka ketiga untuk satu buah angka dibelakang koma. Setelah selesai
memasukan tiga buah angka maka akan diberikan pilihan, jika set point tidak
memberikan nilai masukan kembali yang sesuai dengan keinginan. Tetapi bila
31
set point telah sesuai dengan yang diinginkan maka tekan ‘ OK ‘ dan alat
ini dari awal dengan menekan tombol ‘ , ‘ sekitar satu detik dan akan kembali
Pada awal pendingin kotak obat diaktifkan LCD dan akan ditampilkan
OFF*” pada baris kedua dalam beberapa detik seperti gambar 4.6. Kemudian
gambar 4.7. Pada saat inilah mulai dimasukkan set point sebanyak tiga angka,
yaitu puluhan, satuan dan satu angka di belakang koma. Setelah itu muncul
32
"Tekan : OK / ," untuk memilih apakah nilai masukan sesuai untuk mode on-off
Jika menekan tombol “OK” pada baris 4 kolom 1 maka mode on-off aktif dan
jika menekan tombol “,” pada baris 4 kolom 3 maka LCD menampilkan “Input
= ”.
Langkah awal saat mode on-off berlangsung adalah aktifnya sensor LM35
dan keluarannya menjadi masukan ADC pada mikrokontroler karena nilai yang
dihasilkan sensor berupa tegangan analog. Hasil dari ADC dikonversi ke ASCII
beserta set point, sedangkan untuk baris kedua akan menampilkan "Sensor = "
beserta dengan nilai ADC yang telah dikonversi ke ASCII, seperti gambar 4.9.
Kemudian kendali on-off mulai aktif. Nilai masukan dan nilai dari sensor
termoelektik sebagai pendingin kotak obat. Jika nilai masukan lebih kecil dari
nilai sensor maka termoelektrik aktif, jika nilai masukan sama dengan nilai
sensor termoelektrik akan tetap aktif, tetapi jika nilai masukan lebih kecil dari
Awalnya angka puluhan dibandingkan apakah sama atau tidak. Jika sama maka
langsung membandingkan angka satuan tetapi jika tidak sama maka nilai sensor
aktif. Demikian pula untuk angka satuan dengan membandingkan apakah sama
atau tidak. Jika sama maka langsung membandingkan angka di belakang koma
tetapi jika tidak sama maka nilai sensor dikurangi dengan nilai masukan. Untuk
hasil negatif termoelektrik non-aktif dan untuk hasil positif termoelektrik aktif.
Untuk satu angka di belakang koma dibandingkan juga. Jika sama maka
termoelektrik aktif tetapi jika tidak sama dilakukan pengurangan. Untuk hasil
Hasil dari perbandingan dikeluarkan pada port D.7. Jika termoelektrik aktif
maka port D.7 bernilai satu dan jika non-aktif maka port D.7 bernilai nol. Saat
Keluaran tersebut menjadi masukan driver arus yang terbentuk dari rangkaian
transistor dua tingkat sehingga tegangan buka bernilai +1,4 volt. Tetapi hasil
yang diperoleh driver arus aktif saat tegangan +1 volt, sehingga tegangan total
suhu yang diperoleh telah dicapai. Sehingga suhu yang dihasilkan tetap stabil
dalam jangka waktu yang lama. Tetapi suhu akan berubah jika penutup dibuka
dan memerlukan waktu untuk mencapai suhu sesuai dengan masukan awal.
Dengan adanya bentuk akhir dari pendingin kotak obat dan program
pengendali maka dapat dilakukan pengamatan dan pembahasan dari hasil uji
Hasilnya ditunjukkan pada tabel 4.1, tabel 4.2 dan tabel 4.3 sedangkan grafik
30
25
s u h u (c e lc iu s )
20 +6 V
+7 V
15 +8 V
10
0
0
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
105
110
115
waktu (menit)
Gambar 4.10. Grafik tegangan masukan termoelektrik +6 volt, +7 volt dan +8 volt
dengan waktu yang berbeda, yaitu pagi (jam 02.00 – jam 04.00), siang (jam
10.00 – jam 12.00) dan malam (jam 18.00- jam 20.00). Untuk grafik
pengamatan masing-masing suhu dengan waktu yang berbeda dapat dilihat pada
dilakukan pada pagi, siang atau malam memiliki perbedaan sekitar satu derajat
tidak terlalu mempengaruhi kinerja alat, hanya mempengaruhi suhu ruang pada
Yang diamati dari pendingin kotak obat adalah waktu dan suhu sehingga
Proses yang dilakukan adalah mode on-off biasa. Termoelektrik aktif (on) saat
suhu di dalam tabung sama dengan nilai suhu masukan dan non-aktif (off) saat
suhu di dalam tabung melebihi nilai suhu masukan. Jarak setiap perubahan suhu
sebesar 0,2 ºC dan waktu tunda untuk melakukan sekali proses sebesar 30 detik.
Untuk mengukur suhu air saat keadaan awal hingga akhir digunakan alat
termokoupel.
Data yang diperoleh dari pengamatan saat set point 8 ºC ada pada tabel 4.4 dan
grafik suhu ada pada gambar 4.11. Toleransi untuk set point adalah sebesar 5%,
38
sehingga untuk set point 8 ºC nilai toleransinya antara 7,6 ºC sampai 8,4 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 8,2 ºC. Dengan membandingkan suhu ruang dalam
tabung yang berada dalam nilai toleransi dan suhu air yang dicapai maka set
Data yang diperoleh dari pengamatan saat set point 7 ºC ada pada tabel 4.5 dan
grafik suhu ada pada gambar 4.13. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 7 ºC nilai toleransinya antara 6,7 ºC sampai 7,4 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 7,2 ºC. Dengan membandingkan suhu ruang dalam
tabung yang berada dalam nilai toleransi dan suhu air yang dicapai maka set
Data yang diperoleh dari pengamatan saat set point 6 ºC ada pada tabel 4.6 dan
grafik suhu ada pada gambar 4.15. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 6 ºC nilai toleransinya antara 5,7 ºC sampai 6,3 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 6,2 ºC. Dengan membandingkan suhu ruang dalam
41
tabung yang berada dalam nilai toleransi dan suhu air yang dicapai maka set
Data yang diperoleh dari pengamatan saat set point 5 ºC ada pada tabel 4.7 dan
grafik suhu ada pada gambar 4.17. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 5 ºC nilai toleransinya antara 4,8 ºC sampai 5,3 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 5,3 ºC. Dengan membandingkan suhu ruang dalam
tabung yang berada dalam nilai toleransi dan suhu air yang dicapai maka set
Data yang diperoleh dari pengamatan saat set point 4 ºC ada pada tabel 4.8 dan
grafik suhu ada pada gambar 4.19. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 4 ºC nilai toleransinya antara 3,8 ºC sampai 4,2 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 4,2 ºC. Dengan membandingkan suhu ruang dalam
44
tabung yang berada dalam nilai toleransi dan suhu air yang dicapai maka set
Data yang diperoleh dari pengamatan saat set point 3 ºC ada pada tabel 4.9 dan
grafik suhu ada pada gambar 4.21. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 3 ºC nilai toleransinya antara 2,9 ºC sampai 3,2 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, dan hasil
yang diperoleh adalah 3,5 ºC. Bila membandingkan suhu ruang dalam tabung
46
dengan nilai toleransi maka error yang didapat sebesar 0,3 ºC dan suhu air
sudah mencapai 3 ºC saat suhu ruang berada di sekitar suhu 4 ºC. Dari hasil
Data yang diperoleh dari pengamatan saat set point 2 ºC ada pada tabel 4.10 dan
grafik suhu ada pada gambar 4.23. Toleransi untuk set point adalah sebesar 5%,
sehingga untuk set point 2 ºC nilai toleransinya antara 1,9 ºC sampai 2,1 ºC.
Untuk mendapatkan nilai suhu tabung akhir adalah dengan cara rata-rata dari
suhu saat stabil hingga suhu akhir saat pengambilan data telah selesai, tetapi
saat pengamatan set point 2 ºC tidak diperoleh suhu dengan nilai stabil.
Sehingga nilai suhu tabung akhir adalah dengan cara rata-rata dari suhu pertama
kali mencapai set point hingga suhu akhir saat pengambilan data telah selesai.
Hasil yang diperoleh adalah 2,6 ºC. Bila membandingkan suhu ruang dalam
tabung dengan nilai toleransi maka error yang didapat sebesar 0,5 ºC dan suhu
air sudah mencapai 2 ºC saat suhu ruang belum mencapai setpoint. Dari hasil
yang dicapai maka set point 2 ºC tidak bekerja dengan baik karena labil.
Data yang diperoleh adalah satu angka dibelakang koma. Perubahan nilai
terkecil adalah 0,2 ºC dan waktu yang diperlukan untuk satu kali proses adalah
30 detik maka untuk perbandingan nilai set point dengan nilai toleransi saat
suhu 6 ºC, 5 ºC dan 4 ºC sangat susah, sehingga angka dibelakang koma dapat
berbeda jauh dengan nilai toleransi. Dengan penjelasan masing-masing set point
48
maka dapat diketahui bahwa untuk set point 8 ºC - 4 ºC stabil, sedangkan untuk
set point 3 ºC dan 2 ºC tidak stabil. Artinya alat ini bekerja dengan baik dan
dapat digunakan untuk set point 8 ºC, 7 ºC, 6 ºC, 5 ºC dan 4 ºC. Untuk set point
arus dan tegangan yang menjadi masukan untuk termoelektrik. Nilai tegangan
sumber tegangan sebesar 5 V pada pin 10, yaitu pin VCC. Untuk masukan
ukur adalah keluaran dari sensur LM35 karena dapat mempengaruhi nilai ADC
pada mikrokontroler.
menerima tegangan sebesar 7 V dan arus sebesar 3,2 A maka daya yang
diperoleh untuk satu buah termolektrik adalah 22,4 W. Sehingga untuk ketiga
digunakan dan proses program utama yang bermode on-off. Hal tersebut dibuat
1. Inisialisasi Mikrokontroler
;=============================
;INISIALISASI DDR, PIN, PORT & REGISTER
;=============================
.include "m8535def.inc"
.equ key_col3 = 6
.equ key_row1 = 0
.equ key_row2 = 1
.equ key_row3 = 2
.equ key_row4 = 3
.def q1 = r16
.def q2 = r17
.def q3 = r18
.def b1 = r10
.def b2 = r11
.def b3 = r12
.def c1 = r14
.def c2 = r15
.def aa = r26 ; X
.def bb = r27 ; X
.def cc = r28 ; Y
.def dd = r29 ; Y
.org 0x0000
rjmp main
.org 0x000E
51
rjmp ADC
main:
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
;=============
; Inisialisasi Port I/O
;=============
inisialisasi_io:
ldi q1, 0xff ; 0b11111111
ldi q2, 0x00 ; 0b00000000
ldi q3, 0xf0 ; 0b11110000
out ddrADC, q2
out portADC, q2 ; Input ADC, awal 0b00000000
out ddrLCD, q1
out portLCD, q2 ; Output LCD, awal 0b00000000
out ddrPWM, q1
out portPWM, q2 ; Output PWM, awal 0b00000000
2. Inisialisasi LCD
Mendefinisikan data yang di kirim berupa data 4 bit, bergerak dari kiri ke
;===================
; Liquid Crystal Display (LCD)
;===================
lcd:
ldi lc1, 8
loopdelay:
rcall delay
dec lc1
cpi lc1, 0
brne loopdelay
;inisialiasasi awal
ldi lc1, 0x30
52
rcall perintah
rcall delay
perintah:
mov lc2, lc1
swap lc1
ldi lc3, 0x0f
and lc1, lc3 ; LC1 untuk high
and lc2, lc3 ; LC2 untuk low
out portLCD, lc1
cbi portLCD, 4 ; clear bit 4 dari portLCD
rcall enable
out portLCD, lc2
cbi portLCD, 4 ; clear bit 4 dari portLCD
rcall enable
rcall delay
ret
data:
mov lc2, lc1
swap lc1
ldi lc3, 0x0f
and lc1, lc3 ; LC1 untuk high
and lc2, lc3 ; LC2 untuk low
out portLCD, lc1
sbi portLCD, 4 ; set bit 4 dari portLCD
53
rcall enable
out portLCD, lc2
sbi portLCD, 4 ; set bit 4 dari portLCD
rcall enable
rcall delay
ret
enable:
sbi portLCD, 7 ; set bit 7 dari portLCD
nop
nop
cbi portLCD, 7 ; clear bit 7 dari portLCD
ret
kirim_pesan:
clr r1
loop_kirim:
lpm
mov lc1, r0
cpi lc1, 0
brne kirim
ret
kirim:
rcall data
adiw zl, 1
rjmp loop_kirim
;(menentukan baris)
baris1:
ldi lc1, 0x02
rcall perintah
ret
baris2:
ldi lc1, 0xc0
rcall perintah
ret
3. Inisialisasi Keypad
;===================
; Keypad Matrik 4x3
;===================
keypad:
ldi key1, 0x7f ^ (1<<key_col1) ; xor bit untuk kolom 1(0)
out portKEYPAD, key1 ; Keluarkan ke Port
nop ; Synchronizer delay
rjmp key11
sbis pinKEYPAD, key_row2 ; Cek jika key_row2 = 0
rjmp key12
sbis pinKEYPAD, key_row3 ; Cek jika key_row3 = 0
rjmp key13
sbis pinKEYPAD, key_row4 ; Cek jika key_row4 = 0
rjmp key14
rjmp keypad
;-----------------------------------------------------------------------
; Konversi kolom-baris ke nilai desimal
key11:
ldi key1, 1
ldi key2, 0x31
sbis pinKEYPAD, key_row1
rjmp key11
ret
key12:
ldi key1, 4
ldi key2, 0x34
sbis pinKEYPAD, key_row2
rjmp key12
ret
key13:
ldi key1, 7
55
4. Nilai Masukan
Menentukan nilai masukan sebanyak tiga digit, yaitu nilai puluhan, nilai satuan
dan satu angka dibelakang koma. Penulisan angka tersebut tanpa perlu
memasukan koma, selain itu ada proses pengulangan jika nilai masukan salah.
;=========================
;MENENTUKAN NILAI MASUKAN
;=========================
masukan:
ldi lc1, 0x01
rcall perintah
;masukan puluhan
pertama:
rcall keypad ; Periksa keypad (puluhan)
cpi key1, 11 ; bandingkan key1 dengan 11
breq pertama ; jika sama lompat ke pertama
cpi key1, 12 ; bandingkan key1 dengan 12
breq pertama ; jika sama lompat ke pertama
mov lc1, key2 ; pindahkan data di key2ke lc1
rcall data ; pangil data
mov a1, key2 ; pindahkan data di key2ke a1
;masukan satuan
kedua:
rcall keypad ; Periksa keypad (satuan)
cpi key1, 11
breq kedua
cpi key1, 12
breq kedua
57
;tampilkan koma
ldi lc1, 0b00101100
rcall data
;masukan koma
ketiga:
rcall keypad ; Periksa keypad (koma)
cpi key1, 11
breq ketiga
cpi key1, 12
breq ketiga
mov lc1, key2
rcall data
mov a3, key2
;tampilkan derajat
ldi lc1, 0b11011111
rcall data
ldi lc1, 0b01000011
rcall data
pilih:
rcall keypad ; panggil keypad
cpi key1, 12 ; bandingkan key1 dengan 12
breq masukan ; jika key1=12 maka ke masukan
cpi key1, 11 ; bandingkan key1 dengan 11
breq proses ; jika key1=11 maka ke proses
rjmp pilih ; lompat ke pilih
;-----------------------------------
;Analog - Digital Converter
;-----------------------------------
ad_converter:
ldi aa, 0
out ADMUX, aa
ldi aa, 0b11101101
58
mov adc1, aa
out ADCSRA, aa
sei
ADC:
in adc1, ADCL
in adc2, ADCH
6. Konversi ke ASCII
Mengubah nilai dari hasil ADC menjadi ASCII, sehingga dapat ditampilkan ke
LCD.
;========================
; Konversi Hexa ke ASCII
;========================
ubah:
clr ascii1
clr ascii2
clr ascii3
;--------------------------------------
ratusan:
ldi aa, 100 ; isi aa dengan 100
mov bb, adc1 ; pindahkan data dari adc1 ke bb
sub adc1, aa ; adc1 - 100
brmi ubah100 ; apakah adc1 minus? jika ya lompat ke ubah100
inc ascii1 ; ascii1 + 1
inc ascii ; ascii1 + 1
rjmp ratusan ; lompat ke ratusan
ubah100:
dec adc2 ; adc2 - 1
brmi ubah100a ; apakah adc1 minus? jika ya lompat ke ubah100a
ldi aa, 256 ; isi aa dengan 256
add adc1,aa ; adc1 + aa
rjmp ratusan ; lompat ke ratusan
ubah100a:
ldi aa, 50 ; isi aa dengan 50
mov adc1, bb ; pindahkan data dari bb ke adc1
ubah100b:
mov bb, adc1 ; pindahkan data dari adc1 ke bb
sub adc1, aa ; adc1 - 50
brmi puluhan ; apakah adc1 minus? jika ya lompat ke puluhan
inc ascii1 ; ascii1 + 1
rjmp ubah100b ; lompat ke ubah100a
;--------------------------------------
puluhan:
ldi aa, 5 ; isi aa dengan 5
59
;------------------------------------------------
;MENAMPILKAN DATA ADC KE LCD
;------------------------------------------------
ldi zl, low (2*data4)
ldi zh, high (2*data4)
rcall baris2
rcall kirim_pesan
;tampilkan koma
ldi lc1, 0b00101100
rcall data
;tampilkan derajat
ldi lc1, 0b11011111
rcall data
60
8. Pembanding
Membandingkan nilai masukan dari keypad dengan nilai masukan dari sensor
yang telah dibaca oleh ADC kemudian dikonversi ke ASCII. Program ini
sebagai pengendali on-off yang membandingkan tiap angka, mulai dari puluhan,
ASCII dari hasil koversi ADC dengan nilai puluhan dari keypad, jika kedua
nilai sama maka lompat ke langkah2 tetapi jika berbeda maka nilai puluhan
ASCII dari hasil koversi ADC dikurangi nilai puluhan dari keypad kemudian
hasilnya negatif atau positif. Jika bernilai negatif maka termoelektrik akan off
Membandingkan nilai satuan ASCII dari hasil koversi ADC dengan nilai satuan
dari keypad, jika kedua nilai sama maka lompat ke langkah3 tetapi jika berbeda
maka nilai satuan ASCII dari hasil koversi ADC dikurangi nilai satuan dari
keypad kemudian hasilnya negatif atau positif. Jika bernilai negatif maka
termoelektrik akan off tetapi jika nilainya positif maka termoelektrik akan on.
Membandingkan nilai satu angka belakang koma ASCII dari hasil koversi ADC
61
dengan nilai satu angka belakang koma dari keypad, jika kedua nilai sama maka
termoelektrik akan on tetapi jika berbeda maka nilai satu angka belakang koma
ASCII dari hasil koversi ADC dikurangi nilai satu angka belakang koma dari
keypad kemudian hasilnya negatif atau positif. Jika bernilai negatif maka
termoelektrik akan off tetapi jika nilainya positif maka termoelektrik akan on.
;-----------------------------------------------------------
;BANDINGKAN SENSOR DENGAN MASUKAN
;-----------------------------------------------------------
langkah1:
cp ascii1, a1 ; bandingkan ascii1 dengan a1
breq langkah2 ; jika sama lompat ke langkah2
sub ascii1, a1 ; kurangi ascii1 dengan a1
brmi termoelektrik_off ; apakah ascii1 minus? jika ya lompat ke
termoelektrik_off
rjmp termoelektrik_on ; lompat ke termoelektrik_on
langkah2:
cp ascii2, a2 ; bandingkan ascii2 dengan a2
breq langkah3 ; jika sama lompat ke langkah3
sub ascii2, a2 ; kurangi ascii2 dengan a2
brmi termoelektrik_off ; apakah ascii2 minus? jika ya lompat ke
termoelektrik_off
rjmp termoelektrik_on ; lompat ke termoelektrik_on
langkah3:
cp ascii3, a3 ; bandingkan ascii3 dengan a3
breq termoelektrik_on ; jika sama lompat ke termoelektrik_on
sub ascii3, a3 ; kurangi ascii3 dengan a3
brmi termoelektrik_off ; apakah ascii3 minus? jika ya lompat ke
termoelektrik_off
rjmp termoelektrik_on ; lompat ke termoelektrik_on
9. Pengaktifan Termoelektrik
Mengatut aktif atau non-aktif termoelektrik berawal dari pengaturan port dan
pin. Jika pin 7 pada port D bernilai nol maka termoelektrik akan off tetapi jika
;--------------------------------
62
; Termoelektrik On – Off
;--------------------------------
termoelektrik_off:
ldi aa, 0x00
out portPWM, aa
out pinPWM, aa
rcall delay2
rjmp adc
termoelektrik_on:
ldi aa, 0x80
out portPWM, aa
out pinPWM, aa
rcall delay2
rjmp adc
63
BAB V
obat maka dapat diambil suatu kesimpulan dan beberapa saran untuk lebih
5.1. Kesimpulan
1. Proses pendinginan dapat dilakukan pagi, siang atau malam karena tidak terlalu
3. Mode on-off dapat bekerja dengan baik saat suhu 8 ºC – 4 ºC, untuk suhu 3 ºC
dan 2 ºC hasil yang diperoleh belum stabil dan diperlukan waktu lebih lama.
4. Arus yang diperlukan satu buah termoelektrik dalam rangkaian ini adalah 3,2 A.
5.2. Saran
1. Perlu memperhitungkan nilai suhu pada saat tutup pendingin kotak obat dibuka,
karena udara luar bercampur dengan udara di dalam tabung yang dapat
DAFTAR PUSTAKA
[1] Khedari, J., Maneewan, S., Pratinthong, N. and Hirunlabh, J. 2001. “Domestic
Hot Water System Combining Solar and Waste Heat from Thermoelectric Air
28.
[2] http://chem.ch.huji.ac.il/history/seebeck.html
[3] http://www.1911encyclopedia.org/Jean_Charles_Athanase_Peltier
[5] Wardhana, Lingga., 2006, Belajar Sendiri Mikrokontroler AVR Seri ATMega
8535.
[7] http://www.avr-asm-tutorial.net
[9] Katsuhiko, Ogata, 1989, Teknik Kontrol Automatik, Erlangga, Jilid 2, 155 –
157
[10] http://www.physicsforums.com/showthread.php?t=66605
[11] http://www.tetech.com/?gclid=CIST9u-nopcCFQp8TAod5RWB9w
[12] http://en.wikipedia.org/wiki/Thermoelectric_effect
LAMPIRAN
29
26
23
20
suhu (celsius)
17
14
11
8
5
2
0
0
10
20
30
40
50
60
70
80
90
10
11
w aktu (m enit)
2. Tegangan masukan termoelektrik sebesar 6 volt, dari jam 10.00 – 12.00 WIB.
Vi = 6 volt, jam 10.00-12.00
29
26
23
20
suhu (celsius)
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
3. Tegangan masukan termoelektrik sebesar 6 volt, dari jam 18.00 – 20.00 WIB.
Vi = 6 volt, jam 18.00-20.00
29
26
23
20
suhu (celsius)
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
4. Tegangan masukan termoelektrik sebesar 7 volt, dari jam 02.00 – 04.00 WIB.
Vi = 7 volt, jam 02.00-04.00
29
26
23
suhu (celcius)
20
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
5. Tegangan masukan termoelektrik sebesar 7 volt, dari jam 10.00 – 12.00 WIB.
Vi = 7 volt, jam 10.00-12.00
29
26
23
suhu (celcius)
20
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
6. Tegangan masukan termoelektrik sebesar 7 volt, dari jam 18.00 – 20.00 WIB.
Vi = 7 volt, jam 18.00-20.00
29
26
23
suhu (celcius)
20
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
7. Tegangan masukan termoelektrik sebesar 8 volt, dari jam 02.00 – 04.00 WIB.
Vi = 8 volt, jam 02.00-04.00
29
26
23
20
suhu (celcius)
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
8. Tegangan masukan termoelektrik sebesar 8 volt, dari jam 10.00 – 12.00 WIB.
Vi = 8 volt, jam 10.00-12.00
29
26
23
20
suhu (celcius)
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
9. Tegangan masukan termoelektrik sebesar 8 volt, dari jam 18.00 – 20.00 WIB.
Vi = 8 volt, jam 18.00-20.00
32
29
26
23
suhu (celcius)
20
17
14
11
8
5
2
0
10
20
30
40
50
60
70
80
90
0
10
11
w aktu (m enit)
LAMPIRAN
2
VCC
1 3 40 1
39 PA0/AD0 PB0/T0 2 4 5 6
1k 15k 38 PA1/AD1 PB1/T1 3
- 37 PA2/AD2 PB2/AIN0 4
36 PA3/AD3 PB3/AIN1 5 10K
SENSOR 7 8 9
Penguatan 16x + 35 PA4/AD4 PB4/SS 6
34 PA5/AD5 PB5/MOSI 7
33 PA6/AD6 PB6/MISO 8 Ok 0 .
PA7/AD7 PB7/SCK
2
16
1 3 14 PD2/INT0
15 PD0/RXD 22
1k 1k 17 PD1/TXD PC0/A8 23
- 18 PD3/INT1 PC1/A9 24
OUTPUT PD4/OC1B PC2/A10
19 25
+ 20 PD5/OC1A PC3/A11 26
21 PD6/ICP PC4/A12 27 LCD VCC
Penguatan2x 10k PD7/OC2 PC5/A13 28
12 PC6/A14 29
16
15
14
13
12
11
10
13 XTAL1 PC7/A15
9
8
7
6
5
4
3
2
1
XTAL2 10 VCC 10k
9 VCC
4MHz VCC RESET
30 104
31 AVCC
3
22p 22p 32 AGND 11
10k AREF GND
Mega8535 2 250 2 500
Reset
2
104 1 3
1
VCC
10k 498.04
D1 4v 3 120
LAMPIRAN
.def q1 = r16
.def q2 = r17
.def q3 = r18
.def lc1 = r19
.def lc2 = r20
.def lc3 = r21
.def key1 = r22
.def key2 = r23
.def adc1 = r24
.def adc2 = r25
.def ascii1 = r4 ; puluhan ADC
.def ascii2 = r5 ; satuan ADC
.def ascii3 = r6 ; koma ADC
.def a1 = r7 ; puluhan input keypad
.def a2 = r8 ; satuan input keypad
.def a3 = r9 ; koma input keypad
.def b1 = r10
.def b2 = r11
.def b3 = r12
.def c1 = r14
.def c2 = r15
.def aa = r26 ; X
.def bb = r27 ; X
.def cc = r28 ; Y
.def dd = r29 ; Y
.org 0x0000
000000 c00e rjmp main
.org 0x000E
00000e c11e rjmp ADC
main:
00000f e50f ldi r16, low(RAMEND)
000010 bf0d out SPL, r16
000011 e002 ldi r16, high(RAMEND)
000012 bf0e out SPH, r16
;================
; Inisialisasi Port I/O
;================
inisialisasi_io:
000013 ef0f ldi q1, 0xff ; 0b11111111
000014 e010 ldi q2, 0x00 ; 0b00000000
000015 ef20 ldi q3, 0xf0 ; 0b11110000
000016 bb1a out ddrADC, q2
000017 bb1b out portADC, q2 ; Input ADC, awal 0b00000000
;========================
; Liquid Crystal Display (LCD)
;========================
lcd:
00001f e038 ldi lc1, 8
loopdelay:
000020 d138 rcall delay
000021 953a dec lc1
000022 3030 cpi lc1, 0
000023 f7e1 brne loopdelay
;inisialiasasi awal
000024 e330 ldi lc1, 0x30
000025 d012 rcall perintah
000026 d132 rcall delay
000027 e330 ldi lc1, 0x30
000028 d00f rcall perintah
000029 0000 nop
00002a 0000 nop
00002b e330 ldi lc1, 0x30
00002c d00b rcall perintah
00002d e230 ldi lc1, 0x20
00002e d009 rcall perintah
00002f e238 ldi lc1, 0x28
000030 d007 rcall perintah
000031 e036 ldi lc1, 0x06
000032 d005 rcall perintah
000033 e03d ldi lc1, 0x0d
000034 d003 rcall perintah
000035 e031 ldi lc1, 0x01
000036 d001 rcall perintah
000037 9508 ret
perintah:
000038 2f43 mov lc2, lc1
000039 9532 swap lc1
00003a e05f ldi lc3, 0x0f
00003b 2335 and lc1, lc3 ; LC1 untuk high
00003c 2345 and lc2, lc3 ; LC2 untuk low
00003d bb35 out portLCD, lc1
00003e 98ac cbi portLCD, 4 ; clear bit 4 dari portLCD
00003f d012 rcall enable
000040 bb45 out portLCD, lc2
000041 98ac cbi portLCD, 4 ; clear bit 4 dari portLCD
000042 d00f rcall enable
000043 d115 rcall delay
000044 9508 ret
data:
000045 2f43 mov lc2, lc1
000046 9532 swap lc1
000047 e05f ldi lc3, 0x0f
000048 2335 and lc1, lc3 ; LC1 untuk high
000049 2345 and lc2, lc3 ; LC2 untuk low
00004a bb35 out portLCD, lc1
00004b 9aac sbi portLCD, 4
00004c d005 rcall enable
00004d bb45 out portLCD, lc2
00004e 9aac sbi portLCD, 4
00004f d002 rcall enable
000050 d108 rcall delay
000051 9508 ret
enable:
000052 9aaf sbi portLCD, 7 ; set bit 7 dari portLCD
000053 0000 nop
000054 0000 nop
000055 98af cbi portLCD, 7 ; clear bit 7 dari portLCD
000056 9508 ret
kirim_pesan:
000057 2411 clr r1
loop_kirim:
000058 95c8 lpm
000059 2d30 mov lc1, r0
00005a 3030 cpi lc1, 0
00005b f409 brne kirim
00005c 9508 ret
kirim:
00005d dfe7 rcall data
00005e 9631 adiw zl, 1
00005f cff8 rjmp loop_kirim
;(menentukan baris)
baris1:
000060 e032 ldi lc1, 0x02
000061 dfd6 rcall perintah
000062 9508 ret
baris2:
000063 ec30 ldi lc1, 0xc0
000064 dfd3 rcall perintah
000065 9508 ret
;================
; Keypad Matrik 4x3
;================
keypad:
000066 e66f ldi key1, 0x7f ^ (1<<key_col1) ; xor bit untuk kolom 1(0)
000067 bb68 out portKEYPAD, key1 ; Keluarkan ke Port
000068 0000 nop ; Synchronizer delay
000069 9bb0 sbis pinKEYPAD, key_row1 ; Cek jika key_row1 = 0
00006a c01d rjmp key11
00006b 9bb1 sbis pinKEYPAD, key_row2 ; Cek jika key_row2 = 0
00006c c020 rjmp key12
00006d 9bb2 sbis pinKEYPAD, key_row3 ; Cek jika key_row3 = 0
00006e c023 rjmp key13
00006f 9bb3 sbis pinKEYPAD, key_row4 ; Cek jika key_row4 = 0
000070 c026 rjmp key14
000071 e56f ldi key1, 0x7f ^ (1<<key_col2) ; xor bit untuk kolom 2(0)
000072 bb68 out portKEYPAD, key1 ; Keluarkan ke Port
000073 0000 nop ; Synchronizer delay
000074 9bb0 sbis pinKEYPAD, key_row1 ; Cek jika key_row1 = 0
000075 c026 rjmp key21
000076 9bb1 sbis pinKEYPAD, key_row2 ; Cek jika key_row2 = 0
000077 c029 rjmp key22
000078 9bb2 sbis pinKEYPAD, key_row3 ; Cek jika key_row3 = 0
000079 c02c rjmp key23
00007a 9bb3 sbis pinKEYPAD, key_row4 ; Cek jika key_row4 = 0
00007b c02f rjmp key24
00007c e36f ldi key1, 0x7f ^ (1<<key_col3) ; xor bit untuk kolom 3(0)
00007d bb68 out portKEYPAD, key1 ; Keluarkan ke Port
00007e 0000 nop ; Synchronizer delay
00007f 9bb0 sbis pinKEYPAD, key_row1 ; Cek jika key_row1 = 0
000080 c02f rjmp key31
000081 9bb1 sbis pinKEYPAD, key_row2 ; Cek jika key_row2 = 0
000082 c032 rjmp key32
000083 9bb2 sbis pinKEYPAD, key_row3 ; Cek jika key_row3 = 0
000084 c035 rjmp key33
000085 9bb3 sbis pinKEYPAD, key_row4 ; Cek jika key_row4 = 0
000086 c038 rjmp key34
000087 cfde rjmp keypad
;------------------------------------------------------------------------------------
; Konversi kolom-baris ke nilai desimal
key11:
000088 e061 ldi key1, 1
000089 e371 ldi key2, 0x31
00008a 9bb0 sbis pinKEYPAD, key_row1
00008b cffc rjmp key11
00008c 9508 ret
key12:
00008d e064 ldi key1, 4
00008e e374 ldi key2, 0x34
00008f 9bb1 sbis pinKEYPAD, key_row2
000090 cffc rjmp key12
000091 9508 ret
key13:
000092 e067 ldi key1, 7
000093 e377 ldi key2, 0x37
000094 9bb2 sbis pinKEYPAD, key_row3
000095 cffc rjmp key13
000096 9508 ret
key14:
000097 e06b ldi key1, 11
000098 e471 ldi key2, 0x41
000099 9bb3 sbis pinKEYPAD, key_row4
00009a cffc rjmp key14
00009b 9508 ret
;------------------------------------------------------------------------------------
key21:
00009c e062 ldi key1, 2
00009d e372 ldi key2, 0x32
00009e 9bb0 sbis pinKEYPAD, key_row1
00009f cffc rjmp key21
0000a0 9508 ret
key22:
0000a1 e065 ldi key1, 5
0000a2 e375 ldi key2, 0x35
0000a3 9bb1 sbis pinKEYPAD, key_row2
0000a4 cffc rjmp key22
0000a5 9508 ret
key23:
0000a6 e068 ldi key1, 8
0000a7 e378 ldi key2, 0x38
0000a8 9bb2 sbis pinKEYPAD, key_row3
0000a9 cffc rjmp key23
0000aa 9508 ret
key24:
0000ab e060 ldi key1, 0
0000ac e370 ldi key2, 0x30
0000ad 9bb3 sbis pinKEYPAD, key_row4
0000ae cffc rjmp key24
0000af 9508 ret
;------------------------------------------------------------------------------------
key31:
0000b0 e063 ldi key1, 3
0000b1 e373 ldi key2, 0x33
0000b2 9bb0 sbis pinKEYPAD, key_row1
0000b3 cffc rjmp key31
0000b4 9508 ret
key32:
0000b5 e066 ldi key1, 6
0000b6 e376 ldi key2, 0x36
0000b7 9bb1 sbis pinKEYPAD, key_row2
0000b8 cffc rjmp key32
0000b9 9508 ret
key33:
0000ba e069 ldi key1, 9
0000bb e379 ldi key2, 0x39
0000bc 9bb2 sbis pinKEYPAD, key_row3
0000bd cffc rjmp key33
0000be 9508 ret
key34:
0000bf e06c ldi key1, 12
0000c0 e472 ldi key2, 0x42
0000c1 9bb3 sbis pinKEYPAD, key_row4
0000c2 cffc rjmp key34
0000c3 9508 ret
;====================
; Konversi Hexa ke ASCII
;====================
ubah:
0000c4 2444 clr ascii1
0000c5 2455 clr ascii2
0000c6 2466 clr ascii3
;------------------------------------------------------------------------------------
ratusan:
0000c7 e6a4 ldi aa, 100
0000c8 2fb8 mov bb, adc1
0000c9 1b8a sub adc1, aa ; adc1 - 100
0000ca f01a brmi ubah100 ; adc1 minus? jika ya ke ubah100
0000cb 9443 inc ascii1 ; ascii1 + 1
0000cc 9443 inc ascii1 ; ascii1 + 1
0000cd cff9 rjmp ratusan ; ke ratusan
ubah100:
0000ce 959a dec adc2
0000cf f01a brmi ubah100a
0000d0 e0a0 ldi aa, 256
0000d1 0f8a add adc1,aa
0000d2 cff4 rjmp ratusan
ubah100a:
0000d3 e3a2 ldi aa, 50
0000d4 2f8b mov adc1, bb
ubah100b:
0000d5 2fb8 mov bb, adc1
0000d6 1b8a sub adc1, aa ; adc1 - 50
0000d7 f012 brmi puluhan ; adc1 minus? jika ya ke puluhan
0000d8 9443 inc ascii1 ; ascii1 + 1
0000d9 cffb rjmp ubah100b ; ke ubah100a
;------------------------------------------------------------------------------------
puluhan:
0000da e0a5 ldi aa, 5
0000db 2f8b mov adc1, bb
ubah10:
0000dc 2fc8 mov cc, adc1
0000dd 1b8a sub adc1, aa ; adc1 - 5
0000de f012 brmi satuan ; adc1 minus? jika ya ke satuan
0000df 9453 inc ascii2 ; ascii2 + 1
0000e0 cffb rjmp ubah10 ; ke ubah10
;------------------------------------------------------------------------------------
satuan:
0000e1 e0a2 ldi aa, 2
0000e2 2f8c mov adc1, cc
0000e3 9f8a mul adc1, aa
0000e4 2c60 mov ascii3, r0
;------------------------------------------------------------------------------------
angka:
0000e5 e3a0 ldi aa, 0x30
0000e6 0e4a add ascii1, aa ; puluhan
0000e7 0e5a add ascii2, aa ; satuan
0000e8 0e6a add ascii3, aa ; angka belakang koma
0000e9 9508 ret
;==============================
;MENAMPILKAN "MODE ON - OFF"
;==============================
mode:
0000ea e1e0 ldi zl, low (2*data1)
0000eb e0f3 ldi zh, high (2*data1)
0000ec df73 rcall baris1
0000ed df69 rcall kirim_pesan
0000ee e2e2 ldi zl, low (2*data2)
0000ef e0f3 ldi zh, high (2*data2)
0000f0 df72 rcall baris2
0000f1 df65 rcall kirim_pesan
0000f2 d074 rcall delay1
0000f3 9508 ret
;=============================
;MENENTUKAN NILAI MASUKAN
;=============================
masukan:
0000f4 e031 ldi lc1, 0x01
0000f5 df42 rcall perintah
0000f6 e3e4 ldi zl, low (2*data3)
0000f7 e0f3 ldi zh, high (2*data3)
0000f8 df67 rcall baris1
0000f9 df5d rcall kirim_pesan
;masukan puluhan
pertama:
0000fa df6b rcall keypad ; Periksa keypad (puluhan)
0000fb 306b cpi key1, 11
0000fc f3e9 breq pertama
0000fd 306c cpi key1, 12
0000fe f3d9 breq pertama
0000ff 2f37 mov lc1, key2
000100 df44 rcall data
000101 2e77 mov a1, key2
;masukan satuan
kedua:
000102 df63 rcall keypad ; Periksa keypad (satuan)
000103 306b cpi key1, 11
000104 f3e9 breq kedua
000105 306c cpi key1, 12
000106 f3d9 breq kedua
000107 2f37 mov lc1, key2
000108 df3c rcall data
000109 2e87 mov a2, key2
;tampilkan koma
00010a e23c ldi lc1, 0b00101100
00010b df39 rcall data
;masukan koma
ketiga:
00010c df59 rcall keypad ; Periksa keypad (koma)
00010d 306b cpi key1, 11
00010e f3e9 breq ketiga
00010f 306c cpi key1, 12
000110 f3d9 breq ketiga
000111 2f37 mov lc1, key2
000112 df32 rcall data
000113 2e97 mov a3, key2
;tampilkan derajat
000114 ed3f ldi lc1, 0b11011111
000115 df2f rcall data
000116 e433 ldi lc1, 0b01000011
000117 df2d rcall data
000118 e4e8 ldi zl, low (2*data5)
000119 e0f3 ldi zh, high (2*data5)
00011a df48 rcall baris2
00011b df3b rcall kirim_pesan
pilih:
00011c df49 rcall keypad
00011d 306c cpi key1, 12
00011e f2a9 breq masukan ; key1=12 ke masukan
00011f 306b cpi key1, 11
000120 f031 breq proses ; key1=11 ke proses
000121 cffa rjmp pilih
;=======================
; PROSES KESELURUHAN
;=======================
start:
000122 e3a0 ldi aa, 0x30
000123 2eea mov c1, aa
000124 defa rcall lcd
000125 dfc4 rcall mode
000126 cfcd rjmp masukan
proses:
;------------------------------------------------------------------------------------
;Analog - Digital Converter
ad_converter:
000127 e0a0 ldi aa, 0
000128 b9a7 out ADMUX, aa
000129 eead ldi aa, 0b11101101
00012a 2f8a mov adc1, aa
00012b b9a6 out ADCSRA, aa
00012c 9478 sei
ADC:
00012d b184 in adc1, ADCL
00012e b195 in adc2, ADCH
00012f df94 rcall ubah
;------------------------------------------------------------------------------------
;Menampilkan data ADC ke LCD
000130 e3ee ldi zl, low (2*data4)
000131 e0f3 ldi zh, high (2*data4)
000132 df30 rcall baris2
000133 df23 rcall kirim_pesan
;==================
; DATA TAMPIL LCD
;==================
data1:
.db "*PENDINGIN OBAT*", 0
000188 502a
000189 4e45
00018a 4944
00018b 474e
00018c 4e49
00018d 4f20
00018e 4142
00018f 2a54
000190 0000
data2:
.db "*MODE ON - OFF*", 0
000191 4d2a
000192 444f
000193 2045
000194 4f20
000195 204e
000196 202d
000197 464f
000198 2a46
000199 0000
data3:
.db "Input = ", 0
00019a 6e49
00019b 7570
00019c 2074
00019d 3d20
00019e 0020
data4:
.db "Sensor = ", 0
00019f 6553
0001a0 736e
0001a1 726f
0001a2 3d20
0001a3 0020
data5:
.db "Tekan : OK / X ", 0
0001a4 6554
0001a5 616b
0001a6 206e
0001a7 203a
0001a8 4b4f
0001a9 2f20
0001aa 5820
0001ab 2020
0001ac 0020