Přesná mechanická kyvadla jsou obvykle teplotně i barometricky kompenzována. Jednou z jiných cest může být (zejména u historických či věžních hodin) měření doby kyvu například infračerveným optickým snímačem a další zpracování pomocí mikroprocesoru (ESP8266). Na základě zjištěné odchylky od očekávaného stavu bude upraven moment setrvačnosti kyvadla. Úpravu v tomto příkladu provede krokový motor otáčením závitovou tyčí, která posunuje trimovací závažíčko na tyči kyvadla. Následující text je určitou inspirací k takovému postupu.
V našem projektu kyvadlo
s motoricky řízeným trimovacím závažíčkem na kyvadlové tyči volně kývá a jeho průchod nulovou polohou je snímán infračerveným
optickým čidlem. Časy průchodů jsou měřeny mikroprocesorem
ESP8266 s přesností na mikrosekundy pomocí funkce micros()
.
Výsledné hodnoty (doby jednoho kyvu) jsou zpracovávány a srovnávány s
ideální hodnotou, například 1000.00 ms. Při zjištění odchylky program
vypočítá potřebný počet kroků motoru pro změnu polohy závažíčka na závitové
tyči, čímž se změní moment setrvačnosti kyvadla
– a tedy i jeho perioda.
Webové rozhraní zpřístupněné přes WiFi umožňuje:
ESP8266 měří
čas mezi průchody kyvadla snímačem pomocí funkce micros()
,
která vrací počet mikrosekund od startu programu. Tato funkce však není
dostatečně přesná – její hodnota může být ovlivněna teplotou a
stabilitou
oscilátoru mikrokontroléru.
Proto je
připojen RTC
modul DS3231, jehož vnitřní teplotně stabilizovaný oscilátor má typickou
odchylku ±2 ppm. Pomocí dvacetisekundového kalibračního intervalu se
spočítá korekční faktor, kterým jsou pak měření micros()
násobena. Díky tomu je možné dosáhnout přesnosti lepší než 0,2 sekundy
za den.
Posuv trimovacího závažíčka zajišťuje krokový motor 28BYJ-48 řízený pomocí čtyř výstupních pinů ESP8266. Každý „krok“ na webu odpovídá jedné kompletní sekvenci motoru.
Při změně směru otáčení se automaticky přidá několik kompenzačních kroků (např. 5) pro překonání mechanické vůle převodového systému, tzv. backlash.
Pro zachování dlouhodobé přesnosti bylo třeba vyřešit dvě klíčové věci:
Kalibrace vnitřního časovače ESP8266
Hodnota vrácená funkcí micros()
není zcela přesná, protože závisí na oscilátoru uvnitř ESP8266. Proto
se jednou za 4 hodiny provádí kalibrace pomocí externího reálného času z čipu
DS3231 (RTC). Ten má vlastní oscilátor s teplotní kompenzací a
přesností ±2 ppm. Porovnáním délky známého intervalu (např. 20 sekund)
podle RTC a naměřeného počtu mikrosekund se vypočítá korekční faktor,
kterým se v programu dále násobí rozdíly časů.
Přesnost RTC: ±2 ppm = ±0.002 s za 1000 s → při 20 s je chyba menší než ±40 µs.
Chyba za den bez kalibrace (typická pro ESP8266): ±30–100 ppm = až ±8 s denně
Chyba po kalibraci: přibližně ±0.2 s za den (záleží i na šumu měření)
Stabilní I²C komunikace
RTC DS3231 komunikuje po sběrnici I²C. ESP8266 neumožňuje na všech
pinech aktivovat interní pull-up rezistory, které navíc mají příliš vysokou hodnotu. Proto musely být přidány
externí pull-up odpory 4k7 na SDA i SCL. Zároveň bylo nutné
zvolit nekolizní piny – například GPIO0 (SDA) a GPIO5 (SCL). V
programovacím přípravku tyto piny způsobovaly chyby. Program mohl být zkoušen až po vložení ESP8266 do celého systému.
Na obrázku vlevo je zkušební přípravek pro řízení pohybu trimovacího závaží. V RTC modulu není vložena baterie, protože se vyučívá jen frekvence oscilátoru.
Prvek | Funkce | Pin ESP8266 |
---|---|---|
RTC DS3231 (SDA) | Kalibrace času | GPIO0 +Pull-Up 4k7 |
RTC DS3231 (SCL) | Kalibrace času | GPIO5 +Pull-Up 4k7 |
IR snímač | Detekce průchodu | GPIO3
(Rx) Nelze používat sériovou linku. |
Krokový motor | Posun závaží | GPIO12, 13, 14, 16 |
Každý průchod kyvadla je měřen s přesností na mikrosekundy. Lze asi očekávat, že na senzor působí rušivé vlivy jak mechanické ( například vibrace ) nebo změna světelných podmínek. Používá se klouzavý průměr z posledních 20 hodnot, aby se omezil vliv náhodného šumu nebo chybného snímání. Hodnoty +- 20 procent od očekávané hodnoty jsou vyřazeny. Provedení senzoru je asi nejdůležitější oblastí omezení rušení.
Kyvadlo často nemá přesně symetrický chod – tzv. „kulhá“. To znamená, že doba průchodu zleva doprava se liší od doby zprava doleva. Protože se v tomto systému měří doba mezi každými dvěma průchody čidlem (bez ohledu na směr), projeví se kulhání jako střídání kratší a delší periody. Pokud je rozdíl např. ±5 ms, naměřené periody budou kolísat mezi 495 ms a 505 ms. Tento rozptyl sice není chyba systému, ale odpovídá fyzice pohybu kyvadla a může být užitečným diagnostickým údajem. Průměrování ze sudého počtu měření, ze tento problém skoro kompenzuje.
Pokud je ale rozdíl výrazný (např. 5 ms mezi směry), dochází k mírnému rozptylu v měření, protože infra čidlo nemusí reagovat zcela přesně v každém směru (např. kvůli různé odrazivosti odrazivé plochy při různém osvětlení).
(Na obrázku je záznam měření na značně kulhajícím metronomu..)
Systém může být snadno rozšířen například o:
Projekt ukazuje, že i s levnými a běžně dostupnými komponenty lze vytvořit precizní fyzikální experiment řízený mikroprocesorem, přístupný vzdáleně přes webové rozhraní. Vhodnou kalibrací lze dosáhnout velmi dobré přesnosti i bez drahého hardwaru.