Gingl Zoltán, 2017, Szeged Mikrovezérlők Alkalmazástechnikája 18 szept. 1
18 szept. 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 18 szept. 3
V p V p V n V n OUT t 18 szept. 4
V p V p V n V n +h/2 V n -h/2 OUT t 18 szept. 5
V p V n V p Programozható késleltetés (áramfelvétel): 100ns..10us függ a V p -V n nagyságától is V n +h/2 V n -h/2 OUT T dh T dl 18 szept. 6 t
CROSSBAR P0.0 P0.2 CP0A P2.4 P2.6 P0.1 P0.3 D Q C CP0 P2.5 P2.7 szinkronizálás belső órajelhez OR INTERRUPT 18 szept. 7
Különböző 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 18 szept. 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 18 szept. 9
Port bit kimeneti feszültség V p V n t RC ln R 1 R 2 R 2 18 szept. 10
digitális jelek feszültségei: V in és V out V out C8051F410 V in R C 12-bit D/A converter R DAC 18 szept. 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 18 szept. 12
18 szept. 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 4u7 100nF 100nF C8051Fxxx V dd 12-bit A/D converter INTERNAL VREF 18 szept. 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 18 szept. 15
18 szept. 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 18 szept. 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 18 szept. 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 18 szept. 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 18 szept. 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 18 szept. 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 18 szept. https://www.maximintegrated.com/en/app-notes/index.mvp/id/641 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 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; } 18 szept. 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; // clear flag adc_data=(adc0h<<8) ADC0L; // retrieve data } 18 szept. 24
18 szept. 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 18 szept. 26
Pontos, szoftveresen hangolható áram vagy feszültség Analóg jelekkel való vezérléshez PWM helyett Szenzorok gerjesztésére (pl. ellenállás) Speciális időfüggő jelek generálására Hangfrekvenciás jelek előállítására 18 szept. 27
R A kimeneti áram tartománya: I max : 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 18 szept. 28
A kimeneti áram tartománya: 0..V ref (tipikusan 2,5V) A kimeneti feszültség V out =V ref N/4096 V 12-bit D/A converter ref 12 out V N 2 C8051F120 18 szept. 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 18 szept. 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 18 szept. 31
IDA0CN = 0xF2; // enable DAC0, update by write to IDA0H // 1mA full scale, left justified data IDA0L = 0; IDA0H = 128; // half scale, 0,5mA 18 szept. 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 Timer2 IE = 0xA0; // enable Timer2 and global interrupts void Timer2_interrupt(void) interrupt TIMER2_VECTOR { TF2H=0; IDA0L=dac_data; IDA0H=dac_data>>8; } 18 szept. 33
18 szept. 34
Az ADC bemeneteként választható Lineáris szenzor Tipikus adatok: 2,95mV/ ⁰C érzékenysé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 18 szept. 35
Feszültség [V] 1,2 1 0,8 0,6-50 0 50 100 Hőmérséklet [⁰C] 18 szept. 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 18 szept. 37