Jak řešit nechtěné úvodní rychlé přejetí serva?

Odpovědět
AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 18 úno 2025, 16:13

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°.

Uživatelský avatar
kiRRow
Příspěvky: 1313
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od kiRRow » 18 úno 2025, 18:22

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í

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 18 úno 2025, 19:22

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í.

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 18 úno 2025, 20:00

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.

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 20 úno 2025, 17:13

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ě...


servo1.jpg
servo2.jpg

Uživatelský avatar
kiRRow
Příspěvky: 1313
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od kiRRow » 21 úno 2025, 18:36

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 :-D

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 21 úno 2025, 20:03

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.


bad_chars.gif

Uživatelský avatar
kiRRow
Příspěvky: 1313
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od kiRRow » 21 úno 2025, 21:51

Tyhle motory jsou strašný nesmysl ... není to krokový motor, ale skokový motor tempem slimáka se zlomenou nohou ...

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Jak řešit nechtěné úvodní rychlé přejetí serva?

Příspěvek od AstroMiK » 01 bře 2025, 09:50

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.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host