Esercizio 31sistema di controllo di un ascensore con microcontrollore a 8 bit (tema d'esame 18 luglio 2006)
In questa pagina 7
Testo (tema d'esame del 18 luglio 2006, problema completo; parti principali). Si deve realizzare un sistema di controllo per un ascensore con un microcontrollore a 8 bit, clock 12 MHz, con convertitore A/D a 10 bit, V, di tipo SAR, un modulatore PWM a 8 bit e una porta seriale. Il motore ha una dinamo tachimetrica con rapporto di trasduzione di 5 V per 1000 giri al minuto (rpm); il motore agisce, tramite un riduttore con rapporto , su una puleggia di diametro m.
- La velocità del motore varia da 0 a 2500 rpm (si trascura il segno). Determinare: (a) il guadagno dell'amplificatore di adattamento al convertitore che massimizza il rapporto segnale-rumore; (b) i valori mancanti della tabella: rpm → tensione del trasduttore, tensione all'ingresso dell'ADC, uscita esadecimale dell'ADC; (c) la minima variazione di velocità rilevabile; (d) la durata della conversione se l'ADC lavora al clock del processore.
- (a) La velocità lineare per 2000 rpm; (b) il valore massimo dell'uscita dell'ADC, in esadecimale, se si limita la massima velocità di salita a m/s.
- (a) La rappresentazione su 8 bit, frazionaria senza segno, dei guadagni e del regolatore PI , , con l'errore di arrotondamento; (d) la frequenza di campionamento tale che il guadagno integrale digitale corrisponda a un valore analogico di rad/s.
- Il µC trasmette via seriale la velocità lineare di salita: (a) il coefficiente che porta il dato dell'ADC alla velocità in m/s; (b) la rappresentazione binaria, frazionaria senza segno, arrotondata a 8 bit, di m/s; (c) il minimo numero di bit da trasmettere per dato per consentire la sincronizzazione del ricevitore; (e) la dimensione in locazioni da 8 bit della memoria dati occupata dalla lista da trasmettere, svuotata a 150 Hz, se i dati si producono alla frequenza trovata in 3.d.
- Le ISR (priorità 1-3): 50 µs a 5 kHz; 120 µs a 0,1 kHz (caso peggiore); 135 µs a 0,15 kHz; nessuna regione critica; senza nesting; latenza intrinseca 1 µs e istruzione più lunga 1 µs. (a) La percentuale di tempo dedicata all'esecuzione delle ISR; (c) la massima durata di , nelle condizioni di tabella e scambiando le priorità di e .
- La pulsantiera fornisce la codifica BCD del tasto:
r1 = LSL c1 #3; r2 = LSL c1 #1; r1 = r1 + r2; r1 = r1 + c2;con , le due cifre BCD ( più significativa), ciascuna in un registro a 8 bit. Per il tasto 13: (a) il contenuto dir1er2alla fine; (b) il tempo di esecuzione con una pipeline a 3 stadi a regime.
Teoria usata: ADC e DAC - risoluzione, SNR, ENOB ed erroriUn convertitore a $n$ bit con fondo scala $FSR$ ha risoluzione $LSB=FSR/2^n$; il codice vale $C=\mathrm{round}(V/LSB)$ e la tensione corrispondente è $V=C\cdot LSB$ con incertezza $\pm\frac12LSB$ (errore di quantizzazione). Con un modello a rumore uniforme di potenza $LSB^2/12$ il SNR di una sinusoide a fondo scala è $6{,}02,n+1{,}76$ dB; dal SNR misurato si ricava il numero di bit efficaci $ENOB=\frac{SNR-1{,}76}{6{,}02}$. Gli errori reali (offset, guadagno, INL, DNL, missing code) abbassano l'accuratezza. Accuratezza ≠ precisione: alta accuratezza implica alta precisione, non viceversa.ADC e DAC - risoluzione, SNR, ENOB ed errori →, Architetture di ADC e DACADC flash: $2^n-1$ comparatori in parallelo, il più veloce (GS/s) ma costoso, $n<10$. A gradinata/a rampa: contatore + DAC (o rampa) + comparatore, $T_{conv}\le2^n$ cicli di clock (lentissimo). SAR: ricerca binaria con DAC e comparatore, $T_{conv}=(n+1)$ cicli: il più usato nei µC. Sigma-delta: ADC a 1 bit + DAC a 1 bit in retroazione e filtro digitale, sovracampionamento (molti bit, banda ridotta). Multistadio/pipeline: più ADC a pochi bit in serie; la pipeline triplica (con 3 stadi) la frequenza di conversione. DAC: a resistenze pesate, a traliccio R-2R ($V_o=-V_{ref},C/2^n$, corrente costante), a voltage scaling (monotono), seriale.Architetture di ADC e DAC →, Regolatori PI e PID digitaliIl PI digitale è $y(k)=k_p,e(k)+y_I(k)$ con $y_I(k)=k_I',e(k)+y_I(k-1)$ e $k_I'=k_iT_c$ (con una MAC bastano 3 cicli). Nel PID la derivata si calcola come $\frac{k_d}{T_c}[e(k)-e(k-1)]$ ed è sensibile al rumore: si usa la versione filtrata $y_d(k)=\frac{k_d}{T_c+\tau_L}[e(k)-e(k-1)]+\frac{\tau_L}{T_c+\tau_L}y_d(k-1)$ o una media su più campioni. Con la saturazione dell'attuatore serve l'anti-wind-up: $|y_I|\le L(k)=Y_{max}-|k_pe(k)|$. Il controllo dead-beatcontrollo che porta l'errore a zero in un numero finito di passi (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria.Regolatori PI e PID digitali →, Sistemi di interruzioni - latenza, nesting e sostenibilitàCon $N$ sorgenti, ciascuna ISR $i$ ha durata $T_{d,i}$ (spesso già comprensiva della latenza intrinseca $T_{LI}$ e dell'istruzione in corso) e periodo minimo $T_{p,i}$. Condizione necessaria: $\sum_iT_{d,i}/T_{p,i}<1$ (la percentuale di impegno della CPU è la somma). Condizione di intervallo per ogni $i$ (priorità 1 = massima): $T_{d,i}+\sum_{k<i}n_k,T_{d,k};[+\max(T_{RC},\max_{j>i}T_{d,j})\text{ senza nesting}]\le T_{p,i}$, con $n_k=\lceil T_{p,i}/T_{p,k}\rceil$. Latenza massima della priorità $n$: con nesting $T_{LI}+\sum_{i<n}T_{ex,i}$; senza nesting si aggiunge $\max_{j>n}T_{ex,j}$.Sistemi di interruzioni - latenza, nesting e sostenibilità →, Comunicazione seriale - UART, RS232, RS422 e RS485La trasmissione serialeche trasmette i bit uno dopo l'altro su una sola linea invia un bit alla volta su pochi fili. Asincrona (UART): senza clock comune, ogni dato è inquadrato da 1 bit di start, 5-8 bit di dati, parità opzionale e 1-2 bit di stop; per 8 bit di dati servono 10 bit sulla linea (efficienza 80%); tempo di bit $BT=1/bps$; il ricevitore campiona a $1{,}5,BT,2{,}5,BT,\dots$ dal fronte di start e tollera uno scostamento di frequenza di circa $\pm5{,}3%$ (o $4{,}6%$ con campionamento a 16×). Sincrona: il trasmettitore invia anche il clock (e il frame sync), efficienza 100%. Livelli fisici: RS232 ($\pm12$ V, 1 = $-12$ V), RS422/RS485 (differenziale, doppino, 10 Mbit/s su $<15$ m; RS485 multi-trasmettitore), loop di corrente 0-20 mA.Comunicazione seriale - UART, RS232, RS422 e RS485 →, Pipeline - accelerazione e conflittiLa pipeline divide l'esecuzione in $n$ stadi (fetch, decodifica, lettura, esecuzione, scrittura) che lavorano contemporaneamente su istruzioni diverse. Il clock è dettato dallo stadio più lento; a regime si completa un'istruzione per ciclo. Per $N$ istruzioni servono $(n+N-1),T_{clk}$: l'accelerazione rispetto al multiciclo tende a $n$ ma è sempre minore (riempimento, conflitti). I conflitti sono strutturali (stessa risorsa), sui dati (RAW...) e di controllo (salti): si risolvono con stalli (interlocking), bypass, sovrapposizione, riordino, salti ritardati. La latenza di una singola istruzione non diminuisce.Pipeline - accelerazione e conflitti →.
1. Misura della velocità
(a) A 2500 rpm la dinamo dà V. Per sfruttare tutto il fondo scala dell'ADC (3 V) V/V (un fondo scala usato pienamente massimizza il SNR: ADC e DAC - risoluzione, SNR, ENOB ed erroriUn convertitore a $n$ bit con fondo scala $FSR$ ha risoluzione $LSB=FSR/2^n$; il codice vale $C=\mathrm{round}(V/LSB)$ e la tensione corrispondente è $V=C\cdot LSB$ con incertezza $\pm\frac12LSB$ (errore di quantizzazione). Con un modello a rumore uniforme di potenza $LSB^2/12$ il SNR di una sinusoide a fondo scala è $6{,}02,n+1{,}76$ dB; dal SNR misurato si ricava il numero di bit efficaci $ENOB=\frac{SNR-1{,}76}{6{,}02}$. Gli errori reali (offset, guadagno, INL, DNL, missing code) abbassano l'accuratezza. Accuratezza ≠ precisione: alta accuratezza implica alta precisione, non viceversa.ADC e DAC - risoluzione, SNR, ENOB ed errori →). (b) Tensione del trasduttore ; all'ingresso ADC trasduttore; codice :
| rpm | trasduttore [V] | ingresso ADC [V] | uscita ADC |
|---|---|---|---|
| 1000 | 5 | 1,2 | |
| 1500 | 7,5 | 1,8 | |
| 2000 | 10 | 2,4 |
(c) Un LSB dell'ADC corrisponde a (minima variazione rilevabile). (d) SAR a 10 bit al clock di 12 MHz: .
2. Velocità lineare
(a) rpm sul motore la puleggia gira a rpm: . (b) m/s rpm V V codice .
3. Regolatore PI a 8 bit
(a) 0.8 U: , errore ; , errore (è un errore relativo del 2,3%: il guadagno integrale è vicino al minimo rappresentabile : Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →). (d) Il guadagno integrale digitale è : con e : .
5. Trasmissione della velocità
(a) Il dato dell'ADC, normalizzato al fondo scala, corrisponde a m/s: m/s (velocità lineare a fondo scala, 2500 rpm). (b) ; in 0.8 U: . (c) Per ogni byte: start, 8 dati, stop: 10 bit. (e) Il dato si produce a 18 kHz (la frequenza di campionamento) e la lista si svuota a 150 Hz: tra due svuotamenti si accumulano dati da 1 byte: 120 locazioni.
6. Interruzioni
(a) Percentuale di tempo dedicata all'esecuzione: (). (c) Senza nesting la condizione più stringente è quella della ISR a priorità 1 (periodo s): con e la ISR seriale la più lunga: . Scambiando le priorità di e il massimo delle durate sotto la priorità 1 è sempre 135: ancora 61 µs.
7. Conversione BCD
, (tasto 13): r1 = c1<<3 = 8; r2 = c1<<1 = 2; r1 = 8+2 = 10 (); r1 = 10+3 = 13. Alla fine: r1 e r2 . Il codice calcola con shift e somme (niente moltiplicazione). Tempo: 4 istruzioni a 1 ciclo ciascuna in una pipeline a regime: 4 cicli di : .
Errori comuni
- Dimenticare che 1000 rpm del motore non sono 1000 rpm della puleggia (riduttore 100).
- Calcolare senza considerare il massimo della dinamo (12,5 V): la tensione in ingresso ADC supererebbe .
- Confondere il guadagno integrale analogico () con il coefficiente digitale .
- Trascurare e nella condizione di intervallo (61 µs invece di 65).
Versione ripasso
Testo. Ascensore con µC a 8 bit: dinamo 5 V/1000 rpm, ADC a 10 bit 3 V, riduttore 100, puleggia 1 m, PI, seriale, ISR, BCD (18 luglio 2006).
- Misura: ; 1000/1500/2000 rpm →
0x19A,0x266,0x333; LSB rpm; conversione µs. - Velocità: 2000 rpm → m/s; limite m/s →
0x272. - PI: (), (); kHz.
- Seriale: m/s; ; 10 bit; 120 locazioni.
- ISR: 28,2% in esecuzione; µs (anche scambiando le priorità).
- BCD:
r1=00001101,r2=00000010; 4 cicli = µs (ADC e DAC - risoluzione, SNR, ENOB ed erroriUn convertitore a $n$ bit con fondo scala $FSR$ ha risoluzione $LSB=FSR/2^n$; il codice vale $C=\mathrm{round}(V/LSB)$ e la tensione corrispondente è $V=C\cdot LSB$ con incertezza $\pm\frac12LSB$ (errore di quantizzazione). Con un modello a rumore uniforme di potenza $LSB^2/12$ il SNR di una sinusoide a fondo scala è $6{,}02,n+1{,}76$ dB; dal SNR misurato si ricava il numero di bit efficaci $ENOB=\frac{SNR-1{,}76}{6{,}02}$. Gli errori reali (offset, guadagno, INL, DNL, missing code) abbassano l'accuratezza. Accuratezza ≠ precisione: alta accuratezza implica alta precisione, non viceversa.ADC e DAC - risoluzione, SNR, ENOB ed errori →). - Errori: riduttore dimenticato; senza il massimo della dinamo; contro ; e trascurati (Sistemi di interruzioni - latenza, nesting e sostenibilitàCon $N$ sorgenti, ciascuna ISR $i$ ha durata $T_{d,i}$ (spesso già comprensiva della latenza intrinseca $T_{LI}$ e dell'istruzione in corso) e periodo minimo $T_{p,i}$. Condizione necessaria: $\sum_iT_{d,i}/T_{p,i}<1$ (la percentuale di impegno della CPU è la somma). Condizione di intervallo per ogni $i$ (priorità 1 = massima): $T_{d,i}+\sum_{k<i}n_k,T_{d,k};[+\max(T_{RC},\max_{j>i}T_{d,j})\text{ senza nesting}]\le T_{p,i}$, con $n_k=\lceil T_{p,i}/T_{p,k}\rceil$. Latenza massima della priorità $n$: con nesting $T_{LI}+\sum_{i<n}T_{ex,i}$; senza nesting si aggiunge $\max_{j>n}T_{ex,j}$.Sistemi di interruzioni - latenza, nesting e sostenibilità →).