Hlídání ztráty kroku
Na jedné ose mám dva šrouby se dvěma krokovýma motorama. Jde mi o to, že když jeden z motorů ztratí krok, tak druhý zpříčí celý most. Napadlo mě snímat a porovnávat proud obou motorů, kdyby nastal výraznější rozdíl mikroprocesor oba motory odpojí ještě dřív než by se mohlo deformovat vedení. Má s tím někdo zkušenost?
Hlídání elektronicky ne, ale mám to řešeno tak, že na každém šroubu mám řemenici a jsou vzájemně spojené řemenem, který ztrátu kroku eliminuje. Dokonce až tak dobře, že když mi rupla spojka, tak jsem nemohl přijít na to kde je problém. Jen ten zvuk se mi prostě nelíbil. Zjistil jsem to až ve chvíli kdy jsem sundal řemen, že se jeden ze šroubů netočí.
to budeš mít asi problém to vyhodnotit, přecijen zajedou trochu víc do záběru a proud se ti dost změní , ale porovnávat to diferencialně oba motory by asi šlo , ale spíš bych se snažil odstranit důvod té ztáty kroku !
A taky se běžně spřahují ty dva motory řemenem aby k tomu nemohlo dojít , a pak bys ještě mohl dát dva enkodery a ty vyhodnocovat .
A taky se běžně spřahují ty dva motory řemenem aby k tomu nemohlo dojít , a pak bys ještě mohl dát dva enkodery a ty vyhodnocovat .
motory nejsou pokaždé stejně zatížené a jeden dokočí krok s drobným zpožděním proti druhému a tím by ti vznikl rozdíl měřených hodnot - falešná indikace ztráty kroku.
Chce to toleranci minimálně půl celého kroku (ne mimrokroku, ty nelze ztratit). Napadá mne řešení, které by mohlo fungovat:
Na folii vytiskni laserovou tiskárnou kruh rozdělený do tolika segmentů, kolik má krokový motor fyzických kroků. Liché segmenty budou tmavé, sudé zůstanou průhledné. To co budu dále popisovat uděláš s oběma motory. Kruh napíchneš na hřídel rotoru, na stator připevníš dva optočleny fázově posunuté o půl kroku. Zatímco optočlen A bude přesně uprostřed černého pole, optočlen B bude cca na hraně mezi tmavým a světlým polem (nemusí to být přesně). Když se hřídel motoru otáčí, dostáváš z optočlenů tuto sekvenci signálů:
A: 0 1 1 0 0 1 1 0 0 ... atd
B: 0 0 1 1 0 0 1 1 0 ... atd
v podstatě jsem teď popsal princip, jakým polohu snímají staré myši s kuličkou a nebo rotční enkodéry (které jsou nevím proč tak drahé a navíc mají větší počet pulzů na otáčku než krokový motor takže signál z nich by se musel předdělit). Podstatné je to, že každá změna signálu [AB] odpovídá cca půl kroku. Pokud motor točí jedním směrem, pohybujeme se po výše uvedené sekvenci doprava, pokud začneme točit druhým směrem, vracíme se po sekvenci doleva. Důležité je, že projdeme postupně všemi stavy přesně v tom pořadí jak jsou uvedené v tabulce a žádný nevynecháme (i kdybychom ty optočleny nalepili nepřesně a nebo se rotor zastavil a chvěl okolo místa, kdy jeden otočlen přechází z tamvé do světlé, projeví se to jako přechod mezi dvěma sousedními stavy, nebude to skákat o dva).
Dokud jsou dva motory synchronní, bude jejich stav AB buď stejný a nebo sousední (pokud se jeden z motor dočasně fázově zpozdil o méně než jeden celý krok). Jakmile ale zjistím, že se druhý motor nachází o dva stavy vpravo nebo vlevo, tak jsem právě detekoval ztrátu kroku a mašinu zastavím. No a protože dva stavy vlevo nebo dva stavy vpravo jsou čistě náhodou binární negací stavu se kterým porovnávám, je indikace ztráty kroku velice jednoduchá. Strok zastavím ve chvíli, kdy AB prvního motoru odpovídá negovanému výstupu AB druhého motoru
Chce to toleranci minimálně půl celého kroku (ne mimrokroku, ty nelze ztratit). Napadá mne řešení, které by mohlo fungovat:
Na folii vytiskni laserovou tiskárnou kruh rozdělený do tolika segmentů, kolik má krokový motor fyzických kroků. Liché segmenty budou tmavé, sudé zůstanou průhledné. To co budu dále popisovat uděláš s oběma motory. Kruh napíchneš na hřídel rotoru, na stator připevníš dva optočleny fázově posunuté o půl kroku. Zatímco optočlen A bude přesně uprostřed černého pole, optočlen B bude cca na hraně mezi tmavým a světlým polem (nemusí to být přesně). Když se hřídel motoru otáčí, dostáváš z optočlenů tuto sekvenci signálů:
A: 0 1 1 0 0 1 1 0 0 ... atd
B: 0 0 1 1 0 0 1 1 0 ... atd
v podstatě jsem teď popsal princip, jakým polohu snímají staré myši s kuličkou a nebo rotční enkodéry (které jsou nevím proč tak drahé a navíc mají větší počet pulzů na otáčku než krokový motor takže signál z nich by se musel předdělit). Podstatné je to, že každá změna signálu [AB] odpovídá cca půl kroku. Pokud motor točí jedním směrem, pohybujeme se po výše uvedené sekvenci doprava, pokud začneme točit druhým směrem, vracíme se po sekvenci doleva. Důležité je, že projdeme postupně všemi stavy přesně v tom pořadí jak jsou uvedené v tabulce a žádný nevynecháme (i kdybychom ty optočleny nalepili nepřesně a nebo se rotor zastavil a chvěl okolo místa, kdy jeden otočlen přechází z tamvé do světlé, projeví se to jako přechod mezi dvěma sousedními stavy, nebude to skákat o dva).
Dokud jsou dva motory synchronní, bude jejich stav AB buď stejný a nebo sousední (pokud se jeden z motor dočasně fázově zpozdil o méně než jeden celý krok). Jakmile ale zjistím, že se druhý motor nachází o dva stavy vpravo nebo vlevo, tak jsem právě detekoval ztrátu kroku a mašinu zastavím. No a protože dva stavy vlevo nebo dva stavy vpravo jsou čistě náhodou binární negací stavu se kterým porovnávám, je indikace ztráty kroku velice jednoduchá. Strok zastavím ve chvíli, kdy AB prvního motoru odpovídá negovanému výstupu AB druhého motoru
každopádně bych ti radil to samé co packa, spřáhni to ozubeným řemenem. Určitě je lepší ztrátě kroku předcházet než ji detekovat. Ještě jednodušší to mají ti, co místo kuličkového šroubu mají po obou stranách stolu ozubený hřeben. Ozubená kola zabírající do hřebenu mohou mít společnou osu, takže je vyloučeno aby se jedno ozubené kolo točilo jinak než druhé (pokud je osa dostatečně tuhá v krutu).
a také se zamysli nad tím, zda jsi správně definoval úlohu, skutečně tě zajímá jen případ, kdy oba motory přestanou být ve fázi ? Tedy diferenciální ztráta kroku mezi dvěma motory ? Není lepší hlídat ztrátu kroku každého jednotlivého motoru samostatně ? Hodilo by se i pro dvě zbývající osy.
řešení které jsem zmínil v předchozí odpovědi, lze použít i pro detekci ztráty kroku samostatně pracujícího krokového motoru. A to tak, že se výstupy AB z optočlenů popsané v předešlé odpovědi, porovnávají s výstupy binárního up/down CMOS čítače, který nasčítává/odčítává pulsy vstupující do driveru krokového motoru. Takový čítač v podstatě udává řídící logikou "žádanou" relativní pozici vůči okamžiku, kdy byl stroj spuštěn. To je ale pro tento účel nezajímavé. Čítač může být jen 8-bitový a tedy přetékat každých 256 pulsů. Pokud driver používá mikrokrokování, např. 16x, tak mne čtyři nejméně významné bity čítače vyjadřují mikrokroky a teprve pátý bit celé kroky. Pakliže si z celého čítače vytáhnu jen čtvrtý bit (mění se s kažým půlkrokem) a pátý bit (mění se s každým krokem) mám téměr signály AB, pouze v jiném kódování, na rozdí
4.bit: 0 1 0 1 0 1 0 1 ... atd
5.bit: 0 0 1 1 0 0 1 1 ... atd
pokud několika hradly změním kombinaci 01 na 11, a opačně kombinaci 11 na 01, tak dostávám úplně stejné signály AB, jaké vylézají z optočlenů, pakliže je motor synchronní s řídící logikou. Pokud proti řídící logice zaostává o méně než celý krok, tak podobně jako vpředchozí odpovědi, dostávám stavy sousední. Jakmile ale objevím, že signály AB lezoucí z hradel za čítačem odpovídají negovanému signálu AB lezoucího z optočlenů, znamená to, že jsem právě ztratil krok.
a také se zamysli nad tím, zda jsi správně definoval úlohu, skutečně tě zajímá jen případ, kdy oba motory přestanou být ve fázi ? Tedy diferenciální ztráta kroku mezi dvěma motory ? Není lepší hlídat ztrátu kroku každého jednotlivého motoru samostatně ? Hodilo by se i pro dvě zbývající osy.
řešení které jsem zmínil v předchozí odpovědi, lze použít i pro detekci ztráty kroku samostatně pracujícího krokového motoru. A to tak, že se výstupy AB z optočlenů popsané v předešlé odpovědi, porovnávají s výstupy binárního up/down CMOS čítače, který nasčítává/odčítává pulsy vstupující do driveru krokového motoru. Takový čítač v podstatě udává řídící logikou "žádanou" relativní pozici vůči okamžiku, kdy byl stroj spuštěn. To je ale pro tento účel nezajímavé. Čítač může být jen 8-bitový a tedy přetékat každých 256 pulsů. Pokud driver používá mikrokrokování, např. 16x, tak mne čtyři nejméně významné bity čítače vyjadřují mikrokroky a teprve pátý bit celé kroky. Pakliže si z celého čítače vytáhnu jen čtvrtý bit (mění se s kažým půlkrokem) a pátý bit (mění se s každým krokem) mám téměr signály AB, pouze v jiném kódování, na rozdí
4.bit: 0 1 0 1 0 1 0 1 ... atd
5.bit: 0 0 1 1 0 0 1 1 ... atd
pokud několika hradly změním kombinaci 01 na 11, a opačně kombinaci 11 na 01, tak dostávám úplně stejné signály AB, jaké vylézají z optočlenů, pakliže je motor synchronní s řídící logikou. Pokud proti řídící logice zaostává o méně než celý krok, tak podobně jako vpředchozí odpovědi, dostávám stavy sousední. Jakmile ale objevím, že signály AB lezoucí z hradel za čítačem odpovídají negovanému signálu AB lezoucího z optočlenů, znamená to, že jsem právě ztratil krok.
a ještě přihodím mechanické řešení. Motory můžeš spřáhnout s vůlí, kdy řemen žádné síly nepřenáší s slouží pouze k detekci rozfázování. Při rozfázování motorů dojde k vymezení vůle, ty na to budeš upozorněn, a navíc řemen začne zabírat, což stroj ochrání proti zkřížení. Řešení je následující:
Oba kuličkové šrouby spřáhneš ozubeným řemenem tak, že řemenice A bude s prvním šroubem spojena pevně, zatímco na druhém kuličkovém šroubu bude řemenice B nasazena volně a od šroubu galvanicky oddělená teflonovým ložiskem (nebude zabírat, bude se protáčet). Na druhý šroub nasadíš ještě jednu řemenici C, která bude se šroubem spojena pevně, ale nebude na ní nasazený žádný řemen. V řemenici B vyvrtáš otvor o průměru např. 10 mm, v řemenici C vyvrtáš souosý otvor o průměru 5 mm a nabušíš do něj kolík, který prochází otvorem řemenice B. Kolík prochází otvorem řemenice B a má po obou stranách vůli několik mm.
Dokud se oba motory pohybují synchronně, je kolík volně uprostřed díry a řemen nezabírá (není zatížen). Jakmile jeden z motorů ztratí korok, kolík se dotkne stěny, což můžeš vyhodnotit galvanicky (jako sepnutý kontakt) a navíc řemen začne přenášet moment z prvního motoru na druhý, takže tvůj stroj bude ušetřen destrukce sebe sama
Oba kuličkové šrouby spřáhneš ozubeným řemenem tak, že řemenice A bude s prvním šroubem spojena pevně, zatímco na druhém kuličkovém šroubu bude řemenice B nasazena volně a od šroubu galvanicky oddělená teflonovým ložiskem (nebude zabírat, bude se protáčet). Na druhý šroub nasadíš ještě jednu řemenici C, která bude se šroubem spojena pevně, ale nebude na ní nasazený žádný řemen. V řemenici B vyvrtáš otvor o průměru např. 10 mm, v řemenici C vyvrtáš souosý otvor o průměru 5 mm a nabušíš do něj kolík, který prochází otvorem řemenice B. Kolík prochází otvorem řemenice B a má po obou stranách vůli několik mm.
Dokud se oba motory pohybují synchronně, je kolík volně uprostřed díry a řemen nezabírá (není zatížen). Jakmile jeden z motorů ztratí korok, kolík se dotkne stěny, což můžeš vyhodnotit galvanicky (jako sepnutý kontakt) a navíc řemen začne přenášet moment z prvního motoru na druhý, takže tvůj stroj bude ušetřen destrukce sebe sama
Hm. Servomotor je totéž, co použití enkodéru, tedy zavedení zpětné vazby (ale krokáče už tazatel má, takže přidání enkodéru vyjde levněji než přestavba na serva).robokop píše:Napr. Kvalitne udelana mechanika, spravne dimenze pohonu. Pouziti servomotoru.
A správně dimenzovaná mechanika je sice fajn, ale tazatel předpokládám chce řešit havarijní stavy, a ne nějakou průběžnou ztrátu kroku. Takže mu jde o to realizovat něco jako záchrannou brzdu nebo bezpečnostní ventil (upadlý drát, porucha motoru, uvolnění spojky, odpálený driver atd.).
I raketoplán používá (používal) dodatečné bezpečnostní prvky, a to byl jistě dimenzován správně a z nejlepších/nejdražších komponent.
- robokop
- Site Admin
- Příspěvky: 22432
- Registrován: 10. 7. 2006, 12:12
- Bydliště: Praha
- Kontaktovat uživatele:
Servo a krokac s encoderem muze vypadat skoro stejne ale stejne to neni
Uz prave proto ze servo vnitrne umi hlidat veci jako ztratu polohy prekroceni momentu atd...
Tedy je to vyresene prave timto a systemoveji,
Ani servo vsak nevyresi zverstva jako pouziti zavitovych tyci, zkroucenou masinu a podobne veci ktere jsou duvodem ztrat kroku
Uz prave proto ze servo vnitrne umi hlidat veci jako ztratu polohy prekroceni momentu atd...
Tedy je to vyresene prave timto a systemoveji,
Ani servo vsak nevyresi zverstva jako pouziti zavitovych tyci, zkroucenou masinu a podobne veci ktere jsou duvodem ztrat kroku
Vsechna prava na chyby vyhrazena (E)