WindWiz

En GSM-uppkopplad vindmätare

Månadsarkiv: september 2010

A/D-omvandling

Idag har jag knackat lite kod för en Arduino jag fått låna av en kollega. Jag har experimenterat med A/D-omvandling av signalerna från vindgivarna, och i princip implementerat en ”multimeter”. Istället för att visa den uppmätta spänningen på en display skickas den över USB-kabel till en PC där den sedan kan plottas i en graf med mjukvara. Visualisering av data är nyckeln till förståelse 😉

Här är en bild från spänningsplotten då vindhastighetsgivaren är inkopplad till Arduinon samtidigt som jag snurrar frenetiskt på givaren. Mätaren fungerar som en strömbrytare som är sluten under ett halvt varv, varpå den är bruten lika länge. När en spänning läggs över strömbrytaren får man en periodisk signal som växlar mellan maxutslag och nollutslag. Frekvensen (täthet på spikarna) på signalen är direkt proportionell mot snurrhastigheten. Fem spänn till den som kan räkna ut maxhastigheten i plotten ovan!

På samma sätt har jag kikat på spänningsplotten då vindriktningsgivaren är inkopplad. Här rör det sig om 8 brytare som slår till och skapar ett ”hopp” i grafen. Det syns dåligt, men om man kikar noga kan man se en trappstege längs den ”snea sinusliknande” kurvan. Varje ”steg” i trappan motsvarar ett väderstreck, t.ex. skulle man kunna kalibrera sin mjukvara till att tolka ”toppen” på trappan till Norr osv.

PS. Ifall du undrar varför värdena är så yttepyttesmå att man knappt kan se detaljer i kurvan beror det på mitt naiva val av referensintervall för A/D-omvandlaren. Nu när jag vet att teorin fungerar kommer jag försöka minska intervallet och få en högre upplösning på den del av grafen som faktiskt används. Detta kommer göra trappstegen större vilket medför större tolerans mot brus i samplingen (med låg upplösning skulle t.ex. brus lätt kunna tolkas som ett annat väderstreck).

Annonser

Arduino

Tog död på lite restid genom att fundera över lämplig hårdvara för vindmätarbygget givet de krav som finns på konstruktionen. Om man bortser från kravet att mätarvärden skall gå att avlyssna över telefon är prestandakravet på elektroniken lågt (med tanke på att datorerna redan på 80-talet kunde utföra några miljoner instruktioner per sekund!). Varje minut skall vindgivarna avläsas och var 10:e minut skall insamlad vinddata och nuvarande temperatur sändas iväg över GSM-nätet. Easy peasy!

För min första prototyp kommer jag satsa på en 8-bit AVR-mikroprocessor, som borde klara av ovan uppgifter med bravur. Jag tänker lägga extra energi på att använda komponenter som är enkla och billiga att få tag på för att få ihop en mätare som är lätt att reparera och återskapa.

Arduino är en hobbyplattform med alldeles förträffligt lämplig AVR-mikroprocessor, som är monterad på ett kretskort med färdiga stiftlister för anslutning av externa enheter. Hobbybyggare runt om i världen har fattat tycke för Arduino och bidragit genom att bygga egna utbyggnadskort som går att koppla på, lite som lego! Detta gör den välkänd, beprövad och lätt att få tag på, antingen online eller via en välsorterad elektronikkedja t.ex. ELFA (ca 300 SEK).

Givetvis är det någon som byggt en legobit/utbyggnad för GSM-kommunikation (ca 71 euro)! Alltså har vi nästan allt som behövs för stommen till basenheten för ynka tusenlappen! Det känns ju som den här vindmätaren bygger sig själv 😉

Att jag helt och hållet undvikt telefon-avlyssningsfunktionen i mina prestandaberäkningar beror på att jag inte är övertygad om att den passar ute i vindmätaren. Bygget specar bara att utläsning skall vara möjlig via telefon, inte att man nödvändigtvis skall ringa till den fysiska vindmätaren. Om man tänker efter så är det rimligt att göra vindmätaren minimal (och prispressad!) och sedan låta mer komplex funktionalitet som webb-presentation och telefonavlyssning ske från en server som inte står i väder, vind och snö. Eftersom mätarna sänder sin data via Internet finns den tillgänlig wherever, whenever! Några av fördelarna med att låta telefonavlyssningsfunktionaliteten finns på ”annan ort” är bl a:

  • Vindmätarna blir billigare (och därmed lägre reparationskostnad!)
  • Man behöver inte tumma på ljudkvalitén för att få plats med alla röstfiler i de små inbyggda system som ofta sitter ute i vindmätaren.
  • Man kan låta ett och samma telenummer hämta vinddata från flera mätare. Eftersom all data finns tillgänglig online skulle man i praktiken kunna ringa och välja mätare via tonval, alternativt få samtliga mätares förhållanden upplästa.

Nästa steg i bygget blir att beställa hem en Arduino Duemilanove och en GSM-modul. Sen är det hög tid att börja hacka lite klisterkod!

Testmätningar

Idag har jag ägnat en liten stund åt att verifiera min teori med motståndet i vindriktningsgivaren. I praktiken är det enklare att mäta spänning än motstånd, så jag dammade av mina gamla elektronikkunskaper i spänningsdelning och seriekopplade ett motstånd med kretsen och kopplade på en multimeter. Tanken är sedan att en mikroprocessor skall ersätta multimetern och utgöra ”basenheten”.

För att slippa klippa sönder den fina telefonkontakten och dra ut de sköra signalkablarna lödde jag ihop en liten ”telefon-till-prototyp”-adapter (se bild till vänster). Mina lödningskunskaper är bedrövliga, men det höll och jag lyckades faktiskt göra några mätningar medans riktningsgivaren snurrade i min verkstad. För framtida sessioner blir det nog till att be nån vänlig själ att etsat kretskort med RJ-11 kontakt och stiftlister.

Jag är fortfarande skeptisk till den här plastiga skiten som Claes Ohlson säljer. Bara en strömbrytare kan vara öppen åt gången och jag tror att nogrannheten är för dålig. Visst vill man veta mer än att det bara blåser åt S, SV eller V? Hopplöst att försöka beräkna vindens stadighet annars.

De första komponenterna har anlänt!

Idag kom ”reservdelarna”, en vindhastighetsgivare och en vindriktningsgivare från Clas Ohlson. De känns plastiga, men å andra sidan är de designade för utomhusbruk, så de håller väl? Ut från vindhastighetsgivarens undersida löper en kort (ca 30 cm) ”telefonsladd” (RJ11-kontakt) som skall kopplas in på undersidan av vindriktningsgivaren. Från vindriktningsgivaren löper sedan ytterligare en sladd (ca 3m) som bär båda givarnas signaler. På så vis slipper man dra dubbla kablar ner till basenheten, smart!

Det tog ett par minuter att pilla upp de mikroskopiska skruvarna för att komma åt insidan. Väl där hittade jag mest tungelementrelä, dvs en strömbrytare som slår till när en magnet närmar sig. I detta fall sitter magneten i vindsnurrorna. Vindhastighetsgivaren fungerar som en strömbrytare som öppnar sig 1 gång per varv, och skapar således en kort ”puls”, medans vindriktningsmätaren innehåller 8 st parallellkopplade tungelementrelän för att dela in de 360 riktningsgrader i de olika vädersträck. För att kunna avgöra vilken strömbrytare som är öppen sitter där också ett motstånd i serie med varje brytare med olika värde. Man skulle t.ex. kunna säga att det blåser åt Syd om motståndet i kretsen är X ohm, eller att det blåser mot Norr om motståndet är Y ohm.

Man inser rätt snabbt att detta är en usel riktningsmätare, vi kan i princip bara avgöra vilket vädersträck vinden blåser i, med en minsta upplösning på 360/8=45 grader. Kanske väntat med tanke på det låga priset?

Hur som helst tänker jag fortsätta mecka med denna givare, eventuellt kan man interpolera fram fler riktningar och öka upplösningen till 360/16=22.5 grader, vilket börjar bli ”acceptabelt”. Ett alternativ är att beställa en ny givare med större nogrannhet, kanske något i stil med Inspeeds WindWorks-paket.