ESERCITAZIONE DI SISTEMI VAele APRILE 2012 (IL grafico è stato dato in classe) 1)In figura è riportato il diagramma asintotico di Bode delle ampiezze(indicato con la lettera A )della funzione di trasferimento ad anello aperto di un sistema controreazionato , cio’ premesso rispondi ai seguenti quesiti: a) Proponi un metodo di compensazione e correzione che garantisca ,approssimativamente , un margine di fase pari a 45°, un guadagno statico pari a 100 e un polo dominante di almeno 2 rad/sec .b)Disegna lo schema elettrico della rete correttrice e dimensiona i suoi componenti ;c)Scrivi le espresssioni matematiche della funzione prima e dopo le modifiche che hai fatte. Soluzione:a) La funzione del grafico A garantisce un margine di fase pari a 45°e un polo(30rad/s) dominante di almeno 2 rad/sec, ma il suo guadano statico è di 20 db che corrisponde in scala lineare a 10Log(20/20)=10 mentre un guadagno pari a 100 corrisponde a 20Log(100)=20 2 =40db. Dobbiamo quindi introdurre nella linea di andata un amplificatore di guadagno pari a 20 db ossia che amplifichi di un fattore 10 in scala lineare. Cio’ comporta una traslazione verso l’alto di 20 db del diagramma iniziale che diventa quello indicato con la lettera B.Ora il margine di fase si è ridotto praticamente a 0° in quanto il grafico interseca l’asse delle pulsazioni in un a zona in cui il ritardo di fase è quasi 180°.Dal grafico risulta che la compensazione con un polo dominante garantirebbe un margine di 45°ma non garantirebbe una pulsazione di taglio pari a 2 rad/sec, dobbiamo pertanto adottare la compensazione polo-zero con il modulo del polo che vale 3rad/sec e lo zero posto a 30 rad/sec.b) La rete polo zero è composta(vedi teoria) da un condensatore e due resistenze,la sua funzione di trasferimento è la seguente : Gc= (1+sCR2)/(1+SC(R1+R2)) con |Z|=1/(CR2) e |P|=1/ (C(R1+R2)) con|Z|=30rad/sec e |P|=3rad/sec. Ponendo a caso C= 1µF otteniamo subito R2=1/C|Z|=33KΩ e di conseguenza R1=9 R2= 9 * 33KΩ=297KΩ (fare i calcoli in dettaglio). L’amplificatore puo’ essere realizzato con un comune operazionale collegato in configurazione non invertente. C)Si ha inizialmente Gol=10/((1+S/30)(1+S/300)) , dopo la correzione e la compensazione si ha Gol= 100/(1+S/3)(1+S/300) , è stato eliminato il polo a 30 rad/sec e introdotto quello a 3rad/sec. 1/2 ESERCIZIO CHE RICHIEDE L’USO DI UN MICROCONTROLLORE(Scheda Arduino) 2)Si vuole monitorare ,con un sistema a microcontrollore, la temperatura media di 6 ambienti di un appartamento per controllare l’accensione del bruciatore di una caldaia. Il controllo avviene nel seguente modo: si leggono le temperature ogni tre minuti , si calcola la media e se questa risulta maggiore o uguale a 19°c si deve spegnere il bruciatore altrimenti si lascia acceso, inoltre lo stato del bruciatore deve essere visualizzato tramite due led , uno verde acceso se il bruciatore è spento e uno rosso acceso nel caso contrario. Fatte le ipotesi aggiuntive, che si ritengono necessarie, si disegni lo schema a blocchi del sistema , si scriva , in linguaggio ‘Arduino ‘ il programma di gestione del sistema e si disegni il diagramma di flusso del programma. Soluzione:La scheda Arduino è dotata di sei ingressi analogici con range di ingresso 0 .. 5volt , facendo l’ipotesi che il sensore utilizzato si l’ integrato LM35 e che le temperature varino da 0 a 30 gradi centigradi ,la tensione fornita dai trasduttori varia da zero a 10mv*30= =300mv=0,3 volt. Per sfruttare tutta la dinamica del convertitore analogico digitale della scheda possiamo condizionare il segnale amplificandolo di un fattore K=5/0,3=16,66666 I due led di segnalazione possono essere collegati a due pin digitali impostati come output, per limitare la corrente che attraversa i diodi poniamo in serie ad essi una resistenza di valore R=(Vo—Vd)/I con Vd=1,2volt , I=10ma,e Vo=5volt pari alla tensione di uscita del pin digitale,risulta R=380Ω. Programma di gestione: float T,somma,media; int k,verde=2,rosso=3,bruciatore=4; void setup() { Serial.begin(9600); pinMode(verde, OUTPUT); pinMode(rosso, OUTPUT); pinMode(bruciatore, OUTPUT);}//il pin 4 pilota il bruciatore} void loop() { somma=0; for(k=1; k<=6;k++) { T=map(analogRead(k),0,1023,0,30);//si converte il valore del convertitore A/D in gradi. somma=somma+T; } media=somma/6; if(media>=19) { digitalWrite(verde,HIGH); digitalWrite(rosso,LOW); digitalWrite(bruciatore,LOW);} Else { digitalWrite(verde,LOW); digitalWrite(rosso,HIGH); digitalWrite(bruciatore,HIGH);} Serial.println(media); delay(1000);} 2/2