Non ci sono prodotti a carrello.
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: