Jak řešit nechtěné úvodní rychlé přejetí serva?
Jak řešit nechtěné úvodní rychlé přejetí serva?
Když po zapnutí napájení nevím, v jaké poloze se nachází servo, tak se může stát, že servo velkou rychlostí přejede do první zadané polohy.
Potřeboval bych, aby se servo na tuto polohu dostalo pomalu.
Pamatování poslední polohy v nějaké EERAM je nepoužitelné. Bez napájení je možné servem ručně otáčet, takže poloha po zapnutí je nejistá.
Napadly mě tři možnosti:
1) Napájení serva nepřipojovat na tvrdo, ale přes nějaký spínací prvek (tranzistor),
který se ale po startu nesepne trvale, ale bude nějakou dobu do napájení serva pouštět jen krátké impulzy.
Servo pak nebude mít dostatek energie na rychlé najetí do krajní polohy, ale "doskáče" tam postupně podle šířky napájecích impulzů.
2) Mechanicky spřažený potenciometr na hřídeli serva, který bude dávat zpětnou informaci o aktuální poloze v libovolném čase.
3) Je to jen rozvedení bodu 2), kdy se místo spřaženého potenciometru použije vnitřní potenciometr serva a bude se na něm číst napětí.
Zatím jsem ale servo nerozebíral, takže nevím, co by mohlo být na potenciometru za signál (DC / PWM impulzy / ???).
Máte nějaké jiné (ověřené) nápady?
Konkrétně se mi jedná o 5V servo "Tower Pro MG996R" s rozsahem +/- 90°.
Potřeboval bych, aby se servo na tuto polohu dostalo pomalu.
Pamatování poslední polohy v nějaké EERAM je nepoužitelné. Bez napájení je možné servem ručně otáčet, takže poloha po zapnutí je nejistá.
Napadly mě tři možnosti:
1) Napájení serva nepřipojovat na tvrdo, ale přes nějaký spínací prvek (tranzistor),
který se ale po startu nesepne trvale, ale bude nějakou dobu do napájení serva pouštět jen krátké impulzy.
Servo pak nebude mít dostatek energie na rychlé najetí do krajní polohy, ale "doskáče" tam postupně podle šířky napájecích impulzů.
2) Mechanicky spřažený potenciometr na hřídeli serva, který bude dávat zpětnou informaci o aktuální poloze v libovolném čase.
3) Je to jen rozvedení bodu 2), kdy se místo spřaženého potenciometru použije vnitřní potenciometr serva a bude se na něm číst napětí.
Zatím jsem ale servo nerozebíral, takže nevím, co by mohlo být na potenciometru za signál (DC / PWM impulzy / ???).
Máte nějaké jiné (ověřené) nápady?
Konkrétně se mi jedná o 5V servo "Tower Pro MG996R" s rozsahem +/- 90°.
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
1) správně
Servo je řízeno PWM a to neběží ihned po zapnutí arduina, nejprve se spustí bootloader. Takže napájení serva spustit přes nějaký "spínač" až po tom, co je arduino schopno dodávat nějaký rozumný PWM signál - bohužel bez znalosti momentální pozice i když budeš dodávat signál do středové polohy a pak se pomalu blížit k počáteční poloze ... tak do té středové to kmitne ihned jak se spustí napájení serva.
Ale pokud je třeba problém v tom, že je to v koncové pozici a pak to prudce bouchne do začáteční pozice, tak tohle by to mohlo vyřešit ... prudce to bouchne do středu, kde by to teoreticky nemělo mít kam narazit.
2) taky se dá
Bohužel potenciometry se docela často kazí, špiní se uhlíkem co samy do sebe strouhají jezdcem ...
3) z potenciometru budeš dostávat vždy analogový signál - pokud na něj připojíš 0V a 5V tak na středové nožičce budeš mít 0-5V dle natočení
Servo je řízeno PWM a to neběží ihned po zapnutí arduina, nejprve se spustí bootloader. Takže napájení serva spustit přes nějaký "spínač" až po tom, co je arduino schopno dodávat nějaký rozumný PWM signál - bohužel bez znalosti momentální pozice i když budeš dodávat signál do středové polohy a pak se pomalu blížit k počáteční poloze ... tak do té středové to kmitne ihned jak se spustí napájení serva.
Ale pokud je třeba problém v tom, že je to v koncové pozici a pak to prudce bouchne do začáteční pozice, tak tohle by to mohlo vyřešit ... prudce to bouchne do středu, kde by to teoreticky nemělo mít kam narazit.
2) taky se dá
Bohužel potenciometry se docela často kazí, špiní se uhlíkem co samy do sebe strouhají jezdcem ...
3) z potenciometru budeš dostávat vždy analogový signál - pokud na něj připojíš 0V a 5V tak na středové nožičce budeš mít 0-5V dle natočení
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Tu 1) jsem myslel tak, že by se po zapnutí napájení Arduina nastavilo PWM normálně třeba na tu středovou pozici.
Napájení serva by se ale po dobu třeba 10 sekund zapínalo jen na krátké impulzy (0,1 sek. ON / 0,3 sek. OFF).
Tím by servo sice mělo snahu nastavit se na střed, ale protože by mu chybělo trvalé napájení, tak by k tomu středu jen pomalu docukalo.
K té 3) jsem myslel vnitřní potenciometr, který je uvnitř serva jako zpětná vazba pro jeho driver.
Nevím, jestli je to normální stejnosměrné napětí, které je přímo úměrné úhlu natočení, nebo jestli je ten vnitřní potenciometr napájený nějakým impulzním signálem z driveru.
Tohle řešení by ale byl asi problém hned při startu.
Motor by se začat otáčet, ale Arduino by nebylo tak rychlé, že by vyhodnotilo aktuální stav vnitřního potenciometru a okamžitě upravilo své výstupní PWM.
Asi to budu muset rozebrat a vyzkoušet.
Spíš mě zajímalo, jestli někoho nenapadne ještě nějaké geniální řešení.
Napájení serva by se ale po dobu třeba 10 sekund zapínalo jen na krátké impulzy (0,1 sek. ON / 0,3 sek. OFF).
Tím by servo sice mělo snahu nastavit se na střed, ale protože by mu chybělo trvalé napájení, tak by k tomu středu jen pomalu docukalo.
K té 3) jsem myslel vnitřní potenciometr, který je uvnitř serva jako zpětná vazba pro jeho driver.
Nevím, jestli je to normální stejnosměrné napětí, které je přímo úměrné úhlu natočení, nebo jestli je ten vnitřní potenciometr napájený nějakým impulzním signálem z driveru.
Tohle řešení by ale byl asi problém hned při startu.
Motor by se začat otáčet, ale Arduino by nebylo tak rychlé, že by vyhodnotilo aktuální stav vnitřního potenciometru a okamžitě upravilo své výstupní PWM.
Asi to budu muset rozebrat a vyzkoušet.
Spíš mě zajímalo, jestli někoho nenapadne ještě nějaké geniální řešení.
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Vyřešeno!
Zatím jen nápad, ale myslím, že by to fungovat mělo:
Jedním pinem bude Arduino spínat napájení serva přes nějaký tranzistor.
Jiným pinem bude testovat optickou závoru ve středové poloze serva.
Na začátku programu se nastaví PWM řízení na středovou polohu.
Protože ale servo nemá napájení, nedojde k žádnému pohybu.
Ve vyčkávací smyčce se pak bude viset tak dlouho, dokud se neaktivuje optická závora.
Do té doby nebude mít servo žádné napájení.
Servo se do středové polohy uvede RUČNĚ.
Bez napájení se dá hřídelí otáčet celkem snadno.
Ve středové poloze se tím aktivuje optická závora a na základě tohoto signálu Arduino připne do serva napájení.
Při ručním otáčení by mělo být znát, že se ve středové poloze motor magneticky "zaseknul" a už s ním není možné ručně otáčet.
Tím je zajištěno, že je servo ve výchozí pozici.
Optická závora od tohoto okamžiku nemá význam a vypína se (nebo se prostě ignoruje).
Napájení serva je od teď trvale zapnuté.
K nechtěnému rychlému pohybu už dojít nemůže.
Zatím jen nápad, ale myslím, že by to fungovat mělo:
Jedním pinem bude Arduino spínat napájení serva přes nějaký tranzistor.
Jiným pinem bude testovat optickou závoru ve středové poloze serva.
Na začátku programu se nastaví PWM řízení na středovou polohu.
Protože ale servo nemá napájení, nedojde k žádnému pohybu.
Ve vyčkávací smyčce se pak bude viset tak dlouho, dokud se neaktivuje optická závora.
Do té doby nebude mít servo žádné napájení.
Servo se do středové polohy uvede RUČNĚ.
Bez napájení se dá hřídelí otáčet celkem snadno.
Ve středové poloze se tím aktivuje optická závora a na základě tohoto signálu Arduino připne do serva napájení.
Při ručním otáčení by mělo být znát, že se ve středové poloze motor magneticky "zaseknul" a už s ním není možné ručně otáčet.
Tím je zajištěno, že je servo ve výchozí pozici.
Optická závora od tohoto okamžiku nemá význam a vypína se (nebo se prostě ignoruje).
Napájení serva je od teď trvale zapnuté.
K nechtěnému rychlému pohybu už dojít nemůže.
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Tak ten poslední nápad s ručním natočením do středové polohy byl opravdu funkční.
Tady je video:
https://youtu.be/kXOve5-6Nkk
Zatím to je jen mechanický pokus, takže fotozávora nesedí úplně přesně proti středové díře a všechno je to zbastlené přes tavné lepidlo a proto to při ručním najetí na střed trochu kopne.
Ale to už bude v pohodě...
Tady je video:
https://youtu.be/kXOve5-6Nkk
Zatím to je jen mechanický pokus, takže fotozávora nesedí úplně přesně proti středové díře a všechno je to zbastlené přes tavné lepidlo a proto to při ručním najetí na střed trochu kopne.
Ale to už bude v pohodě...
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Jak na to koukám, tak by fungoval i ten můj, ale ten tvůj je mnohem šetrnější k převodům toho serva. A proč zrovna servo a ne krokový motor ?
PS : předpokládám, že to máš na focení hvězdnatý oblohy
PS2 : 3D tiskárna za 170kourn ... tavná pistole
PS : předpokládám, že to máš na focení hvězdnatý oblohy

PS2 : 3D tiskárna za 170kourn ... tavná pistole

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Krokový motor byla první volba.
Používal jsem tenhle 5V motor:
https://www.hadex.cz/l755-krokovy-motor ... v-4fazovy/
Problém byl v tom, že měl strašně velkou vůli v převodovce.
Servo, na které jsem přešel, je přesnější.
PS1:
Není to na fotografování, ale na kalibraci měřiče světelného znečištění ( http://sqm.astromik.org ).
V téhle první fázi to má měřit směrovou charakteristiku čidla (TSL2591) a čočky.
Je to takový automat, kde si měřič sám pod sebou otáčí servem a měří jas bodového světla - pevně umístěného 2 metry daleko (různé kombinace infra a bílé LED) a výsledek sype na SD kartu a pak se z toho v Excelu dělají grafy.
Dole jsou příklady špatných (špatně umístěných, nebo poškrábaných) čoček.
PS2:
Přesně tak.
Používal jsem tenhle 5V motor:
https://www.hadex.cz/l755-krokovy-motor ... v-4fazovy/
Problém byl v tom, že měl strašně velkou vůli v převodovce.
Servo, na které jsem přešel, je přesnější.
PS1:
Není to na fotografování, ale na kalibraci měřiče světelného znečištění ( http://sqm.astromik.org ).
V téhle první fázi to má měřit směrovou charakteristiku čidla (TSL2591) a čočky.
Je to takový automat, kde si měřič sám pod sebou otáčí servem a měří jas bodového světla - pevně umístěného 2 metry daleko (různé kombinace infra a bílé LED) a výsledek sype na SD kartu a pak se z toho v Excelu dělají grafy.
Dole jsou příklady špatných (špatně umístěných, nebo poškrábaných) čoček.
PS2:
Přesně tak.
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Tyhle motory jsou strašný nesmysl ... není to krokový motor, ale skokový motor tempem slimáka se zlomenou nohou ...
Re: Jak řešit nechtěné úvodní rychlé přejetí serva?
Ještě bych se vrátil k tomuto tématu.
Když už mám možnost pomocí programu libovolně ovládat napájení serva, vyzkoušel jsem i ten nápad, kde se po zapnutí napájeni Arduina několik sekund zapíná a vypíná napájení serva v krátkých intervalech. V úvodním příspěvku je to popsáno jako nápad č. 1)
Ten nápad není dobrý.
Při vhodně zvoleném intervalu zapínání a vypínání napájení serva se sice servo malými přískoky může natočit na požadovanou polohu, ale hodně záleží na zátěži.
Při větší zátěži krátké napájecí impulzy nestačí na otáčení a dochází k většímu cukání, nebo dokonce servo nestačí na požadovanou polohu ani dojet.
Při menší zátěži je zase pohyb serva při stejných napájecích impulzech až moc rychlý.
Zátěž je dokonce různá pro různý směr pohybu. Takže když jsem chtěl najíždět na střední polohu zleva, tak byl impulzní napájecí výkon nedostatečný.
Když se ale najíždělo zprava, byl stejný impulzní výkon moc velký, takže servo najelo na střed moc rychle.
To se sice dá řešit tak, že se nebude najíždět na střed, ale jen k jednomu okraji, ale i tak to řešení není úplně v pořádku.
Rychlým vypínáním a zapínáním napájení serva se také mohou ničit vnitřní obvody serva.
Takže tudy cesta nevede a zůstávám u ručního natočení serva na fotozávoru.
Když už mám možnost pomocí programu libovolně ovládat napájení serva, vyzkoušel jsem i ten nápad, kde se po zapnutí napájeni Arduina několik sekund zapíná a vypíná napájení serva v krátkých intervalech. V úvodním příspěvku je to popsáno jako nápad č. 1)
Ten nápad není dobrý.
Při vhodně zvoleném intervalu zapínání a vypínání napájení serva se sice servo malými přískoky může natočit na požadovanou polohu, ale hodně záleží na zátěži.
Při větší zátěži krátké napájecí impulzy nestačí na otáčení a dochází k většímu cukání, nebo dokonce servo nestačí na požadovanou polohu ani dojet.
Při menší zátěži je zase pohyb serva při stejných napájecích impulzech až moc rychlý.
Zátěž je dokonce různá pro různý směr pohybu. Takže když jsem chtěl najíždět na střední polohu zleva, tak byl impulzní napájecí výkon nedostatečný.
Když se ale najíždělo zprava, byl stejný impulzní výkon moc velký, takže servo najelo na střed moc rychle.
To se sice dá řešit tak, že se nebude najíždět na střed, ale jen k jednomu okraji, ale i tak to řešení není úplně v pořádku.
Rychlým vypínáním a zapínáním napájení serva se také mohou ničit vnitřní obvody serva.
Takže tudy cesta nevede a zůstávám u ručního natočení serva na fotozávoru.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host