Progetto PCTO “Dall’aria all’acqua”: un sistema innovativo di generazione di acqua attraverso l’utilizzo di celle di Peltier

Autori: TISSI, GRIECO, TAMBORINI, BOLLAZZI, DEBERNARDI 3C SA

Il progetto “Dall’aria all’acqua” sviluppato duranete il PCTO dai ragazzi del Liceo scientifico L. Da Vinci Gallarate, è un sistema che utilizza celle di Peltier, alimentate da due alimentatori da 144 W, per produrre acqua a partire dall’umidità dell’aria.

L’aria umida viene convogliata in strutture apposite dove viene raffreddata grazie alle celle di Peltier e fatta condensare per diventare acqua.

L’obiettivo è di irrigare una pianta con l’acqua ottenuta dalla condensazione. Questo tipo di macchina è noto come AWG Atmospheric Water Generator e molte università negli ultimi anni hanno studiato e progettato macchinari per ricavare acqua potabile dall’aria umida.

Il principio di funzionamento si basa sull’utilizzo delle celle di Peltier per raffreddare l’aria e condensare l’acqua. Le celle di Peltier sono dispositivi che si raffreddano da un lato e si scaldano dall’altro quando attraversati da energia elettrica. Il sistema sfrutta il lato freddo per raffreddare l’aria che passa su di esso, in modo che perda la sua capacità di trattenere l’acqua.

Successivamente, l’acqua si condensa sul lato freddo della cella di Peltier, e viene raccolta in un contenitore dal quale viene poi pompata per l’irrigazione della pianta.

Per la realizzazione del progetto sono stati utilizzati diversi componenti, come ad esempio un Arduino Uno REV 3 AtMega328 Rev3, una breadboard 3220 contatti, cavi elettrici e connettori, un dissipatore per cella di Peltier, una cella Peltier 51W 40×40 mm, un modulo relè, un sensore temperatura e umidità DHT11, un alimentatore switching 144W 12V e una ventola 12V.

LISTATO

1: // TISSI,GRIECO,TAMBORINI,BOLLAZZI,DEBERNARDI 3C SA
2: // Gen 2023
3: // PROGETTO PTCO ARDUINO
4: // Costruzione di un generatore ad acqua (AWG) con celle di Peltier (TEC)
5: // Atmospheric water generator =AWG
6: // Thermo-electric cooler = TEC
7: //
8: // PROGETTO PER LA CONSENSAZIONE DI ACQUA DALL'UMIDITA'
9: //CONTENUTA NELL'ARIA
10: // il codice contiene il controllo (accensione e spegnimento) della celle di
11: // Peltier attraverso il ciclo IF sul rele'
12: //
13: // Elenco dei materiali usati
14: // sensore temperatura 18B20
15: // sensore temperatura umidita' e temperatura DHT11
16: // rele' 5VDV/ 220VAC-10A
17: // cella di Peltier 40x40 51W
18: // Dissipatore di calore per cella di Peltier in alluminio (80x80x30 mm)
19: // Disspipatore in alluminio (60x45x16 mm) e isolante adesivo
20: // Ventola Dimensioni (mm) 120x120x38, alimentazione 12 Vdc
21: // Alimentatore switching 144W 12V
22: // LCD I2C 20 colonne , 4 righe
23: // led verde e rosso , resistenze 100ohm e 1kohm
24:
25:
26: #include <Wire.h> //Libreria per le comunicazioni I2C
27: #include <LiquidCrystal_I2C.h> //Libreria per LCD
28: #include <DHT.h> //Libreria per sensore DHT
29: #include <OneWire.h>
30: #include <DallasTemperature.h>
31:
32: #define ONE_WIRE_BUS 5 // pin 5 : sensore di temperatura 18B20
33: #define DHTPIN 3 // pin 3 : sensore di temperatura e umidita' DHT11
34: #define DHTTYPE DHT11 // dichiarazione del tipo di sensore
35: #define RELEPIN 6 // pin 6 : rele'
36: #define REDLED 13 // pin 13 : led rosso
37: #define LCD_ADDRESS 0x27 // indirizzo del bus
38: #define LCD_COLUMN 20 // numero di colonne dello schermo 20 colonne
39: #define LCD_ROW 4 // numero di righe dello schermo 4 righe
40:
41:
42: LiquidCrystal_I2C lcd(LCD_ADDRESS , LCD_COLUMN, LCD_ROW);
43: DHT dht(DHTPIN, DHTTYPE);
44: OneWire oneWire(ONE_WIRE_BUS);
45: DallasTemperature sensors(&oneWire); // passaggio da OneWire a Dallas Temp.
46:
47: void setup() {
48: dht.begin(); // apertura sensore DHT
49: sensors.begin(); // apertura sensore Temperatura
50: pinMode (RELEPIN, OUTPUT); // Define port attribute is output;
51:
52: //inizializzo LCD
53: lcd.begin();
54: lcd.backlight();
55: //preparazione lcd riga 1
56: lcd.setCursor(0,0);
57: lcd.print("Temp. "); // T = temperatura del sensore Temp-Umid
58: lcd.print(char(223)); // scrive il pallino dei gradi
59: lcd.print("C");
60: //preparazione lcd riga 2
61: lcd.setCursor(0,1);
62: lcd.print("Umidita' %");
63: //preparazione lcd riga 3
64: lcd.setCursor(0,2);
65: lcd.print("Trugiada"); // R = temperatura di rugiada
66: lcd.print(char(223)); // scrive il pallino dei gradi
67: lcd.print("C");
68: //preparazione lcd riga 4
69: lcd.setCursor(0,3);
70: lcd.print("Tsensore"); // R = temperatura di rugiada
71: lcd.print(char(223)); // scrive il pallino dei gradi
72: lcd.print("C");
73:
74: //apertura monitor seriale
75: Serial.begin(9600);
76: Serial.println(F("DHTxx test!"));
77: }
78:
79: void loop() {
80: delay(1000); // 1000 : ritardo di 1 sec tra le misure
81:
82: sensors.requestTemperatures(); // comando per prendere la temperatura
83: float Ts = sensors.getTempCByIndex(0); // Ts=temperatura sensore 18B20 in decC
84:
85: float h = dht.readHumidity(); // h= lettura umidita' relativa sonda DHT11
86: float t = dht.readTemperature(); // t= lettura temperatura in degC (default)
87:
88: // controllo di funzionamento lettura del sensore DHT
89: if (isnan(h) || isnan(t)) {
90: Serial.println(F("Errore di lettura in sensore DHT11 !"));
91: return;
92: }
93:
94: // scrittura dei dati su monitor seriale
95: Serial.print(F("Umidita' DHT11: "));
96: Serial.print(h);
97: Serial.print(F("% ,Temp DHT11: "));
98: Serial.print(t);
99: Serial.print(F("C "));
100: Serial.print(F(" , Temp sensore 18B20: "));
101: Serial.print(Ts);
102: Serial.print(F("C "));
103: Serial.print(F(" , Temp di rugiada: "));
104: Serial.print(puntorugiada(t, h));
105: Serial.println(F("C "));
106:
107:
108: //scrittura dei dati su LCD
109: lcd.setCursor(13, 0); // riga1
110: lcd.print(t,1); // scrivo la Temp. del sensore DHT11
111: lcd.setCursor(13, 1); // riga2
112: lcd.print(h,1); // scrivo Umidita' relativa del sensore DHT11
113: lcd.setCursor(13, 2); // riga3
114: lcd.print(puntorugiada(t, h),1); // scrivo Temperatura p.to di rugiada con i
115: // dati che arrivano dal sensore DHT11
116: lcd.setCursor(13, 3); // riga4
117: lcd.print (Ts,1); // scrivo temperatura sensore 18B20
118:
119:
120: // con il ciclo IF controllo l'accensione e lo spegnimento della
121: // cella di Peltier. La Temp dovra' essere superiore a 0 degC altrimenti si forma
122: // il ghiaccio e inferiore alla Temp.di rugiada
123: // come prova di funzionamento provo con T= 0degC
124:
125: if(Ts>0) { // se la temperatura è maggiore di 0deg,
126: // accendi il relè e led verde e spegni led ross
127: digitalWrite(RELEPIN, HIGH); // accendo
128: digitalWrite(REDLED, LOW); // spengo
129: }
130: else { // altrimenti spegni rele' e led verde
131: // e accendi led rosso
132: digitalWrite(RELEPIN, LOW); // spengo
133: digitalWrite(REDLED, HIGH); // accendo
134: }
135:
136:}
137:
138: // Funzione Calcolo Punto di Rugiada :
139: // temperatura sotto la quale si condensa l'umidita' dell'aria
140: // Approssimazione di Magnus-Tetens
141: // log (x) in Arduino e' logarirmo naturale ln (x) in base e
142:
143: double puntorugiada(double t, double h)
144: {
145: double a = 17.271; // a,b sono dei coefficienti
146: double b = 237.7;
147: double temp = (a * t) / (b + t) + log(h/100);
148: double Trug = (b * temp) / (a - temp); //calcolo della Temp. di rugiada
149: return Trug;
150: }
151:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Main Menu