Top Banner

of 22

Laporan Adc

Oct 31, 2015

Download

Documents

Meryl Sabara
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

TUGAS MIKROKONTROLLER ANALOG TO DIGITAL CONVERTER (ADC)

Oleh : MERYL SABARA JTD 2A

ADC menggunakan LED 8 bitADC menggunakan 7segment dan LED indikatorADC menggunakan menu dan NIMADC 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 DasarTeori1.1.1 ADCDalam 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:

+-+ADCSR | ADEN | ADSC | ADATE | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 |++7 6 5 4 3 2 1 0

1. ADEN : 1=adc enable, 0=adc turn off2. ADSC : 1:mulai konversi,0:konversi belum terjadi3. ADATE:1:auto trigger di aktifkan ,trigger berasal; dari sinyal yang dipilih(set padaregister SFIOR bit ADTS).ADC akan start konversi pada edge positip sinyal trigger.4. ADIF:di set ke 1,jika konversi ADC selesai dan data register ter-Update.Namun ADC Conversion Complete Interrupt di eksekusi jika bit ADIE dan bit-I dalam register SREG di set.5. ADIE:di set 1,jika bit-I dalam register SREG di set.6. ADPS0:2 ,faktor pembagi 0-7 = 2 2 4 8 16 32 64 128.

+-+ADMUX | REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 |++7 6 5 4 3 2 1 0

1. REFS 0,1 :pemilihan tegangan referensi ADC2. 00:vref=AREF, 01:vref=AVCC dengan eksternal capasitor pada AREF, 10:Vref= Reserved , 11: vref= internal 2.56 volt dengan eksternal kapasitor pada AREF3. ADLAR:Untuk setting format data hasil konversi ADC,default=0.4. MUX0-MUX4 :pemilihan channel ADC yang digunakan0=channel1,1=channel 2,dst.

+-+SFIOR | ADTS2 | ADTS1 | ADTS0 | ADHSM | ACME | PUD | PSR2 | PSR10 |++7 6 5 4 3 2 1 0

1. ADTS0-ADTS2 :pemilihan trigger untuk konversi ADC.bit-bit ini berhubungan dengan bit ADATE pada register ADCSRA.2. ADHSM:ADC high speed mode enabled.

1.1.2 ADC padaCodevisin

CodeVisionmerupakansalahsatu software codinguntukmikrokontroller yang dapatmembuat program pada simulator proteussehinggamemoripadamikrokontrollerbekerjasesuaidengan coding yang perintahkan.Adapuncaradalampenyetingan code vision untukmendapatkanfotmat ADC denganmaksud agar PORT input maupunoutpunbekerjasebagai analog to digital converter:1. File-New2. Pilih menu project - yes

3. Setting chip, port, maupun ADC seperti di bawahini -

4. Generate Program

1.2 Tujuan1. MensimulasikancarakerjaADC dengan LEDsebagai output menggunakan Proteus2. MempraktikkanADCpadaCodeVision yang menggunakanbahasac++3. Menganalisisdasarperbedaanjikamenggunakanreferensi VCC4. Membuat program secaraspesifikpenggunaan ADC dengan input potensio

1.3 Manfaat1. Memahamicarakerja ADC2. Dapatmembuat program ADCmenggunakan Code Vision dandisimulasikanmenggunakanproteus3. MemahamiteoriTeganganreferensi4. Memahami indicator nilai ADC dengan input potensio

BAB IIANALISIS

2.1 ADC menggunakan LED 8 bit2.2 ADC menggunakan 7segment dan LED indikator2.3ADC menggunakan menu dan NIM2.4ADC menggunakan LM35

2.1 ADC menggunakan LED 8 bitDalam percobaan kali ini akan dilakukan uji coba pembacaan nilai ADC pada PORTA.0(ADC 0) dan PORTA.1(ADC 1) pembacaan data dalam bentuk digital 8bit dan dirubah kedalam bentuk desimal dan ditampilkan dalam LED 8bit. berikut merupakan skema rangkaian uji cobanya :

Flow Chart

Algoritma1. Inisialisasi ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion ADCSRA|=0x40; // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; kembalike ADCH;2. PORTC=0xff, PORTD=0xff3. Baca data_adc0 dan data_adc14. Proses rata-rata denganmenggabungkanmasukan data_adc0 dan data_adc1 = (data_adc0+data_adc1)/25. Tampilkanrata-ratapada PORTC6. Jika PORTC > 128 maka PORTD.7 akanmenyala.

Listing Program#include #include unsigned char data_adc0,data_adc1,rata2;unsigned char read_adc(unsigned char adc_input){ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);// Delay needed for the stabilization of the ADC input voltagedelay_us(10);// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;}void main(void)

{data_adc0 = read_adc(0); data_adc1 = read_adc(1); rata2=(data_adc0+data_adc1)/2; PORTC = rata2;

if (rata2>128)

{PORTD.7 = 1;} else {PORTD.7 = 0;}}

Simulasi

1. Nyala LED merupakannilaidari ADC yang telahdikonversikandalammikrokontroller. Urutan bit adalah bit0 mulaidarisebelahkanan. 2. LED pada PORTD.7 merupakan LED indicator bahwanilai ADC melebihinilai 128. 3. Nilai-nilaitersebutmerupakanhasildari switch potensio yang diputar-putarnilainyasehinggadidapatkannilaitegangan input yang berbeda pula.4. Tegangan yang masukadalahhasil rata-rata daripotensio ADC.0 danpotensio ADC.1. rata-rata = (ADC.0+ADC.1)/2

2.2 ADC menggunakan 7segment dan LED indicatorDalam 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 :

Flowchart

Algoritma

1. Inisialisasi ADMUX = adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion ADCSRA|=0x40; // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; kembalike ADCH;2. PORTA=0x00, PORTC=0xff, PORTD=0xff3. Baca data_adc04. Tampilkannilai ADC pada 7segment ratusandengan indicator berupa LED5. Tampilkannilai ADC pada 7segment puluhandengan indicator berupa LED6. Tampilkannilai ADC pada 7segment satuandengan indicator berupa LED7. Jikaratusanmaka led pada PORTD.0 =1, PORTD.1=0, PORTD.2=08. Jikapuluhanmaka led pada PORTD.0 =0, PORTD.1=1, PORTD.2=09. Jikapuluhanmaka led pada PORTD.0 =0, PORTD.1=0, PORTD.2=1

Listing Program

#include

#include unsigned char data_adc;unsigned char segment7[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char rat,pul,sat;#define ADC_VREF_TYPE 0x60unsigned char read_adc(unsigned char adc_input){ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);delay_us(10);ADCSRA|=0x40;while ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;void main(void){while (1) { // Place your code heredata_adc = read_adc(0);

{rat = data_adc/100; PORTC = segment7[rat];if (segment7[rat]) {PORTD.0=1;} {PORTD.1=0;} {PORTD.2=0;}delay_ms(200);} {pul = (data_adc%100)/10; PORTC = segment7[pul]; if (segment7[pul]) {PORTD.1=1;} {PORTD.0=0;} {PORTD.2=0;}delay_ms(200);} {sat = data_adc%10; PORTC = segment7[sat];if (segment7[sat]) {PORTD.2=1;} {PORTD.0=0;} {PORTD.1=0;}delay_ms(200); } };}

Simulasi

1. Nilai ADC di konversisehinggamenyimpannilaitertentu, danhasilbaca ADC tersebutakanditampilkanmelalui seven segment2. LED pada PORTD.1, PORTD.2, PORTD.3 adalah indicator yang membantumengetahuinilairatusan, puluhan, satuandar 7segment3. Nilai-nilaitersebutmerupakanhasildari switch potensio yang diputar-putarnilainyasehinggadidapatkannilaitegangan input yang berbeda pula.4. Tegangan yang masukadalahdaripotensio ADC.0

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

Flowchart

Algoritma

1. Inisialisasi ADMUX = adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion ADCSRA|=0x40; // tunggu AD conversion selesai while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; kembalike ADCH;2. PORTA=0x00, PORTB=0xff, PORTC=0xff, PORTD=0xff3. Baca data_adc04. Jika ADC