AD konverter ADC AD talakt ADC A mikrovezrl

  • Slides: 22
Download presentation
A/D konverter (ADC) A/D átalakító

A/D konverter (ADC) A/D átalakító

ADC • A mikrovezérlő csak digitális adatokat képes kezelni (0 és 1). • A

ADC • A mikrovezérlő csak digitális adatokat képes kezelni (0 és 1). • A valós világ jelei nagyrészt analóg jelek (szonzorok): hőmérséklet, nyomás, nedvesség. • Ahhoz hogy a mikrovezérlő fel tudja dolgozni a bemeneti analóg adatokat, digitálissá kell hogy alakítsa őket. Erre szolgál az A/D átalakító.

Digitalizálás példa • Az analóg jel időben és amplitúdóban is folytonos. • Mind a

Digitalizálás példa • Az analóg jel időben és amplitúdóban is folytonos. • Mind a két érték diszkretizálásával nyerjük a digitális jelet.

A jel fogadása • Általános esetben, a jel (adat) fogadása egy 3 lépésből álló

A jel fogadása • Általános esetben, a jel (adat) fogadása egy 3 lépésből álló folyamat. 1. Egy fizikai mennyiségtől függően, a szenzor a kimenetén analóg elektromos feszültséget ad. 2. Az egyszerűbb feldolgozás miatt, az analóg jelet digitálissá alakítjuk analóg-digitális átalakító (ADC) segítségével. 3. A digitális jelet feldolgozás céljából a mikrovezérlőnek továbbítjuk.

A jel fogadása és feldolgozása

A jel fogadása és feldolgozása

Analóg bemenetek • A korszerű mikrovezérlők a bemenetükön beépített ADC-vel rendelkeznek, ezért külső áramkör

Analóg bemenetek • A korszerű mikrovezérlők a bemenetükön beépített ADC-vel rendelkeznek, ezért külső áramkör hozzáadása nem szükséges.

Az ADC jellemzői • Működési elv: szukcesszív approkszimáció • 6 kanális (multiplekszált), • 10

Az ADC jellemzői • Működési elv: szukcesszív approkszimáció • 6 kanális (multiplekszált), • 10 bit-es rezolóció (eredmény: 0 -1023 között)

ADC • Referens feszültség 5 V, az összes analóg feszültséget az ekvivalens ADC értékre

ADC • Referens feszültség 5 V, az összes analóg feszültséget az ekvivalens ADC értékre alakítjuk. • A (0 V-5 V) tartományt 210 = 1024 lépésre osztjuk. • A bemeneti 0 V-ból 0 lesz, a bemeneti 5 Vból 1023 lesz, a bemeneti 2. 5 V-ból 523 lesz, stb.

ADC típusok • Szukcesszív approkszimáció, • Flash konverter (nagy sebesség, alacsony rezolúció mivel sok

ADC típusok • Szukcesszív approkszimáció, • Flash konverter (nagy sebesség, alacsony rezolúció mivel sok komparátorra van szükség). A 8 -bites átalakítóhoz 256 komparátor szükséges. • Fontos fogalmak: ADC előosztó (prescaler), ADC regiszterek.

ADC prescaler • Az ADC periodikus időintervallumokban alakítja át az analóg jelet. • Ezt

ADC prescaler • Az ADC periodikus időintervallumokban alakítja át az analóg jelet. • Ezt az intervallumot az oszcillátor frekvenciája határozza meg. • Az ADC 50 k. Hz-200 k. Hz tarományban működik. • A CPU órajel sokkal nagyobb, ezért szükséges az osztás. • Az ADC frekvenciáját úgy nyerjük, hogy a CPU frekvenciáját elosztjuk az előosztó értékével.

ADC prescaler • Az osztási arányok előre meg vannak határozva: 2, 4, 8, 16,

ADC prescaler • Az osztási arányok előre meg vannak határozva: 2, 4, 8, 16, 32, 64 és 128. • Ha például prescaler = 64: F_ADC = F_CPU/64 F_CPU = 16 MHz, F_ADC = 16 M/64 = 250 k. Hz • A kérdés hogy melyik frekvenciát válasszuk?

ADC prescaler • A frekvencia meg a pontosság között kompromisszumot kell kötni. • A

ADC prescaler • A frekvencia meg a pontosság között kompromisszumot kell kötni. • A nagyobb frekvecnia kisebb pontosságot jelent, és fordítva.

ADC regiszterek ADMUX – ADC Multiplexer Selection Register Bits 7 -6 : Referens feszültség

ADC regiszterek ADMUX – ADC Multiplexer Selection Register Bits 7 -6 : Referens feszültség kiválasztása

Referens feszültség • Az ADC-nek referens feszültség szükséges, amelyik az AREF, AVCC és GND-vel

Referens feszültség • Az ADC-nek referens feszültség szükséges, amelyik az AREF, AVCC és GND-vel van meghatározva. • A VCC ingadozhat!

ADC registri • ADLAR – ADC left adjust result • “ 1”: az eredmény

ADC registri • ADLAR – ADC left adjust result • “ 1”: az eredmény balra van igazítva • Bit 4 -0: ADC kanálisának meghatározása • ADCSRA – ADC Control and Status Register A

ADCSRA • Bit 7 – ADEN – ADC Enable – As the name says,

ADCSRA • Bit 7 – ADEN – ADC Enable – As the name says, it enables the ADC feature. Unless this is enabled, ADC operations cannot take place across PORTA i. e. PORTA will behave as GPIO pins. • Bit 6 – ADSC – ADC Start Conversion – Write this to ‘ 1’ before starting any conversion. This 1 is written as long as the conversion is in progress, after which it returns to zero. Normally it takes 13 ADC clock pulses for this operation. But when you call it for the first time, it takes 25 as it performs the initialization together with it. • Bit 5 – ADATE – ADC Auto Trigger Enable – Setting it to ‘ 1’ enables auto-triggering of ADC is triggered automatically at every rising edge of clock pulse. View the SFIOR register for more details.

ADCSRA • Bit 4 – ADIF – ADC Interrupt Flag – Whenever a conversion

ADCSRA • Bit 4 – ADIF – ADC Interrupt Flag – Whenever a conversion is finished and the registers are updated, this bit is set to ‘ 1’ automatically. Thus, this is used to check whether the conversion is complete or not. • Bit 3 – ADIE – ADC Interrupt Enable – When this bit is set to ‘ 1’, the ADC interrupt is enabled. This is used in the case of interrupt-driven ADC. • Bits 2: 0 – ADPS 2: 0 – ADC Prescaler Select Bits – The prescaler (division factor between XTAL frequency and the ADC clock frequency) is determined by selecting the proper combination from the following.

ADC prescaler

ADC prescaler

ADCL és ADCH ADC adatregiszterek • qw

ADCL és ADCH ADC adatregiszterek • qw

ADC init void adc_init() { // AREF = AVcc ADMUX = (1<<REFS 0); //

ADC init void adc_init() { // AREF = AVcc ADMUX = (1<<REFS 0); // ADC Enable and prescaler of 128 // 16000000/128 = 125000 ADCSRA = (1<<ADEN)|(1<<ADPS 2)|(1<<ADPS 1)|(1<<ADPS 0); }

ADC read uint 16_t adc_read(uint 8_t ch) { // select the corresponding channel 0~7

ADC read uint 16_t adc_read(uint 8_t ch) { // select the corresponding channel 0~7 // ANDing with ’ 7′ will always keep the value // of ‘ch’ between 0 and 7 ch &= 0 b 00000111; // AND operation with 7 ADMUX = (ADMUX & 0 x. F 8)|ch; // clears the bottom 3 bits before //ORing // start single convertion // write ’ 1′ to ADSC ADCSRA |= (1<<ADSC); // wait for conversion to complete // ADSC becomes ’ 0′ again // till then, run loop continuously while(ADCSRA & (1<<ADSC)); return (ADC); }

Feszültségosztó

Feszültségosztó