ESERCITAZIONE DI SISTEMI VAele APRILE 2012 (IL grafico è stato

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