Rotary Encoder (forgókapcsoló)

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Rotary Encoder (forgókapcsoló)

Hozzászólás Szerző: gerry »

Sziasztok!

Van egy ilyen forgókapcsolóm

Kép

A belső kapcsolása pedig ez

Kép

Azt szeretném megtudni,hogy a rajz szerint 2,2Kohm ellenállást kell rákötni felhúzó ellenállásként, de ez nem károsítja az AVR bemenetét ?
Lehet használni 10Kohm ellenállást is hozzá?

köszi
Avatar
technik
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2006. október 11. szerda, 6:00

Re: Rotary Encoder (forgókapcsoló)

Hozzászólás Szerző: technik »

Ave...
gerry írta: Azt szeretném megtudni,hogy a rajz szerint 2,2Kohm ellenállást kell rákötni felhúzó ellenállásként, de ez nem károsítja az AVR bemenetét ?
Miert karositana? Gondoljuk vegig: a rotary encoder kimeneten tekergetes kozben impulzusok jelennek meg, ezek valtozasat kell figyelni. Ha a tranyok zarva vannak, akkor a kimeneteken konstans 1-es van (5V), ilyenkor a felhuzo ellenallasnak nincs szerepe. Ha vezetnek a tranyok, akkor aram kezd folyni rajtuk es ezt valami "meg kell egye", Ilyenkor a kimeneten konstans 0 (0V) van.
Ha belegondolsz, egy nyomogombot is pontosan igy kell bekotni. Nyitott allapotban +5V van az AVR bemeneten, zart allapotban a +5V-ot egy ellenallason a foldre huzza.
gerry írta: Lehet használni 10Kohm ellenállást is hozzá?
Nagyobbat mindig lehet, kisebbet nem mindig. Ez a tranyok teljesitmenyetol fugg. Ezek kisteljesitmenyu kapcsolo tranyok nem nagy kollektor arammal. Utana lehet szamolni -> rotary encoder datasheet, RTFM.
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

:)

Tilleg :oops: .

Tápfeszt akartam végülis írni.
De, ha I=U/R akkor 5V/2000 ohm= 0.0025A és ez 2.5mA asszem, legalábbis ezt tanították réges régen egy messzi messzi galaxisban....
Akkor nem is zabál sokat :)

köszi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Sztem mehet simán.
Itt is így van:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=19
Ez mintának is jó:).

Nálam most 2 olyan enkóder va, ami poti helyére megy. Az egyik 24 osztásos, a másik ~128 (?). A 24-es olyan kattogós fajta, érzed amikor tekered...:). Poén.


Az AVR kimeneten max. 20-30 mA lehet. A bemenet nem vesz fel áramot, lévén CMOS kapu (na jó, minimális a bemenőárama, 100kohm bemenő-ellenállása van.)
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Tiilleg jó a minta, de ez megszakításra van kihegyezve.
Amit én szeretnék az az lenne, hogy számolni a gomb elfordulását.
Tehát ha pl. jobbra fordítom akkor x értéke növekszik, ha meg balra akkor x értéke csökken.
Ezt hogyan lehet leprogramozni?

köszi
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Ajánlom a DS2423 1wire számlálót.
Ebben van 4 db. 32 bites számláló. Jól lehet ilyesmi feladatokra használni. Én szélsebesség mérésére alkalmazom.
Adatlap: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2912
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az INT-ben tudod megnézni a forgatási irányt.
Persze ellősz két INT lábat:(.

Ha M48/88/168-as chipet nézel, akkor ott minden láb tud PinChange INT jelet generálni... Így nem fogynak el a lábak...
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Robert írta:Az INT-ben tudod megnézni a forgatási irányt.
Persze ellősz két INT lábat:(.

Ha M48/88/168-as chipet nézel, akkor ott minden láb tud PinChange INT jelet generálni... Így nem fogynak el a lábak...
krhhmm.. krhmmm.. . Izé. Ő. :)

Kit tudnád fejteni egy programrészlet szeletecskében az alábbiakat? :oops:
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Bocsi!

Láma vok, itt van a szemem elött :( :oops:

Szégyellem is magam
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Azt hiszem a Tiny2313 fejezetben van....
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Robert írta:Azt hiszem a Tiny2313 fejezetben van....
Kiprobáltam az összes variációt az enkóder programjaiból.
Nos egyik sem jó. Az első ugye kijelzi az lcd-n a kapcsoló bitjeinek állapotát. A második számolgat igyan, de minden 4-dik kapcsolásra lép fel-illetve le.

Az lenne a kérdésem, hogy ha ezen a PCF-ic-n keresztül olvasom ki I2C-n, akkor minden lépésre lehet x értéket növelni egyel ill. csökkenteni.

Nem sokáig fogok szenvedni ezzel sem, mint a 3310-es lcd-vel. <ez nem fenyegetés!!! De úgy bevágom a kukába, hogy csak úgy csörög.

:)

köszi
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Üdv Mindenki!

Most van egy kis időm foglalkozni ezzvel a forgokapcsolóval.
Olyan infót kaptam, hogy próbáljam meg binárisan beolvasni a kapcsoló állást és eltárolva az aktuális állást, a következő lépést pedig viszonyitani az eltárolthoz képest és ezután végrehajtani az utasítást.
Jól közelítem meg a dolgot?

köszi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Mit értesz bináris beolvasás alatt?
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Robert írta:Mit értesz bináris beolvasás alatt?
Ha példul nem intre kötném, vagy akár arra is lehetne, akkor

PD2 PD3 bin

A B

0 0 0 00000000
1 0 2 00000010
1 1 3 00000011
0 1 1 00000001

És ezt a bináris mintát eltárolva, ehez viszonyítva lehetne léptetni pl. x értéket fel ill. le.
De lehet hüleséget írok
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Nem.
Itt is olvashatsz PIN-t.
Az INT azért kell, hogy ne a Do-Loop ciklusban _folyamatosan_ olvasd.

INT rutin azért jó, mert csak akkor olvasod, amikor _ténylegesen_ elfordult.
INTben is olvashatsz portot ha akarsz...


Miért nem jó a mintaprogram?


ha Do-Loop ciklusba (azaz folyamatos olvasásra is jó - azaz a program főciklusban tudod olvasni ), akkor nézd meg a rotary utasítást:).
DE: Ha valahol a program várakozik (Waitbit, WAIT 1, hosszú INT rutin, LCDkiírás, sorosportra hosszú írás), akkor kihagy lépéseket! Az enkóder állását a rotary utasítás beolvassa, DE ha másutt jár a program, nem.

ÉN ráraknán az INTre, és az INT rutinban olvasnám be.
Azaz mindkét láb INT0/1-en van, és bármelyik INT is fut le, akkor abban a részben lenne a ROTARY utasítás... Így lenne a legbiztosabb.
Az 1.11.8.3-ben van benne. Az 1.11.7.4 nem ismeri.

ncoder.bas

Kód: Egész kijelölése

'-----------------------------------------------------------------------------------------
'name                     : encoder.bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : demonstration of encoder function
'micro                    : Mega48
'suited for demo          : yes
'commercial addon needed  : no
'An encoder has 2 outputs and a ground
'We connect the outputs to pinb.0 and pinb.1
'You may choose different pins as long as they are at the same PORT
'The pins must be configured to work as input pins
'This function works for all PIN registers
'-----------------------------------------------------------------------------------------

$regfile = "m48def.dat"                                     ' specify the used micro
$crystal = 8000000                                          ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

Print "Encoder test"
Dim B As Byte
'we have dimmed a byte because we need to maintain the state of the encoder

Portb = &B11                                                ' activate pull up registers

Do
   B = Encoder(pinb.0 , Pinb.1 , Links , Rechts , 1)
   '                                               ^--- 1 means wait for change which blocks programflow
   '                               ^--------^---------- labels which are called
   '              ^-------^---------------------------- port PINs
   Print B
  Waitms 10
Loop
End

'so while you can choose PINB0 and PINB7,they must be both member of PINB
'this works on all PIN registers

Links:
  Print "left rotation"
Return

Rechts:
  Print "right rotation"
Return

End
Válasz küldése