Drivning af Juleroser

027

 

Hvis du har Juleroser i haven er det måske en god ide at prøve selv at drive dem i blomst.

Grav en julerose op, de har mange rødder, så det er en stor klump, der kræver en bred potte. Sæt den i drivhuset og vand den med gødningsvand – den skal jo til at bestille noget.

Hvis der er meget bladpletsyge skal de værste blade og bladstilke klippes af, jeg efterlod nogle blade med pletter, og vil klippe dem af, når der er kommet nye blade. Man kan også klippe alle blade af, men det er en hård behandling.

Husk når du vander, at planten må ikke blive våd, svampen smitter med vand. Vand nedefra eller i pottekanten.

Får vi perioder med dagsfrost kan man tage den ind et køligt og lyst sted.

Med lidt fornuftig behandling tager planten ikke skade af drivningen, plant den ud igen til foråret, nem nok ikke det samme sted.

 

DrivhusDuino – automatisk styring af et drivhus med en Arduino microcontroller. Måling af temperatur med DS18B20, og program.

Før du begynder.

Gå ind på Arduino’s hjemmeside  http://www.arduino.cc/  og sæt dig ind i hvad og hvordan – er det noget for dig?

Hvis du køber en Arduino er der også brug for et breadboard, løse ledninger og forskellige komponenter til at øve sig på. Jeg købte ikke et begyndersæt, men i stedet nogle lysdioder, en lysmåler, temperatursensorer og et display. Vent med styring af 230V til du har noget erfaring med tingene.

Nogle komponenter, display og nogle temperatursensorer, kræver et selvstændigt program for at kunne fungere – det finder man på nettet og lægger ind i Arduino’en.

En Arduino har ikke ubegrænsede ind- og udgange, så hvis man vil have et display til at vise målinger tager det plads fra sensorer.

En sensor kræver som minimum en plus og minus ledning, og nogle også en dataledning til at overføre målingen. Jeg vil gerne måle temperatur 5 steder, og her kommer DS18B20 ind i billedet.

DS18B20.

– og hvad er så det? Det er en sensor, der måler temperatur og digitaliserer målingen. Hver sensor har en adresse, så mikrocontrolleren kan spørge den enkelte sensor, hvad der er målt. Alle DS18B20 sensorer kan altså sættes på de samme 3 ledninger: plus, minus og data. Strengt taget kan de klare sig med 2 ledninger i såkaldt parasitic mode, hvor sensoren tapper strøm når den ikke skal sende noget.

Man kender ikke adressen på den enkelte sensor, og jeg kan se, at det program, jeg brugte, ikke er aktivt mere. Så søg på nettet     ds18b20 read adress   , sæt sensorerne op enkeltvis og kør programmet, så får du adressen på den enkelte sensor.

Lod sensorerne på tynde ledninger, kontroller, at det virker og dæk lodningerne med Araldit eller lignende.

Mine 5 sensorer viste den samme temperatur inden for 0,3 grader, når de lå sammen. Opløsningen er 0,06C.

Programmet.

Herunder er programmet, stumperne er funder på nettet, Jepsen PV electronics har hjulpet, og  lidt har jeg selv lavet, og det virker. Adresserne T1-T5 er mine adresser, de skal ændres til dine sensorer.

Læg mærke til, at udgang 13, Pin 13, bruges til at styre relæ til cirkulationspumpen, det kunne være gardiner eller vanding, med en anden programmering.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Data wire is plugged into port 22 on the Arduino
#define ONE_WIRE_BUS 8
#define TEMPERATURE_PRECISION 12
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DeviceAddress T1 = { 0x28, 0x32, 0xEC, 0xA1, 0x04, 0x00, 0x00, 0xDE };
DeviceAddress T2 = { 0x28, 0xBF, 0xF0, 0xA0, 0x04, 0x00, 0x00, 0xAC };
DeviceAddress T3 = { 0x28, 0xA5, 0xAC, 0xA1, 0x04, 0x00, 0x00, 0x03 };
DeviceAddress T4 = { 0x28, 0x2E, 0xF5, 0xA1, 0x04, 0x00, 0x00, 0x77 };
DeviceAddress T5 = { 0x28, 0xD9, 0xF5, 0xA0, 0x04, 0x00, 0x00, 0x0F };

/*

Nr 1 Device is a DS18B20 : 28-32-EC-A1-04-00-00-DE Luft inde
Nr 2 Device is a DS18B20 : 28-D9-F5-A0-04-00-00-0F Jordtemp midt i huset i 22 cm dybde
Nr 3 Device is a DS18B20 : 28-A5-AC-A1-04-00-00-03 Jordvarme retur
Nr 4 Device is a DS18B20 : 28-BF-F0-A0-04-00-00-AC Jordvarme indløb
Nr 5 Device is a DS18B20 : 28-2E-F5-A1-04-00-00-77 Jordtemp ude i 22 cm dybde
*/

int relayPin = 13;

float dif=0;// forskellen mellem luft og jordtemp, styrer cirkulationspumpen //

void setup(void)
{
pinMode(relayPin, OUTPUT);

// start serial port
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
Serial.println(“Dallas Temperature IC Control Library Demo”);

// Start up the library
sensors.begin();
sensors.setResolution(T1, TEMPERATURE_PRECISION);
sensors.setResolution(T2, TEMPERATURE_PRECISION);
sensors.setResolution(T3, TEMPERATURE_PRECISION);
sensors.setResolution(T4, TEMPERATURE_PRECISION);
sensors.setResolution(T5, TEMPERATURE_PRECISION);

digitalWrite(relayPin, LOW);
}

void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(“Requesting temperatures…”);
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println(“DONE”);
float temp1=sensors.getTempC(T1);
float temp2=sensors.getTempC(T2);
float temp3=sensors.getTempC(T3);
float temp4=sensors.getTempC(T4);
float temp5=sensors.getTempC(T5);
Serial.print(“Temperature for the device 1 (index 0) is: “);
//Serial.println(sensors.getTempCByIndex(0));
Serial.println(temp1);
Serial.print(“Temperature for the device 2 (index 1) is: “);
Serial.println(temp2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (“Luft = “);
lcd.print (temp1);
lcd.setCursor(0, 1);
lcd.print (“Midt = “);
lcd.print(temp2);
delay (2000);

lcd.clear();
lcd.setCursor(0, 0);
lcd.print (“Vandud = “);
lcd.print (temp3);
lcd.setCursor(0, 1);
lcd.print (“Vandind = “);
lcd.print(temp4);
delay (2000);

lcd.clear();
lcd.setCursor(0, 0);
lcd.print (“Ude = “);
lcd.print (temp5);
lcd.setCursor(0, 1);
lcd.print (“Dif = “);
lcd.print (dif);

delay (2000);

dif = (temp1) – (temp2);

if (dif >=2)
{digitalWrite(relayPin, HIGH); }
else
{digitalWrite(relayPin, LOW); }
}

 

DrivhusDuino – automatisk styring af et drivhus med en Arduino microcontroller. Indledning.

Alle hobbydrivhuse har vel automatiske vinduesåbnere, og de fleste en slags automatisk vanding. Men, hvad hvis man gerne vil lidt mere? Hvis vandingen skal starte når jorden er tør, eller solen har skinnet et vist antal timer, eller gardiner skal trække for når solen har skinnet en halv time – så kræver det en form for computer og programmering.

Arduino

En Arduino er en lille mikroprocessor, der kan bruges til mange sjove ting. Den programmeres i C#, og der er heldigvis mange, der leger med dem, så der findes færdige programmer, der frit kan hentes på nettet.
Hjemmesiden for Arduino findes her  http://www.arduino.cc/  og vil du købe en kan det gøres her  http://www.let-elektronik.dk/  . Jeg er så heldig at have en nevø Kim, der hjælper med isenkram og program, ham kan man finde her  http://jpve.dk/

DrivhusDuino

– er et forsøg på at gribe det lidt sjovt an.
I første omgang har jeg behov for at starte og stoppe en cirkulationspumpe til gulvvarmen, det kan f eks ske, når solfangeren er 2 grader højere end jordtemperaturen. Så der skal måles temperatur nogle steder, man skal kunne aflæse temperaturerne på et lille display, og der skal skrives et program.

Programmering

Arduino programmeres i C#, et udbredt programmeringssprog, der findes i flere udgaver og bruges til styring af mange ting som robotter og vindmøller. Jeg har arbejdet med programmering i SAS, og først begyndt på C# nu, men det er nu ikke så svært. Alle programmer til Arduino er frit tilgængelige, og folk er flinke til at forklare, hvad der foregår i programmerne, så efter lidt øvelse begynder man at forstå gangen i det.
Prøv at søg på   Arduino programming    eller  Arduino tutorial  , så kommer der en masse op.

Programmering sker via et USB-kabel, når et program er overført til Arduino vil det køre når der sættes strøm til Arduinoen, så det er meget simpelt.

Elektronik

Det er ikke gjort med en Arduino og programmering alene, der skal også noget elektronik til at måle og styre, og på det område er der sket noget, siden jeg som dreng rodede med krystalapparater. Igen, der er masser af eksempler på nettet, men her skal man passe på, for laver man en fejl i programmering så virker det bare ikke, men en fejl i elektronikken kan ødelægge komponenter.

Hvad kan man med en Arduino?

Alt – du skal bare finde ud af hvordan. Det mest simple er en temperaturmåling, næste skridt er måling af jordfugt og styring af vanding. Gardiner af og på, og styring af lagring af varme i jorden.

Der kan kobles en datalogger på, så man kan tappe data og få smukke kurver, og går man helt grassat kan Arduinoen lægge data på en hjemmeside, så man kan sidde i sin stue og følge med i hvad der sker i drivhuset.

Hvad koster det?

Som vestjyde må man jo stille det spørgsmål. En Arduino koster 200kr, strømforsyning ca. 100 kr, display 120 kr, sensorer til temperatur og luftfugtighed 35-150 kr og relæ til styring af 230V ca. 50 kr, så for 5-600 kr er man kørende.

Pas på, miniinthebox er et firma i fjernøsten, der sælger meget billig elektronik, men der er klager over manglende levering, og der kommer moms og told på, så det i sidste ende bliver dyrere!

 

057

 

Et smugkig på min halvfærdige Drivhusduino – ikke kønt at se på, men det virker, og Jepsen PV Electronics laver en printplade, når jeg er færdig, og så kommer der styr på det.