P. 1
Laporan Adc

Laporan Adc

|Views: 71|Likes:
Published by Meryl Sabara

More info:

Published by: Meryl Sabara on May 24, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

12/29/2013

pdf

text

original

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:

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

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

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

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

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

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

4. mulaidarisebelahkanan.7 merupakan LED indicator bahwanilai ADC melebihinilai 128. 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.0+ADC.1)/2 . rata-rata = (ADC.0 danpotensio ADC.1. 3. Simulasi 1. 2. LED pada PORTD.

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

 Flowchart .

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

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

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

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

2=0.} {PORTD.2=0.2=0.0=1.} {PORTD.} {PORTD.} {PORTD.1=1.0=0.} {PORTD.} {PORTD.} {PORTD.} {PORTD. 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.} delay_ms(200) delay_ms(200) delay_ms(200) .1=0. 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.1=0.

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

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

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

} {PORTD.} {PORTD.} {PORTD.} {PORTD.0=0.0=1.2=0.2=0. start Flowchart PORTA=0x00 PORTC=0xff ADMUX=0x60 ADCSRA|=0x40 while ((ADCSRA & 0x10)==0). ADCSRA|=0x10 data_adc0 = read_adc(0). data_adc1 = read_adc(1).} {PORTD.} {PORTD.1=1. rata2=(data_adc0 +data_adc1)/2.2=0.0=1.} {PORTD.} {PORTD.} delay_ms(200) delay_ms(200) delay_ms(200) .1=0. If (rata2<=128) PORTB.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.1=0.

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

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

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->