× Boräntor Kriminellt kunglig jul

Julivädret 2015 var fantastiskt. Juli 2018 kom att bli ännu varmare,

ännu längre!

Tyvärr så medförde torkan och värmen stora skogsbränder, vattenbrist och viss livsmedelsbrist.

Här är en liten påminnelse om sommaren 2018.

hembyggd väderstation

En liten beskrivning över min väderstation.

För några år sedan fick jag en mikrokontroller som kallas Arduino av en bekant, som tyckte jag kunde göra något roligt med den. Jag har aldrig varit intresserad av att programmera och den kom därför att hamna bortglömd i en låda.

Utan att förstå vad jag gav mig in på fick jag senare idén att man kanske kunde göra en väderstation av Arduinon.

Sagt och gjort, vindsnurran eller anemometern som den kallas lämnar en utspänning på 0.4-2.0 Volt vilket motsvarar 0.5-50 m/s. Att den lämnar 0.4 Volt då den inte snurrar är inte så bra, men det fixer vi i programmet lätt som en plätt... eller?

 

Vindriktningen levereras av en en gång i tiden proffessionell vindriktare från Theodor Friedrichs. Den innehöll en optisk avläsare som avläste en greykod för att presentera vindriktningen. I sin krafts dagar drabbades den av ett åsknedslag och förvandlades till oreparerbart elektronikskrot.

 

Jag rensade ut inälvorna och ersatte dessa med en "vanlig" potentiometer och nu är den inte så proffesionell längre. Potentiometern går, efter att jag avlägsnat ett mekaniskt stopp, 360 grader och lämnar en spänning på 0-5 Volt utan glapp. Utspänningen 0 Volt och 5 Volt representerar samma vindriktning, i mitt fall nordlig vind.

givare fukt temp lufttryck

kabeldike

Invävd i spindelnät sitter den här lådan som innehåller givare för fukt, lufttryck, och temperatur.

Vattentemperaturen kan givetvis vara intressant att veta.

I det här "diket", som sedan täcks över, förläggs en 22 mm prk-slang där en signalkabel med en pt100 givare skjuts in. För att inte skadas av isen under vintern kan kabeln lätt dras ur och skjutas in i slangen höst och vår.

pt100
I änden av kabeln sitter pt100 givaren inbäddad i silikon. Över detta träds en slangstump som stöd.
väderstation display

Test och simulering av temperaturen.

För att kunna läsas på lite längre avstånd består displayen av 57 mm höga siffror. Den A/D omvandlare jag använt mig av är en gammal trotjänare i sammanhanget, en ICL7107. Den matas med 5 Volt och kan direkt driva displayer, men inte i den storlek jag använt mig av. Varje segment i den här displayen består av fyra seriekopplade lysdioder vilket innbär att spänningsfallet blir alldeles för högt för att A/D omvandlaren ska orka driva dioderna.

monterad display

Displayen för vattentemperaturen placerades sedan på uthusets gavel för en omedelbar och enkel avläsning.

En mycket viktigt information inför morgondoppet!

schema väderstation
Displayerna måste alltså matas med en högre spänning än 5 Volt.

Detta skulle ordnas med två transistorsteg. Veriferat och provat på experimentplatta framställdes ett kretskort för ändamålet.

Nu visade det sig att signalen var lite orolig. Displayen var inte stabil utan bläddrade lite hit och dit vilket inte gav ett trovärdigt intryck.

 

Antagligen berodde det på jordströmmar, då vi mäter på mV nivå. Jag orkade inte ta reda på vari problemet låg dessutom är det inte möjligt att modifiera hur mycket som helst på ett färdigt kretskort.

Det blev till att göra om kortet. Nu blev displayernas matning galvaniskt skild från övriga kretsar med hjälp av optokopplare vilket löste problemet.

kretskort väderstation
Då var hårdvarubiten avklarad.

Nu återstår det de flesta tycker är roligast och enklast, att slänga ihop en programsnurra som ska presentera innehållet på en webbsida.

I efterhand begriper jag inte hur jag kunde ge mig in i detta inferno.

 

Det programspråk Arduino använder sig av är C eller C++ eller kanske ännu fler +. Som tur var hade jag hela världen till hjälp. Trodde jag, och visst, det finns många som har gjort program för väderstationer. Någon har gjort ett program för att mäta vindhastighet, en annan vindriktning, temperatur osv.

Då är det väl bara att kopiera och klistra in svårare än så kan det väl inte vara....eller?

Program exempel..

 

**** Vindriktning *************
int VaneValue;// raw analog value from wind vane
int Direction;// translated 0 - 360 direction
int CalDirection;// converted value with offset applied int LastValue;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP):

IPAddress ip(192,168,1, 177);

EthernetServer server(8081);
//Setup connection of the sensor void setup() /****** SETUP: RUNS ONCE ******/ { // ******** LUFTTRYCK ********* barometer.begin(); //Begin the sensor /* if (!barometer.begin()) { Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1); } */ // start the SPI library: SPI.begin();

 

------------------------------------------------------------

osv. osv.

Innan programmet kan köras i Arduinon måste detta översättas (kompileras) till ettor och nollor, det enda språk datamaskiner begriper.

Datamaskiner är inte ursäktande. Här finns inget "du vet hur jag menar". Varje punkt, semikolon eller andra krumelurer måste finnas på rätt plats. Finns det ett enda litet fel i programmet stoppas kompileringen och ett felmeddelande dyker upp.

 

Nu blir det ännu roligare.

Felet behöver inte ligga i den rad som markeras utan kan ligga flera rader längre upp i programmet.

Vid ett flertal tillfällen begrep jag dessutom inte innebörden av dessa felmeddelanden. Var fanns nu alla dessa programmeringsexperter som tycker det här är skitenkelt?

Många gånger var jag väldigt nära att ge upp alltihop.

Här är väderstationen i drift, redo att samla in och presentera data.

 

Nästan allt fungerar som det ska.

Problemet är nu att den ibland "hänger" sig som datorexperterna uttrycker sig. Den kan arbeta felfritt en vecka för att sedan stanna var eller varannan dag.

Egentligen ett helt normalt beteende för datamaskiner som i grunden är lika lynniga som vädret.

Ett tryck på resetknappen får allt att fungera igen.

 

Arduinos internminne är inte stort och mitt väderprogram fyller nästan hela minnet. Kan det vara så att det lilla som finns kvar av minnet äts upp under körning och därigenom orsakar ett stopp?

Men varför sker detta sporadiskt?

En tänkbar lösning vore en programkod som en gång/dygn utförde en reset. Eller en yttre timerkrets som åstadkom samma sak.

 

Man skulle kunna presentera mätvärden med snygga analoga instrument, skapa en databas där mätvärden lagras för att sedan presenteras i snygga diagram, medelvärden och trender skulle kunna visas m.m. Det här väderprojektet kan utvecklas hur långt som helst om man har kunskap, ork och intresse, vilket jag inte har.

 

Ytterligare ett problem återstår, vilket jag inte kommer att lösa fullt ut, är placeringen av givarna för vindriktning och vindhastighet. Enligt föreskrifter ska en vindmätare placeras på tio meters höjd över en slät yta utan störande objekt i omgivningen. Avståndet till andra andra objekt bör vara minst 10 gånger objektets höjd.

 

Den första placeringen av de här givarna blev inte alls lyckad.

Närliggande objekt skapade en turbulens vilket innebar att varken vindhastighet eller riktning gav riktiga värden.

Under sommaren flyttar jag givarna till en förhoppningsvis något bättre position men helt bra kommer det aldrig att bli.

Tänkvärt!