[elektro] rotary encoder, mit csinálok rosszul?
uprogc .
uprogc at gmail.com
Mon Jan 2 13:33:41 CET 2017
Volt nehany HW-es prellmentesites probalkozasom is. Nekem sehogy sem akart
rendesen mukodni. Kell nezni az osszes allapotot ahogy korabban itt irtak,
az a megoldas nagyon jo.
Az ocska minosegu enkoderrel ugy is ki fog hagyni lassu forgatas eseten...
Szabi
2017-01-02 14:27 GMT+02:00 Gabor Jordan <jordang.elektro at gmail.com>:
> Hello,
>
> Prell miatt. Az optikaihoz nem kellett, csak ennél a mechanikusnál raktam
> bele próbálni, de nem jó. Az optikainál nem is lehet, mert a 200 impulzus /
> fordulat enkódert megpörgetem, ott nem lehet várakozni. Itt most lehetne,
> ideje lenne rá, nem gond, hogy késleltetés van a megszakításban, ... csak
> éppen így sem jó, úgyhogy felesleges.
>
> Kondit este megpróbálom. Megpróbálok olyan RC tagot keresni, amivel még a
> gyorsabb forgatás is éppen látszik a szkópon.
>
> ÜDV JG
>
>
> 1/2/2017 12:08 PM keltezéssel, elight írta:
>
>> Én azt nem értem
>> minek a delay?
>>
>> Ha 90 fok eltolt fázisú a jel
>> akkor amikor az IT bejön 'A' lábról
>> a 'B' lábon elvileg már régóta stabil
>> szintnek kellene lejönnie..
>>
>> Az meg hogy többször is lefut az IT.
>> akkor nem okoz gondot , ha
>> emlékszel az előző állapotra és
>> úgy értékelsz ki.
>>
>> tehát kell a kettős bittároló:
>> char enc_bitek;
>> char enc_bitek_old;
>>
>> És a bitfázisokat mindig le kell ellenőrizni minden IT-ben,
>> azonnal, hogy ne fogd meg a proc futását..
>>
>> ( de ez egy belőtt könyvtárban már tényleg
>> készen is kapható. )
>>
>> Üdv István
>>
>>
>>
>> 2017-01-02 12:00 keltezéssel, Bali Zoltan írta:
>>
>>> B.U.É.K. mindenkinek!
>>>
>>> SW-esen filterezni? Tán, ha elég gyors
>>> a uC, megoldható. Esetleg ennek a mintájára:
>>> <https://docs.broadcom.com/docs/AV02-0096EN>
>>> A Digital Noise Filter rész.
>>>
>>> FPGA-n megcsináltam, működött szépen.
>>> Persze uC-n erőforrás igényes, de mondjuk a
>>> prell is zabál az IT-n keresztül.
>>>
>>> Most látom, IT-be Delay-t rakni? :)
>>> Akkor már érdemesebb lenne, a SW digitális
>>> filterre pazarolni.
>>>
>>> Üdv. Zoli
>>>
>>>
>>> 2017.01.02. 10:55 keltezéssel, Gabor Jordan írta:
>>>
>>>> ÜDV,
>>>>
>>>> Rotary encoder, PIC18F67K90 B3 és B4 lábain csücsül, felhúzva 47k-val
>>>> kívülről.
>>>>
>>>> A lenti megszakítás (XC8) kezelné le, de nem jó. Kb. 10ből 8szor jól
>>>> lép, de 2szer vagy rossz irányba, vagy többet. Az ENC1 lefutóél csinál
>>>> megszakítást és nézem az ENC2 láb hogyan áll. Mindig is így csináltam és
>>>> ment. Optikai enkóderrel most is megy. Így is (lassabban) meg úgy is, ha
>>>> kiveszem a késleltetéseket. Hiba nélkül. Gondolom a mechanikusnál a
>>>> prell-el vagy kontakt-al van gond. Szkópon nem is túl szép a kapcsolás,
>>>> látszik a prell, de lemegy még a késleltetések előtt (legalábbis amit
>>>> látok). Mégsem jó, hiába játszom az időzítésekkel.
>>>>
>>>> Más tipusú enkoderrel jó volt (bourns), de amit most használni akarok,
>>>> nem jó. Van több darab, cseréltem is, de nem jó.
>>>>
>>>> Hogy illik megbízhatóan olvasni ezeket?
>>>>
>>>> 1 szintű megszakítást használok, a megszakítás kezelést elvileg nem
>>>> szakítja meg másik megszakítás (legalábbis az XC9 azt mondja ne
>>>> kapcsolgassam a kódban a GIE-t, ő megteszi).
>>>>
>>>> Köszönöm,
>>>>
>>>> ÜDV JG
>>>>
>>>> *****
>>>>
>>>>
>>>> if (INTCON3bits.INT3IF==1) // interrupt from rotary encored
>>>> {
>>>> INTCON3bits.INT3IF=0;
>>>> __delay_us(50);
>>>> if (ENC1_PORT==0)
>>>> {
>>>> __delay_us(50);
>>>> if (ENC1_PORT==0)
>>>> {
>>>> __delay_us(50);
>>>> if (ENC1_PORT==0)
>>>> {
>>>> if (ENC2_PORT)
>>>> {
>>>> //LCDPutCmd(01);
>>>> //LCDPutStr("vissza");
>>>> pwm = pwm - 16;
>>>> }
>>>> else
>>>> {
>>>> //LCDPutCmd(01);
>>>> //LCDPutStr("oda");
>>>> pwm = pwm + 16;
>>>> }
>>>> update = 0x01;
>>>> }
>>>> }
>>>> }
>>>> }
>>>>
>>>> *******
>>>>
>>>> -----------------------------------------
>>>> elektro[-flame|-etc]
>>>>
>>>>
>>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list