Fórum témák

» Több friss téma
Fórum » Rotary encoder, inkrementális jeladó
Lapozás: OK   1 / 11
(#) Norberto hozzászólása Dec 30, 2005 /
 
Sziasztok!


Vettem minap egy ilyen csúnya nevű kézikészüléket. Típusa: (Bourns) ECW1J-B24BC0024

Valaki foglalkozott már komolyabban Rotary encoder-ek bekötésével, működésével? Ezt a majdani erősítőmhöz szerváltam, és még nem igazán jöttem rá a megoldásra. Majd egy PIC-hez szeretném hozzávarázsolni, de egyelőre a működését szeretném elsajátítani.
Ha valaki tud a témábaillő hozzászólást ontani magából, akkor az bátorkodjon az ötletet/tudását ide is bevésni a fórumba. Tehát hogyan is működik ez a csúnya nevű szerkezet? Melyik lábátn mikor kell figyelni a jelváltozást és hogyan? Ha nincs belső fesz. forrása (sem külsőnek lehetőség), akkor hogy a túróba adhat ki négyszögjelet, ahogy az adatlapján is rajta van?

Előre is köszönöm a segítségeket!
(#) Konya válasza Norberto hozzászólására (») Dec 30, 2005 / 4
 
Az avr.tavir.hu oldalon található Bascom könyv 17. fejezetében találsz ezekről az enkóderekről részletes leírást. Igaz nem a PIC-ekhez van, de a működése megérthető
(#) Norberto válasza Konya hozzászólására (») Dec 30, 2005 /
 
Köszi szépen, gyors voltál, és úgy látom, ott minden megvan, amit szerettem volna tudni
(#) majorblink hozzászólása Dec 14, 2006 /
 
Hol lehet ilyesmit kapni? Olyanra gondolok, ami egy encoder tárcsából és egy érzékelőböl áll. Vagy milyen eszközben lehet ilyet találni? Valamilyen nyomtatóban van ilyen? Köszi ha valaki tud segíteni.
(#) Báddzsó válasza majorblink hozzászólására (») Dec 14, 2006 /
 
golyós egerekben találsz ilyet, ráadásul nem is egyet hanem 2őt.
(#) majorblink válasza Báddzsó hozzászólására (») Dec 14, 2006 /
 
Igen, azt tudom. De nekem nagyobb felbontású kellen, olyan ami motorokhoz van. KB. 200 osztás
(#) pbalazs válasza majorblink hozzászólására (») Dec 14, 2006 /
 
http://www.lomex.hu/
http://www.mgb.hu/piher_ci11.html#up

Ezek mechanikusak, nem optikai.
A ráírt érték egyszeres dekódolás esetén igaz, ezt meg lehet négyszerezni, ha mindkét lábon minden élváltást figyelsz és mindig megvizsgálod a másik láb állapotát.
(#) Konya hozzászólása Dec 14, 2006 /
 
A hp3420-as nyomtatóban van ilyen, de gondolom a többi hasonló szériában is ilyen van. Sajnos csak az egyik forgásérzékelő, a másik a fej elmozdulását méri.

Láttam még a conradnál ilyet, elég borsos áron.
(#) majorblink válasza Konya hozzászólására (») Dec 15, 2006 /
 
Ez egy sima festékpatronos nyomtató? Mit értesz azalatt, hogy a hasonló szériákban? Mert nekem van egy rossz Lexmark festékkazettás nyomtatóm, de abban nem volt.
(#) Konya válasza majorblink hozzászólására (») Dec 15, 2006 /
 
Igen sima festékpatronos (a festékkazettán van a nyomtatófej is)!
A hasonló széria alatt azt értettem, hogy az olyan nyomtatóban ami hasonlóan néz ki.
Hasonló nyomtatókat gyártottak különböző paraméterekkel, gondolom a belső kialakítás hasonló.

kep.jpg
    
(#) majorblink válasza Konya hozzászólására (») Dec 15, 2006 /
 
Köszönöm szépen a segítséget. Szétnézek az ilyen licitálós honlapokon ott szoktak lenni ilyen nyomtatók fillérekért. Megnéznéd nekem még, hogy csak úgy ránézésre mennyi beosztás van az encoder tárcsáján ill. mekkora kb az átmérője. Köszönöm előre is.
(#) AtomCorporationINC. válasza majorblink hozzászólására (») Feb 16, 2008 /
 
Hali . Atéma engem is érdekel .Szétkaptam egy nyomtatót , csináltam pár képet. Az optovilla valami speckó lehet mert az encoderen nagyon sok a beosztás.
(#) AtomCorporationINC. válasza AtomCorporationINC. hozzászólására (») Feb 16, 2008 /
 
Van még egy kép ha megakarod számolni a beosztásokat a két szám között. A tárcsán 12 szám van az kb: 1200 beosztás.
(#) zsuscsinyo hozzászólása Máj 11, 2008 /
 
Sziasztok az a kérdésem volna hogy lehetséges e ezzel a Rotary encoder-rel egy fel le számlálót irányítani mondjuk egy CD40193-ast? mondjuk ebbe a kapcsolásba hogy lehetne behelyettesíteni? A választ előre is köszönöm!
(#) Gartai válasza Norberto hozzászólására (») Máj 11, 2008 /
 
Hello! Én foglalkoztam régebben rotay encoder vezérelte pozíció szabályzással, eleg komplikált tud lenni. Az alap az incrementális jeladó, A, B ( esetleg Z ) kimenet ezek 90 fokos fáziseltérésű négyszogjelet adnak, a két jel fáziskülömbsége alapján dekódolható a forgásirány és persze számolható a pozíció. Legegyszerúbb gyakorlati példa a golyós egér. Rádiótechnika kb 10 éve foglalkozott vele ,volt rajz irány dekóderről is. A Z kimenet egy meghatározott szöghelyzetben aktív csak ( zéró jelzés ).
Bármire szeretnéd használni processzoros vezérlés nélkül nem hiszem hogy megoldható. Egyéb infókat az elvekről pl. az OMRON honlapján találhatsz.

Üdv Gartai
(#) 3dguru hozzászólása Szept 25, 2008 /
 
Elég kézenfekvő lenne encódert készíteni egy lézeres egérből. Mondjuk egy tengelyre rakunk egy siklapot azt forgatjuk és ez egér pedig egy helyben áll. Ezt brutális kis szögelfordulás mérésére is alkalmas lehet hiszen egy lézeres egér felbontása akár 1000 dpi is lehet azaz inchenként (2,54 cm) 1000 pont. Ez az jelenti hogy ha 5 cm sugarú körön nézve a felbontás 1/34 fok. Ez persze nagyob sugárral és jobb felbontású egérrel növelhető. Nem is nagyon drága egy lézeres egér kb 5000 Ft. Csak egy szovtvert kéne írni hozzá... Nem csinált valaki már hasonlót?
(#) kobold válasza 3dguru hozzászólására (») Szept 25, 2008 /
 
Optikai (nem lézeres) egérrel pont ezen szórakoztam otthon, valamikor majd folytatom. Működőképes a dolog, egy fehér műanyag korong fut előtte, csak nem lineáris valamiért a mérés. 10-20 fordulat először az egyik, majd a másik irányba, és nem nullába áll vissza; hol több impulzust kapok, hol kevesebbet. Szerintem a felület minőségével van baja, és lehet, hogy kevesebb képváltozást érzékel a különböző irányokba, sebességeknél.
(#) 3dguru válasza kobold hozzászólására (») Szept 25, 2008 /
 
Vélhetően minél nagyobb a felbontás annál kisebb a hiba azaz a nemlienaritás , azonkívül a lézeres egér felbontása szerintem egy nagyságrenddel jóbb mint az optikai. Azonkivül a tengely kotyogása is bejátszhat. Szerinetm egy kimustrált wincsi elég jó erre mert az elég precíz cucc. A progidat esetleg megosztanád velem?
(#) kobold válasza 3dguru hozzászólására (») Szept 25, 2008 /
 
Egy egyszerű VB-s progi csak, mivel egérből van, annak is használom, MouseMove eseménynél állandóan frissítem az X értéket, a kereket pedig egyelőre kézzel hajtom. Ha érdekel, előkeresem, amikor hazamegyek (már ma otthon kellett volna lennem, csak nem sikerült).
(#) Medve válasza kobold hozzászólására (») Szept 25, 2008 /
 
Nem ott volt a gond, hogy a szoftver a különböző sebességekre is különböző lépésszámmal válaszolt?
(#) pako hozzászólása Ápr 30, 2009 /
 
Üdvözletem!
Van egy ugyanojan encoderem, amit AtomCorporationINC mutatott az előző oldalon. Az encodernek 4 lába van: gnd, out1, out2, Vdd. Tápnak 3 voltot kap gyárilag. Ezt 5V-os körben szeretném felhasználni.

A kérdésem az lenne, hogy elviseli-e az 5V-ot, vagy mennyek biztosra szintillesztéssel?

Alldatasheet.com-ot átnéztem, a description-nál ezekkel a kulcsszavakkal: rotary encoder, optical encoder; de még csak hasonlót sem találtam, ami alapján kiindulhatnák.
(#) djusee hozzászólása Dec 4, 2009 /
 
Hello. Hozzáértök segitségét várnam. Nem nagyon tudok angolul, érdekelne hogy mit takarnak pontosan az enkodereknél azok a jelzések hogy pl.: 400ppr , 1600cpr, és nekem van egy ROD426 os enkoderem amelyiken ez van feltüntetve hogy L/Umdr. 1024 . Ez mit akarna jelenteni? Köszönöm
(#) uli hozzászólása Jan 14, 2010 /
 
Sziasztok!
Kicsit felfrissíteném ezt a témát egy kérdéssel.
Lassan készülő erősítőmhöz szeretnék ilyen módon hangerőt szabályozni.
Amit eddig kilogikáztam:
Találtam egy RT újságban egy kapcsolást. Egy játék, ami megmutatja ki nyomta meg hamarabb a gombot. (egérgörgőhöz c. kép)
Nomármost ha a kapcsolókat az enkóder kivezetéseivel helyettesítem, valamint ha a a végén a LEDeket egy egy tranzisztorral, akkor már jó vagyok.
A tranzisztorokat rákötném erre. Vagyis az itteni kapcsolók helyére.

Egy kérdésem van még: A logikai ICvel felépített kapcsolás mindaddig világítva tartja a LEDeket, míg valamelyik kappcsoló nyomva van. A mi esetünkben a tranzisztort. A DS IC pedig ha nyomva tartod a gombot, úgy működik, hogy elkezdi folyamatosan levenni a hangerőt. Mint a TV-n, ha nyomva tartod a gombot.
Ezzel kapcsolatban annyit szeretnék kérdezni, az enkóder ha beállt egy pozícióba, akkor valamelyik kimenetén folyamatosan lesz nekem jel? Mert ha igen, akkor az nem jó hír.
Remélem érthető volam, és használható az ötletem.
uli
(#) Medve válasza uli hozzászólására (») Jan 15, 2010 /
 
-Hello, az első kérdésedet nem látom....
-Az enkóderek többsége, (nem merem írni, hogy mindegyik) az arretálódáskor nem ad kontaktust. Ha netán mégis igy lenne, két kondenzátorral vagy monofloppal) ez már nem jelenthet problémát.
(#) atideath hozzászólása Jún 15, 2010 /
 
Hali

Ha esetleg valaki tud segíteni nekem. Vettem egy EC12E tipusú encodert. A következő függvénnyel vizsgálom hogy elfordult-e és ha igen merre:

  1. void rotary_encoder()
  2. {
  3.                         static unsigned char prevState=0xFF;
  4.                         unsigned char state = ENC_A | ENC_B <<1; //Get value 0-3 from rotary encoder bits
  5.                         if(prevState != 0xFF)
  6.                         {
  7.                                 if(prevState == 0b00 && state == 0b01 //Turn counterclockwise
  8.                                 || prevState == 0b01 && state == 0b11
  9.                                 || prevState == 0b11 && state == 0b10
  10.                                 || prevState == 0b10 && state == 0b00)
  11.                                 {
  12.                                         JELOLO2++;
  13.                                 }
  14.          
  15.                                 else if(prevState == 0b00 && state == 0b10 //Turn clockwise
  16.                                 || prevState == 0b10 && state == 0b11
  17.                                 || prevState == 0b11 && state == 0b01
  18.                                 || prevState == 0b01 && state == 0b00)
  19.                                 {              
  20.                                         JELOLO2--;
  21.                                 }
  22.                         }
  23.                         prevState = state; //Save previous port b state.
  24.                        
  25. }


A problémám hogy hibásan jelez vissza. Van amikor a Jelolo-t 4-el növeli valamikor csak 2-vel meg mikor mennyivel. Tud ebben valaki segíteni? A main fv a következő:

  1. void main(void)
  2. {
  3. while(1)
  4. {
  5. rotary_encoder();
  6. }
  7. }
(#) El_Pinyo válasza atideath hozzászólására (») Jún 15, 2010 /
 
Azért jelez össze-vissza, mert az encoder kapcsoló érintkezői prellegnek. A megoldás a pergésmentesítés lesz. Vagy elvégzed szoftverből, vagy hardveresen oldod meg. Szerintem itt egyszerűbb lenne hardveresen megoldani. Konkrétan az encoder kimenetein levő felhúzó ellenállásokkal sorba a GND felé be kell illeszteni egy-egy megfelelő értékű kondenzátort, valamint a mikrovezérlő olyan bemeneteit kell használni, amelyek schmitt-triggert tartalamznak. A kondenzátor értéke a felhúzó ellenállástól, valamint a prell időtartamától függ. Szkóp hiányában ezt legjobb kikísérletezni.
(#) vilmosd válasza atideath hozzászólására (») Jún 15, 2010 /
 
Hali
A MC AN696 ismertet egy jo megoldast az enkoder szuresere. Ket HC14 kapu, es ket D flip-flop megoldja a szurest. van hozza SW minta is.
Udv Vili
(#) efiscp hozzászólása Aug 1, 2010 /
 
Üdv!

Pár napja szereztem két EC-11-es enkódert (Lomexben a legolcsóbb fajta). Az alábbi kódot írtam:
  1. int direction()
  2. {
  3.  int direction=0;
  4.  encoder_transition=input(PIN_A7);                      //beolvassa a B jelet
  5.  encoder_last_state=encoder_state;                      //elmenti az A jel előző állapotát
  6.  encoder_state=input(PIN_A6);                           //beolvassa az új A jelet
  7.  if (encoder_state!=encoder_last_state)                 //ha történt változás A-ban
  8.   {
  9.    if (((encoder_last_state==1)&&(encoder_state==0)&&(encoder_transition==1))||  //ha A 1-ből 0-ba váltott és B=1
  10.          ((encoder_last_state==0)&&(encoder_state==1)&&(encoder_transition==0))) //vagy A 0->1 és B=0
  11.     direction=1;                                                                 //jobbra
  12.    else if (((encoder_last_state==1)&&(encoder_state==0)&&(encoder_transition==0))||  //fenti feltétel inverze
  13.          ((encoder_last_state==0)&&(encoder_state==1)&&(encoder_transition==1)))
  14.     direction=-1;                                                                    //balra
  15.   }
  16.  else direction=0;                                       //egyébként marad 0
  17.  return direction;                                       //visszaadja az irányt
  18. }

Eredmény: az egyik enkóderrel egyáltalán nem működik, a másikkal lassú tekeréssel jól megy, de egyirányú gyors tekerés esetén előre-vissza lépked (kijelzőn menüben lehet vele navigálni).
Ha valaki tud valami építő jellegű dolgot tanácsolni, hogy hogy kéne normális működésre bírni, az ne habozzon.
(#) iamrob válasza efiscp hozzászólására (») Aug 1, 2010 /
 
Szia!

A kódot lehetne rövidebbre is írni. A külső if-ben megvizsgálod, hogy state!=last_state, így belül már fölösleges mindkettőre vizsgálni: last_state==1 && state==0 közül az egyik rész bőven elgendő, szerintem ennyire nem intelligens a fordító. Persze ettől még nem lesz jó.
A kérdés az, hogy a "direction" függvényt mikor és hogyan hívod meg. A legjobb az lenne, ha az egyik jelet megszakítással figyelnéd és azonnal feldolgoznád a két bemenetet. Meg szerintem nem is érdemes mindkét élet figyelni.
Szóval szerintem az a gond, hogy az élhez képest későn hívod meg a függvényt és így nem korrekt a kiértékelés.
(#) efiscp válasza iamrob hozzászólására (») Aug 1, 2010 /
 
Kösz a választ, mindjárt megpróbálom átírni. A direction()-t a menü hívja meg, amikor megvizsgálja, hogy kell e lapoznia:
  1. while (menulevel!=0)
  2.  {
  3.   menupage=menupage+direction();
  4. ...

Tehát jó eséllyel igazad lesz.
Következő: »»   1 / 11
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem