Stap 12: De firmware en beginselen van de werking
De firmware voor het GMB is geschreven in een geïnterpreteerde taal, genaamd eekhoorn. De taal is JavaScript "like", dus als u C of Javascript weet, de syntaxis makkelijk is te halen. Het is een objectgeoriënteerde taal, dus gebruik van deze mogelijkheid gemaakt om klassen voor de inkapseling van. De "IDE" is volledig browser gebaseerd dat is geweldig omdat je niet hoeft te installeren van een gehele bos van IDE-componenten en uw broncode kan toegang vanaf elke browser. Echter de editor is erg basic en foutopsporing is oude school – gebruik print verklaringen om te controleren of uw code in plaats van bijvoorbeeld onderbrekingspunten raken. Voor degenen onder ons die opgegroeid met DOS gebaseerde editors en rudimentaire compilers, is dit bekend terrein. Maar, het totale systeem werkt goed en ik kunnend overal toegang tot de live code.
Een van de problemen die ik moest overwinnen reed een consistente pulse trein voor de stappenmotoren door middel van de IOExpander met behulp van het GMB. Een strakke lus uitgevoerd resulteerde in een zeer stabiel en soepele pols trein maar als het aantal stappen die de motor moet doorlopen grote nemen meer dan een handvol seconden, het GMB is niet kunnen verwerken van de internet-stack gedurende deze tijd en zal bij sommige punt crash-ze waarschuwen hierover op hun website, dus dit is niet een stoot op elektrische Imp-gewoon een feit dat je moet weten voor als u probeert te wijzigen trainen dingen te krijgen van een soepeler puls voor de stappenmotoren. Mij had voor toepassing van het GMB slaap-functies die niet tijd nauwkeurige maar nog steeds toestaan dat de generatie van een puls-trein die de motor zal bewegen het juiste aantal stappen – alleen met een heleboel jitter in de timing die de motoren luidruchtiger maakt. Dit is een kleine beperking van het GMB.
Het systeem functioneert door berekening van de azimuth en zenith invalshoek van het zonlicht op basis van het tijdstip van de dag. Het algoritme voor deze was ported van een C++ implementatie die hier beschikbaar is: http://www.psa.es/sdg/sunpos.htm
Het algoritme is een vereenvoudiging van de beschikbare zon bijhouden van algoritmen, maar toch lijkt te zijn vrij complex voor de leken zoals ik. Ik was in staat om te testen mijn geporteerde algoritme output tegen andere web rekenmachines met goede resultaten dus mijn vertrouwen in het gebruik van dit algoritme zijn hoog. Meer URL's invoegen
Zodra de zon positie berekening voltooid is, het systeem controleert om te zien wat de huidige hoogte en het azimut van het zonnepaneel, berekent de offset tussen de vereiste zon hoeken en de positie van bronnenpaneel, en deze verschuivingen gebruikt als input op de motor objecten om te rijden deze fout naar nul. Dit stuk van de magie van de meting is uitgevoerd met behulp van een LSM303 breakout board. Dit apparaat bestaat uit een 3-assige versnellingsmeter en magnetometer in éénzelfde collo. De uitvoering is een kompas tilt gecompenseerd. Hierdoor is het gebruik van een enkele chip om post en kantelen van de informatie in het deelvenster. Aangezien de PCB is gekoppeld aan het deelvenster voor het meten van de helling van het deelvenster, moet de magnetische kop worden gecompenseerd voor tilt. Het algoritme is een implementatie van een ST Application note die u hier kunt vinden: http://www.st.com/web/en/resource/technical/document/application_note/CD00269797.pdf
De algoritme werkt goed voor tilt hoek van 45 en verlagen zodat de printplaat was gemonteerd onder een hoek van ongeveer 45 graden naar het deelvenster, zodat wanneer het Configuratiescherm wordt gestart in de hoogte uitersten van 90 en 0, de tilt gemeten door de versnellingsmeter de +/-45 graden bereik.
Als we bedenken dat de beschikbare van het zonnepaneel stroom als een functie van de cosinus van de invalshoek van de zonnestralen variëren zal, kunnen we tolereren een redelijke marge tussen de ideale azimuth en ideale zenith van het paneel en de werkelijke hoeken van het panel. Bijvoorbeeld bij 5 graden af azimut van ideaal is de beschikbare energie 99,6% van maximaal. Gezien het feit dat het kompas tilt gecompenseerd slechts tot ongeveer 2 graden nauwkeurig is, is dit belangrijk om te laten zien dat het moet gemakkelijk kunnen hebben hoge efficiëntie zelfs met onjuiste sensing.
Dit betekent ook dat we de nodige kracht voor het circuit bijhouden door het bijhouden van de microprocessor en motor rijden circuits in de slaapmodus staat voor langere tijd ook aanzienlijk kunnen verminderen. Gezien het feit dat de zon hoek veranderingen in azimuth met een snelheid van 15 graden per uur, we een 5 graden ergste geval fout aan het eind van de aanpassing van onze fout periode (2 graden als gevolg van de inherente onnauwkeurigheid magnetisch kompas uitgaande van additieve, plus 3 graden als gevolg van beweging van de zon) handhaven kunnen door compenseert wakker elke 12 minuten en de fout aan te passen tot nul.
De code is gekoppeld voor uw gebruik.