Gingl Zoltán, 2015, Szeged Mikrovezérlők Alkalmazástechnikája 2015.12.06. 11:51 Analóg perifériák és használatuk 1
Gingl Zoltán, 2012, Szeged Mikrovezérlők Alkalmazástechnikája 2015.12.06. 11:51 Analóg perifériák és használatuk 2
Analóg jelekből kétállapotú jel Két bemeneti feszültség, V n,v p Logikai kimenet: 1, ha V p >V n 0, egyébként Hiszterézis (h): 1, ha V p -V n > h/2 0, ha V p -V n < -h/2 változatlan állapot, egyébként Memóriával rendelkezik V p V n V p V n 2015.12.06. 11:51 Analóg perifériák és használatuk 3
V p V p V n V n OUT t 2015.12.06. 11:51 Analóg perifériák és használatuk 4
V p V p V n V n +h/2 V n -h/2 OUT t 2015.12.06. 11:51 Analóg perifériák és használatuk 5
V p V n Programozható késleltetés: 100ns..10us függ a V p -V n nagyságától is T dh T dl V n +h/2 V n -h/2 OUT t 2015.12.06. 11:51 Analóg perifériák és használatuk 6
CROSSBAR P0.0 P0.2 CP0A P2.4 P2.6 P0.1 P0.3 D Q C CP0 P2.5 P2.7 szinkronozálás belső órajelhez OR INTERRUPT 2015.12.06. 11:51 Analóg perifériák és használatuk 7
Logikai szintek konverziója Szinuszos jelek logikai jelekké konvertálása R vagy C mérése késleltetés mérése feszültségszint digitális jellé alakítása időtartam mérése Késleltetés létrehozása RC áramkör kimenő jele Változó küszöbszint 2015.12.06. 11:51 Analóg perifériák és használatuk 8
R1 R R2 1 exp 1 R1 R R 2 1 R1 R R 2 2 t RC exp exp t RC R1 R R 1 t RC 2 C PORT BIT PROCESSING t RC ln R1 R R 2 2 C8051F410 R1=4k7, R2=2k7 t RC1,008 RC 2015.12.06. 11:51 Analóg perifériák és használatuk 9
Port bit kimeneti feszültség V p V n t RC ln R 1 R 2 R 2 2015.12.06. 12:15 Analóg perifériák és használatuk 10
digitális jelek feszültségei: V in és V out V out C8051F410 V in R C 12-bit A/D converter R DAC 2015.12.06. 12:20 Analóg perifériák és használatuk 11
V in V out V n V p Ha V in 1-re vált, a kondenzátor töltödik Ha elérte a szintet, a kimenet 1-re vált Adott RC mellett V n értékétől függ a késleltetés 2015.12.06. 12:21 Analóg perifériák és használatuk 12
2015.12.06. 11:51 Analóg perifériák és használatuk 13
ADC, DAC Belső vagy külső Névleges érték 1,5V; 2,2V; 2,5V Terhelhetőség 200uA 10ppm/uA Pontosság 2% 2mV/V supply rejection 35ppm/K Feléledés: 7ms 4u7 OPTIONAL EXTERNAL VREF 100nF C8051Fxxx ADC, DAC INTERNAL VREF 2015.12.06. 11:51 Analóg perifériák és használatuk 14
Feléledési idő néhány ms lehet meg kell várni, mielőtt használatba vesszük (az engedélyezés után várni kell) Pontosabb igényekhez külső referencia Tápfeszültséget ne használjunk referenciaként A külső referencia alacsonyimpedanciás legyen Ne terheljük, használjunk erősítőt 2015.12.06. 11:51 Analóg perifériák és használatuk 15
2015.12.06. 11:51 Analóg perifériák és használatuk 16
Feszültség mérésére Digitalizálás 0..V ref 0..N-1, ahol N=2 b, b=8,10,12,16 vagy 24 A felbontás V ref /N, 1LSB (least significant bit) A pontosság általában ennél gyengébb INL (integral nonlinearity): 1-2 LSB d V N 0, 5 Vref 2015.12.06. 11:51 Analóg perifériák és használatuk 17
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 Left justified P0.0 P0.1 P2.6 P2.7 TEMP VDD ANALOG MULTIPLEXER INTERRUPT (AD0INT) 12-bit A/D converter START CONVERSION V ref ADC0H ADC0L ACCUMULATOR 1,4,8,16 samples WINDOW COMPARATOR Right justified INTERRUPT ADC0LTH ADC0LTL ADC0GTH ADC0GTL 2015.12.06. 11:51 Analóg perifériák és használatuk 18
R ext TRACK CONVERT C ext R MUX 12-bit A/D converter I L C s C8051F410 Belső RC áramkör, Rext/Cext jelforrás impedancia Minden konverzió kisüti a kondenzátort Még DC jelek esetén is idő kell a beálláshoz Cext tipikusan pár nf (3n3, 4n7, 10n) Rext tipikusan pár száz Ohm legyen Ha nagyobb az Rext, akkor követő erősítő szükséges 2015.12.06. 11:51 Analóg perifériák és használatuk 19
CONVERT START PRE TRACKING TRACK CONVERT TRACK CONVERT TRACK POST TRACKING DUAL TRACKING IDLE TRACK TRACK CONVERT IDLE TRACK CONVERT TRACK CONVERT TRACK TRACK CONVERT 13 ADC CLOCKS Fokozatos közelítés: 13 ciklus a 12 bithez ADC clock: 3MHz maximum 2015.12.06. 11:51 Analóg perifériák és használatuk 20
WRITE 1 TO AD0BUSY TIMER 3 OVERFLOW CNVSTR (P0.6) START CONVERSION TIMER 2 OVERFLOW A timer túlcsordulási pulzus (nem flag) vezérli A megszakítást az AD0INT vezérli 2015.12.06. 11:51 Analóg perifériák és használatuk 21
Parameter Min Typ Max Units Resolution 12 bits Integral nonlinearity 1 LSB Differential nonlinearity 1 LSB Offset error 3 10 LSB Full scale error 3 10 LSB SAR conversion clock (13 clocks/conversion) 3 MHz Acquisition time 1 us Throughput rate 200 ksps Signal-to-noise plus distortion 66 68 db Total harmonic distortion -75 db Input voltage range 0 Vref Supply current 650 1000 ua 2015.12.06. 11:51 Analóg perifériák és használatuk 22
P0MDIN = 0xFE; // P0.0 analog input P1MDIN = 0xFB; // P1.2 analog input (VREF) P0SKIP = 0x01; // skip P0.0 P1SKIP = 0x04; // skip P1.2 REF0CN = 0x13; // enable internal VREF ADC0CF = 0x00; // 191406Hz ADC clock ADC0CN = 0x80; // enable ADC (conversion: AD0BUSY) unsigned int GetADC(unsigned char channel) { ADC0MX = channel; // set the multiplexer ADC0CN = 0x80; // enable the ADC AD0INT=0; // clear the end of conversion flag AD0BUSY=1; // start A/D conversion while (!AD0INT); // wait for end of conversion AD0INT=0; // clear the end of conversion flag return (ADC0H << 8)+ADC0L; } 2015.12.06. 11:51 Kommunikációs áramkörök és használatuk 23
TMR2RLL = 0x60; TMR2RLH = 0xFF; // 100Hz overflow rate TMR2CN = 0x04; // enable Timer 2 P0MDIN = 0xFE; // P0.0 analog input P1MDIN = 0xFB; // P1.2 analog input (VREF) P0SKIP = 0x01; // skip P0.0 P1SKIP = 0x04; // skip P1.2 REF0CN = 0x13; // enable internal VREF ADC0CF = 0x00; // 191406Hz ADC clock ADC0CN = 0x83; // enable ADC (conversion: TIMER2) EIE1 = 0x08; // enable ADC interrupt IE = 0x80; // enable interrupts void ADC_interrupt(void) interrupt ADC_VECTOR { AD0INT=0; adc_data=adc0h<<8 ADC0L; } 2015.12.06. 11:51 Kommunikációs áramkörök és használatuk 24
Gingl Zoltán, 2012, Szeged Mikrovezérlők Alkalmazástechnikája 2015.12.06. 11:51 Analóg perifériák és használatuk 25
Egész számokkal arányos áramot vagy feszültséget ad A kimeneti feszültség írások között változatlan A kivehető áram pár ma Felépítés: R-2R hálózat 2 hatványa szerint súlyozott áramok 2015.12.06. 11:51 Analóg perifériák és használatuk 26
Pontos, szoftveresen hangolható feszültség Analóg jelekkel való vezérléshez PWM helyett Speciális időfüggő jelek generálására Hangfrekvenciás jelek előállítására Digitális potenciométerként (V ref helyére jel) 2015.12.06. 11:51 Analóg perifériák és használatuk 27
R A kimeneti áram tartománya: Imax: 2mA, 1mA, 0,5mA vagy 0,25mA A kimeneti áram I=I max N/4096 12-bit D/A converter V out R I N max 2 12 C8051F410 2015.12.06. 11:51 Analóg perifériák és használatuk 28
A kimeneti áram tartománya: 0..Vref (tipikusan 2,5V) A kimeneti feszültség V out =V ref N/4096 12-bit D/A N V V converter out ref 2 12 C8051F120 2015.12.06. 11:51 Analóg perifériák és használatuk 29
IDA0H LATCH IDA0L WRITE TO IDA0H TIMER 0 OVERFLOW TIMER 1 OVERFLOW 12-bit D/A converter TIMER 2 OVERFLOW TIMER 3 OVERFLOW CNVSTR P0.6 OR Az IDA0H és IDA0L SFR regiszterekben tárolt adat ütemezetten kerül a D/A konverterre 2015.12.06. 11:51 Analóg perifériák és használatuk 30
Parameter Min Typ Max Units Resolution 12 bits Integral nonlinearity 10 LSB Differential nonlinearity 1 LSB Offset error 0 LSB Gain error 0,05 2 % Output compliance range Vdd-1,2 V 2015.12.06. 11:51 Analóg perifériák és használatuk 31
IDA0CN = 0xF2; // enable DAC0, update by write to IDA0H // 1mA full scale, left justified data IDA0L = 0; IDA0H = 128; // half scale, 0,5mA 2015.12.06. 11:51 Analóg perifériák és használatuk 32
P0MDIN = 0xFE; // P0.0 analog input P0SKIP = 0x01; // skip P0.0 IDA0CN = 0xB2; // enable DAC0, update: Timer3 overflow // 1mA full scale, left justified data TMR2RLL = 0x60; TMR2RLH = 0xFF; // 100Hz overflow rate TMR2CN = 0x04; // enable Timer 2 IE = 0xA0; // enable Timer 2 a global interrupts void Timer2_interrupt(void) interrupt TIMER2_VECTOR { TF2H=0; IDA0L=dac_data; IDA0H=dac_data>>8; } 2015.12.06. 11:51 Analóg perifériák és használatuk 33
Gingl Zoltán, 2012, Szeged Mikrovezérlők Alkalmazástechnikája 2015.12.06. 11:51 Analóg perifériák és használatuk 34
Az ADC bemeneteként választható Lineáris szenzor Tipikus adatok: 2,95mV/ ⁰C érzéknység 900mV, ha T=0 ⁰C 0,2 ⁰C linearitáshiba Kalibrálás nélkül akár 5 ⁰C hiba A chip hőmérsékletét méri Ha a chip önfűtése kicsi, akkor a panel hőmérsékletét 2015.12.06. 11:51 Analóg perifériák és használatuk 35
Feszültség [V] 1,2 1 0,8 0,6-50 0 50 100 Hőmérséklet [⁰C] 2015.12.06. 11:51 Analóg perifériák és használatuk 36
A követelmények tisztázása fontos! Kritikus alkalmazásoknál csak garantált specifikációkban bízhatunk (min, max oszlopok) A külső perifériák gyakran precízebbek nem feltétlen 2015.12.06. 11:51 Analóg perifériák és használatuk 37