Rotační enkoder a picaxe

Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Rotační enkoder a picaxe

Příspěvek od Howky »

Zdravím chci se zeptat, zdali někdo z vás už zkoušel připojit Rotační enkoder na Picaxe ?
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: Rotační enkoder a picaxe

Příspěvek od jova »

Já ho na pár konstrukcích používám.:
https://www.youtube.com/watch?v=3pCQj6BC_hk

Řešil jsem to zde:
viewtopic.php?f=14&t=184

Postupně jsem od něj, ale už upustil a přešel na 3 tlačítka:
https://www.youtube.com/watch?v=yHgWzmte52E
Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Rotační enkoder a picaxe

Příspěvek od Howky »

Díky hodím na to očko
Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Rotační enkoder a picaxe

Příspěvek od Howky »

Takže tohle by mohlo fungovat ?
PinC.1 = Kanál A
PinC.0 = Kanál B

stím že B.0 a B.1 jsou dvě ledky podle kterých poznám, že to chodí. Ledky krátce bliknou. Podle otáčení směru A či B.

Zápis programu

rotace:
low B.0
low B.1
if pinC.1=1 and pinC.0=0 then rotacea
if pinC.1=0 and pinC.0=1 then rotaceb
goto rotace

rotacea:
w0=w0+1
high B.0
goto rotace

rotaceb:
w0=w0-1
high B.1
goto rotace
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: Rotační enkoder a picaxe

Příspěvek od jova »

Spíše bych to zkusil takto. Ono je to celé dost náchylné na rychlost otáčení, frekvenci procesoru… Takže jsem se k tomu dopracoval spíše pokusem/omylem než logickým uvažováním.
Někde na http://www.picaxeforum.co.uk/ to tuším někdo taky řešil, zkus pohledat.
rotace:
low B.0
low B.1
if pinC.1=1 and pinC.0=1 then rotace1
goto rotace

rotace1:
if pinC.1=1 and pinC.0=1 then rotace1
if pinC.1=1 and pinC.0=0 then rotacea
if pinC.1=0 and pinC.0=1 then rotaceb
goto rotace

rotacea:
w0=w0+1
high B.0
goto rotace

rotaceb:
w0=w0-1
high B.1
goto rotace
Vladimir66
Příspěvky: 385
Registrován: 02 dub 2014, 15:30

Re: Rotační enkoder a picaxe

Příspěvek od Vladimir66 »

ahoj,
mozna se zeptam hloupe, ale
kdyz bude pinC1=1 a pinC0 bude stridave mit 1 nebo 0, tak se bude W0 stale pricitat, i kdyz se enkoder vlastne netoci.
pokud je enkoder na kole robota, ktere je v klidu, tak se musi osetrit "kmitani" jednotliveho vstupu pokud je sterbina presne na hrane "prosvitani".
(hotove tovarni enkodery tohle maji asi vyresene)

u rotacniho enkoderu -prepinace byvaji nejcasteji mechanicke kontakty a stejne jako na tlacitku zakmitavaji a tak se pouziva ostereni a detekce ustaleneho stavu na vystupu enkoderu mezi jednotlivymi prepinanimi.
-V66

P.S. měl jsem rotační enkodér z nějakého elektrovraku a jeho kontakty už nebyly zrovna ve formě a správnou spolehlivou! funkci mi zajistil
až pátý software, kerý využíval přerušení. - bylo to na Arduinu.
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: Rotační enkoder a picaxe

Příspěvek od jova »

Přiznám se že netuším jak to myslíš.
Pokud bude pinC1=1 a pinC0=0 skočí program na rotacea přičte do w0 1 a skončí na rotace.
Dokud nenastane stav pinC.1=1 and pinC.0=1 tak to stále bude cyklovat jen zde a nic se přičítat nebude.
Problém u této verze je, že to není dostatečně rychlé a díky tomu při rychlém otáčení není zaznamenaný každý krok. Je proto třeba otáčet pomaleji a zvýšit taktovací frekvenci procesoru.
Zapojení to mám cca takto http://www.hansinteractive.wz.cz/rotacni_enkoder.html
Je zde i ošetření těch zákmitů.
Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Rotační enkoder a picaxe

Příspěvek od Howky »

No takto, já vlastně potřebuji připojit rotační enkodér na Picaxe a Picaxe pak připojit na Pokeys56U.
Z Picaxe budou dva výstupy na Pokeys56U. Ten vlastně simuluje klávesnici.

Takže vlastně:
Kanál A bude mačkat klávesu A
a
Kanál B bude mačkat klávesu D.


Nebo ještě jinak, Picaxe na výstupu pinu např B.0 dá LOG 1 a sepne vstupní pin Picaxe a ten pak přes USB simuluje klávesnici a mačká vlastně ty klávesy :)
Vladimir66
Příspěvky: 385
Registrován: 02 dub 2014, 15:30

Re: Rotační enkoder a picaxe

Příspěvek od Vladimir66 »

http://www.picaxeforum.co.uk/showthread ... de-example

to Jova:
kdyz budes mit pinC.1 = 1 a pinC.0 = 1 skocic do rutiny rotace1
kdyz bude pinC.1 = 1 a pinC.0 = 0 skocis do rutiny rotacea a prictes W0+1 skocis zpatky do rutiny rotace aniz by pinc.1 prosel nulou !!
takze kdyz ti bude kmitat pinC.0 tak to bude stale pricitat. -to byl ten muj minuly komentar
jasne, kmitani se osetri. ale to s tim kondikem ti bude zrat pulsy. zkus to s temi pulldowny, jak je nakresleno na zacatku toho kodu v tom linku.
schvalne, jak rychle to bude umet cist.

-V66
Naposledy upravil(a) Vladimir66 dne 13 srp 2017, 00:35, celkem upraveno 2 x.
Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Rotační enkoder a picaxe

Příspěvek od Howky »

0V
|
4.7K (pull down resistor)
|
encoder pin1 o--.----o Picaxe 08M pin1 (physical 6)
encoder pin2 o--R330-- +5V
encoder pin3 o--.----o Picaxe 08M pin2 (physical 5)
|
4.7K (pull down resistor)
|
0V


No to schéma mě trošku vrtá hlavou, já mám totiž rotační enkodér,a ten má zem na Pinu 2 a Piny 1 a 3 jsou vlastně samotné kanály A a B
Odpovědět