Stap 14: Omgaan met onnauwkeurigheid
Een van de punten van dit project was het creëren van een klok die nauwkeurig is en kan worden vertrouwd, maar als je de klok Cwik naast een zeer betrouwbare klok, zult u merken dat het langzaam/snel door een paar seconden over een periode van 24 uur.Gericht op de fout
Voor zover ik vertellen kan, is er geen plaats in de code waar milliseconden vermist is, dus ik ben geleid om te geloven dat de timing onjuistheden te wijten aan de standaardfout in de kristal klok zijn. Mijn kennis van hoe kristal klokken is uiterst amateur, maar ik kon worden overtuigd dat vele factoren in de juistheid ervan, zoals geleverde spanning, temperatuur, productie-procédé, leeftijd van de klok, enz spelen. Ik zou ook veronderstellen dat als u de klok van kristal met een andere vervangen, zou u verschillend gedrag observeren (kon men snel, kon men traag). Aangezien er zo veel variabelen, het is nutteloos om te proberen en de fout oplossen voordat het eindproduct wordt geassembleerd met de definitieve componenten (vandaar waarom deze stap is nadat je soldeer en monteren van de Cwik-klok).
Het meten van de fout
Om compenstate voor de fout in de software, moeten we volledig begrijpen onze fout. De manier waarop we zullen meten fout is door de klok Cwik naast een zeer nauwkeurige verwijzing klok juist te starten die displays seconden (zoals een computer), en zien hoe ver de klok Cwik is uit de verwijzing klok na precies 7 dagen.
Bijvoorbeeld, als de tijd is momenteel 8:05 am op maandag, gaan tijdinstelling modus, de klok Cwik ingesteld op 8:06 am en wachten op de klok van uw verwijzing overstappen op 8:06 voordat flicking de schakelaar schakel tijdinstelling modus (aangezien wij opnieuw de seconden in de modus voor het instellen van tijd). Laat uw klok 7 dagen, en toen de klok Cwik bereiken 8:06 am de volgende week, vastleggen van de tijd op de klok van uw verwijzing en meten van het verschil.
Ik beveel een volle week, omdat hoe langer de tijd verstreken, hoe meer we nauwkeurig kunnen meten de fout. Verder is er een voorgevoel dat de krachtbron zou verantwoordelijk voor enkele van de fout. Als u bent het voeden van uw apparaat van een 9V DC voedingsbron aangesloten op de muur, zijn macht gebruik kenmerken relatief cyclische met een periode van een week. U en uw buren minder/meer macht in het weekend in vergelijking met de weekdagen kunnen gebruiken, maar door het vastleggen van een volle week, we hopen te krijgen van een gemiddelde fout, niet een dagelijkse fout die, afhankelijk van de dag van de week fluctueren kan.
Vaststelling van de fout
Nu dat we een het aantal seconden dat eigenlijk verstreken (de tijd op de klok referentie) en de tijd die de klok Cwik dacht verstreken dat, kunnen we berekenen de fout.
In ons voorbeeld hierboven, als na een week op de Cwik klok de tijd op de klok van de verwijzing 08:06:52 is, dat betekent dat lopen we langzaam, met de volgende nauwkeurigheid:
nauwkeurigheid (de CwikClock dacht verstreken dat seconden) = / (seconden die de verwijzing klok dacht verstreken dat)
nauwkeurigheid = (7 dagen * 24 uur / dag * 60 minuten * 60 seconden / uur / minuut) / ((7 * 24 uur / dag * 60 minuten * 60 seconden / uur / minuut) + 52)
nauwkeurigheid = 604800 seconden/605852 seconden
nauwkeurigheid = 0.998263602
Om dit te compenseren, omzetten in ONE_SECOND in code 1000 * nauwkeurigheid, of 998. Als u besluit om de juistheid na zoveelste week tweaken, instellen ONE_SECOND 998 * nauwkeurigheid (niet de eerste 1000 * nauwkeurigheid, omdat de metingen werden verricht uitgaande van ONE_SECOND is 998ms van onze kristal klok).