Stap 3: Circuit
D1 (Schottky diode) en C2 vormen een gelijkrichter maken DC spanning uit de dief Joule. Zener-diode D2 is toegevoegd aan "klem" of beperken van de spanning aan 5.1V Voorkom beschadiging van de microcontroller (maximale spanning deze chip kan weerstaan is 6V). Zonder de Zener diode er, kan de uitgangsspanning van de boost-circuit gaan over 6V wanneer geen LEDs verlicht.
Wanneer de batterij eerst aangesloten is, de spanning laadt de condensator C2, dan gebeurt er niets totdat SW1 wordt gesloten. Nadat de SW1 is gesloten, huidige doorloopt R1 Q2 inschakelen en het circuit Joule dief begint te werken. In een fractie van een seconde, de spanning op C2 uithoeken hoog genoeg zijn voor de microcontroller te starten. Zodra de microcontroller begint te lopen, zet het PWR signaal hoog, zodat de Joule dief blijven draaien zal, zelfs nadat SW1 geopend is. (Power-on klink)
Merk op dat na de aanvankelijke energie, microcontroller horloges zijn eigen voedingsspanning via A/D converter en het enigszins onder de zener-spanning past, dus om het niet verspillen kostbare vermogen van de batterij. "PWR" verbinding met de microprocessor doet dit door te draaien aan/uit-bias huidige naar Q2.
Deze "PWR"-pin heeft twee doel; een is het bepalen van de booster circuit, de andere is om te lezen van de status van de knop switch. (deze regeling slaat een kostbare microcontroller pin.)
De knop switch SW1 is meer dan een aan-/ uitschakelaar, biedt het patroon wijzigen, animatiesnelheid wijzigen (dubbele kraan te verhogen van de snelheid, de drievoudige kraan te verlagen van de snelheid). Microcontroller leest de knopstatus door periodiek de "PWR" pin in een invoer pin. Dit gebeurt ongeveer elke 8 milliseconden (125 keer per seconde). De lezing van de knop neemt elk ongeveer 2 microseconden. Het booster circuit wordt uitgeschakeld gedurende deze 2 microseconden, maar het zal niet worden gevoeld omdat condensator C2 de kracht in die periode levert.
PWM LED Brightness Control
Elk van de acht LEDs hebben eigen helderheidsniveau. Helderheid wordt opgegeven (in firmware) in 8 bits getal 0 - 255. Timer interrupt routine leest de helderheidsniveaus en uitschakelen op/elke LED dienovereenkomstig in sync met de hardware PWM-signaal. (Frequentie PWM is 31,25 kHz. Interrupt optreedt elke 32 microseconden met firmwareversie 1.0)
Verandering van de helderheid is erg glad - met gebruikmaking van dezelfde techniek PWM als mijn Aurora-projecten. In tegenstelling tot andere PWM-implementaties is de curve van de wijziging van de helderheid is niet lineair, maar exponent (anti-logaritmische). Dit is belangrijk omdat onze eye's reactie op de verandering van de helderheid min of meer logaritmisch is, dat LEDs moeten daarom om helderheid in de tegenovergestelde manier te wijzigen.
Met Wave JT, de hardware PWM-uitgang wordt gebruikt als een precisie-klok te rijden van de LED-bus (gemeenschappelijke lijn die is verbonden met alle LEDs) en "COLx" pinnen selecteren welke pols te draaien op de LED die aangesloten op.
(Zie mijn Aurora 9 x 18 instructable voor diepere verklaring als u geïnteresseerd bent.)