Corso di Informatica Industriale Prof. Giorgio Buttazzo Dipartimento di Informatica e Sistemistica Università di Pavia E-mail: [email protected] Informazioni varie • Telefono: 0382 - 505.755 • Email: [email protected] • Dispense: on line • Esame: 2 prove scritte 2 1 Scopo del corso • Uso del calcolatore nei sistemi di controllo • Interfacciamento con sensori e attuatori • Condizionamento dei segnali • Periferiche di comunicazione • Elaborazione sensoriale 3 Definizioni generali In ogni applicazione di controllo si possono distinguere 3 componenti: • il sistema da controllare – può includere sensori e attuatori • il controllore – invia gli ingressi al sistema in funzione di un obiettivo di controllo prefissato • l’ambiente in cui il sistema opera 4 2 Schema a blocchi Controllore Sistema Ambiente A seconda delle interazioni tra ambiente e sistema controllato, possiamo distingurere tre tipi di sistemi di controllo. 5 Schema a blocchi dettagliato attuatore CPU sensore attuatore µC sensore 6 3 Parte trattata dal corso attuatore CPU sensore attuatore µC sensore 7 Attuatori • Idraulici • Pneumatici • Motori elettrici Elevata potenza, ma Fortemente non lineari difficoltà di controllo fine Minor potenza, ma maggiore controllo ⇒ A passo, a cc, servomotori • A memoria di forma (SMA) Bassa potenza Bassa velocità Piccolo ingombro 8 4 Motori cc • Convertono energia elettrica in energia meccanica • A parità di tensione, un motore assorbe corrente in proporzione alla coppia resistente. ⇒ Corrente di stallo: corrente massima che un motore può assorbire alla tensione nominale. ⇒ Coppia di stallo: coppia fornita ad albero bloccato, con tensione nominale e corrente massima. θ = posizione angolare ω = velocità angolare Va Cm = coppia motrice 9 Riduttori • I motori cc sviluppano alte velocità a bassa coppia • Coppie elevate possono essere ottenute attraverso opportuni riduttori. θ2 R2 = θ1 R1 R1 R2 R2 ω1 = R1 ω2 10 5 Riduttori serie • Mettendo due riduttori in serie i rapporti si moltiplicano: output gear input gear R2 =3 R1 θ2 = θ1 R2 2 R1 ω1 = ω2 R2 2 R1 riduzione 3:1 riduzione 9:1 11 Motori cc: circuito equivalente Ra La + Va Ia E − Va Ia Ra La E = = = = = tensione di alimentazione corrente di alimentazione resistenza di armatura induttanza di armatura forza contro elettromotrice 12 6 Motori cc: equazioni Ra La + Va Ia E − E = Kt ω Kt = costante di coppia Va = E + Ra Ia Cm = Kt Ia 13 Motori cc: potenza assorbita Ra Va La + Ia E − Potenza assorbita: Pa = Va Ia = E Ia + Ra Ia2 Potenza meccanica Potenza persa nel rame 14 7 Motori cc: potenza meccanica Ra La + Va Ia E − Potenza meccanica: Pm = E Ia = Cm ω Cm = Kt Ia Ia = Va − E Ra E = Kt ω Cm = Kt Va − Kt ω Ra 15 Motori cc: caratteristiche Pm = Cm ω 100% Cm Pm Cm = Kt Va − Kt ω Ra 100% ω 16 8 Motori cc: pilotaggio • I motori assorbono molta corrente, rispetto ai normali circuiti elettronici, pertanto richiedono speciali circuiti di pilotaggio (driver di potenza). ⇒ Assorbimento del processore M68HC11: 5 mA ⇒ Assorbimento di un piccolo motore cc: 0.5 ÷ 1 A • Si possono avere due tipi di pilotaggio: ⇒ lineare ⇒ On/Off 17 Motori cc: pilotaggio lineare • Il motore è collegato ad un circuito elettronico che genera una tensione continua di controllo: Per avere rotazioni nei due sensi occorre un’alimentazione doppia che fornisca +Vcc e −Vcc V in Se la coppia resistente è piccola, la velocità angolare ω risulta proporzionale a Vin +Vcc − + -Vcc M ω Vin 18 9 Motori cc: pilotaggio lineare • Se non si dispone di due alimentazioni ad elevata potenza si può utilizzare un circuito a ponte: Inseguitore (V1 = Vin) − Vin V1 + Differenziale (V2 = Vcc – Vin) M R2 V2 R2 R3 = R1 R4 V2 = R2 (Vcc – Vin) R1 Per cui, se R1 = R2 = R3 = R4 si ha: Vm = V1 – V2 = 2Vin – Vcc Vin R4 + Vcc R3 Vm = V1 –V2 se R1 − Vin V1 V2 Vm 0 0 Vcc -Vcc Vcc/2 Vcc/2 Vcc/2 Vcc Vcc 0 0 Vcc 19 Motori cc: pilotaggio on/off • Il pilotaggio lineare fa dissipare troppa potenza e può essere usato solo per motori di pochi watt. • Per ridurre la potenza dissipata, si usano transistor che lavorano solo in saturazione/interdizione: Vcc R Potenza dissipata: Pd = Vce I • Se il transistor non conduce, I = 0 e Pd = 0 Vin • Se il transistor è in saturazione, Vce ≅ 0, (tutta la caduta avviene su R) e Pd ≅ 0. 20 10 Motori cc: pilotaggio on/off • Per carichi induttivi, occorre mettere in parallelo un diodo per consentire alla corrente di defluire quando il transistor si interdice: Vcc Vcc Vin Vin ON OFF 21 Motori cc: pilotaggio on/off • Con questa tecnica, però, il motore o è fermo o gira alla massima velocità (solo in un verso): Vcc ω = ωmax Vin ON Vcc M ω=0 M Vin OFF 22 11 Motori cc: pilotaggio PWM (Pulse Width Modulation) • Per controllare la velocità con la tecnica on/off, si può pilotare il transistor con un’onda quadra. • Se la frequenza è abbastanza elevata (qualche KHz), la corrente media nell’induttore diventa costante e proporzionale al duty cycle del segnale: Im 23 Motori cc: H-bridge driver • Per consentire il controllo PWM bi-direzionale con singola alimentazione si usa il seguente circuito: Vcc Q1 Q3 M Q2 Q4 24 12 Motori cc: H-bridge driver • E’ necessaria un’apposita elettronica per pilotare i transistor in modo da ottenere le rotazioni giuste: Modi di funzionamento Vcc Q1 Q3 M Q2 Q4 Q1 e Q4 rotazione oraria Q2 e Q3 rotazione antioraria Q1 e Q2 Q1 e Q2 si bruciano Q1 o Q3 azione frenante per E tutti spenti lento rallentamento 25 Motori cc: H-bridge driver • E’ necessaria un’apposita elettronica per pilotare i transistor in modo da ottenere le rotazioni giuste: − Vin + − M + 26 13 Convertitore tensione - duty cycle t Vin 27 Servomotori • Sono motori in corrente continua che integrano: ⇒ Motore ⇒ Riduttore ⇒ Elettronica di controllo ⇒ Controllo di posizione Input Vcc ≅ 5 ÷ 6 V GND Range angolare: Coppia massima: [-90, +90] 3 ÷ 20 Kg ·cm 28 14 Servomotori: funzionamento • Sono controllati mediante impulsi modulati in durata Pulse Width Modulation (PWM): • La posizione dell’albero è proporzionale alla durata del duty cycle δ/T δ t T δ = 1 ÷2 ms T = 20 ÷30 ms 29 Servomotori: funzionamento 1 ms α = -90 1.5 ms α=0 2.0 ms α = +90 30 15 Motori cc: funzione di trasferimento nel tempo in frequenza Coppia di inerzia Ci = Jt dω/dt Ci = Jt ω s Coppia attrito dinamico Ca = Bω Ca = B ω Jt = inerzia sull’albero B = coeff. attrito dinamico Cm = Kt Ia C m = Jt ω s + B ω Cm = Ci + Ca Kt Ia = (Jt s + B) ω Kt Ia Jt s + B ω = 31 Motori cc: funzione di trasferimento ω = Ia Kt Ia Jt s + B Kt Cm ω = dθ/dt 1 B + Jt s ω ω = θs 1 s θ Kt θ(s) = G(s) = s(Jt s + B) Ia(s) 32 16 Motori cc: funzione di trasferimento Se Cr è una coppia resistente esterna si ha: Ia Kt Cm Cu + 1 B + Jt s – ω 1 s θ Cr Kt Ia − Cr θ = s(Jt s + B) 33 Motori cc: funzione di trasferimento Considerando: Va + – 1 Ra Ia Va − E Va − Ktω = Ra Ra (carico elastico) Cr = Ke θ Ia = Kt Cm + Cr E Cu – ω 1 1 B + Jt s s θ Ke Kt 34 17 Motori cc: funzione di trasferimento Va + – 1 Ra Ia Kt Cm + Cu – Cr E ω 1 1 B + Jt s s θ Ke Kt H(s) = Kt /Ra θ(s) = Jt s2 + (B + Kt2 /Ra)s + Ke Va(s) 35 Motori cc: discretizzazione Ia θa G(s) ? Ia θa G(z) ? θa(k) = f[θa(k-1), Ia(k-1), Ia(k-2), …] 36 18 Esempio: filtro passa basso R Vi Vo = C Vo I= 1 RC Vo = Vi − Vo R Vi − Vo RCs Vo 1 = Vi RCs + 1 Vo (RCs + 1) = Vi ponendo α = 1 I Cs si ha: G(s) = α s +α 37 Calcolo della Z-trasformata L’espressione discreta di G(s) si calcola utilizzando un circuito di sampling and hold: X H(s) 1 − e − st Y ( z) = Z G(z) = X ( z) s G(s) Y G(s) G(s) = (1 − z −1 ) Z s 38 19 Calcolo della Z-trasformata Per il filtro passa basso si ha: α G(z) = (1 − z −1 ) Z s(s + α ) ( z − 1) (1 − p) z G(z) = z ( z − 1)( z − p ) dove (p = e −αT ) 1− p (1 − p ) z −1 = G(z) = z− p 1 − pz −1 39 Espressione a tempo discreto Quindi si ha: (1 − p ) z −1 Y ( z) = X ( z) 1 − pz −1 Y ( z ) = pY ( z ) z −1 + (1 − p ) X ( z ) z −1 y ( k ) = py (k − 1) + (1 − p ) x(k − 1) 40 20 Espressione a tempo discreto y ( k ) = py (k − 1) + (1 − p ) x(k − 1) y(k) x(k) x x x • x • x • x • x • • x x x x k • 41 Motore cc: espressione discreta Ia posto α s(s + α ) p = e −αT θa si ha: y ( k ) = (1 − p ) x( k − 1) + (1 + p ) y (k − 1) − py ( k − 2) 42 21 Motori cc: controllo di posizione θd Controllore Ia Motore θa 43 Motori cc: controllo di posizione Controllo Proporzionale θd ε + – Kp Ia Motore θa 44 22 Controllo di posizione con reazione tachimetrica x xd 0 M θd ωd + + Kp − + − Kd y Motor driver ω θ 45 Regolatore PD TASK { int float pos_control() xd, vd, x, v; y, Kp, Kd; while (1) { get_gains(&Kp, &Kd); get_setpoint(&xd, &vd); read_sensors(&x, &v); y = Kp*(xd - x) + Kd*(vd - v); output(y); task_endcycle(); } } 46 23 Vantaggi del controllo PD Al crescere di Kp cresce: ⇒ la frequenza ⇒ lo smorzamento y(t) La reazione tachimetrica migliora la prontezza di risposta e il margine di stabilità t 47 Controllo di forza force sensor F − Fd + K y (corrente) 48 24 Force feedback loop TASK { float float force_control() Fd, F; y, K; while (1) { K = read_gain(); Fd = desired force(); F = read_force(); y = K*(Fd - F); output(y); task_endcycle(); } } 49 Controllo multi-livello force sensor F Fd − + vd Kf + − Kv y Motor driver v 50 25