Internet Enabled Solar Tracker (12 / 15 steg)
Steg 12: Firmware och principerna för drift
Firmware för den integrerade havspolitiken är skriven på ett tolkat språk kallas ekorre. Språket är JavaScript "Gilla" så om ni vet C eller Javascript syntax är lätt att plocka upp. Det är ett objektorienterat språk så använd gjordes av denna förmåga att genomföra klasser för inkapsling. "IDE" är helt browser baserade vilket är bra eftersom du inte behöver installera en hel massa IDE komponenter och kan komma åt din källkod från valfri webbläsare. Men redaktören är mycket grundläggande och felsökning är gamla skolan – med hjälp av print uttalanden för att kontrollera din kod i stället för att slå brytpunkter t.ex. För dem av oss som växte upp med DOS-baserad redaktörer och rudimentär kompilatorer, kommer detta vara välbekanta marken. Men det övergripande systemet fungerar bra och jag gillar att kunna åt live-koden från någonstans.
En av de svårigheter som jag var tvungen att övervinna körde ett konsekvent puls tåg för stegmotorer genom IOExpander med hjälp av den integrerade havspolitiken. Kör en snäv slinga resulterade i en mycket stabil och smidig puls tåg men om antalet steg motorn måste gå igenom är stor tar mer än en handfull sekunder, den integrerade havspolitiken är inte kunna behandla internet stacken under denna tid och kommer på någon punkt krascha-de varna om detta på deras webbplats så detta inte är en stöt på elektriska Imp – bara ett faktum att du måste vara medveten om för om du försöker ändra tåg saker för att få en jämnare puls för stegmotorer. Jag hade gå använda den integrerade havspolitiken sömn funktioner som är inte tid korrekt men ändå tillåta generering av ett puls-tåg som kommer att flytta motorn rätt antal steg-bara med en massa jitter i tidpunkten som gör motorerna bullrigare. Detta är en liten begränsning av den integrerade havspolitiken.
Systemet fungerar genom att beräkna Azimut och Zenit vinkeln på solen baserat på tid på dagen. Algoritmen för detta portades från en C++-implementation som finns här: http://www.psa.es/sdg/sunpos.htm
Algoritmen är en förenkling av tillgängliga sol spårning algoritmer, men trots det verkar vara ganska komplex för en lekman som jag själv. Jag kunde testa min portade algoritm utgång mot andra web räknare med gott resultat så mitt förtroende för användningen av denna algoritm är höga. Infoga flera webbadresser
När solen ställning beräkningen är klar, systemet kontrollerar vad nuvarande elevation och Azimut av solpanelen är beräknas förskjutningen mellan krävs solen vinklar och panelen ställning och använder dessa förskjutningar som indata till motor objekt för att köra det här felet till noll. Denna bit av mätning magic sker med hjälp av en LSM303 breakout ombord. Enheten består av en 3-axlig accelerometer och magnetometer i samma paket. Genomförandet är en tilt kompenseras kompass. Detta tillåter användning av ett enda chip som innehåller rubrik och luta information på panelen. Eftersom PCB är kopplad till panelen för att mäta lutning på panelen, måste magnetiska rubriken kompenseras för tilt. Algoritmen är en implementering av en ST Application note som du hittar här: http://www.st.com/web/en/resource/technical/document/application_note/CD00269797.pdf
Matchningsalgoritmen fungerar bra för tilt vinkel 45 och sänka så kretskortet var monterad på en ungefär 45 graders vinkel mot panelen så att när panelen är på höjd ytterligheter av 90 och 0, lutning mäts av accelerometern i den +/-45 graders intervall.
Om vi anser att kraften tillgänglig från solpanelen varierar som en funktion av cosinus för meta av förekomsten av solens strålar, kan vi tolerera en rimlig förskjutning mellan perfekt azimuth och idealisk Zenit i panelen och de faktiska vinklarna på panelen. Till exempel vid 5 grader av Azimut från ideal är tillgängliga 99,6 procent av maximala. Med tanke på att tilt kompenseras kompassen stämmer endast till ca 2 grader, är detta viktigt att visa att det enkelt går att ha höga effektivitetsvinster även med felaktiga avkänning.
Detta innebär också att vi också avsevärt kan minska den kraft som krävs för spårning kretsen genom att hålla mikroprocessor och motordrift kretsar i viloläge under lång tid. Med tanke på att solen vinkel förändringar i Azimut med en hastighet av 15 grader per timme, vi kan behålla en 5 graders värsta fall fel i slutet av våra fel justering tidsperiod (2 grader på grund av magnetkompass inneboende felaktighet förutsatt att tillsatsen, plus 3 grader på grund av solen rörelse) genom förskjuts att vakna upp varje 12 minuter och justera felet till noll.
Koden är kopplad för din användning.