5
BAB II LANDASAN TEORI
2.1
Mikrokontroler atmel ATmega32 Mikrokontroler ATmega32 adalah mikrokontroler CMOS 8 bit yang
memiliki arsitektur AVR, dimana semua instruksi tersusun dalam kode 16 bit dan sebagian besar instruksi tersebut dapat dieksekusi dalam satu siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing) jadi hanya memiliki 130 instruksi, berbeda dengan mikrokontroler seri MCS51 yang berteknologi CISC (Complex Instruction Set Computing) / memiliki jumlah instruksi yg jauh lebih banyak. Blok diagram mikrokontroler ATmega32 adalah sebagai berikut :
Gambar 2.1 Arsitektur mikrokontroler ATmega32
6
Sebagaimana ditunjukan pada diagram diatas, ATmega32 terdiri dari : Flash memori dengan kapasitas 32 Kbyte yang memiliki kemampuan read while write. EEPROM sebesar 1024 byte yang dapat diprogram saat operasi. RAM static (SRAM) sebesar 2 Kbyte. CPU yang memiliki 32 buah register untuk fungsi umum. Watchdog timer dengan osilator internal. Tiga buah timer/counter dengan kemampuan pembandingan. Konverter ADC 10 bit terintegrasi yang memiliki 8 channel masukan. Komparator analog. Programmable USART untuk komunikasi serial. Antarmuka SPI Master/Slave. 4 Interupsi eksternal dan 17 interupsi eksternal. 32 jalur masukan/keluaran (I/O), yakni Port A, Port B, Port C dan Port D yang dapat diprogram. Dikarenakan banyaknya fitur yang terdapat pada AVR ATmega32, maka penulis hanya akan membahas fitur yang digunakan dalam alat yang dirancang sebagai berikut.
2.1.1 Port Input/Output Mikrokontroler ATmega32 memiliki 32 jalur masukan/keluaran yang terbagi menjadi 4 buah port masukan/keluaran 8 bit, yakni port A, port B, port C dan port D. Secara umum masing-masing port tersebut berfungsi sebagai general digital I/O port atau port masukan/keluaran digital.
7
Namun selain berfungsi sebagai general I/O port, masing-masing port tersebut juga memiliki fungsi alternatif lainnya yakni sebagai berikut :
Port A memiliki fungsi kedua sebagai pin masukan bagi sinyal analog untuk ADC internal.
Port B memiliki fungsi alternatif sebagai port SPI, pin masukan bagi komparator analog,timer T0 dan timer T1.
Port C memiliki fungsi alternatif sebagai timer oscillator TOSC1 dan TOSC2, serta antarmuka serial dua-kabel (two-wire serial interface I2C).
Port D memiliki fungsi alternatif sebagai antarmuka serial USART, output compare match timer 1 dan 2, pin masukan capture timer 1, interrupsi eksternal INT0 dan INT1.
Deskripsi fungsi pada tiap-tiap pin I/O saat port-port A s/d D tersebut saat sedang difungsikan sebagai port masukan/keluaran umum ditunjukan pada gambar dibawah ini.
Resistor Pull-up
Gambar 2.2 Port input/output digital umum
8
Tiap-tiap pin port ATmega32 tersebut terdiri/dikendalikan oleh tiga buah bit register : DDxn, PORTxn,dan PINxn (tanda x dimaksudkan untuk menyatakan port A,B,C atau D sedangkan tanda n dimaksudkan sebagai nomor bit 0 s/d 7 pada port yg bersangkutan) , bit DDxn dapat diakses melalui register I/O DDRx, bit PORTxn pada register I/O PORTx, dan bit PINxn pada register I/O PINx. Bit DDxn pada register DDRx menentukan arah sinyal pada pin port atau fungsi dari port eksternal tersebut yakni apakah sebagai masukan atau keluaran. Jika bit DDxn ditulis berlogika high, maka pin port eksternal Pxn yang bersangkutan dikonfigurasi sebagai keluaran, jika bit DDxn ditulis berlogika low maka Pxn dikonfigurasi sebagai pin masukan. Bit PORTxn pada register PORTx digunakan untuk menentukan tingkat logika keluaran. Jika PORTxn dibuat/ditulis berlogika high saat pin I/O tersebut tengah dikonfigurasikan sebagai pin masukan (bit DDXn diset low), maka resistor pull-up akan diaktifkan. Untuk menonaktifkan resistor pull-up maka PORTxn harus ditulis logika low atau pin tersebut harus dikonfigurasi sebagai pin keluaran dengan menset bit DDXn ke logika high. Pin port-port tersebut akan berada dalam kondisi tri-state atau impedansi tinggi saat kondisi reset sedang aktif walaupun tanpa adanya sinyal clock. Jika PORTxn ditulis berlogika high saat pin tersebut sedang dikonfigurasikan sebagai pin keluaran (bit DDXn diset high) maka pin eksternal port tersebut akan digerakan ke logika high. Jika PORTxn ditulis berlogika low saat pin port tersebut sedang dikonfigurasikan sebagai pin keluaran maka pin eksternal port tersebut akan digerakan ke logika low.
9
Bit PINxn pada register PINx digunakan untuk membaca level logika pada pin eksternal port tersebut. Sebagaimana ditunjukan pada gambar diatas bit register PINxn dan rangkaian penahan/latch didepannya terdiri dari synchronizer. Hal ini diperlukan untuk menghindari ketidakstabilan jika nilai/logika pada pin masukan berubah saat tepi sinyal clock internal, namun demikian hal ini juga menghasilkan tundaan waktu atau delay. Rangkuman kondisi port berdasarkan kondisi bit DDxn,PORTxn dan PINxn dapat dilihat pada tabel dibawah ini. Tabel 2.1 Konfigurasi pin-pin Port ATmega32 PUD DDxn
PORTxn
(pada register
Pin I/O
SFIOR)
0
0
X
Masukan
Resistor
Keterangan
pull-up Tidak aktif
Tri-state (Hi-Z) Pxn akan mensuplai
0
1
0
Masukan
Aktif
arus jika ditarik low secara eksternal
0
1
1
Masukan
Tidak aktif
Tri-state (Hi-Z)
1
0
X
Keluaran
Tidak aktif
Keluaran low (sink)
1
1
X
Keluaran
Tidak aktif
Keluaran high (source)
Contoh program untuk membuat Port B sebagai keluaran :
LDI R16,$FF OUT DDRB,R16 LDI R16,$01 OUT PORTB,R16
; mengkonfigurasi port B sebagai keluaran ; data biner 0000 0001 dikeluarkan ke pin port B
Contoh program untuk membaca masukan dari Port B :
LDI R16,$00 OUT DDRB,R16 LDI R16,$FF OUT PORTB,R16 IN R16,PINB
; mengkonfigurasi port B sebagai masukan ; agar resistor pull-up diaktifkan ; data pada pin port B akan dibaca dan disalin ke reg R16
10
2.1.2 Konverter analog ke digital (ADC) 10 bit Mikrokontroler ATmega32 memiliki ADC internal 10 bit jenis successive approximation. ADC internal ini terhubung dengan multiplexer analog 8 channel yang memungkinkan dihubungkannya hingga delapan tegangan masukan single ended melalui pin-pin dari Port A. Tegangan masukan single ended yang dimaksud adalah dibandingkan dengan referensi terhadap 0V (GND). Selain itu fitur ADC ini juga mendukung hingga 16 macam kombinasi tegangan masukan diferensial. Dua dari masukan diferensial (ADC1,ADC0, dan ADC 3, ADC2) dilengkapi dengan tahapan penguat yang dapat diprogram, yakni 0 dB (1x), 20dB (10x), atau 46 dB (200x) pada tahapan sebelum menjadi sinyal masukan bagi converter ADC. Tujuh masukan sinyal analog diferensial berbagi terminal negatif yang sama, yakni ADC1 sedangkan pin masukan ADC lainnya dapat dipilih sebagai terminal masukan positifnya. Namun perlu diperhatikan bahwa jika penguatan 1x atau 10x digunakan maka akan didapatkan resolusi ADC 8 bit. Jika penguatan 200x yang digunakan maka akan didapatkan resolusi ADC 7 bit. ADC internal ini memiliki rangkaian Sampling and Hold yang menjamin bahwa tegangan masukan pada ADC akan dipertahankan konstan selama konversi. Blok diagram dari ADC internal ini ditunjukan pada gambar berikut.
11
Gambar 2.3 Blok Diagram ADC 10 bit Cara kerja : ADC akan mengkonversikan tegangan masukan analog menjadi data digital 10 bit
melalui
metode
successive
approximation.
Nilai
data
minimum
merepresentasikan GND dan nilai data maksimum merepresentasikan tegangan pada pin AREF dikurangi 1 LSB. Selain itu, AVCC atau tegangan referensi internal 2.56V dapat dihubungkan ke pin AREF dengan menulis bit-bit REFSn pada register ADMUX. Tegangan referensi internal dapat dikopling dengan kapasitor pada pin AREF untuk meningkatkan ketahanan terhadap noise atau gangguan. Jalur masukan sinyal analog dan penguatan diferensial dipilih dengan menulis bit-bit MUX pada register ADMUX. Pin-pin
masukan ADC manapun,
termasuk GND dan tegangan referensi fixed bandgap dapat dipilih sebagai masukan single ended bagi ADC.
12
Pin-pin masukan ADC dapat dipilih sebagai masukan positif dan negatif bagi rangkaian penguat diferensial. Jika jalur diferensial yang dipilih, tahapan penguat akan menguatkan selisih tegangan yang terdapat pada pasangan jalur masukan dengan factor penguatan yang dipilih. Nilai yang telah dikuatkan ini lalu akan menjadi masukan analog bagi ADC. Jika yang dipilih adalah jalur single ended, maka rangkaian tahapan penguat akan dibypass atau dilangkahi. Rangkaian ADC diaktifkan dengan menset bit ADEN (ADC Enable) pada register ADCSRA. Pilihan tegangan referensi dan jalur masukan tidak akan berpengaruh hingga ADEN diset dan juga rangkaian ADC tidak akan mengkonsumsi daya saat bit ADEN berlogika low, oleh karena itu direkomendasikan untuk mematikan rangkaian ADC dengan mereset bit ADEN sebelum memasuki mode-mode SLEEP. Rangkaian ADC akan menghasilkan data digital 10 bit yang direpresentasikan pada register-register data ADC, yakni ADCH dan ADCL. Secara default, data digital yang dihasilkan direpresentasikan adalah rata kanan (right adjusted), namun dapat direpresentasikan rata kiri (left adjusted) dengan mengatur bit ADLAR pada ADMUX. Jika rata kiri yang dipilih dan tidak diperlukannya tingkat keakuratan yang melampaui 8 bit, maka untuk memperoleh hasil konversinya cukup dapat dilakukan dengan hanya membaca register ADCH. Jika tidak register ADCL harus dibaca terlebih dahulu baru kemudian ADCH untuk memastikan bahwa isi data pada register-register tersebut berasal dari konversi yang sama. Setelah ADCL dibaca, akses ADC ke register-register data akan diblok yang berarti bahwa jika register ADCL telah dibaca dan konversi telah selesai sebelum
13
ADCH dibaca, maka tidak akan ada
isi register-register tersebut yang
diperbaharui dan hasil dari konversi terbaru akan hilang. Jika register ADCH telah dibaca, maka akses ADC ke register ADCH dan ADCL akan diaktifkan kembali. Rangkaian ADC ini juga memiliki interupsi sendiri yang akan dipicu saat konversi selesai. Walaupun saat akses ADC ke register-register data tengah dilarang, yakni antara pembacaan ADCH dan ADCL, interupsi tetap akan dipicu walaupun hasil konversi telah hilang. Memulai konversi data : Konversi tunggal dimulai dengan menulis logika high ke bit mulai konversi ADC,yakni ADSC. Bit ini akan tetap berlogika tinggi selama konversi berlangsung dan akan diclearkan oleh perangkat keras saat konversi telah selesai. Jika jalur masukan sinyal lainnya dipilih saat konversi sedang berlangsung ADC akan mengakhiri konversi yg sedang berlangsung sebelum melakukan pergantian jalur masukan. Konversi dapat dipicu secara otomatis melalui berbagai sumber. Pemicuan otomatis (auto triggering) diaktifkan dengan menset bit ADATE (ADC auto trigger enable) pada register ADCSRA. Sumber pemicuan dapat dipilih dengan mengatur bit ADTS (bit pemilih pemicu ADC) pada register SFIOR. Saat tepi positif terjadi pada sinyal pemicu yg dipilih maka prescaler ADC akan direset dan konversi akan dimulai. Hal ini memungkinkan dilakukannya metode untuk memulai konversi pada interval waktu yang tetap. Jika sinyal pemicu tetap berada pada logika tinggi saat konversi selesai maka konversi baru tidak akan dimulai. Jika tepi positif dari sinyal pemicu berikutnya terjadi saat konversi
14
tengah berlangsung maka sinyal pemicu tersebut akan diacuhkan. Namun demikian flag interupsi akan tetap diset bahkan jika interupsi tertentu telah dinonaktifkan atau bit global interrupt enable SREG diclearkan, dengan demikian konversi tetap akan dapat dipicu tanpa menyebabkan terjadinya interupsi. Namun demikian flag interupsi harus diclearkan untuk memicu terjadinya konversi baru pada peristiwa interupsi berikutnya.
Gambar 2.4 Pilihan sumber pemicu konversi ADC otomatis
Dengan menggunakan flag interupsi ADC sebagai sumber pemicu akan membuat ADC memulai konversi baru secepatnya setelah konversi yang sedang berlangsung selesai. Hal ini membuat ADC beroperasi pada mode free running yang akan mengambil sampel dan memperbaharui register data ADC secara konstan. Konversi pertama harus dimulai dengan menulis logika tinggi pada bit ADSC didalam register ADCSRA. Pada mode ini ADC akan melakukan konversi successive approximation secara independen baik saat flag interupsi ADIF diclearkan maupun tidak. Jika fungsi pemicuan otomatis diaktifkan, konversi tunggal dapat dimulai dengan menulis logika satu pada bit ADSC didalam register ADCSRA.
15
Bit ADSC juga dapat digunakan untuk menentukan apakah konversi sedang berlangsung karena bit ADSC akan dibaca sebagai logika satu saat konversi berlangsung dan tidak dipengaruhi dengan bagaimana cara konversi tersebut dimulai.
Gambar 2.5 Prescaler dan pewaktuan konversi ADC
Secara default, rangkaian successive approximation memerlukan sinyal masukan clock yang memiliki frekuensi antara 50 kHz dan 200 kHz untuk mendapatkan resolusi maksimum. Jika dibutuhkan resolusi yang lebih rendah dari 10 bit, maka sinyal clock hingga lebih dari 200kHz dapat digunakan untuk mendapatkan laju sampling yang lebih tinggi. Modul ADC memiliki prescaler, yang akan dapat membangkitkan frekuensi clock ADC yang memadai dari semua frekuensi CPU diatas 100 kHz. Prescaler diset melalui bit ADPS pada register ADCSRA. Prescaler akan segera mulai menghitung segera setelah fungsi ADC diaktifkan dengan mengatur bit ADEN pada ADCSRA. Prescaler akan tetap berjalan selama bit ADEN diset dan akan direset secara terus-menerus saat bit ADEN berada pada logika rendah.
16
Saat menginisialisasi konversi single ended dengan menset bit ADSC pada register ADCSRA, konversi akan segera dimulai pada siklus tepi positif dari sinyal clock ADC. Konversi normal memakan waktu 13 siklus clock. Konversi pertama setelah ADC diaktifkan (bit ADEN pada register ADCSRA diset) akan memakan waktu
25
siklus
clock
karena
diperlukan
waktu
tambahan
untuk
menginisialisasi rangkaian analog. Proses sampling dan hold akan berlangsung pada waktu 1.5 siklus clock ADC setelah dimulainya konversi normal dan 13.5 siklus clock ADC setelah dimulainya konversi pertama. Saat konversi selesai hasil konversinya akan disimpan pada register data ADC dan bit ADIF diset. Pada mode konversi tunggal, bit ADSC akan diclearkan secara simultan. Program atau perangkat lunak kemudian dapat menset bit ADSC kembali dan konversi baru akan dimulai pada siklus tepi positif pada sinyal clock ADC berikutnya. Bila fungsi pemicuan konversi otomatis diaktifkan, prescaler akan direset saat sinyal pemicu terjadi. Hal ini untuk memastikan tundaan waktu yang tetap dari tahap pemicuan ke waktu untuk memulai konversi. Pada mode ini proses sample dan hold akan berlangsung pada dua siklus clock ADC setelah tepi positif sinyal pemicuan. Dan tiga siklus clock CPU tambahan diperlukan untuk sinkronisasi logika. Pada mode free running, konversi baru akan dimulai segera setelah konversi yg berlangsung selesai sementara bit ADSC sedang tinggi.
17
Tabel 2.2 Waktu konversi ADC Kondisi
Sampling & hold
Waktu konversi
(jumlah siklus sejak awal
(siklus)
konversi)
Konversi pertama
14.5
25
Konversi normal,single ended
1.5
13
2
13.5
1.5/2.5
13/14
Konversi
dengan
pemicuan
otomatis Konversi normal,diferensial
Jalur masukan sinyal ADC : Saat
melakukan
pergantian
jalur/channel
masukan,
pengguna
harus
memperhatikan panduan berikut untuk memastikan bahwa jalur/channel yang tepat telah dipilih: Pada mode konversi tunggal, selalu lakukan pemilihan jalur/channel sebelum memulai konversi. Pergantian jalur masukan dapat dilakukan setelah satu siklus clock ADC setelah menulis logika satu ke bit ADSC. Namun demikian metode yang paling sederhana adalah menunggu hingga konversi selesai kemudian melakukan penggantian jalur/channel masukan. Pada mode free running, selalu lakukan pemilihan jalur masukan sebelum memulai konversi pertama. Pergantian jalur masukan dapat dilakukan setelah satu siklus clock ADC setelah menulis logika satu pada bit ADSC. Namun metode paling sederhana adalah menunggu konversi pertama selesai lalu baru melakukan penggantian jalur/channel masukan. Karena konversi berikutnya akan dimulai secara otomatis maka hasil berikutnya akan merepresentasikan konversi pada pilihan jalur sinyal sebelumnya, hasil konversi berikutnya merefleksikan pilihan jalur/channel baru.
18
Saat beralih ke jalur masukan dengan penguatan diferensial (differential gain channel) konversi pertama akan memiliki akurasi rendah dikarenakan adanya waktu tambahan yang dibutuhkan bagi rangkaian penghilang offset otomatis oleh karena itu pengguna harus mengacuhkan data konversi pertama. Tegangan referensi ADC : Tegangan referensi bagi ADC (Vref) akan menentukan jangkauan konversi ADC. Tegangan masukan pada jalur single ended yang melampaui Vref akan menghasilkan kode biner yang mendekati nilai 0x3FF. Nilai tegangan referensi Vref dapat dipilih antara AVCC, referensi internal 2.56V atau tegangan pada pin eksternal AREF. Tegangan AVCC terhubung ke ADC melalui saklar pasif. Tegangan referensi internal 2.56V dihasilkan dari referensi internal bandgap (VBG) melalui rangkaian penguat internal. Pin eksternal AREF terhubung secara langsung dengan ADC dan tegangan referensi dapat dibuat lebih kebal terhadap gangguan/noise dengan menghubungkan kapasitor antara pin AREF dan ground. Vref juga dapat diukur pada pin AREF dengan menggunakan voltmeter berimpedansi tinggi. Perhatikan bahwa Vref merupakan sumber berimpedansi tinggi dan hanya beban kapasitif yg dapat dihubungkan pada sistemnya. Jika pengguna memiliki sumber tegangan tetap yang dipasang pada pin AREF maka pengguna tidak dapat menggunakan pilihan tegangan referensi lainnya karena akan dihubungsingkat dengan tegangan eksternal tersebut. Jika tidak ada sumber tegangan eksternal yang dihubungkan ke pin AREF maka pengguna dapat memilih tegangan referensi antara AVCC dan 2.56 V.
19
Konversi ADC pertama setelah melakukan penggantian tegangan referensi akan menghasilkan hasil yang tidak akurat dan pengguna disarankan untuk membuang data hasil konversi ini. Hasil konversi ADC : Setelah konversi selesai (bit ADIF berlogika tinggi), hasil konversi dapat diketemukan pada register-register hasil ADC (ADCL, ADCH). Untuk konversi single ended, hasil konversi adalah : =
. 1024
Dimana Vin merupakan tegangan input dan Vref merupakan tegangan referensi yang dipilih. 0X000 menyatakan tegangan ground analog, dan 0X3FF menyatakan tegangan referensi yg dipilih dikurangi 1 LSB. Register-register pengontrol ADC : Register-register berikut digunakan dalam penentuan sinyal clock, tegangan referensi, format data output, serta mode pembacaan. Register-register tersebut adalah ADMUX (ADC multiplexer), ADCSRA (ADC control and status register) serta SFIOR (Special function I/O register). 1. ADMUX merupakan register yang berfungsi untuk menentukan tegangan referensi ADC, format data keluaran dan jalur masukan sinyal/channel ADC yang digunakan.
Gambar 2.6 Register ADMUX
20
Bit RFS [1..0] merupakan bit pengatur tegangan referensi ADC ATmega32. Memiliki nilai awal 00 sehingga referensi tegangan berasal dari pin AREF. Tabel 2.3 Mode tegangan referensi REFS1
REFS0
0
0
Mode Tegangan Referensi Tegangan referensi berasal dari pin AREF
0
1
Tegangan referensi berasal dari pin AVCC
1
0
Tidak digunakan
1
1
Tegangan referensi internal 2.56 V
ADLAR merupakan bit pemilih format data keluaran ADC. Bila bit ADLAR berlogika low maka data hasil konversi ADC direpresentasikan rata kanan, yakni 2 bit tertinggi data hasil konversinya berada di register ADCH dan 8 bit sisanya berada di register ADCL. Set ke logika 1 atau high untuk membuat data hasil konversi menjadi rata kiri.
MUX [4..0] merupakan bit pemilih jalur masukan/channel ADC, bernilai awal 00000. Untuk mode single ended input, MUX [4..0] bernilai dari 00000-11111.
21
Tabel 2.4 Pemilihan jalur masukan/channel dan penguatan ADC
2. ADCSRA merupakan register 8 bit yang berfungsi melakukan manajemen sinyal control dan status dari ADC. Proses konversi dimulai dengan cara menulis logika 1 pada bit ADC start conversion (ADSC). Bit ini akan terus berlogika 1 selama proses konversi berlangsung dan akan di-clearkan oleh perangkat keras setelah konversi selesai.
22
Gambar 2.7 Register ADCSRA
Bit 7-ADEN : ADC Enable Menulis logika 1 pada bit ini akan mengaktifkan ADC. Menulis logika 0 menonaktifkan
ADC.
Mematikan
ADC
saat
konversi
sedang
berlangsung akan mengakhiri proses konversi yg sedang berlangsung.
Bit 6 – ADSC : ADC Start conversion Pada mode konversi tunggal, tulis bit ini menjadi 1 untuk memulai tiap konversi. Pada mode free running, tulis bit ini menjadi 1 untuk memulai konversi pertama. Bit ADSC akan dibaca sebagai logika 1 selama konversi berlangsung,saat konversi selesai bit ini akan kembali ke logika 0.
Bit 5 – ADATE : ADC Auto trigger enable Bila bit ini ditulis menjadi logika 1 maka fungsi pemicuan konversi otomatis ADC akan diaktifkan. ADC akan memulai konversi pada tepi positif dari sinyal pemicu yang dipilih. sumber sinyal pemicu dipilih dengan melakukan pengaturan bit ADTS (ADC trigger select bit) pada register SFIOR.
Bit 4 – ADIF : ADC interrupt flag Flag ini akan diset saat konversi ADC selesai dan data pada registerregister data ADC telah diperbaharui.
23
Interupsi ADC selesai konversi akan dieksekusi bila bit ADIE dan bit-I pada register SREG telah diset sebelumnya. ADIF akan diclearkan oleh perangkat keras saat melompat ke vector interupsi yang bersangkutan. Pilihan lainnya, adalah ADIF akan diclear dengan menulis logika 1 ke bit flag ini.
Bit 3 – ADIE :ADC interrupt Enable Bila bit ini ditulis berlogika 1 dan bit I pada register SREG telah diset sebelumnya maka interupsi ADC selesai konversi akan diaktifkan.
Bit 2:0 ADPS2:0 : ADC prescaler select bit Bit-bit ini menentukan factor pembagi frekuensi XTAL dan frekuensi masukan bagi ADC.
Tabel 2.5 Pilihan prescaler ADC ADPS2
ADPS1
ADPS0
Faktor pembagi
0
0
0
2
0
0
1
2
0
1
0
4
0
1
1
8
1
0
0
16
1
0
1
32
1
1
0
64
1
1
1
128
3. Register data ADC, yakni ADCH dan ADCL Register-register ini menyimpan data biner hasil konversi ADC.
Saat
konversi selesai hasil konversi akan diketemukan pada kedua register ini.
24
Jika
jalur
masukan
diferensial
yang
digunakan
maka
hasil
akan
direpresentasikan dalam format komplemen dua. Saat register ADCL dibaca, register-register data ADC tidak akan diperbaharui hingga register ADCH dibaca. Bila hasil diset rata kiri (left adjusted) dan keakuratan lebih dari 8 bit tidak diperlukan maka data pembacaan didapat cukup dengan hanya membaca isi register ADCH, bila tidak ADCL harus dibaca terlebih dahulu baru kemudian register ADCH. Bit ADLAR pada register ADMUX dan bit-bit MUXn pada register ADMUX akan mempengaruhi cara hasil konversi dibaca dari register. Jika bit ADLAR diset, hasil konversi disusun rata kiri, bila bit ADLAR diclear (default) maka hasilnya disusun rata kanan.
Gambar 2.8 Susunan data register ADC sesuai bit ADLAR
4. Register SFIOR (Special Function I/O register).
Gambar 2.9 Register SFIOR
25
Bit 7:5 – ADTS 2:0 : ADC auto trigger source Jika bit ADATE pada register ADCSRA ditulis dengan logika 1 maka nilai dari bit-bit ini akan memilih sumber sinyal konversi otomatis ADC. Jika bit ADATE diclear maka bit-bit ADTS2:0 tidak akan memiliki pengaruh. Konversi akan dimulai pada setiap tepi positif dari flag interupsi yang dipilih. Perhatikan bahwa mengganti sumber pemicu dari yang sebelumnya direset menjadi diset akan membangkitkan tepi positif pada sinyal pemicu. Jika bit ADEN pada register ADCSRA diset maka hal ini akan memulai konversi. Mengganti ke mode free running (ADTS [2:0] = 0) tidak akan menyebabkan terjadinya pemicuan bahkan saat flag interupsi ADC telah diset.
Tabel 2.6 Pilihan sinyal pemicu konversi otomatis
ADTS2
ADTS1
ADTS0
Sumber pemicuan
0
0
0
Mode free running
0
0
1
Komparator Analog
0
1
0
Permintaan Interupsi eksternal INT0
0
1
1
Compare match Timer/Counter0
1
0
0
Overflow Timer/Counter0
1
0
1
Compare match B Timer/Counter1
1
1
0
Overflow Timer/Counter1
1
1
1
Event Capture Timer/Counter1
Bit 4 – RES : Reserved bit Bit ini belum digunakan pada ATmega32 dan akan selalu dibaca berlogika nol.
26
2.1.3 Timer/Counter Mikrokontroler ATmega32 memiliki 2 buah timer 16 bit (timer 0 dan timer 1) serta 1 buah timer/counter 8 bit, yakni timer 2. Dikarenakan pada alat ini digunakan timer 16 bit maka pembahasan dibawah hanya akan membahas tentang timer 16 bit. Timer pada dasarnya hanya menghitung pulsa clock. Timer/counter dapat digerakan secara langsung menggunakan system clock internal maupun sumber clock eksternal yang dihubungkan melalui pin T1/T0. Frekuensi pulsa clock yang dihitung dapat sama dengan frekuensi crystal yang dipasang atau dapat diperlambat dengan menggunakan prescaler dengan faktor pembagi 8, 64, 256 atau 1024. Sebagai contoh pada sebuah AVR yang menggunakan crystal dengan frekuensi 8 MHz dan menggunakan timer 16 bit, maka maksimum pulsa clock/waktu yang bisa dihitung adalah : TMAX = 1/fCLK x (FFFFh+1) =
1 8. 106
x 65536
= 0.008192 detik Untuk menghitung pulsa clock/menghasilkan waktu tundaan yang lebih lama dapat digunakan prescaler, misalnya dengan factor 1024, dengan demikian maka maksimum pulsa clock / tundaan waktu yang bisa dihasilkan adalah : TMAX = 1/fCLK x (FFFFh+1) x N =
1 8. 106
x 65536 x 1024
= 8.388608 detik
27
Ketika prescaler digunakan, waktu tunda yang dihasilkan dapat diperpanjang namun tingkat ketelitiannya akan menjadi turun. Misalnya dengan prescaler 1024 nilai timer akan bertambah satu setiap kelipatan 1024 pulsa clock dan membutuhkan waktu 1/fCLK x 1024 = 0.125uS x 1024 = 128 uS, bandingkan tingkat resolusi ini dengan tanpa precsaler yakni 0.125uS. Timer/counter 0 dan timer/counter 1 pada mikrokontroller ATmega32 berbagi modul prescaler yang sama namun dapat memiliki pengaturan prescaler yang berbeda. Mode yang paling sederhana dalam menggunakan timer adalah pada mode normal (timer 16 bit normal mode), Pada mode ini timer akan menghitung maju dan tidak melakukan operasi clear timer. Register timer TCNT1 hanya akan menghitung naik dan membangkitkan interrupt Timer/Counter 1 ketika nilainya berubah/overflow dari 0xFFFF ke 0x0000. Karena register timer TCNT1 merupakan timer yang menghitung maju, maka anda harus memasukkan nilai 65536 - (timer value) ke dalam TCNT untuk menghasilkan waktu tunda yang diinginkan..
Gambar 2.10 Blok diagram timer/counter 16 bit
28
Register-register mikrokontroller yang terkait dengan pengaturan timer 1 adalah sebagai berikut : •
TCNT1 (Timer/Counter Register 1) Timer/Counter Register 1 digunakan untuk menyimpan nilai timer yang diinginkan. TCNT1dibagi menjadi 2 register 8 bit yaitu TCNT1H dan TCNT1L.
Gambar 2.11 Register timer TCNT1
Register TCNT1H berisi byte tinggi dari data timer 1 sedangkan register TCNT1L berisi byte rendah dari data timer 1. •
TIMSK (Timer Interrupt Mask) Register Timer Interrupt Mask Register (TIMSK) dan Timer Interrupt Flag (TIFR) adalah register yang digunakan untuk mengendalikan interrupt mana yang diaktifkan dengan cara melakukan setting pada bit-bit TIMSK.
Gambar 2.12. Register TIMSK
29
Tabel 2.7 Register TIMSK dan fungsinya Bit
Simbol
Fungsi
7
OC1E2
Bit untuk mengaktifkan interupsi output
compare
match
Timer/counter2. 6
TOIE2
Bit untuk mengaktifkan interupsi overflow Timer/counter2.
5
TICIE1
Bit untuk mengaktifkan interupsi input capture timer/counter 1
4
OCIE1A
Bit untuk mengaktifkan interupsi output
compare
A
match
timer/counter 1A 3
OC1E1B
Bit untuk mengaktifkan interupsi output
compare
B
match
timer/counter 1B 2
TOIE1
Bit untuk mengaktifkan interupsi overflow timer/counter 1
1
OCIE0
Bit untuk mengaktifkan interupsi output
compare
match
Timer/counter0. 0
TOIE0
Bit untuk mengaktifkan interupsi overflow Timer/counter0.
TIFR ( Timer/Counter Interrupt Flag Register) Register Timer Interrupt Flag (TIFR) adalah register yang digunakan untuk mengetahui interupsi mana yang sedang terjadi.
Gambar 2.13 Register TIFR
30
Tabel 2.8 Register TIFR dan fungsinya Bit
Simbol
Fungsi
7
OCF2
Bit flag output compare match timer/counter2
6
TOV2
Bit flag overflow timer/counter2
5
ICF1
Bit flag interupsi timer1 input capture
4
OCF1A
Bit flag output compare match A timer/counter1
3
OCF1B
Bit flag output compare match B timer/counter1
2
TOV1
Bit flag overflow timer/counter1
1
OCF0
Bit flag output compare match timer/counter0
0
TOV0
Bit flag overflow timer/counter0
TCCR1B (Timer/Counter1 Control Register B) Register TCCR1B adalah register yang digunakan untuk mengatur mode timer, prescaler serta pemilihan apakah hitungan timer diaktifkan pada tepi naik atau tepi turun dari pulsa clock pada pin eksternal T1.
Gambar 2.14. Register TCCR1B
31
Tabel 2.9 Register TCCR1B dan fungsinya Bit
Simbol
7
ICNC1
Fungsi Bit
untuk
mengaktifkan
noise
canceler pada input capture. 6
ICES1
Bit untuk memilih tepi naik atau tepi turun pada pin input capture (ICP1)
yang
digunakan
untuk
memicu event capture. 5
-
Bit reserve
4
WGM13
Bit pemilihan mode timer/counter
3
WGM12
Bit pemilihan mode timer/counter
2
CS12
Bit pemilihan sumber clock
1
CS11
Bit pemilihan sumber clock
0
CS10
Bit pemilihan sumber clock
Tabel 2.10 Deskripsi fungsi mode pembangkit gelombang
32
Tabel 2.11 Deskripsi fungsi bit pemilihan clock
CS12
CS11
CS10
Deskripsi
0
0
0
Tanpa sumber clock (Timer/Counter berhenti)
0
0
1
clkIO/1 , Tanpa prescaler
0
1
0
clkIO/8, dengan prescaler
0
1
1
clkIO/64, dengan prescaler
1
0
0
clkIO/256, dengan prescaler
1
0
1
clkIO/1024, dengan prescaler
1
1
0
Sumber clock eksternal pada pin T1, clock pada tepi turun.
1
1
1
Sumber clock eksternal pada pin T1, clock pada tepi naik.
Perhitungan waktu tunda dengan menggunakan Timer/Counter 16 bit : = (1 +
ℎ) −
×
Dimana : TCNT
:
Nilai timer (dalam hexadecimal)
fCLK
:
Frekuensi clock (Kristal) yang digunakan dalam Hertz
Ttimer
:
Waktu timer/tunda yang diinginkan (detik)
N
:
Prescaler (1,8,64,256,1024)
1+FFFFh
:
Nilai maksimum timer adalah FFFFh dan overflow saat transisi dari FFFFh ke 0000h
33
Misalkan diinginkan sebuah timer 16 bit menghasilkan waktu tunda 1 detik, dengan frekuensi clock sebesar 11,0592MHz dan presecaller 1024 serta dengan pengaktifan interupsi overflow timer/counter maka nilai TCNT yang harus diset adalah :
= (1 +
ℎ) −
× 11059200 1024
= 10000ℎ − 10800
= 10000ℎ − 2 30ℎ
= 5 0ℎ
Dengan demikian nilai register yang harus diset adalah register TCNTH = D5h dan register TCNTL = D0h.
34
2.1.4 Interupsi Tabel dibawah ini menunjukan reset dan vector interupsi yang terdapat pada mikrokontroller ATmega32.
Tabel 2.12 Vektor Interupsi dan Reset
Interupsi eksternal dipicu melalui pin INT0, INT1 dan INT2. Dan jika telah diaktifkan, interupsi akan tetap terjadi walaupun pin INT0..2 dikonfigurasikan sebagai output/keluaran.
35
Interupsi-interupsi eksternal dapat dipicu oleh sinyal tepi naik, tepi turun atau logika rendah (INT2 hanya merupakan pin interupsi yang dipicu oleh sinyal tepi). Jika interupsi eksternal diaktifkan dan dikonfigurasikan untuk pemicuan level logika (hanya INT0/INT1), interupsi akan dipicu selama pin terkait ditahan pada logika rendah. Berikut adalah register-register yang terkait dengan pengaturan dan status interupsi pada ATmega32 : 1. Register MCUCR mengandung bit-bit pengontrol bagi fungsi umum mikrokontroller dan pendeteksian interupsi.
Gambar 2.15 Register MCUCR
Bit 3,2 – ISC11, ISC10 : bit pengatur interupsi eksternal INT1 bit 1 dan bit 0 Interupsi eksternal 1 diaktifkan melalui pin eksternal INT1 jika bit I
pada register SREG dan mask interrupt yang terkait pada register GICR diset. Level logika dan tepi sinyal pada pin eksternal INT1 yang mengaktifkan interupsi didefinisikan pada tabel dibawah. Level logika pada pin INT1 disampel sebelum mendeteksi tepi sinyal. Jika interupsi tepi dipilih, maka pulsa-pulsa yang lebih lama daripada satu periode clock akan membangkitkan interupsi. Pulsa yang lebih singkat tidak dijamin untuk membangkitkan interupsi. Jika interupsi level logika rendah yang dipilih,
36
logika rendah harus ditahan hingga penyelesaian instruksi yang sedang dieksekusi untuk dapat membangkitkan interupsi. Tabel 2.13 Deskripsi bit pendeteksian interupsi INT1 Bit 1 dan Bit 0 ISC11
ISC10
0
0
Deskripsi Logika
rendah
pada
pin
INT1
membangkitkan
permintaan interupsi 0
1
Perubahan logika pada pin INT1 membangkitkan permintaan interupsi
1
0
Tepi turun sinyal pada pin INT1 membangkitkan permintaaan interupsi
1
1
Tepi naik sinyal pada pin INT1 membangkitkan permintaan interupsi
Bit 1, 0 – ISC01,ISC00 : bit pengatur interupsi eksternal INT0 bit 1 dan bit 0 Interupsi eksternal 0 diaktifkan melalui pin eksternal INT0 jika bit I pada register SREG dan mask interrupt yang terkait pada register GICR diset. Level logika dan tepi sinyal pada pin eksternal INT0 yang mengaktifkan interupsi didefinisikan pada table dibawah. Level logika pada pin INT0 disampel sebelum mendeteksi tepi sinyal. Jika interupsi tepi dipilih, maka pulsa-pulsa yang lebih lama daripada satu periode clock akan membangkitkan interupsi. Pulsa yang lebih singkat tidak dijamin untuk membangkitkan interupsi. Jika interupsi level logika rendah yang dipilih, logika rendah harus ditahan hingga penyelesaian instruksi yang sedang dieksekusi untuk dapat membangkitkan interupsi.
37
Tabel 2.14. Deskripsi bit pengontrol pendeteksian interupsi INT0 Bit 1 dan Bit 0 ISC01
ISC00
Deskripsi
0
0
Logika rendah pada pin INT0 membangkitkan permintaan interupsi
0
1
Perubahan logika pada pin INT0 membangkitkan permintaan interupsi
1
0
Tepi turun sinyal pada pin INT0 membangkitkan permintaaan interupsi
1
1
Tepi naik sinyal pada pin INT0 membangkitkan permintaan interupsi
2. Register pengontrol MCU dan register status MCUCSR
Bit 6 – ISC2 : Pengontrol pendeteksian interupsi 2
Interupsi eksternal asinkron 2 diaktifkan melalui pin eksternal INT2 jika bit I pada register SREG dan mask interrupt yang terkait pada register GICR diset. Jika bit ISC2 ditulis dengan logika rendah, tepi turun dari sinyal pada pin INT2 akan mengaktifkan interupsi. Jika bit ISC2 ditulis dengan logika tinggi, tepi naik dari sinyal pada pin INT2 akan mengaktifkan interupsi. Pulsa pada pin INT2 yang lebih lama daripada periode clock minimum yang ditunjukan pada tabel dibawah akan membangkitkan interupsi. Saat merubah bit ISC2, interupsi dapat terjadi oleh karena itu disarankan untuk pertama-tama menonaktifkan INT2 dengan menclearkan bit enable interupsi pada register GICR baru kemudian bit ISC2 dapat dirubah. Pada akhirnya flag interupsi INT2 sebaiknya di clearkan dengan menulis logika satu pada bit flag interupsinya (INTF2) pada register GIFR sebelum interupsi diaktifkan kembali.
38
Tabel 2.15 Lebar Pulsa minimum untuk membangkitkan interupsi eksternal Simbol tINT
Parameter Lebar
Kondisi
Min Umumnya Maks Satuan
pulsa
50
ns
minimum untuk interupsi eksternal asinkron
3. Register pengontrol interupsi umum GICR
Bit 7 – INT1 : External Interrupt Request 1 Enable
Saat bit INT1 diset (logika satu) dan bit I pada register status SREG diset (logika satu) maka pin interupsi eksternal diaktifkan. Bit-bit pengontrol pendeteksian interupsi 1 (ISC11 dan ISC10) pada register MCUCR menentukan apakah interupsi eksternal diaktifkan pada tepi naik dan/atau tepi turun dari sinyal pada pin INT1 atau pendeteksian level logika. Aktifitas pada pin tersebut akan mengakibatkan permintaan interupsi bahkan jika INT1 dikonfigurasikan sebagai keluaran. Interupsi terkait dari permintaan interupsi eksternal 1 akan dilaksanakan dari vector interupsi INT1.
Bit 6 – INT0 : External Interrupt Request 0 Enable
Bila bit INT0 diset (berlogika satu) dan bit I pada register status SREG diset (berlogika satu) maka pin interupsi eksternal diaktifkan. Bit pengontrol pendeteksian interupsi 0 bit 1/0 (ISC01 dan ISC00) pada register MCUCR menentukan apakah interupsi eksternal diaktifkan pada tepi naik atau tepi turun dari sinyal pada pin INT0 atau level logika. Aktifitas pada pin ini akan
membangkitkan
permintaan
interupsi
bahkan
jika
INT0
39
dikonfigurasikan sebagai keluaran. Interupsi terkait dari permintaan interupsi eksternal 0 akan dilaksanakan dari vector interupsi INT0.
Bit 5 – INT2 : External Interrupt Request 2 Enable
Bila bit INT2 diset (berlogika satu) dan bit I pada register status SREG diset (berlogika satu) maka pin interupsi eksternal diaktifkan. Bit pengontrol pendeteksian interupsi 2 pada register MCUCSR menentukan apakah interupsi eksternal diaktifkan pada tepi naik atau tepi turun dari sinyal pada pin INT2. Aktifitas pada pin akan membangkitkan permintaan interupsi bahkan jika INT2 dikonfigurasikan sebagai keluaran. Interupsi terkait dari permintaan interupsi eksternal 2 akan dilaksanakan dari vector interupsi INT2. 4. Register flag interupsi umum GIFR
Gambar 2.16 Register flag interupsi umum GIFR
Bit 7 – INTF1 : Flag interupsi eksternal 1
Saat tepi sinyal atau perubahan level logika pada pin INT1 memicu permintaan interupsi, bit INTF1 akan diset (menjadi berlogika satu). Jika bit I pada SREG dan bit INT1 pada register GICR diset (berlogika satu), Mikrokontroler akan melompat ke vector interupsi terkait. Flag atau penanda ini akan diclearkan saat rutin interupsi dieksekusi.
40
Dengan cara lain flag dapat diclearkan dengan menulis logika satu padanya. Flag ini akan selalu diclearkan jika INT1 dikonfigurasikan sebagai interupsi level logika.
Bit 6 – INTF0 : Flag interupsi eksternal 0
Saat tepi sinyal atau perubahan level logika pada pin INT0 memicu permintaan interupsi, bit INTF0 akan diset (menjadi berlogika satu). Jika bit I pada SREG dan bit INT0 pada register GICR diset (berlogika satu), Mikrokontroler akan melompat ke vector interupsi terkait. Flag atau penanda ini akan diclearkan saat rutin interupsi dieksekusi. Flag ini akan selalu diclearkan jika INT0 dikonfigurasikan sebagai interupsi level logika.
Bit 5 – INTF2 : Flag interupsi eksternal 2
Saat even pada pin INT2 memicu permintaan interupsi. INTF2 akan diset (berlogika satu). Jika bit I pada SREG dan bit INT2 pada register GICR diset (berlogika satu), Mikrokontroler akan melompat ke vector interupsi terkait. Flag atau penanda ini akan diclearkan saat rutin interupsi dieksekusi. 5. Register status SREG Merupakan register yang mengandung status atau informasi dari suatu operasi aritmatika atau logika serta mengandung
pula bit pengaktif
interupsi umum.
Gambar 2.17. Register status SREG
41
Bit 7 – I : Global Interrupt Enable
Bit ini digunakan untuk mengaktifkan semua interupsi, Bila bit ini diclearkan tidak akan ada interupsi yang dapat aktif walaupun bit enable interrupt individual yang bersangkutan telah diset.
Bit 6 – T : Penyimpanan bit copy
Instruksi penyalinan bit BLD (Bit Load) dan BST (Bit Store) menggunakan bit-T ini sebagai sumber atau tujuan . Suatu bit dari register dapat disalin ke bit-T ini dengan instruksi BST dan bit-T dapat disalin ke register dengan instruksi BLD.
Bit 5 – H : Half carry flag
Bit ini menandai terjadinya half carry pada operasi aritmatika.
Bit 4 – S : Bit sign, S = N ⊕ V
Bit ini merupakan hasil operasi logika exclusive OR antara bit N dan bit V
Bit 3 – V : Flag overflow komplemen dua
Bit ini menandakan terjadinya overflow atau limpahan pada hasil operasi aritmatika pada bilangan komplemen dua
Bit 2 – N : Flag Negatif
Bit ini menyatakan hasil negative dari suatu operasi aritmatika atau logika.
Bit 1 – Z : Flag Zero
Bit ini menyatakan hasil nol dari suatu operasi aritmatika atau logika.
Bit 0 – C : Flag Carry
Bit ini menyatakan terjadinya limpahan atau overflow dari suatu operasi aritmatika atau logika.
42
2.2
Penguat Operasional Penguat operasional atau Op-Amp merupakan rangkaian terintegrasi yang
memiliki fungsi sebagai penguat sinyal dengan karakteristik ideal sbb :
Impedansi masukan yang sangat tinggi (Zin )
Penguatan loop terbuka yang sangat tinggi (Aol )
Impedansi keluaran yang sangat rendah (Zout 0)
Perbedaan tegangan antara masukan inverting dan non-inverting nol (Ed 0)
Gambar 2.18 Simbol penguat operasional & kemasannya
Simbol penguat operasional ditunjukan pada gambar diatas, terdapat 4 pin utama dari sebuah Op-Amp yakni pin masukan inverting (diberi tanda minus), pin masukan noninverting (diberi tanda plus), pin sumber tegangan positif, dan pin sumber tegangan negatif. Beberapa penerapan Op-Amp diantaranya adalah sebagai penguat inverting, penguat noninverting, penguat penjumlah dan selisih serta penyangga.
43
2.2.1
Penyangga/pengikut tegangan Penyangga atau pengikut tegangan adalah rangkaian op-amp dimana
tegangan keluaran adalah sama dengan tegangan masukan (penguatan =1). Rangkaian ini memiliki keunggulan dimana pada bagian input terdapat impedansi masukan yang sangat besar dan impedansi keluaran yang kecil. Jadi rangkaian ini sangat cocok digunakan pada tahap penguatan awal sinyal sebuah sensor karena mengurangi terjadinya rugi/hilangnya sinyal akibat adanya tahanan pada konduktor penghantar sensor.
4
VCC
Vin 3
+
2
1 Vout
11
LT1014
- VDD
Gambar 2.19 Rangkaian penyangga/pengikut tegangan
Analisa rangkaian penyangga/pengikut tegangan adalah sbb : Berdasarkan hukum kirchoff tentang tegangan KVL ( V = 0) dan dengan menganggap bahwa perbedaan tegangan antara pin non inverting terhadap tegangan pada pin inverting Op Amp adalah ≈ 0 V, maka : -Vin + Vout = 0, Vin = Vout Karena berdasarkan definisi bahwa : Vout = A x Vin maka dengan subtitusi, didapat gain atau penguatan A=
=1
44
2.2.2 Penguat Non inverting Konfigurasi Op-Amp sebagai penguat non inverting ditunjukan pada gambar dibawah ini. VCC Iin 4
Vin 3 2
+
1 Vout
11
IR1
LT1014
R1
- VDD Iout
R2
Gambar 2.20 Rangkaian penguat non inverting
Analisa rangkaian penguat non inverting adalah sbb : Berdasarkan hukum kirchoff tentang arus KCL (∑ I = 0), maka : Iout + I (-) – IR1= 0 karena pada sebuat Op-Amp ideal impedansi input adalah sangat tinggi maka I (-)
≈ 0, maka persamaan diatas dapat ditulis ulang menjadi : Iout = IR1 .
Karena pada Op-Amp ideal Ed (perbedaan tegangan pada input Op-Amp) 0, maka : Vin = IR1 . R1 Vout = Iout x R2 + IR1 x R1, karena Iout = IR1 maka Vout = IR1 (R2+R1)
Karena gain atau penguatan sinyal A =
maka A =
(
) .
,
45
A=
=1+
Dengan demikian konfigurasi Op-Amp sebagai penguat Noninverting akan memiliki penguatan sinyal dengan factor penguatan A = 1 +
2.2.3
Penguat Instrumentasi Konfigurasi Op-Amp sebagai penguat instrumentasi ditunjukan pada
gambar dibawah ini.
VCC
Vin +
4 3
5 1
11
2
+
6 R
+
7
11
Vin -
4
VC C
LT1014
LT1014
R
-VD D -VDD Vref R R
RG
Gambar 2.21 Rangkaian penguat instrumentasi
Pada konfigurasi diatas dua penguat operasional digunakan untuk membentuk rangkaian penguat instrumentasi. Tegangan keluaran Vout akan ditentukan oleh persamaan sebagai berikut : Vout = Vin . [ 2 (1 +
)] +
Jadi besarnya penguatan sinyal atau AV = 2 (1 +
)
46
2.3
Sensor tekanan DCXL30DN Sensor
tekanan
DCXL30DN
merupakan
sensor
tekanan
silicon
piezoresisitif yang menghasilkan tegangan keluaran dengan akurasi dan linearitas tinggi. Sensor ini ditrim dengan laser di pabrik untuk menghasilkan jangkauan keluaran yang presisi serta terkalibrasi offset dan terkompensasi dari perubahan temperature untuk menjamin keakurasian tinggi dalam pengukuran tekanan.
Gambar 2.22 sensor tekanan DCXL
Spesifikasi dari sensor tekanan seri DCXL ditunjukan pada tabel dibawah ini. Tabel ini menunjukan spesifikasi detail dari sensor tekanan DCXL pada tegangan suplai 12 Vdc dan dalam kondisi suhu lingkungan 25 oC.
47
Tabel 2.16. Spesifikasi sensor tekanan DCXL
Sensor tekanan ini dapat menerima tekanan hingga 30 in H2O atau setara dengan 74.7 mbar. Pada tegangan suplai 12 Vdc, tekanan 30 in H2O yang diaplikasikan pada port B dari sensor DCXL30DN akan menghasilkan span/tegangan keluaran 20 mV sebagaimana tertera pada datasheetnya. Pada nilai tegangan suplai atau eksitasi lainnya, maka span/tegangan keluaran sensor DCXL30DN akan mengikuti persamaan sebagai berikut
=
× 20
(
30 2 ) × 12 × 30 2
(
2 )
Sebagai contoh untuk tegangan suplai atau tegangan eksitasi 5 Vdc, maka span/tegangan keluaran sensor DCXL30DN pada tekanan 30 inH2O akan menjadi sebagai berikut :
48
=
(
5 × 20
= 8,33
,
30 2 ) × 30 ( 12 × 30 ( 2 )
30
2
2 )
5
Jadi pada tegangan suplai 5 Vdc, resolusi sensor DCXL30DN akan menjadi =
.
(
.
)
= 1.115 × 10 /
.
Karena akurasinya yang tinggi sensor jenis ini seringkali digunakan dalam aplikasi instrument industry maupun medis.
2.4
Sensor Oksigen OOM202 OOM202 merupakan sensor oksigen jenis sel galvanic, sensor ini
memproduksi tegangan yang proporsional dengan tekanan parsial dari oksigen dalam sampel gas atau dengan kata lain proporsional dengan konsentrasi oksigen dari sampel gas. Memiliki jangkauan pengukuran 0 s/d 100 % oksigen. Tegangan keluarannya berkisar pada nilai 13 s/d 16 mV pada udara ambient (20.9 vol. % O2) atau sekitar 62.2 s/d 76.5 mV pada 100 vol % oksigen. Jadi resolusi sensor ini sekitar 1.607 s/d 1.306 mV / vol. % O2 Cara kerja dari sensor oksigen jenis galvanic ini adalah sebagai berikut : Sensor galvanic memiliki struktur seperti baterai logam / udara dengan pembatasan difusi. Gambar detail ditunjukan dibawah ini.
49
Oksigen pada sampel gas akan berdifusi melalui lapisan penghalang/diffusion barrier dan saat mencapai katoda, oksigen akan dirubah menjadi ion hidroksil. Ion ini kemudian melalui larutan elektrolit dan akan mengoksidasi logam anoda.
Gambar 2.23 Sensor oksigen OOM202
Akibat
reaksi
ini
arus
listrik
yang
proporsional
dengan
laju
pengkonsumsian/reaksi oksigen akan dihasilkan pada rangkaian katoda/anoda. Karena oksigen yang mencapai katoda dibatasi/ditentukan oleh lapisan penghalang difusi (barrier diffusion) dan konsentrasi O2 maka arus sel akan merupakan fungsi langsung dari konsentrasi oksigen dalam gas sampel. Persamaan bagi sel galvanic diatas adalah sbb : Reaksi Katoda :
O2 + 2 H2O + 4 Є- = 4OH-
Reaksi Anoda :
2Pb + 4OH- = 2PbO + 2 H2O + 4 Є-
Reaksi Sel Keseluruhan : 2Pb+O2 = 2PbO Arus keluaran (µA) = K log (1/1-C) Dimana K merupakan konstanta & C merupakan tekanan parsial oksigen dalam gas sampel.
50
2.5
Modul LCD grafik LM12864 LM12864 merupakan modul LCD graphic dengan ukuran tampilan 128 x
64 pixel, memiliki backlight dan dikendalikan oleh dua buah driver LCD S6B0108 yang terpisah untuk masing-masing sisi kiri dan kanan tampilan atau untuk tiap area tampilan 64x64 pixel.
Gambar 2.24 Blok diagram dari modul LCD Graphic LM12864 Modul LM12864 memiliki tiga buah register internal pada tiap bagian atau area tampilannya, tiap bagian tersebut dapat dikontrol secara independen melalui register-register berikut: 1. Register page (X) address. Register X address ini menentukan halaman dari RAM tampilan internal. 2. Counter kolom (Y) address. Counter alamat Y menentukan alamat kolom dari RAM internal. Dapat diset melalui instruksi dan alamatnya akan dinaikan satu alamat secara otomatis oleh instruksi membaca atau menulis data. 3. Register baris awal tampilan (Z). Register baris awal Z menunjukan baris paling atas dari RAM tampilan. Alamat ini dapat digunakan untuk menggulirkan pola tampilan pada LCD.
51
Gambar 2.25 Peta memori tampilan LM12864
Peta memori atau RAM tampilan dari modul LM12864 ditunjukan pada gambar diatas. Daftar instruksi-instruksi yang digunakan untuk mengendalikan fungsi modul grafik LCD terdapat pada table dibawah ini. Tabel 2.17. Daftar instruksi LCD LM12864
Pada tugas akhir ini modul LM12864 digunakan untuk menampilkan grafik tekanan udara terhadap waktu.
52
2.6
LCD Character 4x16
Modul LCD LMB164XBC merupakan modul tampilan LCD untuk 16 buah karakter sebanyak 4 baris dengan ukuran masing-masing karakter 5x8 pixel. Blok diagram dari modul LCD ini dapat dilihat pada gambar dibawah ini.
Gambar 2.26 Blok diagram lcd character 4x16 Modul LCD ini memiliki dua area memori utama, yakni :
Character generator RAM (CGRAM). RAM atau memori ini digunakan untuk menyimpan karakter yang ditentukan oleh pengguna. Tersedia memori untuk 8 buah karakter buatan.
Display Data RAM (DDRAM) RAM atau memori ini dapat digunakan untuk menyimpan karakter ROM (font 5x8 dot). Peta alamat memori DDRAM dapat dilihat pada gambar dibawah ini.
Gambar 2.27 Peta Alamat DDRAM
53
Daftar instruksi-instruksi yang tersedia untuk melakukan pengendalian modul LCD ini dapat dilihat pada table dibawah ini. Tabel 2.18 Daftar Instruksi pada modul LCD character 4x16