Anda di halaman 1dari 28

BAB II

RPM METER BERBASIS ATMEGA16

2.1. Perancangan Alat


Pada dasarnya aplikasi ini hampir sama dengan aplikasi penghitung frekuensi (Frequency
Counter), dimana letak perbedaanya hanya pada perumusannya saja, dimana perumusan tersebut
tergantung dari pengubahan detik ke menit dan banyaknya pulsa encoder dalam 1 putaran motor DC.
Karena pada rancangan menggunakan sensor maka motor harus menggunkan rotary encoder
yang di-couple dengan as motor dc untuk mendeteksi kecepatan putaran motor DC. Biasanya pada rotary
encoder dibuat lubang-lubang sebagai representasi banyaknya pulsa. Sangat penting untuk menentukan
banyaknya pendeteksian pulsa atau lubang pada rotary encoder untuk satu putaran yang dilakukan motor
DC. Karena banyaknya pulsa atau lubang akan mempengaruhi perumusan perhitungan kecepatan motor
DC dan semakin banyak pulsa atau lubang maka akan meningkatkan resolusi pembacaan kecepatan
motor DC, dengan kata lain pembacaan kecepatan akan semakin presisi.
Karena pada percobaan menggunakan rotary encoder sebanyak 4 propeller sehingga perumusan
kecepatan motor DC menjadi:
pulsa=frekuensi*60/4; atau pulsa=frekuensi*15;
Dimana angka 60 digunakan untuk mengubah kedalam satuan RPM (round per minute), karena
timer yang digunakan hanya membaca selama 1 detik, jika dikalikan sebanyak 60 maka akan menjadi 1
menit. Dan angka 4 adalah banyaknya lubang atau pulsa rotary encoder.
Blok Diagram Alat Penghitung kecepatan motor

Gambar 1. Blok Diagram

Dari blok diagram diatas terlihat bahwa dalam alat penghitung kecepatan motor dibangun oleh
beberapa bagian seperti Catu daya, Input, Prosesing, Output, Programmer dan PC users. Pada bagian

3
input, prosesing, dan output diberi tegangan sebesar 5VDC yang berasal dari bagian power supply. IR
emitter dan Phototransistor berfungsi sebagai input yang akan mengirim data masukkan pada
Mikrokontroller yang berfungsi sebagai prosesing. Tetapi sebelumnya mikrokontroller diprogram oleh
PC Master melalui Arduino yang dibuat sebagai downloader. Setelah mendapat inputan data dari sensor
mikrokontrroller akan memproses data tersebut sesuai instruksi/program yang diupload oleh PC master
lalu mengirimnya ke LCD 16x2 yang menunjukan bagian output pada blok diagram.

Flowchart Alat Penghitung kecepatan motor

Gambar 2. Flowchart

4
Pada awal sesaat setelah alat dihidupkan, mikrokontroller akan mulai melakukan inisialisasi
input dan output dalam hal ini sensor dan LCD agar dalam keadaan ready. Langkah selanjutnya adalah
pembacaan sensor, Pada bagian input Phototransistor akan menerima sinar inframerah (IR) dari
Tansmitter secara langsung ketika propeller motor yang akan diukur kecepatannya tidak menghalangi
IR transmitter dan phototransistor. Phototransistor akan mengirim sinyal pada mikrokontroler jika
terjadi perubahan nilai maka INT0 akan terpicu dan jika INT0 tidak terpicu maka kembali akan
melakukan pembacaan sensor. Jika INT0 terpicu tetapi hanya terjadi raising edge bukan falling edge
(sesuai pengaturan program) maka alur kembali ke pembacaan sensor.

Jika dalam pengukuran ternyata terjadi falling edge maka mikro akan menghitung perubahan
pulsa yang terjadi dalam satu detik. karena timer yang digunakan hanya membaca selama 1 detik, jika
dikalikan sebanyak 60 maka akan menjadi 1 menit lalu dibagi 4 karena propeller yang digunakan
berjumlah 4 buah. Setelah itu hasil akan dikirim ke bagian output karena output yang digunakan LCD
maka hasilnya akan ditampilkn di LCD.

Konfigurasi Pin pada alat pengukur Kecepatan Motor


Tabel 1 List I/O Atmega16 yang digunakan

Port Tipe Perangkat yang Terhubung


PC0 Output LCD RS pin
PC1 Output LCD RW pin
PC2 Output LCD E pin
PC4 Output LCD D4 pin
PC5 Output LCD D5 pin
PC6 Output LCD D6 pin
PC7 Output LCD D7 pin
PD2 INT0 Sensor TCRT5000

2.2. Pembuatan Perangkat Keras

Perangkat keras yang digunakan sebagai penyusun alat penghitung kecepatan motor adalah
sebagai berikut:

1. Sistem Minimun (Sismin)


Sistem Minimum Mikrokontroler adalah sebuah rangkaian paling sederhana dari sebuah
mikrokontroler agar IC mikrokontroler tersebut bisa beroperasi dan diprogram. Dalam aplikasinya
sistem minimum sering dihubungkan dengan rangkaian lain untuk tujuan tertentu. Ada beberapa
bagian dalam penyusunan sebuah sismin :
Power Supply
Semua komponen elektronika membutuhkan power supply atau sering juga disebut catu daya.
Mikrokontroler beroprasi pada tegangan 5 volt. Biasanya pembuatan catu daya mikrokontroler
menggunakan IC regulator 7805 agar tegangannya bisa stabil.
5
Osilator (Pembangkit Frekuensi)
Pada dasarnya mikrokontroler memiliki sifat seperti manusia. Kalau manusia memiliki jantung
untuk bisa hidup maka mikrokontroler memiliki osilator untuk bisa beroprasi. Mikrokontroler
sendiri sudah memiliki osilator internal yaitu sebesar 8Mhz tetapi kadang kala agar kinerja
mikrokontroler lebih cepat osilator internal tidak bisa menangani kasus tersebut. Oleh karena itu
dibutuhkan osilator eksternal (kristal) yang nilainya lebih dari 8Mhz. Perlu diperhatikan
mikrokontroler hanya bisa beroprasi sampai 16 Mhz.
ISP (In-System Programmable)
Sistem Minimum Mikrokontroler dibuat untuk di program. Prinsipnya mikrokontroler bisa
diprogram secara parallel atau secara seri. Pemrograman mikrokontroler secara seri atau lebih
dikenal dengan ISP tidak perlu memerlukan banyak jalur data. Tapi ISP memiliki kelemahan, jika
salah setting fuse bit yang memiliki fungsi fital misal pin reset di disable maka alamat DEH sudah
tidak bisa digunakan lagi. Untuk mengembalikan settingan fuse bit tadi, harus menggunakan
pemrograman tipe parallel (high voltage programming).
Rangkaian Reset
Rangkaian reset sama fungsinya dengan rangkaian reset pada komputer. Fungsi reset di
mikrokontroler yaitu untuk merestart program, sehingga kembali ke program awal. Penggunaan
reset pada mikrokontroler opsional, bisa di pake atau nggak tergantung si pengguna.
Bahan Penyusun Sismin adalah sebagai Berikut :
A. Mikrokontroller Atmega16A

Gambar 3. Bentuk Fisik serta Pinout Atmega16

AVR merupakan seri mikrokontroler Complementary Metal Oxide Semiconductor


(CMOS) 8-bit buatan Atmel berbasis arsitektur RISC (Reduced Instruction Set Computer).
Hampir semua instruksi pada program dieksekusi dalam satu siklus clock. AVR mempunyai 32

6
register general-purpose, timer/counter fleksibel dengan mode compare, interupsi internal dan
eksternal, serial UART, programmable Watchdog Timer, power saving mode, ADC dan PWM.
AVR pun mempunyai In-System Programmable (ISP) Flash on-chip yang mengijinkan memori
program untuk diprogram ulang (read/write) dengan koneksi secara serial yang disebut Serial
Peripheral Inteface (SPI).
ATMEGA16 mempunyai throughput mendekati 1 Millions Instruction Per Second
(MIPS) per MHz, sehingga membuat konsumsi daya menjadi rendah terhadap kecepatan proses
eksekusi perintah.
Karakteristik Elektrik Atmega 16

Menurut datasheet, tegangan yang dapat diberikan ke ATMega16 maksimal adalah 6


volt. Pada umumnya yang diberikan adalah 5 volt, karena komponen digital lain umumnya
memerlukan 5 volt.
Tegangan yang diberikan tersebut akan mempengaruhi frekuensi kerja dan arus yang
dapat diberikan. Berikut ini kaitan antara arus, tegangan dan frekuensi kerja pada ATMega16.

Gambar 4. Grafik Karakteristik Atmega16

7
Beberapa keistimewaan dari AVR ATMEGA16 antara lain:
a) Mikrokontroler AVR 8 bit yang memilliki kemampuan tinggi dengan konsumsi daya
rendah.
b) Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16MHz.
c) Memiliki kapasitas Flash memori 16 Kbyte, EEPROM 512 Byte dan SRAM 1 Kbyte.
d) Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D.
e) CPU yang terdiri dari 32 buah register.
f) Unit interupsi dan eksternal.
g) Port USART untuk komunikasi serial.
h) Fitur peripheral
Tiga buah Timer/Counter dengan kemampuan perbandingan (compare).
Dua buah Timer/Counter 8 bit dengan Prescaler terpisah dan Mode Compare
Satu buah Timer/Counter 16 bit dengan Prescaler terpisah, Mode Compare dan
Mode Capture
Real Time Counter dengan Oscillator tersendiri
Empat kanal PWM
8 kanal ADC
8 Single-ended Channel dengan keluaran hasil konversi 8 dan 10 resolusi (register
ADCH dan ADCL)
7 Diferrential Channel hanya pada kemasan Thin Quad Flat Pack (TQFP)
2 Differential Channel dengan Programmable Gain
Antarmuka Serial Peripheral Interface (SPI) Bus
Watchdog Timer dengan Oscillator Internal
On-chip Analog Comparator
i) Non-volatile program memory.

B. Crystal Oscillator

Gambar 5. Bentuk Fisik, Simbol serta Rangkaian Ekuivalen dari Crystal

8
Pada dasarnya mikrokontroler memiliki sifat seperti manusia. Kalau manusia memiliki
jantung untuk bisa hidup maka mikrokontroler memiliki osilator untuk bisa beroprasi.
Mikrokontroler sendiri sudah memiliki osilator internal yaitu sebesar 8Mhz tetapi kadang kala
agar kinerja mikronkontroler lebih cepat osilator internal tidak bisa menangani kasus tersebut.
Oleh karena itu dibutuhkan osilator eksternal (kristal) yang nilainya lebih dari 8Mhz. Perlu
diperhatikan mikrokontroler hanya bisa beroprasi sampai 16 Mhz. jadi kalau memilih krsital
untuk AVR tidak boleh lebih dari 16Mhz.
Kristal lazimnya digunakan untuk rangkaian osilator yang menuntut stabilitas frekuensi
yang tinggi dalam jangka waktu yang panjang. Alasan utamanya adalah karena perubahan nilai
frekuensi kristal seiring dengan waktu, atau disebut juga dengan istilah faktor penuaan frekuensi
(frequency aging), jauh lebih kecil dari pada osilator-osilator lain. Faktor penuaan frekuensi
untuk kristal berkisar pada angka 5ppm/tahun, jauh lebih baik dari pada faktor penuaan
frekuensi osilator RC ataupun osilator LC yang biasanya berada diatas 1%/tahun.
Osilator didalam mikrokontroler digunakan sebagai pembangkit pulsa clock, atau detak,
karena mikro merupakan mesin sinkron, yang semua derap mesinnya dikomandani oleh pulsa
clock, osilator yang rangkaiannya ada didalam mikro ini memerlukan tank-circuit atau
rangkaian resonator yang ditempatkan diluar chip, pada mikro kuno anda harus membuat sebuah
osilator beserta tank-circuit-nya, mikro modern rangkaian osilator ada didalam chip, resonator
diluar, berupa kristal atau rangkaian LC saja.

C. Komponen Elektronik
Resistor
2 buah 330Ohm
1 buah 10Kohm
1 buah Potensiometer 10K Ohm

Capacitor

2 buah 22pF
1 buah Elko 10uF

Dioda

1 buah LED

2. Alphanumerical LCD 16x2

9
Gambar 6. Skematik LCD

Modul LCD seperti dalam gambar merupakan modul LCD dengan tampilan 16 x 2 baris dengan
konsumsi daya yang rendah. Modul ini dilengkapi dengan mikrokontroler yang didisain khusus untuk
mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi yang berfungsi sebagai pengendali
LCD ini mempunyai CGROM (Character Generator Read Only Memory), CGRAM (Character
Generator Random Access Memory), dan DDRAM (Display Data Random Access Memory).

Tabel 2. Karakteristik Elektrik LCD

Pada tabel yang diambil dari datasheet terlihat bahwa tegangan input untuk LCD bekerja pada rating
3,1-3,5Volt dengan arus sebesar 2,5 mA pada keadaan suhu ideal ruangan pada tegangan kerja
3,3Volt.
Tabel 3. Fungsi dan konfigurasi pin-pin LCD 16x2
Pin Nama Fungsi
1 VSS Ground
2 VDD 3-5V
3 VEE Tegangan Kontras
Register Select
4 RS 0 = Register Instruksi
1 = Register Data
Read/Write, memilih metode tulis atau baca
5 RW
0 = mode tulis

10
1 = mode baca
Enable
6 E 0 = Enable ( mulai menahan data ke LCD)
1 = Disable
7 D0 Data bit 0, LSB
8 D1 Data bit 1
9 D2 Data bit 2
10 D3 Data bit 3
11 D4 Data bit 4
12 D5 Data bit 5
13 D6 Data bit 6
14 D7 Data bit 7
15 A Back Plane Light
16 K Ground

Dalam modul LCD (Liquid Cristal Display) terdapat microcontroller yang berfungsi sebagai
pengendali tampilan karakter LCD (Liquid Cristal Display). Microntroller pada suatu LCD (Liquid
Cristal Display) dilengkapi dengan memori dan register. Memori yang digunakan microcontroler
internal LCD adalah :
DDRAM (Display Data Random Access Memory) merupakan memori tempat karakter yang
akan ditampilkan berada.
CGRAM (Character Generator Random Access Memory) merupakan memori untuk
menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai
dengan keinginan.
CGROM (Character Generator Read Only Memory) merupakan memori untuk
menggambarkan pola sebuah karakter dimana pola tersebut merupakan karakter dasar yang
sudah ditentukan secara permanen oleh pabrikan pembuat LCD (Liquid Cristal Display)
tersebut sehingga pengguna tinggal mangambilnya sesuai alamat memorinya dan tidak dapat
merubah karakter dasar yang ada dalam CGROM.

Register control yang terdapat dalam suatu LCD diantaranya adalah.

Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler ke panel
LCD (Liquid Cristal Display) pada saat proses penulisan data atau tempat status dari panel
LCD (Liquid Cristal Display) dapat dibaca pada saat pembacaan data.
Register data yaitu register untuk menuliskan atau membaca data dari atau ke DDRAM.
Penulisan data pada register akan menempatkan data tersebut ke DDRAM sesuai dengan
alamat yang telah diatur sebelumnya.

11
Pin, kaki atau jalur input dan kontrol dalam suatu LCD (Liquid Cristal Display) diantaranya adalah :

Pin VEE berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini dihubungkan
dengan trimpot 10K ohm, jika tidak digunakan dihubungkan ke ground, sedangkan tegangan
catu daya ke LCD sebesar 5 Volt.
Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan jenis data yang
masuk, apakah data atau perintah. Logika low menunjukan yang masuk adalah perintah,
sedangkan logika high menunjukan data.
Pin R/W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis data, sedangkan
high baca data.
Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar.
Pin data (D0-D7) adalah jalur untuk memberikan data karakter yang ingin ditampilkan
menggunakan LCD (Liquid Cristal Display) dapat dihubungkan dengan bus data dari
rangkaian lain seperti mikrokontroler dengan lebar data 8 bit.

3. TCRT5000 Infrared Reflective Sensor

Gambar 7. Bentuk Fisik, Pinout, serta Contoh Rangkaian

TCRT5000 adalah komponen elektronika terintegrasi buatan Vishay yang memuat pemancar dan
detektor infra merah (infrared) dalam satu komponen terpadu. Konstruksi komponen ini yang
kompak diatur sedemikian hingga sumber emisi cahaya infra merah dan komponen sensor /
detektonya berada pada arah yang sama, dengan demikian mampu mendeteksi keberadaan objek
yang mendekat dengan cara mendeteksi pantulan sinar merah yang terpancarkan dan memantul pada
permukaan objek tersebut.
Tabel 4. Karakteristik Elektrik

12
Komponen sensor / detector adalah sebuah phototransistor, kinerja deteksi optimal pada saat
objek berada pada jarak 2,5 mm (rentang jarak yang dapat dideteksi antara 0,2 mm hingga 15 mm).
Phototransistor dilapisi dengan lapisan khusus untuk menahan sinar selain infra-merah untuk
meningkatkan akurasi sensor. Sensor mempunyai tegangan kerja maksimum 5V dengan arus
maksimal keluaran (IC) 60mA dan 100mA.

Gambar 8. Prinsip Kerja Sensor IR


Prinsip dasar kerjanya adalah dengan mengirimkan sinar (Tx) infra merah ke bagian depan,
sementara itu disamping sumber infra merah diletakkan sensor (Rx) infra merah (lihat Gambar),
apabila di depan tidak ada reflektor, maka tidak akan ada sinar infra merah yang memantul ke sensor,
tetapi apabila ada benda/rintangan maka sinar infra merah akan memantul dan pantulan sinar ini akan
terdeteksi oleh sensor Infra merah, dan selanjutnya di olah melalui mikrokontroler dan
mikrokontroler akan menampilkan output ke LCD sebagai hasil prosesnya.
Cahaya infra merah yang diemisikan komponen ini memiliki panjang gelombang 950 nm
(nanometer) yang kasat mata. Sifat sinar infrared yang tak terlihat ini menguntungkan karena berguna
dalam aplikasi sensor tanpa memperngaruhi tampilan sekitarnya, misalnya untuk aplikasi layar
sentuh, aplikasi pendeteksi keberadaan objek pada suatu bidang permukaan, dsb.
13
4. Motor DC

Gambar 9. Bentuk Fisik Motor DC dan Konstruksinya

Motor DC merupakan sebuah perangkat elektromagnetis yang mengubah energi listrik menjadi
energi mekanik. Energi mekanik ini digunakan untuk, misalnya, memutar impeller pompa, fan atau
blower, menggerakan kompresor, mengangkat bahan, dll. Motor listrik digunakan juga di rumah
(mixer, bor listrik, fan angin) dan di industri. Keuntungan utama motor DC adalah sebagai
pengendali kecepatan, yang tidak mempengaruhi kualitas pasokan daya.

Tabel 5. Karakteristik Elektrik Motor DC

Tegangan kerja motor DC sebesar 5V dengan maksimal tegangan sekitar 6V. Starting current
sebesar 860mA dan rating arus maksimal dalam keadaan steady dan tanpa beban (no load) 40mA.

14
Gambar 10. Grafik Motor DC

Dalam keadaan terbebani torque dan arus mengalami kenaikan, sedangkan kecepatan dan daya
output motor menurun hingga ke titik terendahnya.
Motor ini dapat dikendalikan dengan mengatur :
Tegangan dinamo meningkatkan tegangan dinamo akan meningkatkan kecepatan
Arus medan menurunkan arus medan akan meningkatkan kecepatan.

5. Arduino sebagai ISP


Tabel 6. Karakteristik Arduino Nano

Arduino adalah sebuah board mikrokontroler yang didasarkan pada ATmega328 (datasheet).
Arduino mempunyai 14 pin digital input/output (6 di antaranya dapat digunakan sebagai output
PWM), 6 input analog, sebuah osilator Kristal 16 MHz, sebuah koneksi USB, sebuah power jack,
sebuah ICSP header, dan sebuat tombol reset. Arduino nano bekerja pada tegangan 5VDC
Arduino dapat digunakan sebagai downloader dengan mengupload program sketch arduino as
isp, lalu melakukan konfigurasi pin sesuai dengan yang telah ditentukan berikut :
Arduino Pin 13 ke ATMega16 Pin 8 (or SCK of another microcontroller)
Arduino Pin 12 ke ATMega16 Pin 7 (or MISO of another microcontroller)
15
Arduino Pin 11 ke ATMega16 Pin 6 (or MOSI of another microcontroller)
Arduino Pin 10 ke ATMega16 Pin 9 (or RESET of another microcontroller)
Arduino 5+ to ATMega16 Pin 10 (or Vcc of another microcontroller)
Arduino Gnd to ATMega 16 Pin 11 (or Gnd of another microcontroller)
tambahkan kapasitor 10 uF antara Arduino Reset Pin dan Gnd Pin (+ kapasitor terhubung ke
reset).

Gambar 11. Konfigurasi pin Arduino as ISP

6. Langkah Pembuatan Sistem Minimum


a. Siap kan Alat dan bahan yang telah di kumpulkan.
b. Pertama kita buat yaitu pembuatan sistem minimum, sistem minimum adalah sistem
mikrokontroller yang sangat sederhana terdiri dari beberapa komponen saja namun bisa
dikatakan sebagai sistem mikrokontroller yang belum dihubungkan dengan perangkat input
atau output dari port-port mikrokontroller tersebut, kita membuat desain layout PCB terlebih
dahulu dengan menggunakan software Eagle PCB designer, dengan membuat schematik nya
terlebih dahulu dengan cara menyusunnya, kemudian di buat PCB nya dengan menyusun
tata letak komponen dan membuat jalur komponennya secara manual route untuk di print
out, kemudian di print out dengan kertas A4 dan di fotocopy (print laser) menggunakan platik
mika (jilid) A4. Berikut ini adalah hasil pembuatan PCB menggunakan komputer.

16
Gambar 12. Skematik Sistem Minimum ATMega 16A

Gambar 13. Layout PCB Sistem Minimum

c. Setelah layout PCB nya di cetak dengan plastik mika (jilid), potong plasik tersebut sesuai
ukuran yang telah dibuat dengan menggunakan gunting , kemudian disetrika pada PCB
kosong yang telah dipotong, dengan proses tersebut plastik mika dipanaskan oleh setrika,

17
maka tinta hasil print laser tersebut akan menempel, setelah itu diamkan beberapa menitdan
plastik mika dapat dilepas secara perlahan.
d. Setelah layout nya telah menempel pada PCB maka PCB siap di masukan ke dalam larutan
Feritclorida yang telah dimasukan kedalam wadal yang berisi air, untuk menghilangkan
bagian tembaga yang akan dihilangkan, supaya cepat dalam proses pelarutan tembaga maka
wadah yang berisi larutan di goyang goyangkan. Apabila tembaganya sudah hilang maka
pcb siap dibersikan dengan air bersih dan sikat kawat untuk menghilangkan tinta yang
menempel pada PCB, kemudian keringkan menggunakan lap kering, kemudian periksa pcb
dengan cara diterawang pada lampu untuk melihat jalur ada yang menyambung atau putus,
apabila ada jalur yang menyambung atau putus maka harus di perbaiki terlebih dahulu.
e. Pada tahapan selanjutnya yaitu melubangi PCB dengan bor dengan ukuran 0,8 mm dan 1
mm sesuai dengan layout PCB. Supaya proses pengeboran bagus maka yang harus
diperhatikan adalah pilihlah mata bor yang tajam.
f. Setelah PCB dilubangi maka PCB siap di rakit sesuai komponen yang telah disiapkan,
pasang komponen sesuai tata letak komponen kemudian panaskan bagian kaki komponen
tersebut menggunakan solder dan beri timah supaya meleleh dan menempel pada kaki
komponen tersebut
Berikut merupakan gambar sismin dari Atmega16

Gambar 14. Sismin


g. Setelah itu susun komponen tersebut sesuai skematik yang telah di buat oleh software Proteus
sesuai gambar berikut ini:

18
Gambar 15. Skematik pembukan kunci pintu berbasis mikrokontroller ATMega 32A

h. Kemudian Wiring semua komponen yang telah ada sesuai gambar skematik pada proteus
setelah semuanya terpasang maka siap untuk di program.

Gambar 16. RPM meter berbasis ATMega 16A

2.3. Pembuatan Perangkat Lunak


Bagian bagian proram sesuai urutan
1. Library
#include <mega16a.h> //deklarasi IC yang kita pakai
#include <lcd.h> //memakai library alfanumerik lcd
#include <delay.h> //memakai library tunda waktu
19
#include <stdlib.h> //library operasi aritmatika
#asm
.equ __lcd_port=0x15 ;PORTC // Alphanumeric LCD Module functions pada PORT C
#endasm
Menyertakan library file mega16a.h sebagai devices yang digunakan.
lcd.h library lcd.
delay.h merupakan fungsi waktu tunda.
stdlib.h untuk beberapa fungsi rutin umum (konversi dll) dan untuk operasi matematika.
Arti dari blok instruksi diatas adalah setting LCD di PORT C yang kemudian akan me-
link ke library lcd.h yang didalamnya terdapat instruksi-instruksi untuk akses LCD secara
langsung.
2. Tipe Data
int frekuensi=0; //deklarasi variabel frekuensi dengan nilai awal 0
float pulsa; //menyimpan bilangan real pada pulsa
char temp[8]; //deklarasi variabel dengan nilai awal 8 atau perintah backspace
Mikrokontroller akan membuat sebuah variabel frekuensi dengan tipe data integer
(bilangan bulat) dan memberikan nilai awal 0 ke variabel frekuensi tersebut.
Tipe ini berguna untuk menyimpan bilangan real pada pulsa. Angka yang bisa disimpan
dari -3,4028235 x 1038 hingga 3,4028235 x 1038.
Mendeklarasikan suatu variabel dengan nama temp dengan nilai awal 8 atau fungsi
backspace. (Lihat tabel ASCII)

3. Program Subroutine
void tampilkan_LCD() //menampilkan data kecepatan di lcd
//jika variabel bertipe data float maka diubah kedalan array dengan instruksi ftoa
{
lcd_gotoxy(0,0); //meletakkan kursor pada x=0 dan y=0
lcd_putsf("TACHOMETER"); //menampilkan data (TACHOMETER)
ftoa(pulsa,1,temp); //angka 1, banyaknya digit dibelakang koma yg ditampilkan
lcd_gotoxy(0,1); //meletakkan kursor pada x=0 dan y=1
lcd_puts(temp); //menuliskan variabel temp di dalam SRAM ke LCD
lcd_gotoxy(0,5); //meletakkan kursor pada x=0 dan y=5
lcd_putsf("RPM"); //menampilkan data (RPM)

Merupakan program subroutine untuk menampilkan hasil di LCD yang akan dipanggil
di program utama.
4. Interupsi Eksternal
interrupt [EXT_INT0] void ext_int0_isr(void) //External Interrupt 0 service routine
20
{
frekuensi++; //baca frekuensi (pulsa) yg masuk ke INT0 trus di increament
}
Interupsi adalah suatu kondisi dimana mikrokontroller akan berhenti sementara dari
program utama untuk melayani instruksi - instruksi pada interupsi kemudian kembali
mengerjakan instruksi program utama setelah instruksi - instruksi pada interupsi selesai
dikerjakan.
Sistem ini jika diibaratkan pada kehidupan nyata yaitu ketika seorang pengajar berhenti
menjelaskan dikarenakan ada salah seorang muridnya mengacungkan tangan untuk pergi keluar
atau mengatakan interupsi dan setelah menyelesaikan interupsi tersebut pengajar tersebut
melanjutkan kembali mengajarnya tetapi bukan mengulang dari awal.
Pada Atmega16 ada 3 sumber interupsi eksternal yaitu INT0 (PD2), INT1 (PD3) dan
INT2 (PB2). Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan
logika (rissing edge dan falling edge) pada pin interupsi yang bersangkutan
Terdapat dua register yang mengatur kondisi dan cara pengaktifan interup, yaitu register
MCUCR dan GICR.
Register GICR
Register GICR untuk menentukan register eksternal yang aktif.

Bit 5 - 7 merepresentasikan bit interupsi eksternal akan aktif jika bit yang bersangkutan diberi
logika 1.
Register MCUCR

Register MCUCR adalah register yang mengatur mode, seperti low level, Any change, Falling
edge, Rissing edge.
Ketiga interupsi itu dapat dipicu dengan adanya perubahan level baik transisi naik
(rising edge) maupun transisi turun (falling edge). Pada alat ini interupsi yang digunakan adalah
INT0 dengan mode Falling Edge. Pada Alat Pengukuran ini yang digunakan hanya interupt
INT0 (PD2).
Berikut cara pembuatan interupt pada Code Vision AVR :

21
Gambar 17. Setting Interrupt

5. Timer/Counter1
interrupt [TIM1_OVF] void timer1_ovf_isr(void) /*timer 1 detik untuk membaca pulsa yg
masuk ke INT0*/
{
// Reinitialize Timer 1 value
TCNT1H=0xC2F2 >> 8; //Geser kanan 8 bit
TCNT1L=0xC2F2 & 0xff; //perintah and operand 1 dan operand 2
pulsa=(float)frekuensi*60/4; //formula perhitungan kecepatan
frekuensi=0; //nilai awal frekuensi 0
lcd_clear(); //membersihkan layar
}
Timer 1 detik untuk membaca pulsa yg masuk ke INT0
Karena pada sismin menggunakan eksternal crystal XTAL 16 MHz. Sehingga frekuensi
clock dari CPU adalah sebesar 16 MHz. Timer mencacah dari 0 hingga nilai maksimalnya
(TOP). Untuk berubah dari 0 menuju 1, maka memerlukan satu siklus clock. untuk frekuensi
CPU sebesar 16 Mhz, periodenya adalah T=1/4M = 0,0000000625ms, maka setiap transisi dari
0 ke 1, 1 ke 2 dan selanjutnya akan membutuhkan waktu selama 0,0000000625ms.
Untuk delay selama waktu t yang akan diaplikasikan pada projek, nilai Timer dapat dihitung
dengan rumus di bawah ini:

22
Pada Atmega16 terdapat 3 buah timer, yaitu Timer0 (8 bit), Timer1 (16 bit) dan Timer2
(8 bit). Untuk perbedaan dan cara kerja masing-masing timer dapat dilihat pada datasheet.
Namun yang dipakai pada projek hanya Timer1, pada Timer ini ada beberapa register yang perlu
dipahami dalam menggunakannya. register ini yakni TCCR1A, TCCR1B dan TCNT1H,
TCNT1L.
Timer/Counter 1 Control Register A (TCCR1A)

Register TCCR1A

Keterangan:
Bit 7 dan 6: Compare Output untuk kanal A
Bit 5 dan 4: Compare Output untuk kanal B

Bit COM1 ini mempunyai Compare Output Mode pada setiap mode operasinya. Mode
tersebut mempengaruhi pin I/O OC1 A dan B.

Tabel 7. Compare Output Mode, Non-PWM

Tabel 8. Compare Output Mode, Fast PWM

Tabel 9. Compare Output Mode Phase Correct dan Phase Correct & Frequency PWM

23
Bit 3: Force Output untuk kanal A
Bit 2: Force Output untuk kanal B

Bit 1 dan 0: Waveform Generation Mode

Tabel 10. Deskripsi Bit WGM

Karena pada pengaturan menggunkan mode normal maka TCCR1A = 0x00

24
Timer/Counter Control Register 1 B (TCCR1B)

Register TCCR1B
Keterangan:

Bit 7: Input Capture Noise Canceler, ketika bit ini di-set 1 (high) maka Noise Canceler akan
aktif dan masukan dari Input Capture Pin (ICP1) akan ter-filter.

Bit 6: Input Capture Edge Select, bit ini digunakan untuk trigger yang disebabkan oleh edge
ICP1. Jika bit ini diset 1 maka sebuah rising edge (positif) akan men-trigger capture, Jika bit
ini diset 0 maka sebuah falling edge (negatif) akan men-trigger capture.

Bit 5: Reserved, bit ini akan digunakan pada tahap pengembangan selanjutnya.

Bit 4 dan 3: lihat deskripsi register TCCR1A.

Bit 2, 1 dan 0: Clock Select, bit ini digunakan untuk memilih jenis sumber clock.
TCCR1B merupakan register timer untuk mensetting prescaller yang akan kita gunakan.
Prescaller adalah nilai pembagi dalam menentukan clock source pada timer. Biasanya clock
source yg saya pakai adalah clock sistem (XTAL). Dan kita bisa menset besarnya nilai ini.
Maximum sama dengan XTAL, minimum XTAL/1024. Nah nilai pembagi (1024) ini yg
disebut nilai prescaler. Untuk menentukan prescaller dapat dilihat tabel register TCCR yakni
Tabel 11. Clock Select

Dalam projek ini menggunakan Prescale 1024, ICNC1, ICRS1, WGM12, dan WGM13
dalam keadan 0, maka TCCR1B=0b0101 dalam biner atau TCCR1B=0x05 dalam
hexadesimal.

25
Sedangkan TCNT1H dan TCNT1L adalah besarnya nilai timer yang digunakan. Untuk
perhitungan pada Timer 1 yakni
Ttimer1 = Tosc*(65536-TCNT1)*N (16 bit = 65536)

Tosc = 1/Fosc Karena kristal yang digunakan 16 MHz, sehingga:


Tosc = 1/16Mhz = 0,0000000625 detik

Dimana:
Ttimer1 = lamanya periode Timer1
TCNT1 = Register Timer1
N = Prescale (mempunyai nilai 1, 8, 64, 256 dan 1024)
Tosc = periode clock
Fosc = frekuensi clock kristal

Karena timer yang diinginkan lamanya 1 detik (Ttimer1 = 1 detik) maka :


1 = 0,0000000625*(65536-TCNT1)*1024
TCNT1= 49906 = C2F2 (dalam hexadecimal)

Setting Timer/Counter pada Codevision AVR

Gambar 18. Cara atur timer1

6. Program Utama
// Timer/Counter 1 initialization
26
// Clock source: System Clock
// Clock value: 15.625 kHz
// Mode: Normal top=FFFFh
// Timer 1 Overflow Interrupt: On
void main(void) //Program Utama
{
TCCR1A=0x00; //mode normal
TCCR1B=0x05; //Prescale 1024, disable input capture nois cancelar
TCNT1H=0xC2; //mengatur besarnya timer1 pada high register
TCNT1L=0xF2; // mengatur besarnya timer1 pada low register
ICR1H=0x00; // Input Capture hidup dengan pengaturan Falling Edge
ICR1L=0x00; // Input Capture hidup dengan pengaturan Falling Edge
OCR1AH=0x00; // OC1A output: Discon.
OCR1AL=0x00; // OC1A output: Discon.
OCR1BH=0x00; // OC1B output: Discon.
OCR1BL=0x00; // OC1B output: Discon.

// External Interrupt(s) initialization


GICR|=0x40; // mengaktifkan interupsi INT0
MCUCR=0x02; // INT0 Mode: Falling Edge
MCUCSR=0x00; // INT1: Off
GIFR=0x40; // INT2: Off

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x04; //Untuk memilih Timer Counter yang aktif.

// LCD module initialization


lcd_init(16); //inisialisasi LCD kemudian dilanjutkan dengan penghapusan tampilan LCD
dan menempatkan posisi kursor di kolom 0 baris 0

// Global enable interrupts


#asm("sei") //untuk mengaktifkan global interupsi

while (1) //perulangan


{
tampilkan_LCD(); //memanggil program subroutine tampilkan_LCD diatas
};
}
27
Program utama berisi pengaturan timer1, interupt 0, pemanggilan subroutine seperti
pada komentar diatas.
Register TIMSK

Register TIMSK (Timer/Counter Interrupt Mask Register) adalah register yang berisi
bit - bit untuk mengaktifkan interupsi pada setiap timer.
Bit 1 OCIE0 (Timer/Counter 0 Output Compare Interrupt Enable 0)
OCIE0 adalah bit yang apabila kita set 1 digunakan untuk mengaktifkan interupsi
Compare match atau interupsi ketika nilai TCNT0 sama dengan nilai OCR0.

2.4 Pengujian Alat dan Analisa


1. nyalakan projek, maka LCD akan menampilkan gambar seperti ini :

Gambar 19. Tampilan LCD saat sensor tidak digunakan


2. Pengukuran dilakukan dalam keadaan gelap

28
Gambar 20. Pengukuran dalam keadaan gelap

3. Pengukuran dilakukan dalam keadaan terang

Gambar 21. Pengukuran dalam keadaan terang

Dalam Pengujian alat pengukur kecepatan motor ini dilakukan dalam 2 keadaan lingkungan
yaitu dalam keadaan terang dan dalam keadaan gelap, dan juga dengan jarak tertentu. Karena sensor
jenis TCRT5000 memiliki jarak operasi efektif antara 0,2mm hingga 15mm maka pengujian akan
dilakukan pada rentan jarak tersebut. Pengujian diatas dilakukan untuk mengetes keakuratan sensor

29
inframerah karena pengaruh cahaya dan jarak pembacaan sebagai data pembanding. Apakah sensor akan
terpengauhi oleh cahaya sekitar dam jarak, atau tidak terpengaruh sama sekali.

Berikut tabel hasil pengukuran :


No. Keadaan Lingkungan Jarak antara IR dan Kecepatan hasil pembacaan
photodioda (mm) sensor (RPM)
1 Gelap 10 7185
2 Terang 10 6765
Tabel 12. Hasil pengukuran

Analisa data :
Dari data diatas bisa dilihat bahwa pengukuran dalam keadaan terang maupun gelap tidak
mengalami perbedaan yang terlalu mencolok, sehingga sensor bekerja dengan semestinya meskipun
dalam keadaan gelap nilai ukur sensor lebih besar daripada saat terang. Namun, apabila ada gangguan
dari luar berupa sinar inframerah yang masuk pada phototransistor maka kinerja sensor akan terganggu
karena phototransistor akan aktif jika diberi input inframerah meskipun tidak ada cahaya yang masuk.

30

Anda mungkin juga menyukai