Czas, znowu!
Jakiś czas temu napisałem długi post o zegarze, który zbudowałem do odmierzania czasu metrycznego. Obiecałem, że go wypoleruję, zbuduję do niego walizkę i zrobię z niego ładny mebel na biurko.
Jeszcze tego nie zrobiłem.
Zamiast tego stworzyłem kilka różnych wersji tego zegara, używając różnych źródeł wiarygodnego sygnału czasu, różnych technologii wyświetlania i tak dalej.
Pomyślałem również, że interesujące byłoby śledzenie czasu metrycznego w oparciu nie tylko o lokalną strefę czasową, ale także o rzeczywistą pozycję słońca na niebie.
Moment, w którym słońce znajduje się najwyżej na niebie, różni się oczywiście w zależności od tego, gdzie jesteś na planecie. Okazuje się jednak, że jest to bardziej skomplikowane. Orbita Ziemi wokół Słońca jest eliptyczna, a nie idealnie okrągła, co oznacza, że południe (i północ!) trochę się porusza w ciągu roku.
Świetnie się bawiłem, drążąc ten temat. Jest coś takiego jak równanie czasu , które wychwytuje zmienność. Dokładnie mierzysz moment, w którym słońce znajduje się nad południkiem zerowym i notujesz, jaki jest czas według twojego dokładnego zegara UTC. Ta różnica jest „równaniem czasu” dla tego dnia.
Nie jest to oczywiście zbyt wygodne, ponieważ musisz spędzić dużo czasu stojąc na południku zerowym i patrząc w górę. To, czego naprawdę potrzebujesz, to formuła, która wypluwa właściwą liczbę na podstawie daty.
Naukowcy z NASA Jet Propulsion Laboratory wykonali tę ciężką pracę przez długi czas, a następnie opracowali formułę, która robi to, czego chcesz. Wykreślili krzywą wartości EoT w ciągu roku, wykorzystali analizę Fouriera do rozbicia tej krzywej na jej składowe, a następnie wykorzystali regresję liniową do określenia współczynników dla każdego z tych składowych. Rezultatem jest całkiem prosta funkcja matematyczna do zaimplementowania. Mówi ci, jak daleko jest południe słoneczne od południa UTC. Funkcja działa z dokładnością do 13 sekund dla każdej godziny dowolnego dnia bieżącego stulecia.
Jeśli znasz swoją długość geograficzną, możesz wykonać prostą matematykę, aby obliczyć aktualny czas słoneczny z EoT i aktualny czas w UTC.
Więc oczywiście zakodowałem to!
Kiedy już miałem działającą implementację tej funkcji, zdecydowałem się dodać czas metryczny słonecznego do mojego wcześniejszego projektu zegara. Po raz kolejny używam obwodu zegara czasu rzeczywistego dla dokładności. Okresowo synchronizuję ten RTC (raz na 50 dni, dla mojego DS3231, ponieważ jest on dokładny do dwóch części na milion) za pośrednictwem serwera NTP w NIST. Nadal nie lubię inteligentnych urządzeń w mojej sieci domowej, ale okazuje się, że jest to takie łatwe i niezawodne, a technika działa na całym świecie (w przeciwieństwie do sygnału WWVB) i daleko od okien (w przeciwieństwie do GPS).
Oto jak to wygląda na desce do krojenia chleba:
Górny lewy wyświetlacz pokazuje czas solarny (6175). Lewy dolny wyświetlacz to lokalny czas metryczny (6246, czyli dokładnie w tym momencie w moim domu południe słoneczne opóźnione w stosunku do południa metrycznego o 71 setek mikrodni). Ciekawie było zobaczyć — ma to całkowity sens, jeśli się nad tym zastanowić — że dwa zegary metryczne obracają swoje cyfry w różnych momentach. Prawy dolny wyświetlacz to aktualny czas lokalny hh:mm (14:59).
Jeśli interesuje Cię kompilacja Arduino, sprawdź centrum projektu .
To było zabawne! Odkryłem, że niektóre biblioteki Arduino są zbudowane dla określonych chipsetów na różnych płytach Arduino, a jeśli połączysz i dopasujesz, oprogramowanie może usmażyć płytę. Cieszę się, że to wiem, chociaż nie jestem tak szczęśliwy, że wydałem trochę więcej niż 100 $ na lekcję. Zawsze byłem trochę nerdem map i trochę nerdem czasu, więc wiedza o równaniu czasu i uwzględnienie długości geograficznej w mojej arytmetyce „która to jest godzina” dostarcza obu tych rodzajów dopaminy.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































