Tengelyen léptetés közös végállás logikával hogyan?

Van egy arduino uno-ba illeszthető 4 léptető motor vezérlésére képes lapom. Az érdekessége az, hogy mindegyik tengely esetében a kétoldali végálláskapcsolók direktben össze vannak kötve a nyomtatott áramkörön. Tehát hiába van külön tüske az X+ és az X- végállás észlelésére, a szoftver felé mindkét végállás esetén egyetlen bit információ jut csak el.

Eddig a léptető szoftverem tudta, hogy melyik végénél értem el a tengelyt, és így csak az azirányú lépéseket nem adta ki, a másik irányú lépéseket engedélyezte. Ez így kerek, jól is működik.

De hogyan tudom a közösen kezelt végállást korrekten és megbízhatóan kezelni?

Eddig a legjobb ötletem, hogy végállás esetén az utolsó ismert pozíció vagy lépésirány alapján megsaccolom, hogy melyik végállásban van a kettő közül. De ezt nem érzem korrektnek. Például áramszünet esetén, vagy csak elinduláskor, ha a végállás jelez, nem ismerek lépéselőzményeket. Persze minden lépés után el is tárolhatnám az utolsó ismert pozíciót, de - tudtommal - ez olyan mennyiségű írást eredményezne a FLASH memóriában, amivel már hamar tönkre menne.

Tehát mi a korrekt, és teljesen megbízható végállás észlelés logikája, ha a két végálláskapcsoló egy közös jelet küld?

Hozzászólások

Megnézed, most végálláson vagy-e. Ha igen, akkor bajban vagy, megpróbálod kis árammal léptetni az egyik irányba, s ha lelép végállásról, nyertél. Ha nem, akkor ellépte magát, mehetsz a másik irányba nagyobb árammal.

Ha eleve nem voltál végálláson, könnyű dolgod van. Elindulsz valamerre - pl. negatív irányba -, s hajtod, amíg végállásra ér, de azért limitálod a teljes úthossznál kicsit nagyobb lépésszámban. Amikor végállásra értél, az a nulla. Utána számolod a lépéseket, esetleg kalibrálod úgy, hogy most felmész a felső végállásra, hogy ismerd az úthosszat.

Valahogy így csinálnám, illetve hasonlóképp csináljuk, van pár léptetőmotor a gépeinkben. :) Persze megoldás a pozíció jeladó, illetve az is, ha beáldozol még egy bitet a másik végállásnak.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Kis árammal ugyan nem tudok léptetni, mivel csak 1 bitem van, hogy lépjen, vagy ne lépjen. De elvárható az egy végálláskapcsolótól, hogy a végállás után még egy lépést elviseljen? Mert ez esetben rendes árammal is léptethetek, és tényleg kiderül, hogy melyik végénél vagyok.

Jó ötlet, köszönöm!

Kis árammal ugyan nem tudok léptetni, mivel csak 1 bitem van, hogy lépjen, vagy ne lépjen.

Azt hittem, a teljes vezérlést te csinálod, mert ha így lenne, akkor azt csinálsz, amit akarsz, amit a hardware megenged.

elvárható az egy végálláskapcsolótól, hogy a végállás után még egy lépést elviseljen?

Az talán erős kifejezés, hogy elvárható, konstrukciótól függ. Egy optikai végálláskapcsoló esetén a végállás jelzés után még akár 50 lépésed is lehet addig, amíg felütközik a mechanika, szétszakad egy menet, vagy csak megszorul és ellépi magát. Attól függ, miről beszélünk. Gondolj egy léptetőmotor által hajtott menetes orsóra, amelyen van egy menetes „anya”, s visz magával lineárisan egy szánt, amelyen van egy fény kitakarására szolgáló zászlócska, amely kitakarja majd a végállás optocsatolóban a fényt. Egy ilyen konstrukcióban a végállás jelzés után még sok lépésed lehet a fizikai koppanásig, elakadásig.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Gondolom valami olyan "shield"-et vett, ami ilyesmi modulokat fogad. Megadod neki a lepesmeretet, rakotod a motort, beallitod egy potival a maximalis aramot, es innentol 2 pinen tudod mozgatni: egyik az irany, hogy merre lepjen, masik meg a lepes, aminel felfuto vagy lefuto elre lep. Van egy csomo hasonlo.

A strange game. The only winning move is not to play. How about a nice game of chess?

Igen, így korlátokba ütközik az ember hamar. Ezekkel lehet kísérletezni, tanulni, de profi berendezést nem az Aliexpress-ről kell összelegózni, hanem meg kell tervezni az igények alapján. Persze az is teljesen legitim, ha valakinek van software-es affinitása, az elektronika nem erőssége, akkor vegyen kész modulokat, abból talán nem lesz nagy baj és jó eséllyel még működni is fog. Viszont lesznek korlátjai.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Igen, az Arduino pont errol szol, hogy megfelelo modulokbol osszeraksz valamit gyorsan, mind hardware, mind software oldalon (letoltod/include-olod a megfelelo drivert, es hasznalod). Akar hobbira, ahol nem gond, akar prototipushoz, probalgatni. Extrem esetben kis sorozatos celeszkozre is jo lehet, ha nem szamit.

Amugy a konkret stepper driver nem annyira gagyi, mint aminek latszik. Ha nem teljes vagy fel lepeseket kersz, hanem kisebbre allitod, akar 1/32-ed lepeseket szeretnel, szepen PWM-ezi a koztes ertekeket is, van benne aramkorlat (nem olod meg a motort), kibir mindenfele feszultsegeket. Es eleg jo ar/ertek aranya van oda, ahol nem szamit. Persze nagy hatranya, hogy ha akar a sebesseg, akar a mechanika akadasa miatt lepest teveszt, onnantol megszivtad, nincs visszacsatolas.

A strange game. The only winning move is not to play. How about a nice game of chess?

Nem a kontrollerrel volt bajom, hanem a modullal. A trimmer potméterrel való áram állítás lehetne egy MCU PWM vagy D/A kimenete. Amit mondasz, valóban egy érdekes problémakör. A léptetőmotor egy szinkrongép, amelynek van reluktancia nyomatéka is. Ha microstep-re vezérled, halk is lesz, lényegében meg tudod csinálni a közel szinuszos mágneses teret, viszont a mágneses térnek húznia kell a forgórészt, hogy legyen nyomatéka. Ha ellépi magát, kiesik a szinkronból, akkor baj van, mert álló helyzetből a nagy tömegű forgórész, a rákapcsolódó mechanika tehetetlenségének és a forgás közbeni nyomatéknak az összege túl nagy ahhoz, hogy egyetlen lépés alatt újra szinkron fordulatszámra gyorsuljon, tehát onnantól csak rázkódni fog nagy zajjal az egész. Újra csak finoman szabad gyorsítani, de ahhoz nem árt valami visszacsatolás, pozíció jeladó, vagy másik lehetőség, hogy annyira kis szöggyorsulással élesztjük ezt a rendszert fel, hogy biztosak lehetünk abban, nem lépi el magát. Illetve esetleg mérhető a tekercsek elengedése mellett a bennük indukált feszültség vagy rövidzárásuk mellett az áram, de ez már mélyebb elméleti analízist és méréseket, kísérletezést követel meg.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Pontosan ez a helyzet. Megpróbáltam magam összeállítani a vezérlést, de látszik, hogy panelt kellene terveznem, maratnom, forrasztgatnom ... ez messze nem az erősségem. Inkább elfogadom a korlátokat, de lehetőleg minél kevesebb hardveres tennivalóm legyen, és a szoftverre fókuszálhassak.

Masok mar joreszt leirtak a lenyeget. A valosagban a vegallas valoban inkabb arra valo, hogy home-nal tudd a szeleit, es utana figyel a gep magara. Persze a home-olas sorrendjere kell figyelni, elobb huzd ki a szerszamot a munkadarabodbol, es csak utana mozgasd az X tengelyt, kulonben megserulhet a munkadarab es a szerszam is (ha bekapcsolaskor mar be van fogva). A nagyobb gepeken szokott lenni veszvegallas is, ami a sima vegallaskapcsolok utan van. Errol nem baj, ha csak a szerelo tudja lerangatni a tengelyt, es tenyleg azert van, hogy a mechanika ne seruljon. A normal mukodes mindig az, hogy nem megyunk vegallasra.

Ha a gepi koordinatarendszer kenyelmetlen, arra vannak a valtasok (G10, G53, G92 es kornyeke), igy ki tudod nullazni a gepet a megfelelo helyen (a munkadarab megfelelo pontjanal), es innentol nem erdekes, hogy a gep nullaja fel meterre van.

Vegallaskapcsolobol van sima mikrokapcsolo, optikai, meg induktiv is. Nagyobbakban az induktivot jobban szeretik, mert nincs benne hiszterezis (mikrokapcsolo mashol enged el, mint ahol bekapcsol), es nem baj, ha koszolodik (optikai nem birja, persze nagyobb gepen teheted az asztal ala, ahol nem eri semmi). Amugy amit locsemege irt, hogy a vegallaskapcsolo utan is mehetsz tovabb mechanikailag, azt a "gorgos" mikrokapcsolo is tudja. Kell valami pocok a szanra, ami benyomja, es a gorgo elott elhalad.

Firmware oldalon meg ha Arduinozol, van a GRBL project, az ATMEGA328P-n teljesen jol fut, van benne valami egyszerubb G code interpreter, meg irtak hozza PC oldalt is (raadasul multiplatform). Ha 3D nyomtato lesz belole, arra is van hasonlo, de ahhoz nem ertek.

A strange game. The only winning move is not to play. How about a nice game of chess?