Re: regulace DC motoru - podvozek se dvěma motory

Petr Zapadlo zapik na email.cz
Pondělí Leden 7 10:36:45 CET 2019


Sorry, mělo to být TCST 2103

https://www.vishay.com/docs/81147/tcst2103.pdf

Je to jednoduchá "průsvitová" optická brána - takže na každém kole je 
jen jedna - poznám rychlost otáčení, ale nikoliv směr. Hrana má délku 
cca 1ms, takže kdybych za to dal monostabil s délkou kyvu 2ms, tak bych 
tím hrany asi hezky vyčistil, ale zatím se to snažím vyřešit pomocí sw.

Spíše jak vyřešit regulaci obou motorů (a nebo sledování jednoho druhým) 
aby to hned po zapnutí vyrazilo rovně a nemotalo se to v kruhu nebo oblouku.

Petr



Dne 7.1.2019 v 10:25 Pavel Hudecek napsal(a):
> 1. Arduinisti využívají toho, že AVR má tvarovač vestavěn. Jelikož má 
> vestavěn i pull-up, můžou dokonce vynechat i ty odpory a je to 
> naprosto v pořádku:-) Párkrát jsem kolem r. 2000 dělal redesigny z 51 
> na AVR a téměř vždy to bylo ve stylu, že z původně plné desky zbyla 
> skoro prázdná, z asm bylo C a funční parametry se rapidně zlepšily.
>
> Jedno z toho mělo i nějakej enkodér s 500 kroků/ot a ze "zlobí když s 
> tím rukou otáčíte moc rychle" bylo "není vrtačka, kterou by to 
> nestíhalo". Enkodér prostě generoval přerušení. Nedávno jsem si na to 
> vzpomněl, když jsem bojoval s enkodérem na LPC. Závěr byl, že tam jsem 
> tehdy měl nějaké AVR, které neumí přerušení na obě hrany a tak jsem 
> vždy při tom přerušení přepínal směr hran, což bylo ale až po té, co 
> to prošlo nějakým triviálním testem konzistence signálu, který 
> spočíval myslím jen v tom, že jsem několikrát zkontroloval, zda na 
> druhém drátě je správná úroveň a zda na tomto se nezměnila.
>
> Při hledání TSCT2013 mi gůgl vyhodil jen nějaké festivaly a ani 
> přidání encoder nepomohlo. Podle pruhovaného kolečka předpokládám, že 
> to bude dvojitá optická brána. Zde je velmi důležité, aby vzdálenost 
> pruhů na daném poloměru správně seděla na rozteč bran, jinak to právě 
> dělá popisované zákmity.
>
> PH
>
> -----Původní zpráva----- From: Petr Zapadlo
> Sent: Monday, January 07, 2019 9:44 AM
> To: hw-list na list.hw.cz
> Subject: regulace DC motoru - podvozek se dvěma motory
>
> Zdravím,
>
> koupil jsem synovi stavebnici podvozku robota se dvěma motory s
> převodovkou. Povaluje se toho všude spousty:
>
> https://www.aliexpress.com/item/Motor-Smart-Robot-Car-Chassis-Kit-Speed-Encoder-Battery-Box-2WD-For-Arduino-Free-Shipping/32766175672.html?spm=2114.search0104.3.129.24d77303K8kMys&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_319_317_10696_10084_453_454_10083_10618_10304_10307_10820_10821_537_10302_536_10059_10884_10887_100031_321_322_10103,searchweb201603_52,ppcSwitch_0&algo_expid=17c52e32-375a-46f3-848e-34b53cee145a-18&algo_pvid=17c52e32-375a-46f3-848e-34b53cee145a&transAbTest=ae803_4 
>
>
> Připojení přes 2 H můstky k modulu esp8266, doplnil jsem to snímači
> TSCT2013 na enkodery na kolech. Problém nastal když to mělo jet rovně,
> každá malá nerovnost způsobuje zatočení.
>
> Snažím se vyřešit jak synchronizovat oba motory.  Je tam několik 
> problémů:
>
> 1) elektrický - hrany lezoucí ze snímače (optotranzistor emitorem na
> zem, v kolektoru odpor 10k) jsou velmi pozvolné, musel jsem natvarovat
> 74hc14 (proč všichni arduinisti to mají připojeno přímo na pin?), ale i
> tak se stává, že je na hraně zákmit - není na každé, ale sem tam se
> vyskytne = musím s ním počítat a to jak na sestupné tak na vzestupné.
> Ošetřovat to elektricky?
>
> 2) programový - jak správně regulovat motory aby to jelo rovně a
> necukalo to.
>
>
> Co jsem už zkoušel:
>
> 1) načítaní enkoderů realizováno jako vzorkování po 1ms, tím že
> nereaguji na hranu, ale testuji úroveň každou ms, jsem dostal stabilní a
> kvalitní údaj, bohužel při rychlejší regulaci motorku (přepočet hodnoty
> výstupní pwm) každých 50ms se počet tiků z enkoderu pohyboval v počtu 2
> - 3, což na nějakou přesnou regulaci jako rozlišení nestačí. Zkoušel
> jsem 2 varianty:
>
>     - varianta 1 - jeden motor byl ovládán ručně stabilní hodnotou pwm,
> druhý motor k němu regulován. po každém výpočtu znulovány čítače na obou
> enkoderech - tohle nebylo použitelné - autíčko se točilo prakticky pořád
> dokola
>
>     - varianta 2 - jeden motor byl ovládán ručně stabilní hodnotou pwm,
> druhý motor k němu regulován. Jako regulační odchylka byla brána celkový
> rozdíl obou čítačů, které nebyly nulovány. - ze začátku se autíčko nějak
> zatočilo a pak víceméně drželo směr, ale potácelo se jako opilé.
>
>
> 2) enkodery jsou načítány přerušením od hrany, s tím, že musím přerušení
> vypnout až do okamžiku těsně před další hranou, jinak mi zákmity na
> opačné hraně dělají neplechu a falešné počty. Nenačítám počet hran, ale
> zjišťuji dobu mezi dvěma hranami - dostávám nějaké desítky ms s
> rozlišením po us.  Tj rozlišení pro regulaci by mělo být velmi vysoké a
> neměl by být problém výsledné pwm přepočítat po každé hraně. Zde jsem se
> zatím k testům nedostal - když hodím do přerušení i výpočet PID
> (používám knihovnu PID) tak je přerušení zřejmě příliš dlouhé, protože
> se mi resetuje esp8266 watchdogem.
>
>
> Záležitost č. 2 - jak nastavovat koeficienty PID abych se dobral
> nějakého výsledku?  Pokaždé když změním postup jak načítám vstupní
> veličinu, musím změnit i koeficienty  - tj pokud hledám podobný projekt,
> který jako vstup používá třeba sledovač čáry, stejně musím měnit koef.
> Na netu jsem našel několik matematických postupů jak se dobrat výsledku,
> ale ty jsou pro mě nepoužitelné - neznám přesné vlastnosti sestavy.
>
>
> řešil jste někdo něco podobného nebo viděl někdo ?  V podstatě se hlavně
> potřebuji dostat ke stavu že motory budou mít stejné výsledné otáčky =
> model pojede rovně.
>
> Díky
>
> Petr
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list