Opět je to více než rok co jsem popisoval svoji téměř 6 let trvající cestu za "ideálním" způsobem jak řídit elektromotory. Takže jenom pro ty, co jsou líní kliknout na odkaz budu rekapitulovat.
- kdysi dávno jsem pojal ideu elektrického obvodu řídícího motory - tedy H-můstku, který bude jako "mýdlo strýčka Františka" ze Saturnina - trafopájkou sestavený z odpadu a výsledek - skvost.
- Při návrhu můstku mě napadlo použít fintu, kterou pro své třífázové motory používají letečtí modeláři - totiž měřit pomocí napětí rotujícího motoru i jeho rychlost, kterou robot musí znát, neboť ji reguluje.
- Jelikož všechny předpoklady není tak snadné splnít - trvalo mi 6 let a asi 5 verzí než jsem se přiblížil ideálu, loni z jara.
- Loni jsem taky naznačil schéma a prohlásil, že je třeba počkat, jak se můstek osvědčí, což se stalo a můstek se osvědčil výborně.
Dnes tedy nebudeme řešit zapojení tranzistorů, ale probereme otázku měření otáček "pomocí BackEMF". Opět pro líné jenom jednou větou - vypneme můstek na tak dlouhou dobu až proud v jeho cívkách zanikne - v tom případě napětí na motoru odpovídá rychlosti jeho otáček. Takže máme informaci o rychlosti otáčení přímo z motoru a nepotřebujeme (téměř) žádná externí čidla alias "Enkodéry" alias snímače otáček.
Kromě "ušetření" za enkodéry ve stylu mého vidláckého hesla, že "nejlíp funguje součástka, která tam není" Má měření pomocí BakcEMF ještě jednu velkou výhodu. Můžete si měřit kdykoliv motor na milisekundu vypnete. U enkoérů musíte "čekat až přijde impuls" což znamená, že při malých rychlostech přijde "nula impulsů" a podle čeho pak chcete rychlost regulovat ?
Samozřejmě můžete předpokládat, že nula impulsů znamená, že robot stojí. Při počítání impulsů však existuje velice nepříjemná věc zvaná "kvantizační chyba" - neboli "chyba malých čísel" - takže, pokud robot jede rychlosti 0,5 pulsu za periodu regulace - počítač v robotovi to vnímá jako že polovinu času se stojí, protože puls nepřišel, a polovinu času se jede - což když se "naivní" PID regulátor snaží nějak vyřešit může dopadnou nepěkným cukáním v malých rychlostech.
Tím se konstruktér (a programátor) robota dostává do neřešitelné situace - aby robot jel hladce je třeba jeho otáčky regulovat co nejčastěji - třeba 100x za sekundu, ale při této frekvenci se "chyba malých čísel" může projevit už při dost vysokých rychlostech. Pokud naopak regulujeme otáčky třeba jenom 10x za sekundu - chyba malých čísel se tak neprojeví, ale jízda není dosti hladká, protože třeba při rychlosti pomalého chodce - 1 metr za sekundu ujede robot od regulace k regulaci 10 cm - což je u malého robota klidně polovina jeho velikosti.
Nic z toho u měření přes BackEMF není, ale máme jiný problém - napětí na motoru musíme přepočítat na rychlost, což závisí na vlastnostech motoru, je pro každý motor jiné a dokonce se to mění i během jízdy. Takže pokud počítáme ujetou vzdálenost pomocí enkodérů - je to maximálně přesné ovlivněné jenom proklouzáváním pneumatik. U BackEMF to zdaleka tak přesné není, protože po chvíli jízdy se nám motor zahřeje a poměr mezi napětí a rychlostí ze smění.
Proto já osobně používám kompromis - pro regulaci rychlosti používám BackEMF a pro měření ujeté vzdálenosti - značně zjednodušený - enkodér, který místo 4000 pulsů na otáčku kola (ano i tak obrovské počty se používají) funguje jako tachometr na bicyklu - pěkně jeden tik na otáčku - a dokonce používá i stejný hardware - jazýčková relé a magnety z "utržených" cyklistických tachometrů. Jistě je vám jasné, že zařídit 1 impuls za otáčku je mnohem jednodušší než jich zařídit 4000, jinak by to cyklisiti nepoužívali žejo !
Pokračoval bych dále, ale obávám se, že jsem dnes na konci sil, proto zbývá už jenom tradiční rada pro blondýny: Jehlové lodičky stejně nakonec vyjdou z módy, ale dobrý multimetr je na celý život - takže do čeho se vyplatí investovat ?