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, Vn,Vp
Vp
Logikai kimenet: 1, ha Vp>Vn 0, egyébként
Vn
Hiszterézis (h): 1, ha Vp-Vn > h/2
Vp
0, ha Vp-Vn < -h/2 változatlan állapot, egyébként
Vn
Memóriával rendelkezik 2015.12.06. 11:51
Analóg perifériák és használatuk
3
Vp
Vp
Vn
Vn
t OUT 2015.12.06. 11:51
Analóg perifériák és használatuk
4
Vp
Vp
Vn
Vn+h/2 Vn-h/2 t OUT 2015.12.06. 11:51
Analóg perifériák és használatuk
5
Programozható késleltetés: 100ns..10us függ a Vp-Vn nagyságától is
Vp Vn Tdh
Tdl
Vn+h/2 Vn-h/2 t OUT 2015.12.06. 11:51
Analóg perifériák és használatuk
6
P0.0 CP0A P2.4 P2.6 D Q
CP0
CROSSBAR
P0.2
C
P0.1 P0.3
P2.5
szinkronozálás belső órajelhez
OR
INTERRUPT
P2.7 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
R2
PROCESSING
C
R1 R2 t RC ln R2
R1
R1 R2 t exp R2 RC
PORT BIT R
R1 t 1 exp RC R1 R2 R1 t 1 exp R1 R2 RC
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 Vp Vn
R1 R2 t RC ln R2 2015.12.06. 12:15
Analóg perifériák és használatuk
10
digitális jelek feszültségei: Vin és Vout
Vin
C8051F410
Vout R C
RDAC
12-bit A/D converter
2015.12.06. 12:20
Analóg perifériák és használatuk
11
Vin
Vout
Vn Vp
Ha Vin 1-re vált, a kondenzátor töltödik Ha elérte a szintet, a kimenet 1-re vált Adott RC mellett Vn é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
C8051Fxxx OPTIONAL EXTERNAL VREF
4u7
100nF
ADC, DAC
INTERNAL VREF
rejection 35ppm/K
Feléledés: 7ms 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..Vref 0..N-1, ahol N=2b, b=8,10,12,16 vagy 24
A felbontás Vref/N, 1LSB (least significant bit) A pontosság általában ennél gyengébb INL (integral nonlinearity): 1-2 LSB
V d N 0,5 Vref 2015.12.06. 11:51
Analóg perifériák és használatuk
17
B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
P0.0
P2.6 P2.7 TEMP VDD
ANALOG MULTIPLEXER
P0.1
INTERRUPT (AD0INT)
12-bit A/D converter
START Vref CONVERSION ADC0LTH
2015.12.06. 11:51
Analóg perifériák és használatuk
ADC0H
Left justified Right justified
ADC0L
ACCUMULATOR 1,4,8,16 samples WINDOW COMPARATOR
ADC0LTL
INTERRUPT
ADC0GTH ADC0GTL 18
TRACK
Rext
CONVERT
RMUX Cext
IL
12-bit A/D converter
Cs
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 POST TRACKING
IDLE
CONVERT TRACK
CONVERT
DUAL TRACKING TRACK TRACK
CONVERT
TRACK IDLE
CONVERT
TRACK
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
START CONVERSION CNVSTR (P0.6) 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
Resolution
Typ
Max
12
Units bits
Integral nonlinearity
1
LSB
Differential nonlinearity
1
LSB
Offset error
3
10
LSB
Full scale error
3
10
LSB
3
MHz
SAR conversion clock (13 clocks/conversion) Acquisition time
1
us
Throughput rate
200
Signal-to-noise plus distortion
66
Total harmonic distortion Input voltage range Supply current 2015.12.06. 11:51
68
dB
-75
dB
0
Vref 650
Analóg perifériák és használatuk
kSPS
1000
uA 22
P0MDIN P1MDIN P0SKIP P1SKIP REF0CN ADC0CF ADC0CN
= = = = = = =
0xFE; 0xFB; 0x01; 0x04; 0x13; 0x00; 0x80;
// // // // // // //
P0.0 analog input P1.2 analog input (VREF) skip P0.0 skip P1.2 enable internal VREF 191406Hz ADC clock 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 TMR2RLH TMR2CN P0MDIN P1MDIN P0SKIP P1SKIP REF0CN ADC0CF ADC0CN EIE1 IE
= = = = = = = = = = = =
0x60; 0xFF; 0x04; 0xFE; 0xFB; 0x01; 0x04; 0x13; 0x00; 0x83; 0x08; 0x80;
// // // // // // // // // // //
100Hz overflow rate enable Timer 2 P0.0 analog input P1.2 analog input (VREF) skip P0.0 skip P1.2 enable internal VREF 191406Hz ADC clock enable ADC (conversion: TIMER2) enable ADC interrupt 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 (Vref helyére jel)
2015.12.06. 11:51
Analóg perifériák és használatuk
27
A kimeneti áram tartománya: Imax: 2mA, 1mA, 0,5mA vagy 0,25mA
A kimeneti áram I=ImaxN/4096 12-bit D/A converter
R
Vout R I max
N 212
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 Vout=VrefN/4096 12-bit D/A converter
Vout Vref
N 12 2
C8051F120 2015.12.06. 11:51
Analóg perifériák és használatuk
29
IDA0H
TIMER 0 OVERFLOW TIMER 1 OVERFLOW
LATCH
IDA0L
WRITE TO IDA0H
12-bit D/A converter
TIMER 2 OVERFLOW TIMER 3 OVERFLOW
Az IDA0H és IDA0L SFR regiszterekben tárolt adat ütemezetten kerül a D/A konverterre
CNVSTR P0.6 OR 2015.12.06. 11:51
Analóg perifériák és használatuk
30
Parameter Resolution Integral nonlinearity Differential nonlinearity Offset error Gain error Output compliance range
2015.12.06. 11:51
Analóg perifériák és használatuk
Min
Typ 12
0 0,05
Max
Units bits LSB 10 LSB 1 LSB 2 % Vdd-1,2 V
31
IDA0CN = 0xF2; // enable DAC0, update by write to IDA0H // 1mA full scale, left justified data
IDA0L = 0; IDA0H = 128;
2015.12.06. 11:51
// half scale, 0,5mA
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