• Tidak ada hasil yang ditemukan

BAB II TEORI DASAR 2.1 Mikrokontroller ATmega Gambaran Umum Mikrokontroller ATmega Fitur Mikrokontroller ATmega 8535

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II TEORI DASAR 2.1 Mikrokontroller ATmega Gambaran Umum Mikrokontroller ATmega Fitur Mikrokontroller ATmega 8535"

Copied!
39
0
0

Teks penuh

(1)

BAB II TEORI DASAR

2.1 Mikrokontroller ATmega 8535

2.1.1 Gambaran Umum Mikrokontroller ATmega 8535

Perkembangan teknologi telah mendorong dengan pesat kemajuan perkembangan dunia elektronika khususnya dunia mikroelektronika. Dengan adanya penemuan silikon maka bidang ini telah memberikan sumbangan yang amat berharga bagi perkembangan teknologi modern. Atmel sebagai salah satu vendor yang mengembangkan dan memasarkan produk mikroelektronika telah menjadi suatu teknologi standar bagi para desainer sistem elektronika masa

sekarang. Dengan perkembangan terakhir yaitu generasi AVR (Alf and

Vegard’s Risc processor) maka para desainer sistem elektronika telah diberikan suatu teknologi yang memiliki kapabilitas yang amat maju namun dengan biaya ekonomis yang cukup minimal.

Mikrokontroler AVR memiliki arsitektur RISC 8 bit di mana semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. Dibandingkan dengan instruksi ASM51 yang membutuhkan 12 siklus clock. Tentu saja ini terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda, yang satu RISC sedangkan yang lain CISC. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya . Dari segi arsitektur dan instruksi yang digunakan, mereka hampir sama.

2.1.2 Fitur Mikrokontroller ATmega 8535

A. Frekuensi clock maksimum 16 MHz

B. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan Port D.

(2)

C. Analog to Digital Converter 10 bit sebanyak 8 input

D. Timer/Counter sebanyak 3 buah

E. CPU 8 bit yang terdiri dari 32 register

F. Watchdog Timer dengan osilator internal

G. SRAM sebesar 512 byte

H. Memori Flash sebesar 8 Kbyte dengan kemampuan read while

Write.

I. Interrupt internal maupun eksternal

J. Port komunikasi SPI

K. EEPROM sebesar 512 byte yang dapat diprogram saat operasi

L. Analog Comparator

M. Komunikasi serial standar USART dengan kecepatan maksimal 2,5

Mbps

2.1.3 Konfigurasi Pin ATmega 8535

Mikrokontroller ATmega 8535 mempunyai 40 kaki (pin), 32 kaki diantaranya digunakan untuk keperluan input-output, sedangkan 8 kaki lainnya digunakan untuk VCC, ground, reset, oscillator, dan tegangan referensi. 32 kaki tersebut membentuk 4 buah port, dimana setiap port terdiri dari 8 kaki. Masing-masing port biasa dikenal sebagai port A, port B, port C, dan port D. Perhatikan gambar 2.1.

(3)

Gambar 2.1 Konfigurasi Pin ATmega 8535

Deskripsi dari pin-pin ATmega 8535 adalah sebagai berikut :

A. Vcc sebagai supply tegangan digital

B.GND sebagai ground

C. Port A sebagai input analog ke A/D konverter. Port A juga sebagai 8-bit directional port I/O, jika A/D konverter tidak digunakan. Pin-pin port dapat menyediakan resistor-resistor internal pull-up. Ketika port A digunakan sebagai input dan pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port A adalah tri-state ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.

(4)

Tabel 2.1 Fungsi Pin pada Port A

D. Port B adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port B mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port B yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port B adalah tri-state ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.

(5)

E. Port C : Port C adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port C mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port C yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port C adalah tri-state ketika kondisi reset menjadi aktif seklipun clock tidak aktif. Jika antarmuka JTAG enable, resistor-resistor pull-up pada pin-pin PC5(TDI), PC3(TMS), PC2(TCK) akan diktifkan sekalipun terjadi reset.

Tabel 2.3 Fungsi Pin pada Port C

F. Port D : Port D adalah port I/O 8-bit bit-directional dengan resistor-resistor internal pull-up. Buffer output port D mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port D yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistor-resistor pull-up diaktifkan. Pin-pin port D adalah tri-state ketika kondisi reset menjadi aktif seklipun clock tidak aktif.

(6)

Tabel 2.4 Fungsi Pin pada Port D

G. Reset : Sebuah low level pulsa yang lebih lama daripada lebar pulsa minimum pada pin ini akan menghasilkan reset meskipun clock tidak berjalan.

H. XTAL1 : Input inverting penguat Oscilator dan input internal clock operasi rangkaian.

I. XTAL2 : Output dari inverting penguat Oscilator.

J. AVCC : Pin supply tegangan untuk PortA dan A/D converter. Sebaiknya eksternalnya dihubungkan ke VCC meskipun ADC tidak digunakan. Jika ADC digunakan seharusnya dihubungkan ke VCC melalui low pas filter.

(7)

2.1.4 Arsitektur Mikrokontroller ATmega8535

(8)

Dari gambar tersebut dapat dilihat bahwa ATmega8535 memiliki bagian sebagai berikut :

1. Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C, dan Port D. 2. ADC 10 bit sebanyak 8 saluran.

3. Tiga buah Timer/Counter dengan kemampuan pembandingan.

4. CPU yang terdiri atas 32 buah register. 5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte.

7. Memori Flash sebesar 8 kB dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal.

9. Port antarmuka SPI.

10. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 11. Antarmuka komparator analog.

12. Port USART untuk komunikasi serial.

2.1.5 Struktur Memori Mikrokontroller ATmega8535

AVR ATMega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Sebagai tambahan, ATmega8535memiliki fitur suatu EEPROM Memori untuk penyimpanan data. Semuatiga ruang memori adalah reguler dan linier. Instruksi pada memori program dieksekusi dengan pipelining single level. Sewaktu sebuah instruksi sedang dikerjakan, instruksi berikutnya diambil dari memori program.

A. In-System Reprogrammable Flash Program Memory

Mikrokontroler Atmega8535 memiliki 8 Kbytes On-chip In-System Reprogrammable Flash memory untuk meyimpan program. Karena semua instruksi AVR lebarnya 16 atau 32 bit, maka memory flash diorganisasi sebagai 4K x 16. Untuk keamanan software, Flash memory space dibagi dalam dua seksi, yaitu : Boot Program section dan Application Program section. Flash memory meiliki ketahanan paling sedikit 10,000 kali siklus write/erase. ATmega8535 Program Counter

(9)

(PC) lebarnya adalah 12 bits yang dapat mengalamati program sebesar 4K lokasi memory.

Gambar 2.3 Peta Memory Program

B. SRAM Data Memory

608 lokasi alamat data memory adalah Register File, I/O Memory dan internal data SRAM. 96 lokasi alamat pertama adalah Register File dan I/O Memory. 512 lokasi alamat berikutnya adalah internal data SRAM.

(10)

Gambar 2.4 Peta Memory Data

Pengalamatan langsung dapat mencapai semua space memory data. Pengalamatan tidak langsung dengan mode displacement hanya dapat mencapai 63 lokasi memory dari alamat dasar yang diberikan oleh register Y atau Z. Ketika menggunakan register mode pengalamatan tidak langsung dengan pre-decrement dan post-increment automatis, isi register X, Y dan Z akan di-decrement atau di-increment. Dengan mode pengalamatan tersebut dapat mengakses 32 general purpose working registers, 64 I/O Registers dan the 512 bytes of internal data SRAM.

C. EEPROM Data Memory

ATmega8535 memiliki 512 bytes memory data EEPROM yang tahan paling sedikit 100.000 kali siklus write/erase. Ketika EEPROM sedang dibaca, CPU akan berhenti bekerja selama empat siklus clock

(11)

sebelum instruksi berikutnya diesksekusi. Dan pada saat EEPROM sedang ditulisi CPU akan berhententi selama dua siklus clock. Untuk menulis EEPROM diperlukan waktu programming selama 8,4 ms Register yang berhubungan dengan EEPROM adalah sebagai berikut :

EEPROM Address Register – EEARH dan EEARL

EEPROM Data Register – EEDR

EEPROM Control Register – EECR

2.1.6 Port Input/Output Digital

ATmega8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila

(12)

PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan.

Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi.

Tabel 2.5 Konfigurasi Pin Port

Bit 2 – PUD : Pull-up Disable Bila bit diset bernilai 1 maka pull-up pada port I/O akandimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).

(13)

2.1.7 Interupsi

Interupsi atau interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut. Yang harus diperhatikan untuk menguanakan interupsi adalah, kita harus tau sumber-sumber interupsi, vektor layanan interupsi dan yang terpenting rutin lyanan interupsi, yaitu subrutin yang akan dikerjakan bila terjadi interupsi. Analoginya adalah sebagai berikut, seseorang sedang mengetik laporan, mendadak telephone berdering dan menginterrupsi orang tersebut sehingga menghentikan pekerjaan mengetik dan mengangkat telephone. Setelah pembicaraan telephone yang dalam hal ini adalah merupakan analogi dari Interrupt Service Routine selesai maka orang tersebut kembali meneruskan pekerjaanya mengetik. Demikian pula pada sistem mikrokontroler yang sedang menjalankan programnya, saat terjadi interrupt, program akan berhenti sesaat, melayani interrupt tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vektor dari interrupt yang terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interrupt tadi. Seperti yang terlihat Gambar di bawah, sebuah program yang seharusnya berjalan terus lurus, tiba-tiba terjadi interrupt dan harus melayani interrupt tersebut terlebih dahulu hingga selesai sebelum ia kembali meneruskan pekerjaannya.

(14)

Pada AVR terdapat 3 pin interupsi eksternal, yaitu INT0,INT1,dan INT2. Interupsi eksternal dapat dibangkitkan apabila ada perubahan logika atau logika 0 pada pin interupsi Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi eksternal diatur oleh register MCUCR ( MCU Control Register), yang terlihat seperti gambar ini:

Bit penyusunnya:

• Bit ISC11 dan ISC10 bersama-sama menentukan kodisi yang dapat

menyebakan interupsi eksternal pada pin INT1. keadaan selengkapnya terlihat pada table berikut :

Tabel 2.6 Interrupt 1 Sense Control

• Bit ISC01 dan ISC00 bersama-sama menentukan kodisi yang dapat

menyebakan interupsi eksternal pada pin INT0. keadaan selengkapnya terlihat pada table berikut :

(15)

Pemilihan pengaktifan interupsi eksternal diatur oleh register GICR ( General Interrupt Control Register ) yang terlihat pada gambar berikut :

Bit penyusunnya dapat dijelaskan sebagai berikut:

• Bit INT1 adalah bit untuk mengaktifkan interupsi eksternal 1. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 1 akan aktif.

• Bit INT0 adalah bit untuk mengaktifkan interupsi eksternal 0. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 0 akan aktif.

• Bit INT2 adalah bit untuk mengaktifkan interupsi eksternal 2. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 2 akan aktif.

(16)
(17)

2.1.8 Timer/Counter

Timer/counter adalah tujuan umum single channel, module 8 bit timer/counter. Beberapa fasilitas chanel dari timer/counter antara lain:

• Counter channel tunggal

• Pengosongan data timer sesuai dengan data pembanding

• Bebas -glitch, tahap yang tepat Pulse Width Modulator (PWM)

• Pembangkit frekuensi

• Event counter external .

Gambar 2.6 Blok Diagram Timer/Counter

Gambar diagram block timer/counter 8 bit ditunjukan pada gambar di atas. Untuk penempatan pin I/O telah di jelaskan pada bagian I/O di atas. CPU dapat diakses register I/O, termasuk dalam pinpin I/O dan bit I/O. Device khusus register I/O dan lokasi bit terdaftar pada deskripsi timer/counter 8 bit.

(18)

A. Timing Diagram Timer/Counter

Timer/counter disain sinkron clock timer (clkT0) oleh karena itu ditunjukan sebagai sinyal enable clock pada gambar berikut. Gambar ini termasuk informasi ketika flag interrupt dalam kondisi set. Data timing digunakan sebagai dasar dari operasi timer/counter.

Gambar 2.7 Timing diagram timer/counter, tanpa prescaling

Sesuai dengan gambar dibawah timing diagram timer/counter dengan prescaling maksudnya adalah counter akan menambahkan data counter (TCNTn) ketika terjadi pulsa clock telah mencapai 8 kali pulsa dan sinyal clock pembagi aktif clock dan ketika telah mencapai nilai maksimal maka nilai TCNTn akan kembali ke nol. Dan kondisi flag timer akan aktif ketika TCNTn maksimal.

Gambar 2.8 Timing diagram timer/counter, dengan prescaling

Sama halnya timing timer diatas, timing timer/counter dengan seting OCFO timer mode ini memasukan data ORCn sebagai data input timer. Ketika nilai ORCn sama dengan nilaiTCNTn maka pulsa flag timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa clock telah mencapai 8 pulsa. Dan kondisi

(19)

flag akan berbalik (komplemen) kondisi ketika nilai TCNTn kembali ke nilai 0 (overflow).

Gambar 2.9. Timing diagram timer/counter, menyeting OCFO, dengan pescaler (fclk_I/O/8)

Ketika nilai ORCn sama dengan nilai TCNTn maka pulsa flag timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa clock telah mencapai 8 pulsa. Dan kondisi flag akan berbalik (komplemen) kondisi ketika nilai TCNTn kembalimkenilai 0 (overflow).

Gambar 2.10 Timing diagram timer/counter, menyeting OCFO, pengosongan data timer sesuai dengan data pembanding,dengan pescaler (fclk_I/O/8)22

(20)

B. Deskripsi Register Timer/Counter 8 bit

Gambar 2.11 Regiter timer counter 8 bit

Bit 7 – FOCO : perbandingan kemampuan output. FOCO hanya akan aktif ketika spesifik-spesifik bit WGM00 tanpa PWM mode. Adapun untuk meyakinkan terhadap kesesuaian dengan device-device yang akan digunakan,bit ini harus diset nol ketika TCCRO ditulisi saat mengoperasikan mode PWM. Ketika menulisi logika satu ke bit FOCO, dengan segera di paksakan untuk disesuaikan pada unit pembangkit bentuk gelombang. Output OC diubah disesuaikan pda COM01: bit 0 menentukan pengaruh daya pembanding. Sebuah FOC0 stobe tidak akan membangkitkan beberepa interrupt, juga tidak akan membersihkan timer pada mode CTC mengunakan OCR0 sebagai puncak. FOC0 selalu dibaca nol.

Bit 6,3 – WGM01:0: Waveform Generation Mode. Bit ini mengontrol penghitungan yang teratur pada counter, sumber untuk harga counter maksimal ( TOP ), dan tipe apa dari pembangkit bentuk gelombang yang digunakan. Mode-mode operasi didukung oleh unit timer/counter sebagai berikut : mode normal, pembersih timer pada mode penyesuaian dengan pembanding ( CTC ), dan dua tipe mode Pulse Width Modulation (PWM).

(21)

Tabel 2.9 Deskripsi Bit Mode Pembangkit Bentuk Gelombang

catatan : definisi nama-nama bit CTC0 dan PWM0 sekarang tidak digunakan lagi. Gunakan WGM 01: 0 definisi. Bagaimanapun lokasi dan fungsional dan lokasi dari masing-masing bit sesuai dengan versi timer sebelumnya.

Bit 5:4– COMO1:0 Penyesuaian Pembanding Mode Output. Bit ini mengontrol pin output compare (OCO), jika satu atau kedua bit COM01:0 diset,output OC0 melebihi fungsional port normal I/O dan keduanya terhubung juga. Bagaimanapun, catatan bahwa bit Direksi Data Register (DDR) mencocokan ke pin OC0 yang mana harus diset dengan tujuan mengaktifkan.Ketika OC0 dihubungkan ke pin, fungsi dari bit COM01:0 tergantung dari pengesetan bit WGM01:0. Tabel di bawah menunjukan COM fungsionality ketika bit-bt WGM01:0 diset ke normal atau mode CTC (non PWM ).

Tabel 2.10 Mode Output Pembanding tanpa PWM

Tabel 2.11 menunjukan bit COM0 1:0 fungsionality ketika bit WGM01:0 diset ke mode fast PWM.

(22)

Tabel 2.11 Mode Output Pembanding Mode fast PWM

Tabel 2.12 menunjukan bit COM0 1:0 fungsionality ketika bit WGM01:0 diset ke mode phase correct PWM.

Tabel 2.12 Mode Output Pembanding, Mode phase correct PWM

Bit 2:0 – CS02:0 : Clock Select. Tiga bit clock select sumber clock digunakan dengan timer/counter.

(23)

Jika mode pin eksternal digunakan untuk timer counter0, perpindahan dati pin T0 akan memberi clock counter dengan tetap jika pin digunakan sebagai output. Dalam hal ini software diijinkan untuk mengontrol perhitungan.

C. Register Timer/Counter TCNT0

Gambar 2.12 Register Timer TCNT0

Register timer/counter memberikan akses secara langsung, keduanya dugunakan untuk membaca dan menulis operasi, untuk penghitung unit 8-bit timer/counter. Menulis ke blok-blok register TCNT0 ( removes ) disesuaikan dengan clock timer berikutnya. Memodifikasi counter ( TCNT0 ) ketika perhitungan berjalan, memperkenalkan resiko kehilangan perbandingan antara TCNC0 dengan register OCR0.

D. Register Timer/Counter OCR0

Gambar 2.13 Register Timer OCR0

Register output pembanding berisi sebuah haraga 8 bit yang mana secara terus-menerus dibandingkan dengan harga counter ( TCNT0 ). Sebuah penyesuaian dapat digunakan untuk membangkitkan output intrrupt pembanding, atau untuk membangkitakan sebuah output bentuk gelombang pada pin OC0.

(24)

E. Register Timer/Counter Interrupt Mask

Bit 1 – OCIE0: outpu timer counter menyesuaikan dengan kesesuaian interrupt yang aktif. Ketika bit OCIE0 ditulis satu, dan I-bit pada register status dalam kondisi set (satu), membandingkan timer/counter pada interrupt yang sesuai diaktifkan. Mencocokkan interrupt yang dijalankan kesesuaian pembanding pada timer/counter0 terjadi, ketika bit OCF0 diset pada register penanda timer/counter-TIFR.

Bit 0 – TOIE0: Timer/Counter 0 Overflow Interrupt Enable. Ketika bit TOIE0 ditulis satu, dan I-bit pada register status dalam kondisi set ( satu ), timer/counter melebihi interrupt diaktifkan. Mencocokkan interrupt dijalankan jika kelebihan pada timer/counter0 terjadi, ketika bit TOV0 diset pada register penanda timer/counter-TIFR.

F. Register Timer/Counter Register – TIFR

Gambar 2.14 Register Timer TIFR

Bit 1 – OCF0: Output Compare Flag0. OCF0 dalam kondisi set ( satu ) kesesuaian pembanding terjadi antara timer/counter dan data pada OCRO – Register 0 keluaran pembanding. OCF0 diclear oleh hardware ketika eksekusi pencocokan penangan vector interrupt. Dengan alternatif mengclearkan OCF0 dengan menuliskan logika satu pada flag. Ketika I-bit pada SREG, OCIE0 (Timer/Counter0 penyesuaian pembanding interrupt enable), dan OCF0 diset (satu ), timer/counter pembanding kesesuaian interrupt dijalankan.

(25)

Bit 0 – TOV0: Timer/Counter Overflow Flag. Bit TOV0 di ser ( satu ) ketika kelebihan terjadi pada timer/counter0. TOV0 diclearkan dengan hardware ketika penjalanan pencocokan penanganan vector interrupt. Dengan alternatif, TOV0 diclearkan dengan jalan memberikan logika satu

pada flag. Ketika I-bit pada SREG, TOIE0 ( Timer/Counter0 overflow

interrupt enable), dan TOV0 diset ( satu ), timer/counter overflow interrupt dijalankan. Pada tahap mode PWM yang tepat, bit ini di set ketika timer/counter merubah bagian perhitungan pada $00.

2.2 Bahasa Pemograman 2.2.1 Bahasa C

Penggunaan sebuah sistem mikrokontroler AVR mengunakan sebuah software yang digunakan untuk menulis program, kompilasi, simulasi dan download program ke IC mikrokontroler AVR. Software yang digunakan adalah CodeVision AVR dalam bahasa C, Codevision memilki IDE (integrated Development Environment) yang lengkap, di mana penulisan program, compile, linkdan download program ke chip AVR dapat dilakukan oleh CodeVision, selain itu CodeVision juga memiliki fasilitas terminal, yaitu digunakan untuk melakukan komunikasi serial dengan mikrokontroler yang sudah deprogram. Proses download ke IC mikrokontroler dapat menggunakan sistem download secara ISP (In-System Programming).

2.2.2 Header

Di dalam fungsi header berisi include file (.hex), yaitu library (pustaka) yang akan digunakan dalam pemograman. File-file ini mempunyai ciri yaitu namanya diakhiri dengan ekstensi .h. Misalnya pada program #include <stdio.h> menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi. Bentuk umum #include:

Contoh:

#include <delay.h> #include <delay.h>

(26)

#include <stdio.h>

Prepocessor (#): Digunakan untuk memasukkan (include) text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja pemograman dan meningkatkan legibility source code (mudah dibaca). Bentuk dari (#include <nama file>) memberikan penjelasan pencarian file dilakukan pada direktori khusus (direktori file). Bentuk lain dari header (#include “nama file”) mengisyaratkan bahwa pencarian file terlebih dahulu dilakukan pada direktori aktif tempat sumber program dan bila tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi.

2.2.3 Tipe Data

Umumnya data yang digunakan didalam bahasa pemograman komputer dibedakan menjadi data nilai numerik dan nilai karakter. Tujuan data menjadi efisien dan efektif digunakan bahasa-bahasa pemograman komputer yang membedakan data kedalam beberapa tipe. Dalam bahasa C tersedia lima tipe data dasar, yaitu tipe data interger (nilai numeric bulat yang dideklarasikan dengan int),

floatingpoint (nilai numerik pecahan ketetapan tunggal yang dideklarasikan dengan float), double-precision (nilai numerik pecahan ketetapan ganda yang dideklarasikan dengan double).

Tabel 2.14 Tipe-Tipe Data Dasar

Tipe Ukuran (Bit) Range

Bit 1 0,1 Char 8 -128 to 127 Unsigned Char 8 0 to 255 Signed Char 8 -128 to 127 Int 16 -32768 to 32767 Short int 16 -32768 to 32767 Unsigned int 16 0 to 65535 Signed int 16 -32768 to 32767

(27)

Long int 32 -2147483648 to 2147483647

Unsigned long int 32 0 to 4294967295

Signed long int 32 -2147483648 to 2147483647

Float 32 ±1.175e-38 to ±3.402e38

double 32 ±1.175e-38 to ±3.402e38

Karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan void). Int,float, double dan char dapat dikombinasikan dengan pengubah

(modifier) signed, unsigned, long dan short. Hasil dari kombinasi tipe data ini dapat dilihat pada tabel.

2.2.4 Operator

Dalam suatu intruksi mengandung operator dan operand. Operator merupakan sebuah simbol yang menyatakan operasi mana yang harus dilakukan oleh operand tersebut. Sedangkan operand adalah variable atau konstanta yang merupakan bagian pernyataan. Adatiga operand (a,b dan c) dan dua operator (= dan +). Operator dalam c dibagi menjadi 3 kelompok. Yaitu:

1. Unary

Operator yang beroperasi pada satu operand, missal:-n.

2. Binary

Operator yang beroperasi padaduaoperand, missal: a-n,

3. Ternary

Operator yang memerlukan tiga atau lebih operand, misal: a=(b*c)+d

Tabel 2.15 Operator Kondisi

Operator Kondisi Keterangan

< Lebih Kecil

<= Lebih kecil sama dengan

< Lebih Besar

(28)

= = Sama dengan

!= Tidak samadengan

Tabel 2.16 Operator Aritmatika

Operator Aritmatika Keterangan

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

% Sisa bagi(modulus)

Tabel 2.17 Operator Logika

Operator Logika Keterangan

! Boolean NOT

&& Boolean AND

|| Boolean OR

Tabel 2.18 Operator Bitwise

Operator Bitwise Keterangan

~ Komplemen Bitwise

& Bitwise AND

| Bitwise OR

^ Bitwise Exclusive OR

>> Right Shift

<< Left Shirft

Tabel 2.19 Operator Assignment

Operator Asignment Keterangan

= Untuk memasukkan nilai

(29)

-= Untuk mengurangi nilai dari keadaan semula

*= Untuk mengalikan nilai dari keadaan semula

/= Untuk melakukan pembagian terhadap bilangan semula

%= Untuk memsukkan sisa bagi dari pembagian bilangan semula

<<= Untuk memasukkan Shift left

>>= Untuk memasukkan Shift right

&= Untuk memasukkan bitwise AND

^= Untuk memasukkan bitwise XOR

\= Untuk memasukkan bitwise OR

2.2.5 Pernyataan Bahasa C A. Percabangan

Perintah if dan if…else….dilakukan untuk melakukan operasi

percabangan bersyarat. Pernyataan if mempunyai bentuk umum :

if (kondisi) { //pernyataan }; Contoh: if (a<0x08){ PORTC=0x50; };

Dalam contoh ini PORTC akan dikirim data 0x50 jika nilai a lebih kecil 0x08. Bentuk ini menyatakan , Jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses. Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal,

pernyataan majemuk atau pernyataan kosong. Sedangkan Pernyataan if-else

memiliki bentuk :

if (kondisi) { //pernyataan a

(30)

} else {

//pernyataan b };

Artinya adalah pernyataan a akan dijalankan jika kondisi terpenuhi dan pernyataan b akan dijalankan jika kondisi tidak terpenuhi. dijalankan. Masing-masing pernyataan-a dan pernyataan-b dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong.

Perintah percabangan if….else..dapat digantikan dengan perintah switch. Dalam pernyataan switch, sebuah variabel secara berurutan diuji oleh beberapa konstanta bilangan bulat atau konstanta karakter. Sintaks perintah switch dapat ditulis sebagai berikut:

Switch(variabel) {

case konstanta_1: statement; break; case konstanta_2: statement; break; case konstanta_3: statement; break; default: statement;

}

B. Looping (Pengulangan)

Looping adalah perulangan satu atau beberapa perintah sampai mencapai keadaan tertentu. Ada tiga perintah looping, yaitu: for …., dan do..while…. sintaks loop for dapat dituliskan sebagai berikut:

for (untuk pengulangan yang melakukan proses increment)

for(nama_variabel=nilai_awal;syarat_loop;nama_variabel++) }

statement_yang_diulang; } // untuk pengulangan yang melakukan proses decrement

(31)

syarat_loop adalah pernyataan yang menyatakan syarat berhentinya pengulangan; biasanya berkaitan dengan variabel kontrol, nama_variabel++ dan nama_variabel--, menyatakan proses increment dan proses decrement pada

variabel kontrol. Sedangkan perintah while dapat melakukan looping apabila

persyaratannya benar. Sintaks perintah while dapat dituliskan sebagai berikut:

nama_variabel=nilai_awal; while(syarat_loop) { Statement_yang_akan_diulang: Nama_variabel++; }

Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum melakukan looping. Perulangan yang belum diketahui berapa kali akan diulangi maka dapat menggunakan while atau do while.Pada pernyatan while, pemeriksaan terhadap loop dilakukan di bagian awal (sebelum tubuh loop). Pernyataan while akan diulangi terus menerus selama kondisi bernilai benar, jika kondisinya salah maka perulangan dianggap selesai.

nama_variabel=nilai_awal; while(syarat_loop) { Statement_yang_akan_diulang: Nama_variabel++; } While(syarat_loop) 2.3 Teori Motor DC

2.3.1 Prinsip Kerja Motor DC

Gaya listrik dapat menimbulkan medan magnet. Konversi energi listrik menjadi energi mekanik secara sederhana dapat dilihat pada gambar berikut ini.

(32)

Gambar 2.15 Interaksi garis gaya magnetik dengan arus listrik.

Pada gambar (a) terlihat adanya medan magnet yang timbul searah jarum jam di sekitar penghantar yang dialiri arus listrik ke arah menjauhi pembaca. Pada gambar (b) garis gaya magnet ‘mengalir’ dari arah kutub utara ke kutub selatan. Gambar (c) menunjukkan bila penghantar diberi arus listrik menjauhi pembaca dan berada pada medan magnet permanen dengan arah kiri ke kanan pembaca, maka resultan gaya yang terjadi arahnya ke bawah. Gambar(d) menunjukkan bila penghantar diberi arus listrik menuju pembaca dan berada pada medan magnet permanen dengan arah kiri ke kanan pembaca, maka resultan gaya yang terjadi arahnya ke atas.

Pada dasarnya motor DC merupakan tranduser torsi yang mengubah energi listrik ke energi mekanik. Prinsip kerja motor DC berdasarkan pada penghantar yang membawa arus listrik yang ditempatkan dalam suatu medan magnet akibatnya penghantar tersebut akan mengalami gaya.

(33)

Gaya menimbulkan torsi yang akan menghasilkan rotasi mekanik, sehingga rotor akan berputar. Ringkasnya prinsip kerja dari motor membutuhkan:

• Adanya garis-garis gaya medan magnet (fluks), antara kutub yang berada

distator.

• Penghantar yang dialiri arus listrik ditempatkan pada jangkar yang berada dalam medan magnet tadi.

• Pada penghantar timbul gaya yang menghasilkan torsi.

2.3.2 Kecepatan Motor DC

Secara umum motor DC berlaku persamaan GGL lawan, yang ada hubungannya dengan kecepatan sebagai berikut,

Eb = Km.φ.ω

dengan: ω = kecepatan motor dalam putaran perdetik (pps)

Eb

φ = fluks perkutub (weber)

= GGL lawan yang dibangkitkan oleh jangkar (volt)

Motor DC magnet permanen mempunyai medan magnet yang konstan (φ)

sehingga kecepatan motor dipengaruhi dan berbanding lurus dengan tegangan belitan jangkar.

Kurva tegangan-kecepatan dari suatu motor DC ada saat beban nol terlihat pada Gambar.

Gambar 2.17 Karakteristik linear motor DC

Karakteristik linear Eb

(34)

Motor DC mempunyai dua bagian dasar yaitu :

1. Bagian diam/tetap (stasioner) yang disebut stator. Stator ini menghasilkan medan magnet, baik yang dibangkitkan dari sebuah koil (elektromagnetik) atau magnet permanen. Bagian stator terdiri dari bodi motor yang memiliki magnet yang melekat padanya. Untuk motor kecil, magnet tersebut adalah magnet permanen sedangkan untuk motor besar menggunakan elektromagnetik. Kumparan yang dililitkan pada lempeng-lempeng magnet disebut kumparan medan.

2. Bagian berputar (rotor). Rotor ini berupa sebuah koil dimana arus listrik mengalir. Suatu kumparan motor akan berfungsi apabila mempunyai :

• Kumparan medan,berfungsi sebagai pengahsil medan magnet.

• Kumparan jangkar, berfungsi sebagai pengimbas GGL pada konduktor

yang terletak pada laur-alur jangkar.

• Celah udara yang memungkinkan berputarnya jangkar dalam medan

magnet.

2.3.3 Torsi

Torsi adalah putaran dari suatu gaya terhadap suatu poros. Hal ini dapat diukur dengan hasil kali gaya itu dengan jari-jari lingkaran, dimana gaya itu bekerja. Pada suatu pulley dengan jari-jari r meterbekerja suatu gaya F Newton yang menyebabkan pulley berputar dengankecepatan n putaran per detik.

Torsi (T) = F x r Newton meter (N-m)

Usaha yang dilakukan oleh gaya tersebut pada suatu putaran adalah :

Usaha = gaya x jarak = F x 2Πr Daya yang dibangkitkan adalah :

(35)

2.3.4 Konstruksi Motor DC

Konstruksi dari sebuah motor DC ditunjukkan seperti pada gambar 2.36 di bawah ini. Pada motor arus searah rotornya mempunyai kumparan tidak hanya satu, terdiri kumparan dan komulator yang banyak untuk mendapatkan torsi yang terus menerus. Rotor terdiri dari jangkar yang intinya terbuat dari lempengan-lempengan yang ditakik.Susunan lempengan-lempengan membentuk celah-celah tersebut dimasuki konduktor kumparan jangkar. Ujung tiap-tiap kumparan dihubungkan pada satu segment komutator. Tiap segmen merupakan pertemuan dua ujung kumparan yang terhubung.

Gambar 2.18 Bagian-Bagian Motor DC

Kumparan penguat dihubungkan seri, jangkar merupakan bagian bergerak yang terbuat dari besi berlaminasi untuk mengurangi rugi-rugi arus Eddy. Kumparan jangkar diletakkan pada slot besi di sebelah luar permukaan jangkar. Pada jangkar terdapat komulator yang berbentuk silinder masing-masing diisolasi. Sisi kumparan dihubungkan dengan segmen komulator pada beberapa bagian yang berbeda, tergantung dari tipe lilitan yang diperlukan.

2.4 Relay

Relay merupakan piranti kontrol untuk membuka dan menutup kontak.

Ada dua macam relay, yaitu relay AC dan relay DC. Perbedaan antar relay AC

dengan relay DC secara fisik adalah pada shadded pole untuk relay AC yang

(36)

melintasi gap bertambah banyak. Relay AClebih lambat daripada relay DC. Relay mempunyai kontak yang bermacam-macam bahan dan rating arus yang digunakan untuk arus yang lebih besar biasanya dengan tipe kontak single button atau

bifurcated (mempunyai dua permukaan dengan tahanan kontak kecil) dan unutk arus yang kecil menggunakan tipe kontak crossbar. Kontak crossbar dibuat dari bahan emas untuk mengurangi oksidasi. Pada rangkaian tingkat rendah (milivolt ataumikrovolt). Kontak dengan bahan campuran logam mulia digunakan untuk mengurangi oksidasi.

Gambar 2.19 Relay

Pancaran bunga api kontak sering terjadi pada rangkaian DC daripada

rangkaian AC. Karena pada rangkaian AC tegangan pada setiap setengah siklus

dan akan mengantarkan pancaran yang terjadi.an bungaapi ini akan menyebabkan

terjadinya penyempitan pada permukaan kontak (metal). Untuk memperkecil

pancaran bunga api ini digunakan rangkaian kapasitor atau rangkaian serial

kapasitor dengan resistor. Dengan menggunakan rangkaian ini, bila kontaknya

terbuka beban induktifnya akan membangkitkan tegangan yang menyebabkan

hilangnya medan listrik. Tegangan ini mengakibatkan kapasitor terisi dan pancaran bunga api dapat dihindari. Penempatan resistor digunakan untul membatasi arus pelepasan kapasitor bila kontak tertutup kembali. Untuk menentukan besarnya harga kapasitor (C) dan besarnya tahanan (R)

adalah sebagai berikut :

(37)

Dimana :

I : Besarnya arus listrik maksimum yang melalui kontak (Amp) V : Besarnya tegangan pada rangkaian terbuka (Volt)

C : Besarnya kapasitas kapasitor (F)

Masalah lain yang perlu diperhatikan dalam menginstalasi relay adalah menghilangkan medan magnet pada kumparan relay yang akan menimbulkan tegangan transient. Untuk menghilangkan tegangan transient ini maka digunakan rangkaian dioda, zener dioda atau rangkaian RC.

2.5 Transistor Sebagai Saklar

Transistor berasal dari kata transfor-resistor, yang artinya tahanan pengalih. Tahanan pengalih disini artinya transistor mampu untuk mengalihkan arus masukan bertahanan rendah ke keluaran tahanan tinggi.Transistor bipolar biasanya digunakan sebagai saklar dan penguat pada rangkaian elektronika digital. Ada tiga terminal yang dimiliki transistor. Tiga kaki yang berlainan tersebut membentuk transistor bipolar, yaitu emiter, basis, colector. Tugas emiter adalah mencatu pembawa muatan ke sambungan dengan basis, sedangkan colector tugasnya memindahkan pembawa muatan dari sambungannya dengan basis dan basis sebagai trigger atau pemicunya. Transistor terdiri dari logam semikonduktor dengan lapisan tipe N dan tipe P secara bergantian yang banyak terbuat dari bahan silikon. Kedua tipe itu dapat dikombinasikan menjadi transistor berjenis N-P-N atau P-N-P.

(38)

Pada rangkaian saklar/switching elektronik, sinyal inputnya berlogika 1 (5 volt) atau 0 (0 volt). Nilai ini selalu dipakai pada basis transistor dengan kolektor

dan emiter sebagai penghubung untuk pemutus (short) atau sebagai pembuka

rangkaian (open circuit). Aturan / prosedur transistor adalah sebagai berikut :

• Pada transistor NPN, pemberian tegangan positif dari basis ke emitor

menyebabkan kolektor dan emitor terhubung singkat sehingga transistor aktif (on). Dengan memberikan tegangan negatif atau 0 volt dari basis ke emitor menyebabkan hubungan kolektor dan emitor terbuka atau OFF sehingga dapat dikatakan transistor ini merupakan transistor active high.

• Pada transistor PNP, memberikan tegangan negatif dari basis ke emoitor

akan menyalakan transistor (on), sedangkan pemberian tegangan positif dari basis ke emitor akan menyebabkan transistor mati (OFF) sehingga dapat dikatakan transistor active low.

(39)

Gambar

Gambar 2.1 Konfigurasi Pin ATmega 8535
Tabel 2.4 Fungsi Pin pada Port D
Gambar 2.2 Blok Diagram ATmega 8535
Gambar 2.3 Peta Memory Program
+7

Referensi

Garis besar

Dokumen terkait

Sodišče se je zato odločilo, da izvedenci, kot strokovnjaki za preiskovanje sledov obuval, s svojim znanjem in izkušnjami pomagajo pri odpravi dvoma ali so zaseţeni Kamenikovi

Berdasarkan hasil penelitian diatas dapat disimpulkan bahwa CAR, ROA, dan NIM secara bersamasama mempunyai pengaruh terhadap harga saham perusahaan perbankan yang terdaftar di

Di tiga negara ini, kami akan bekerja sama dengan mitra-mitra dari masyarakat sipil untuk membina kemampuan mereka dalam melakukan analisa anggaran dan advokasi di

Bagi setiap negara, bahagian ini memerihalkan kedudukan undang-undang dan dasar- dasar berkaitan serta menyenaraikan beberapa contoh penganiayaan oleh pihak kerajaan atau

Oleh karena itu, pantai- pantai yang rawan gempa bumi dan tsunami adalah pantai-pantai yang berhadapan dengan daerah penunjangan (subduksi) antara dua lempengan taktonik

Pada sesi ini anak dikenalkan pada contoh-contoh kegagalan dalam berelasi dengan tujuan untuk meningkatkan pemahaman anak akan pentingnya ketrampilan berkomunikasi secara

Writeln(‘Menu Pilihan : ‘);.. Tampil semua bil ganjil dan genap sekaligus dari 10 kali input data’); Writeln(‘2. Tampil bil yang terbesar dan terkecil sekaligus dari 10 kali

1) Pengembangan sistem penilaian beragam untuk semua mata pelajaran dan semua jenjang kelas, strateginya : melakukan identifikasi kemampuan guru dalam melakukan