Pocitanie impulzov z enkodera.

Moderátori: psichac, Moderátori

miroL
Stály člen
Stály člen
Príspevky: 489
Dátum registrácie: 28 Máj 2008, 00:00
Bydlisko: TRNAVA
Vek: 53

Pocitanie impulzov z enkodera.

Príspevok od používateľa miroL » 26 Máj 2015, 15:27

Zdravim vas pani..
Potrebujem pocitat impulzy z enodera. Ma kanaly A, B a Z a procesor AVR. Spravil som si kratky program na jeho otestovanie, ale len kanal A, vyuzil som prerusenie, nacital som 1024 impulzov, ale potrebujem z neho dostat 4096, a neviem, ako sa to bezne robi. V helpe Bascomu som nasiel aj nejaky prikaz Encoder, ale narozumiem tomu. Nemate niekto nejaky kratky vzorovy programek, najlepsie z komentarom, z ktoreho by som odkukal?
Dakujem.
0

Používateľov profilový obrázok
dxr
Ultimate člen
Ultimate člen
Príspevky: 3968
Dátum registrácie: 05 Aug 2013, 20:21
Bydlisko: V strede nicoho
Kontaktovať používateľa:

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa dxr » 26 Máj 2015, 16:19

Vymenim priklad za trafo najlepsie aj s tlmivkou :mrgreen:
vies preco to pisem .... uz to mam aj pripravene okomentovane caka sa na Mira :)
0
Naposledy upravil/-a dxr v 26 Máj 2015, 16:39, upravené celkom 1 krát.
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

martin63
Ultimate člen
Ultimate člen
Príspevky: 1738
Dátum registrácie: 11 Máj 2008, 00:00
Bydlisko: Námestovo
Vek: 34

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa martin63 » 26 Máj 2015, 16:38

Ja si predstavujem, že máš klasický enkóder, ktorého piny musíš pripojiť na procesor. Piny musia byť pripojené na procesor dva a nie jeden. A potom jeden pin pripojíš na prerušenie a keď nastane, prečítaš hodnotu aj na druhom pine. A máš nejaké dve čísla (10 alebo 11). No a takto si vieš zistiť aj smer točenia. S jedným pripojeným pinom to nezistíš.

-- Spojený príspevok 26 Máj 2015, 15:45 --

a keď vieš napočítať 1024 tak prečo nevieš napočítať aj viac? Keď sa dostaneš na 1024 tak počítaj ďalej :D.
0

miroL
Stály člen
Stály člen
Príspevky: 489
Dátum registrácie: 28 Máj 2008, 00:00
Bydlisko: TRNAVA
Vek: 53

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa miroL » 26 Máj 2015, 19:34

Piny musia byť pripojené na procesor dva a nie jeden. A potom jeden pin pripojíš na prerušenie a keď nastane, prečítaš hodnotu aj na druhom pine. A máš nejaké dve čísla (10 alebo 11). No a takto si vieš zistiť aj smer točenia. S jedným pripojeným pinom to nezistíš.
Samozrejme, tak som to mal, asi som sa zle vyjadril. Neviem, ako to nazvat. Skratka neviem vyuzit to vzajomne posunutie oboch signalov o 90 stupnov, kde mam potom 4 cisla. Do jedneho smeru 00,01,11,10 a do opacneho 00,10,11,01. A samozrejme, ako ich dalej "spracovat".
0

Zaky
Stály člen
Stály člen
Príspevky: 215
Dátum registrácie: 08 Nov 2014, 16:41

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa Zaky » 26 Máj 2015, 21:06

Maximální rozlišení se dosáhne, pokud se přerušení vyvolává každou hranou a testuje se při tom ten druhý signál. Není to implementačně úplně snadné. Když jsem toto řešil, použil jsem MCU, který úlohu umí hardwarově, přijde mi to z hlediska rizika ztráty impulsu značně bezpečnější.
0

martin63
Ultimate člen
Ultimate člen
Príspevky: 1738
Dátum registrácie: 11 Máj 2008, 00:00
Bydlisko: Námestovo
Vek: 34

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa martin63 » 26 Máj 2015, 21:07

Nemáš štyri čísla, máš len dve čísla. Ty si musíš nastaviť prerušenie na nábežnú, alebo dobežnú hranu. Ak budeš mať nastavené prerušenie na dobežnú hranu, tak sa ti prerušenie zavolá, keď ti bude padať z log1 na log0 a v tomto okamihu si prečítaš hodnotu na druhom pine a ak tam bude log1 točíš napríklad doprava a ak tam bude log0 točíš doľava.

Jeden pin len zavesíš na prerušenie a budeš čítať hodnotu na tom druhom pine.

Toť príklad. Hádam to tam uvidíš :).
Obrázok
0

miroL
Stály člen
Stály člen
Príspevky: 489
Dátum registrácie: 28 Máj 2008, 00:00
Bydlisko: TRNAVA
Vek: 53

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa miroL » 26 Máj 2015, 22:15

Martin dakujem, ale to co mi ty radis, je ten bezny sposob, to mam vyskusane. Myslim, ze Zaky spravne pochopil, o co sa mi jedna. Prave ten postup ma zaujima, prerusenie pri kazdej hrane, cim sa dosiahne vyssi pocet impulzov, vacsie rozlisenie. Pridavam link na help z Bascomu, tam je to aj s tymi 4 cislami, ktore som spominal.
http://avrhelp.mcselec.com/index.html?encoder.htm
0

Zaky
Stály člen
Stály člen
Príspevky: 215
Dátum registrácie: 08 Nov 2014, 16:41

Re: Pocitanie impulzov z enkodera.

Príspevok od používateľa Zaky » 26 Máj 2015, 22:32

Použil jsem procesor Cypress PSOC4, jeho PWM periferie přímo umí hardwarově dekódovat módy 1x,2x,4x. Stačí si jen programově vyčítat hodnotu counteru a ošetřit si přetečení/podtečení. Lze takto jedním procesorem číst až 4 enkodéry najednou bez rizika ztráty pulsů, přičemž procesor může řešit nadřazenou úlohu, dekódování nebere žádný výpočetní výkon. Myslím, že čistě softwarově bude 4x režim dost boj. Popis periferie zde: http://www.cypress.com/?rID=78825
0

Napísať odpoveď