Stap 3: programmeren
Ik was het testen van enkele verschillende manieren hoe het kan werken en besluiten te blijven met een versie die ik hier zal posten.Dus hoe het werkt?
Wanneer je water temp gaat hoger dan 25 graden van Celsius fan start draaien totdat het water zal dalen tot 24, na dat het zal uitzetten. Let op uw niveau van water, koeling van die uw water gaat naar lucht en water niveau zal vrij snel dalen. Ik zal niet uitleggen hoe aansluiten op de arduino pro mini t/m USBtoTTL-adapter voor het uploaden van uw schets, er veel info daarover in google.
Hier is de code, kunt u wijzigen, afhankelijk van temperatuur nodig:
#include < OneWire.h >
int DS18S20_Pin = 9; DS18S20 signaal pin op digitale 2
int relay = 12; Fan relay op pin 12
Tijdelijke instellingen in celsius die moet u het met stip en waarde na dot
zweven high_temp = 25,00;
zweven norm_temp = 24,00;
Temperatuur chip i/o
Privacy ds(DS18S20_Pin); ds18b20 op digitale pin 2 of wijziging van uw ditial pincode
ongeldig setup(void) {}
Serial.begin(9600);
pinMode (Relais, uitvoer);
digitalWrite (Relais, hoge); Verdienen met relay worden standaard om te voorkomen dat op opstarten te klikken
}
ongeldig loop(void) {}
zweven temperatuur = getTemp();
Serial.println(Temperature); Afdrukken in seriële huidige temp
Serial.println(high_temp); Afdrukken in seriële vooraf gedefinieerde hoge temp als fan zal inschakelen
Serial.println(norm_temp); Afdrukken in seriële vooraf gedefinieerde normale temp wanneer ventilator zal zwenking vandoor
vertraging (800); Maken van enige vertraging waarden in seriële monitor wilt zien
Als (getTemp() > = high_temp) / / FAN goes ON wanneer water bereikt hoge temp
{
digitalWrite (Relais, laag);
}
Als (getTemp() < = norm_temp) / / Fan goes OFF wanneer temp worden normaal
{
digitalWrite (Relais, hoge);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////// Working with DS18B20
float getTemp() {}
geeft als resultaat de temperatuur van een DS18S20 in graden Celsius
bytegegevens [12];
byte addr [8];
Als (! ds.search(addr)) {}
geen meer sensoren op de keten, reset zoeken
DS.reset_search();
Return-1000;
}
Als (OneWire::crc8 (addr, 7)! = addr[7]) {}
Serial.println ("CRC is niet geldig!");
Return-1000;
}
Als (addr [0]! = 0x10 & & addr [0]! = 0x28) {}
Serial.Print ('apparaat wordt niet herkend');
Return-1000;
}
DS.reset();
DS.Select(addr);
DS.write(0x44,1); Start conversie, met kracht van de parasiet op eind
byte aanwezig = ds.reset();
DS.Select(addr);
DS.write(0xBE); Lees Kladblok
voor (int i = 0; ik < 9; i ++) {/ / moeten we 9 bytes
gegevens [i] = ds.read();
}
DS.reset_search();
byte MSB = data [1];
byte LSB = data [0];
zweven tempRead = ((MSB << 8) | LSB); met behulp van twee compliment
zweven TemperatureSum = tempRead / 16;
Return TemperatureSum;
}
Bijvoorbeeld - mijn kamer temperatuur is ongeveer 26-28 graden van celsius, vissentank is klein genoeg - 10liters, om water drop-down van 25 tot en met 24 graden het neemt ongeveer 7-10 minuten te maken. Kunt u minder temperatuurverschil, maar vervolgens uw ventilator zal werken meer vaak, maar met kortere perioden. Hoop dit apparaat zal u helpen om uw vis tank temperatuur aan de slag als er geen airco in uw huis.
Sorry voor mijn Engels, het is niet mijn moedertaal, maar ik hoop dat je krijgt het idee hoe het werken moet :)
Opmerkingen en kritiek zijn welkom.
P.s. waarschijnlijk zal maken aangepaste pcb voor dit project in de nabije toekomst. Verblijf gestemd, in appartement aquaponics setup zijn bijna klaar om te worden hier weergegeven.
Cheers, Alex.