Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

Encoder használata

Indította gaben, 2024 április 09, 16:29

Előző téma - Következő téma

s7manbs8

Na mindegy én értem, amit mondani akartam, csak most jöttem rá, mire is jó az, a beírásodból. Most már teszek is az elektronikáimra annak is bemenetet, nem baj, ha ott lesz.

x4rhew5r3

Egy kicsit bővíteném az eddig elhangzottakat.
Az enkóder A és B jelét úgy is lehet értelmezni, hogy az egy 2 bites számláló. De nem a szokásos bináris számláló szerint számol, hanem az un. Gray kód szerint. Ennek a kódolásnak az a lényege, hogy két szomszédos állás (állapot) között csak az egyik bit változik, tehát nincs olyan átmenet, ahol egyszerre változna mind a két bit. Ez azért jó, mert nincs határozatlan átmenet két állapot között. Ezt a tulajdonságot hibavédelemre is lehet használni.
Ha előre forog a motor, akkor a számolási sorrend: 0-1-3-2..., míg ha hátra forog, akkor 0-2-3-1. A vezérlő felől megközelítve: Ha pl. 3 után 2-es jön, akkor előre forog, ha 1-es jön, akkor hátra forog a motor.
Az index jel a lehetséges 4 állapot közül mindig ugyan abban az állapotban kel hogy jöjjön, például a 0-ás állapotban. Ezt az enkóder elektronika biztosítja. Ha a vezérlő úgy látja, hogy az index jel nem a 0-ás állapotbon jött, akkor az hiba.  
További hibaellenőrzés lehet, hogy a vezérlő bekapcsolás után megjegyzi, hogy hol jött az első index jel. Legyen az enkóderünk 2000 impulzus/fordulat felbontású. Ha működés közben az index nem a 2000 többszörösének megfelelő számláló állásnál jön, akkor az hiba, mert vagy kimaradt néhány impulzus, vagy zavar következtében többet számolt a vezérlő.

000000000

A Gray kódot nem keverném ide, az más...
Az A, B csatornás inkrementális jelalak lényege a csatornák közötti 90 fokos fázis eltolás, EMIATT nincs egyidejű szintváltozás. A négyszögjelek periódikus váltakozását matematikailag így egy sinus, cosinus függvénypáros X tengely metszésmetszépontjaival is lehet jellemezni, sőt bizonyos encoderek eleve ilyen analóg jelet adnak ki az A-B csatornákon, és nem négyszögjelet.

bvadkrcds

Köszi, Sneci!
Annak van értelme, ha a Gray-t átalakítom binárisra… mielőtt a proci foglalkozna vele. Egy kis ciklusidőnyerés végett. Még nem gondoltam át teljesen.  Tudom, hogy elegánsabb programmal megoldani a dolgokat, de néha, nem kéne terhelni a procit. ARM-el macerás, mert alig van hozzá anyag. Megpróbálom az AVR kódrészletekkel… az elv ugyanaz… átírom hátha jó lesz.  
http://users.senet.com.au/~dwsmith/_borders/Graycode.gif" border=0>

x4rhew5r3

Vitatkozom veled, mert itt az optikai inkrementális enkóder volt a téma, és az Gray kódot ad ki (két szomszéd Hamming távolsága 1).
Digitális jelfeldolgozásnál meg ez a kézenfekvő modell, nem a trigonometrikus.

x4rhew5r3

Nekem úgy tűnik, nem sok előny származik egy Gary-Bin átalakításból, de lehetséges. A forgásirány felderítéséhez az előző állapot vizsgálata szükséges, az meg mindegy hogy Gray vagy Bin szerint kódolt. De érdemes a gondolattal foglalkozni, hátha találsz egy olyan algoritmust, ami Bin-ben hatékonyabb.
 
A gond a processzor oldaláról úgy jelentkezik, hogy interrupt rutin végzi a feldolgozást, és ez erősen lekorlátozza a maximális impulzus frekvenciát. Ezért jó az a nyamvadt xmega, mert hardverben benne van a quadrature dekóder.

000000000

Én meg az állítom, hogy az A-B csatornás encoder amiatt ad ki olyan jeleket, amit az előbb írtam, és nem a Gray kódolása miatt.
Ugyanis ha megnézed ezt az igazi Gray kód, tárcsát, és a hozzátartozó igazságtáblázatot láthatod, hogy csak az AB csatornás encoder 1, 2 helyiértékű csatornája (ha így fogod fel, ami már eleve kérdéses szemlélet) periodicitása felborul, és ne egyezik meg az igazi Gray kódolással.
http://cnctar.hobbycnc.hu/Tibor45/gray_code.png" border=0>

x4rhew5r3

Ellenőrizd légy szíves, hogy mit ad ki binárisan az itt használatos optikai inkrementális enkóder. Azt hiszem, hogy a névazonosság zavar meg Téged. Nem a Gray kódtárcsáról beszélünk, ami több soros, hanem az egy soros kódtárcsáról, amin 90 fokkal eltolt 2 db érzékelő van.

000000000

"..amin 90 fokkal eltolt.."  
Na látod ez a lényeg, ez a matematikai modell és logikai kódolás alapja, és nem a Gray kód, hidd el, nem szabad idekeverni.
AB csatornás encoder kimeneti jelei egyirányú forgáskor:
00, 01, 11, 10, (új ciklus), 00, 01, 11, 10, ...
Gray kódolásnál:
00, 01, 11, 10, (új ciklus), 10, 11, 01, 00, ...
Én ezt a két sort NEM látom azonosnak, csak vannak benne azonos részek.  
Azaz továbbra is azt mondom, ne zavarjuk össze a képet a Gray kóddal, a kimenetek logikai szintváltozásának törvényszerűségei egyértelműen a 90 fokos fázis eltolásból adódnak. A szakirodalomban ezt a "quadrature encoder" elmélet alapján taglalják.

x4rhew5r3

Szerintem elbeszélünk egymás mellett...
Te egy hibás példát hozol egy 4 bites Gray tárcsáról, mert ha a másik két bitet nézed, akkor rájössz hogy ugyan az a 0-1-3-2 szekvencia ismétlődik. A Gray kód az Gray kód itt is, ott is...
Én úgy látom, a képet (itt és most a felvetett kérdésre) a felesleges elméleti hitvitával zavarnánk össze.

000000000

Bocs, de én meg azt mondom, a Gray kódot azért alkalmazzák, hogy egy nagyobb abszolut (vagy szakaszosan abszolut) szám digitalizálása során elkerüljék azon pontokat, amikor egyidejűleg sok (pl. akár 10 csatornán egy 1024-es felbontás esetén) van jelváltozás. Ezt elsősorban az abszolut útmérőelemek mechanikai valós gyártási hibái miatt teszik, mivel adott felbontás felett nagyon megdrágítaná a legyártást, és nem is lehet, csak valamilyen tűrésmező szélességben bármit is gyártani. Így nem fordulhat elő téves bit kombináció a Gray kódnál, mivel ott csak egy csatornán van jelváltozás egy időpontban.
A jó öreg AB csatornás encoder pedig eleve relatív mérőelem, és nem abaszolut, kettő csatornája van csak, és muszály eltolni ezek miatt a fázist mert egyébként nem lehet irányt megállapítani. Egyirányú méréshez ugyanis egy csatorna is elég lenne.
 
Soha nem láttam még AB csatornás négyszög kimenetű encoder taglalásakor a Gray kód idekeverését, pedig elég sok szakiradalmat olvastam erről az elmúlt 30 év alatt.

bvadkrcds

Szia Tibor45!
 
http://en.wikipedia.org/wiki/Rotary_encoder" TARGET=_fnew>Itt egy link!
Most nincs sok időm írni… Ezt nézd meg légy szíves.
Később írok…

x4rhew5r3

De attól még az A és B Gray kódolású, és itt is előnyös az a tulajdonsága, hogy nincsenek hazárd veszélyes kettős átmenetek. Ezt a kódot természetesen nem a Gray tárcsához találták ki, csupán alkalmazzák itt is, mint sok más helyen.
De tényleg felesleges erről vitázni...

000000000

Azt hiszem szemlélet beli különbség van köztünk. Nekem egy kétcsatornás relatív digitális pozíció mérőeszköznél nem a Gray kód jut az eszembe elsődlegesen, hanem a sin-cos analóg függvényelmélet digitalizálási szabályai alapján képzett, és eredményül kapott fázis eltolt két jel (quadrature encoding).  
A klasszikus Gray kódolást ahogyan ezt már írtam a sokcsatornás (és nem csak 2) abszolút útmérőeszközökhöz sokkal inkább kötném, de ott is csak mint mellékes dolog a biztonságosabb adatátviteli segédleteként, és nem a működési elvük lényegeként. Itt van talán a fő nézőponti különbség köztünk.
De azt hiszem túl is tárgyaltuk ezt a témát, és ami a lényeg, sikerült szakmai síkon tartani a vitát. Persze Téged már ismerve ez nem is volt nehéz.

bvadkrcds

Szia, Sneci!
 
Találtam egy pár megoldást hardveres dekódolásra. Két bit-et kell figyelni, ami csak az irányt jelzi CW-CCW. Így nem kell szoftveresen dekódolni… csak a számlálót kell irányítani. Holnap megyek a Lomex-hez, alkatrészekért. Kipróbálom a dolgokat…  
 
http://profmason.com/wp-content/uploads/2009/01/100_1876.mov" TARGET=_fnew>Video