Sei sulla pagina 1di 8

Simulazione di compito scritto di Sistemi Automatici – classe 5AEL 2021/22

– Controllo temperatura, umidità e luminosità all’interno di una serra -


Si desidera controllare i valori di temperatura, umidità e luminosità all’interno di una serra.
I valori vengono rilevati ogni ora ed inviati al sistema di gestione dei dati.
Il trasduttore di temperatura fornisce una corrente proporzionale alla temperatura nell’intervallo
scelto:

Il trasduttore di umidità e quello di luminosità presentano rispettivamente le seguenti caratteristiche:

I convertitori A/D a disposizione sono a 10 bit ed ammettono una tensione in ingresso compresa tra
0V e 5V.

Il candidato, fatte le ulteriori ipotesi ritenute necessarie:

1. rappresenti il sistema di acquisizione dati con uno schema a blocchi,


2. dimensioni i circuiti di condizionamento dei segnali provenienti dai trasduttori,
3. descriva l’interfaccia di acquisizione dati.

Infine, considerando che sia il controllo della temperatura che quello della luminosità è di tipo
ON/OFF con l’apertura della condotta dell’aria calda o l’accensione delle luci se la temperatura o la
luminosità scende al di sotto di un valore fissato, il candidato, fatte eventuali ipotesi aggiuntive,
descriva il sistema e illustri una soluzione usando un linguaggio di sua conoscenza.

Durata massima della prova: 6 ore.


È consentito l’uso di manuali tecnici e di calcolatrici non programmabili.
Non è consentito lasciare l’Istituto prima che siano trascorse 3 ore dalla dettatura del tema.
Ipotesi aggiuntive:

a) Considerando le caratteristiche indicate nel testo, si può utilizzare come sensore di


temperatura il modello AD590, che è proprio un sensore di temperatura con uscita in corrente
e caratteristica 1μA/K.
b) Per quanto riguarda il sensore di luminosità si può utilizzare una comune fotoresistenza che
funzioni nel range specificato nel testo.
c) Considerando che occorre convertire, da analogico a digitale, i segnali provenienti dai tre
sensori/trasduttori, con risoluzione di 10 bit, si può comodamente utilizzare una scheda di uso
comune e poco economica come Arduino.
d) Si può optare per la scelta del modello Arduino Uno, visto che dispone di un numero di pin
adeguato per la gestione del sistema.
e) I segnali dei tre sensori/trasduttori, dopo essere stati condizionati opportunamente, possono
essere inviati direttamente agli ingressi analogici A0, A1 e A2 di Arduino
f) Affinché la temperatura si mantenga entro i limiti, si prevede di utilizzare una stufa nel caso
serva riscaldare la serra, oppure una ventola nel caso serva rinfrescarla.
g) Per quanto riguarda l’umidità, si prevede di utilizzare un deumidificatore per diminuire
l’umidità e un vaporizzatore per aumentarla.
h) Infine, per controllare la luminosità, si prevede di utilizzare delle lampade per aumentare la
luce e delle tendine rotative motorizzare per diminuirla.
i) In tutti i casi, si prevede di utilizzare segnali di tipo ON-Off per attivare gli attuatori indicati,
collegandoli ai pin digitali di Arduino.
j) Si considera di mantenere la temperatura costante nel range 25-35 °C
k) Si considera di mantenere l’umidità costante nel range 50-70 %
l) Si considera di mantenere la luminosità costante nel range 30-700 lux

Punto 1. Rappresentare il sistema di acquisizione dati con uno schema a blocchi

ARDUNO UNO
Sensore Circuito di
Temperatura condizionamento Circuito attuatore stufa
A0 2 per stufa
AD590 temperatura

Circuito attuatore ventola


3 per ventola
Circuito di
Sensore umidità condizionamento A1
umidità 4 Circuito attuatore Deumidif.
per deumidificatore

Circuito di
Circuito attuatore Vaporizzat.
Sensore umidità condizionamento A2 5 per vaporizzatore
(fotoresistenza) luminosità

Circuito attuatore lampade


6 per lampade

Circuito attuatore tendine


7 per tendine
Punto 2. Dimensioni i circuiti di condizionamento dei segnali provenienti dai trasduttori

Blocco 1: circuito di condizionamento del sensore di temperatura AD590

Dimensionamento della tensione di riferimento Vref e delle resistenze R2 ed R3:

Caso 1. T=0°C (minimo)

Vs= 2,73 V

Vo = R3/R2 * (V1 – V2)  0 = R3/R2 * (2,73 – Vref)

Caso 2. T= 50 °C (massimo)

Vs = 3,23 V

5 = R3/R2 * ( 3,23 – Vref)

0 = R3/R2 * (2,73 – Vref)

5 = R3/R2 * ( 3,23 – Vref)

(2,73 – Vref) = 0

5 = R3/R2 * ( 3,23 – Vref)


Vref = 2,73 V

5 = R3/R2 * ( 3,23 – 2,73)

Vref = 2,73 V

5 = R3/R2 * 0,5  5 = R3/R2 * 0,5  R3 = 150 kOhm , R2 = 15 kOhm

Blocco 2: circuito di condizionamento del sensore di umidità

1,5 V

Vo
Sensore umidità
Vs = 1,5 ÷ 4 V

Dimensionamento della tensione di riferimento Vref e delle resistenze R2 ed R3:

Caso 1. U=0 % (minimo)

Vs= 1,5 V

Vo = R3/R2 * (V1 – V2)  0 = R3/R2 * (1,5 – Vref)

Caso 2. U= 100% (massimo)

Vs = 4 V

5 = R3/R2 * ( 4 – Vref)

0 = R3/R2 * (1,5 – Vref)

5 = R3/R2 * ( 4 – Vref)
(1,5 – Vref) = 0

5 = R3/R2 * ( 4 – Vref)

Vref = 1,5 V

5 = R3/R2 * ( 4 – 1,5)

Vref = 1,5 V

5 = R3/R2 * 3,5  5 = R3/R2 * 3,5  1,4 = R3/R2

Valori commerciali: R3 = 15 kOhm , R2 = 10 kOhm

Blocco 3: circuito di condizionamento del sensore di luminosità

Se si scegli una resistenza R1 pari a 10 kΩ, dal partitore di ingresso sul nodo A si ottiene:
𝑹𝟏
VA = 𝑹𝟏+𝑭𝑹 𝑽𝒄𝒄

𝑅1 10𝑘
a) Con illuminazione pari a 10 lux  VA = 𝑉𝑐𝑐 = ∙ 12 = 10,9 V
𝑅1+𝐹𝑅 10𝑘+1𝑘

𝑅1 10𝑘
b) Con illuminazione pari a 1000 lux  VA = 𝑅1+𝐹𝑅 𝑉𝑐𝑐 = 10𝑘+500𝑘
∙ 12 = 0,2 V

0,2 V

A 0,2 ÷ 10,9 V

Dimensionamento della tensione di riferimento Vref e delle resistenze R2 ed R3:


Caso 1. L = 10 lux (minimo)

Vs= 0,2 V

Vo = R3/R2 * (V1 – V2)  0 = R3/R2 * (0,2 – Vref)

Caso 2. L = 1000 lux (massimo)

Vs = 10,9 V

5 = R3/R2 * ( 10,9 – Vref)

0 = R3/R2 * (0,2 – Vref)

5 = R3/R2 * ( 10,9 – Vref)

(0,2 – Vref) = 0

5 = R3/R2 * ( 10,9 – Vref)

Vref = 0,2 V

5 = R3/R2 * ( 10,9 – 0,2)

Vref = 0,2 V

5 = R3/R2 * 10,7  0,47 = R3/R2

Valori commerciali: R3 = 4,7 kOhm , R2 = 10 kOhm


Punto 3. Descriva il programma di gestione in linguaggio c++ per Arduino

/* programma per acquisizione temperatura, umidità e luminosità


*/
byte pinstufa = 2;
byte pinventola = 3;
byte pindeumidificatore = 4;
byte pinvaporizzatore = 5;
byte pinlampada = 6;
byte pinpannelli = 7;

int datoTemperatura, datoUmidita, datoLuminosita;


float Temperatura, Umidita, Luminosita;

void setup()
{
pinMode(pinstufa, OUTPUT); // definizione pin Stufa
pinMode(pinventola, OUTPUT);
pinMode(pindeumidificatore, OUTPUT);
pinMode(pinvaporizzatore, OUTPUT);
pinMode(pinlampada, OUTPUT);
pinMode(pinpannelli, OUTPUT);
}

void loop ()
{
datoTemperatura = analogRead(A0);
datoUmidita = analogRead(A1);
datoLuminosita = analogRead(A2);

Temperatura = 50 / 1023 * datoTemperatura;

Umidita = 100 / 1023 * datoUmidita;

Luminosita = 1000 / 1023 * datoLuminosita;

if (Temperatura > 35)


{
digitalWrite(pinVentola , HIGH); // accendo la ventola
digitalWrite(pinStufa , LOW); // spengo stufa
}
If (Temperatura < 25)
{
digitalWrite(pinVentola , LOW); // spengo la ventola
digitalWrite(pinStufa , HIGH); // accendo stufa
}

if (Umidita > 70)


{
digitalWrite(pindeumidificatore , HIGH); // accendo il deumidificatore
digitalWrite(pinvaporizzatore , LOW); // spengo vaporizzatore
}
If (Umidita < 50)
{
digitalWrite(pindeumidificatore , LOW); // accendo il deumidificatore
digitalWrite(pinvaporizzatore , HIGH); // spengo vaporizzatore
}

If (Luminosita > 700)


{
digitalWrite(pinlampada , LOW); // spengo la lampada
digitalWrite(pinpannelli , HIGH ); // chiudo pannelli
}

If (Luminosita < 30)


{
digitalWrite(pinlampada , HIGH); // accendo la lampada
digitalWrite(pinpannelli , LOW ); // apro i pannelli
}

// delay di un’ora
for (int i=0; i < 60; i++)
{
delay (60000);
}

Potrebbero piacerti anche