TUGAS MIKROKONTROLLER

ANALOG TO DIGITAL CONVERTER (ADC)

Oleh : MERYL SABARA JTD 2A

ADC menggunakan LED 8 bit ADC menggunakan 7segment dan LED indikator ADC menggunakan menu dan NIM ADC menggunakan LM35

POLITEKNIK NEGERI MALANG

BAB I PENDAHULUAN
1.1 DasarTeori : 1.1.1 ADC 1.1.2 7segment 1.2 Tujuan :Mengetahuicarakerja ADC pada AtMega16 dengan output akanditampilkanolehLED 8 bit maupun 7 segment sebagai indicator nilai ADC 1.3 Manfaat : Mampumengoperasikan ADC pada simulator AVR dan Proteus

1.1 DasarTeori 1.1.1 ADC Dalam Mikrokontroler ATMEGA16 terdapat 8 buah ADC yang berada pada PORTA (ADC0-ADC7), ADC (Analog to Digital Converter) merupakan proses perubahan tegangan DC kedalam data bilangan digital, bisa berupa biner, heksa, ataupun desimal tergantung pemrograman yang dilakukan. ADC pada mikrokontroler ATMEGA16 dapat diberi referensi tegangan eksternal, yang dalam uji coba ini referensi tegangan eksternal di inputkan pada PIN 30 (AVCC).Dua buah potensio meter di inputkan pada port ADC yang dipergunakan sebagai simulasi perubahan tegangan yang terjadi ketika potensio ini diputar, dalam kenyataan perubahan nilai tegangan ini dapat di aplikasikan berupa pembacaan sensor, misalkan sensor suhu LM35, sensor jarak GP2D12, dll tergantung aplikasi yang akan digunakan. Atmega16 (dan sejenisnya) memiliki fitur ADC sebanyak 8 channel dengan resolusi 10-bit Register yang digunakan untuk setting ADC ini adalah:

ADEN : 1=adc enable.default=0. .+————————————————————————————————————-+ ADCSR | ADEN | ADSC | ADATE | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | +————————————————————————————————————–+ 76543210 1. 00:vref=AREF. 11: vref= internal 2. 10:Vref= Reserved . MUX0-MUX4 :pemilihan channel ADC yang digunakan0=channel1.trigger berasal. dari sinyal yang dipilih(set pada register SFIOR bit ADTS).ADC akan start konversi pada edge positip sinyal trigger. ADIE:di set 1. +————————————————————————————————————-+ ADMUX | REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 | +————————————————————————————————————–+ 76543210 1. ADLAR: Untuk setting format data hasil konversi ADC. ADIF:di set ke 1. 5. REFS 0.0:konversi belum terjadi 3. 4.56 volt dengan eksternal kapasitor pada AREF 3. ADATE:1:auto trigger di aktifkan .faktor pembagi 0-7 = 2 2 4 8 16 32 64 128.dst.Namun ADC Conversion Complete Interrupt di eksekusi jika bit ADIE dan bit-I dalam register SREG di set.jika bit-I dalam register SREG di set.1 :pemilihan tegangan referensi ADC 2. ADSC : 1:mulai konversi. 6. 4. ADPS0:2 .1=channel 2. 0=adc turn off 2. 01:vref=AVCC dengan eksternal capasitor pada AREF.jika konversi ADC selesai dan data register terUpdate.

2. File-New 2.+————————————————————————————————————-+ SFIOR | ADTS2 | ADTS1 | ADTS0 | ADHSM | ACME | PUD | PSR2 | PSR10 | +————————————————————————————————————–+ 76543210 1. ADHSM:ADC high speed mode enabled.2 ADC padaCodevisin CodeVisionmerupakansalahsatu software codinguntukmikrokontroller yang dapatmembuat program pada simulator proteussehinggamemoripadamikrokontrollerbekerjasesuaidengan coding yang perintahkan.yes . 1.1. Pilih menu project . ADTS0-ADTS2 :pemilihan trigger untuk konversi ADC. Adapuncaradalampenyetingan code vision untukmendapatkanfotmat ADC denganmaksud agar PORT input maupunoutpunbekerjasebagai analog to digital converter: 1.bit-bit ini berhubungan dengan bit ADATE pada register ADCSRA.

3 Manfaat 1. Dapatmembuat program ADCmenggunakan Code Vision dandisimulasikanmenggunakanproteus 3. Memahamicarakerja ADC 2. Generate Program 1.2 Tujuan 1. Setting chip. Memahami indicator nilai ADC dengan input potensio . maupun ADC seperti di bawahini - 4. MempraktikkanADCpadaCodeVision yang menggunakanbahasac++ 3. Membuat program secaraspesifikpenggunaan ADC dengan input potensio 1. port. Menganalisisdasarperbedaanjikamenggunakanreferensi VCC 4. MemahamiteoriTeganganreferensi 4. MensimulasikancarakerjaADC dengan LEDsebagai output menggunakan Proteus 2.3.

1 2.0(ADC 0) dan PORTA.3 2.1(ADC 1) pembacaan data dalam bentuk digital 8bit dan dirubah kedalam bentuk desimal dan ditampilkan dalam LED 8bit.4 ADC menggunakan LED 8 bit ADC menggunakan 7segment dan LED indikator ADC menggunakan menu dan NIM ADC menggunakan LM35 2.BAB II ANALISIS 2.2 2.1 ADC menggunakan LED 8 bit Dalam percobaan kali ini akan dilakukan uji coba pembacaan nilai ADC pada PORTA. berikut merupakan skema rangkaian uji cobanya : .

ADCSRA|=0x10. // Start the AD conversion ADCSRA|=0x40. PORTC=0xff. PORTD=0xff 3. Tampilkanrata-ratapada PORTC 6. Jika PORTC > 128 maka PORTD. 2. // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0). .7 akanmenyala. Flow Chart  Algoritma 1. Baca data_adc0 dan data_adc1 4. Proses rata-rata denganmenggabungkanmasukan data_adc0 dan data_adc1 = (data_adc0+data_adc1)/2 5. Inisialisasi ADMUX=adc_input | (ADC_VREF_TYPE & 0xff). kembalike ADCH.

// Delay needed for the stabilization of the ADC input voltage delay_us(10).}} . PORTC = rata2. return ADCH. #include <mega16.data_adc1. // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0).7 = 1.rata2. rata2=(data_adc0+data_adc1)/2.h> #include <delay. // Start the AD conversion ADCSRA|=0x40. ADCSRA|=0x10.h> Listing Program { data_adc0 = read_adc(0). unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff). data_adc1 = read_adc(1). } void main(void) if (rata2>128) {PORTD. unsigned char data_adc0.} else {PORTD.7 = 0.

1)/2 . Nilai-nilaitersebutmerupakanhasildari switch potensio yang diputarputarnilainyasehinggadidapatkannilaitegangan input yang berbeda pula. Nyala LED merupakannilaidari Urutan ADC bit adalah yang bit0 telahdikonversikandalammikrokontroller. Tegangan yang masukadalahhasil rata-rata daripotensio ADC. mulaidarisebelahkanan. 2. rata-rata = (ADC. 4.0 danpotensio ADC.7 merupakan LED indicator bahwanilai ADC melebihinilai 128.1. LED pada PORTD. Simulasi 1.0+ADC. 3.

2 ADC menggunakan 7segment dan LED indicator Dalam percobaan kali ini akan dilakukan uji coba pembacaan nilai ADC pada PORTA.0(ADC 0) pembacaan data dalam bentuk digital 8bit dan dirubah kedalam bentuk desimal dan ditampilkan dalam seven segment. berikut merupakan skema rangkaian uji cobanya : .2.

 Flowchart .

Jikaratusanmaka led pada PORTD. Jikapuluhanmaka led pada PORTD. Tampilkannilai ADC pada 7segment puluhandengan indicator berupa LED 6.2=0 9. PORTD.2=0 8. PORTD. PORTD=0xff 3. // Start the AD conversion ADCSRA|=0x40.0 =0.0 =1. Inisialisasi ADMUX = adc_input | (ADC_VREF_TYPE & 0xff).1=0.0 =0. PORTA=0x00. PORTC=0xff. Tampilkannilai ADC pada 7segment ratusandengan indicator berupa LED 5. Tampilkannilai ADC pada 7segment satuandengan indicator berupa LED 7. Baca data_adc0 4. Jikapuluhanmaka led pada PORTD.2=1 .1=1. kembalike ADCH.1=0. 2. PORTD. ADCSRA|=0x10. PORTD. PORTD. Algoritma 1. // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0). PORTD.

} {PORTD.} delay_ms(200).0x82. if (segment7[sat]) {PORTD. ADCSRA|=0x10. if (segment7[pul]) {PORTD.} {PORTD. ADCSRA|=0x40.0xf8.} {PORTD. PORTC = segment7[pul].1=1. void main(void) {while (1) { // Place your code here data_adc = read_adc(0).} delay_ms(200). Listing Program #include <mega16. #define ADC_VREF_TYPE 0x60 unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff).2=0. PORTC = segment7[sat].0x92.0=0.1=0.0=1. while ((ADCSRA & 0x10)==0).0x80.} {PORTD.pul. unsigned char rat. unsigned char segment7[10] = {0xc0.} {PORTD. PORTC = segment7[rat]. } .h> unsigned char data_adc.0xa4.} {pul = (data_adc%100)/10.0xf9.} delay_ms(200).0x90}.} {sat = data_adc%10.0xb0.h> #include <delay.} {PORTD. return ADCH.2=1.2=0. if (segment7[rat]) {PORTD. } }. {rat = data_adc/100.0x99.0=0.1=0.sat. delay_us(10).

satuandar 7segment 3. puluhan.1. danhasilbaca ADC tersebutakanditampilkanmelalui seven segment 2.0 . Simulasi 1. 4. Nilai-nilaitersebutmerupakanhasildari switch potensio yang diputarputarnilainyasehinggadidapatkannilaitegangan input yang berbeda pula. Tegangan yang masukadalahdaripotensio ADC. PORTD. LED pada PORTD.2.3 adalah indicator yang membantumengetahuinilairatusan. PORTD. Nilai ADC di konversisehinggamenyimpannilaitertentu.

puluhanataupunsatuan.2. .3 ADC menggunakan menu dan NIM Padapercobaan kali iniyaitumengkombinasikan ADC menggunakantampilan seven segment dengan seven segment untukmenampilkan NIM jikanilai ADC adalahtertentu. Sedangkan PORTC dan PORTD masing-masingadalah seven segment ADC dan NIM. PORTA merupakanmasukan . PORTB adalah indicator menu darinilai seven segment apakahituratusan.

2=0.} {PORTD.} {PORTD.} delay_ms(200) delay_ms(200) delay_ms(200) .} {PORTD.} {PORTD. ADCSRA|=0x10 data_adc = read_adc(0) if (data_adc< 128 ) PORTD = seg[nim1[i]] pul = (data_adc%100)/10 PORTC = segment7[pul] rat = data_adc/100 sat = data_adc%10 PORTC = segment7[rat] PORTC = segment7[sat] if (segment7[rat]) if (segment7[pul]) if (segment7[sat]) {PORTD.0=0.1=0.} {PORTD.0=1.2=0.} {PORTD.2=0.} {PORTD.1=1.} {PORTD.1=0. start Flowchart PORTA=0x00 PORTB=0xff PORTC=0xff PORTD=0xff Char seg[10] Char nim[10] ADMUX=0x60 ADCSRA|=0x40 while ((ADCSRA & 0x10)==0).0=1.

0 =0.i<=128.0 =1.2=0 9. PORTB.i++) 5. Baca data_adc0 4. // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0). Jikapuluhanmaka led pada PORTB. // Start the AD conversion ADCSRA|=0x40. Tampilkannilai ADC pada 7segment satuandengan indicator berupa LED 8. Jikapuluhanmaka led pada PORTB.2=0 10. PORTB.1=1. PORTC=0xff. kembalike ADCH. 2. Algoritma 1. PORTA=0x00.2=1 . Jika ADC<=128. Tampilkannilai ADC pada 7segment puluhandengan indicator berupa LED 7. maka PORTD= seg[nim[i]] dimanaiadalah for (i=1. PORTB. PORTB=0xff. Inisialisasi ADMUX = adc_input | (ADC_VREF_TYPE & 0xff).0 =0. PORTD=0xff 3.1=0. PORTB. PORTB. PORTB. Tampilkannilai ADC pada 7segment ratusandengan indicator berupa LED 6. ADCSRA|=0x10.1=0. Jikaratusanmaka led pada PORTB.

Ada pula indicator pada PORTB yang ditunjukkandenganadanya 3 buah LED pada PORTB. kemudianjikanilai ADC <= 128. .1 (puluhan) . Hal tersebutakanmenjadibaikjikakitamemberikan coding berupa delay agar perpindahan digit angkapada seven segment benarbenarstabildantidakterlalucepat.2 (satuan) 3. ADC akanmenghasilkannilaitertentudari input kemudian di tampilkanpada seven segment PORTC. PORTB. Simulasi Gambar PORTB (NIM) Gambar PORTC 1. PORTB. maka seven segment pada PORTD (NIM) akanberjalansesuaidengan char NIM yang akan d looping oleh variable i 2.0 (ratusan) .

4 ADC menggunakan LM35 Padapercobaan kali iniyaitudenganmenggunakan sensor panas.2.Untukitu sensor tersebutakanmenjadiinputan ADC. Dan jugaindikator led pada PORTB dan PORTD. Karenakitaasumsikanada indicator untukmenandakankelebihanpanas. puluhan. LM35.Sedangkan led indicator pada PORTD adalahuntukketerangan seven segment apakahituratusan. . Untukkeluaranpada AtMega16 yaitudenganmemberikandiplay seven segment pada PORTC untukmenampilkannilai ADC. Indicator led pada PORTB yaituuntukmenunjukkanbahwadiaakanmenyalajikanilaidari ADC melebihi 128. satuan.

1=0.} delay_ms(200) delay_ms(200) delay_ms(200) . ADCSRA|=0x10 data_adc0 = read_adc(0).} {PORTD. data_adc1 = read_adc(1).0=1.1=1.} {PORTD.} {PORTD. start Flowchart PORTA=0x00 PORTC=0xff ADMUX=0x60 ADCSRA|=0x40 while ((ADCSRA & 0x10)==0).2=0.0=1 rat = rata2/100 pul = (rata2%100)/10 sat = rata2%10 PORTC = segment7[rat] PORTC = segment7[pul] PORTC = segment7[sat] if (segment7[rat]) if (segment7[pul]) if (segment7[sat]) {PORTD.} {PORTD. rata2=(data_adc0 +data_adc1)/2.1=0.0=1.0=0.} {PORTD.} {PORTD.} {PORTD.} {PORTD.2=0.2=0. If (rata2<=128) PORTB.

PORTD.0 =0. PORTB=0xff. Jika rata2 <=123 maka PORTB. PORTD.1=1. Tampilkannilai ADC pada 7segment satuandengan indicator berupa LED 9. kembalike ADCH. Tampilkannilai ADC pada 7segment ratusandengan indicator berupa LED 7.2=1 . // Start the AD conversion ADCSRA|=0x40.0=1 6. Jikaratusanmaka led pada PORTD. ADCSRA|=0x10. PORTD=0xff 3. PORTC=0xff. Jikapuluhanmaka led pada PORTD.2=0 11.0 =1. PORTA=0x00.2=0 10. PORTD. Tampilkannilai ADC pada 7segment puluhandengan indicator berupa LED 8. PORTD. PORTD.0 =0. Algoritma 1. // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0).1=0. Baca data_adc0 dan data_adc1 4.1=0. Inisialisasi ADMUX = adc_input | (ADC_VREF_TYPE & 0xff). Rata2=(data_adc0+data_adc1)/2 5. 2. PORTD. Jikapuluhanmaka led pada PORTD.

PORTB. . PORTC adalahuntukmenampilkannilai ADC 4. PORTD sebagai indicator apakahitunilairatusan. Simulasi 1. Input ADC menggunakan LM35 pada ADC0 dan ADC1 kemudian di rata2.0 digunakanuntuk indicator jika rata2 lebihdari 128 makamenyala 3. Dari rata2 menjadiacuan input untuk coding selanjutnya 2. puluhan. atausatuan.

Sign up to vote on this title
UsefulNot useful