Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
A/D konverter (ADC) A/D átalakító
2
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ó.
3
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.
4
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.
5
A jel fogadása és feldolgozása
6
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.
7
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: között)
8
ADC Referens feszültség 5V, az összes analóg feszültséget az ekvivalens ADC értékre alakítjuk. A (0V-5V) tartományt 210 = 1024 lépésre osztjuk. A bemeneti 0V-ból 0 lesz, a bemeneti 5V-ból 1023 lesz, a bemeneti 2.5V-ból 523 lesz, stb.
9
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.
10
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 50kHz-200kHz 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.
11
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 = 16MHz, F_ADC = 16M/64 = 250kHz A kérdés hogy melyik frekvenciát válasszuk?
12
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.
13
ADC regiszterek ADMUX – ADC Multiplexer Selection Register
Bits 7-6 : Referens feszültség kiválasztása
14
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!
15
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
16
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. ADC is triggered automatically at every rising edge of clock pulse. View the SFIOR register for more details.
17
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 – ADPS2: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.
18
ADC prescaler
19
ADCL és ADCH ADC adatregiszterek
qw
20
ADC init void adc_init() { // AREF = AVcc ADMUX = (1<<REFS0);
// ADC Enable and prescaler of 128 // /128 = ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); }
21
ADC read uint16_t adc_read(uint8_t ch) { // select the corresponding channel 0~7 // ANDing with ’7′ will always keep the value // of ‘ch’ between 0 and 7 ch &= 0b ; // AND operation with 7 ADMUX = (ADMUX & 0xF8)|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); }
22
Feszültségosztó
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.