rotary encoder + Bascom
Ja igazad van!
Itt illesztette Müv. erősítővel.
http://www.fleurey.com/franck/pmwiki.ph ... HDDEncoder
De még mindég nem tudjuk, hogy 1 fordulatra menyi impulzust kapunk?
Bár ez lehet motortól függő!
Itt illesztette Müv. erősítővel.
http://www.fleurey.com/franck/pmwiki.ph ... HDDEncoder
De még mindég nem tudjuk, hogy 1 fordulatra menyi impulzust kapunk?
Bár ez lehet motortól függő!
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Szervusztok AVR Istenei!
Belefutottam egy furcsa encoder-be, amihez az eddig használatos program nem megfelelő működést idézett elő. Biztos, ami biztos rákötöttem szkópra. Az alábbi jelalak figyelhető meg!
A függőleges vonalak az encoder alaphelyzetben lévő értékeinél van.
Kérlek titeket, segítsetek leprogramozni.
Köszönettel Ampervadasz.
Belefutottam egy furcsa encoder-be, amihez az eddig használatos program nem megfelelő működést idézett elő. Biztos, ami biztos rákötöttem szkópra. Az alábbi jelalak figyelhető meg!
A függőleges vonalak az encoder alaphelyzetben lévő értékeinél van.
Kérlek titeket, segítsetek leprogramozni.
Köszönettel Ampervadasz.
Én is találkoztam valami hasonlóval,de a fiók méllyén landolt Kíváncsi vagyok én is a megoldásra, annó nem volt kedvem foglalkozni vele!ampervadasz írta:Szervusztok AVR Istenei!
Belefutottam egy furcsa encoder-be, amihez az eddig használatos program nem megfelelő működést idézett elő. Biztos, ami biztos rákötöttem szkópra. Az alábbi jelalak figyelhető meg!
A függőleges vonalak az encoder alaphelyzetben lévő értékeinél van.
Kérlek titeket, segítsetek leprogramozni.
Köszönettel Ampervadasz.
Geht nicht, Gibt's nicht!
És mi ebben a bonyolult?
A szokásos fel vagy lefutó élre történő megszakítás kérés és megszakításban megvizsgálod a másik jel állapotát.
Nevezzük a felső görbét A-nak, az alsót B-nek.
A –nál lefutó élre INT és ha B = 0 mozgás > ,vagy ha B = 1 < mozgás
És / vagy:
B –nél Felfutó élre INT és ha A = 0 mozgás > ,vagy ha A = 1 < mozgás
A szokásos fel vagy lefutó élre történő megszakítás kérés és megszakításban megvizsgálod a másik jel állapotát.
Nevezzük a felső görbét A-nak, az alsót B-nek.
A –nál lefutó élre INT és ha B = 0 mozgás > ,vagy ha B = 1 < mozgás
És / vagy:
B –nél Felfutó élre INT és ha A = 0 mozgás > ,vagy ha A = 1 < mozgás
Mért nem látod??
Igen 2 adatvonal van összehasonlítva. Annyi a minimum, hogy megtud állapítani a mozgás irányt is.
És az elmozdulás fokát adja az Impulzus*(360/enkóder osztásának száma).
Jobbról balra haladva az egyik irány, balról jobbra a másik irány!
És forduláskór a vizsgált élek mindig átkerülnek a másik oldalra.
Igen 2 adatvonal van összehasonlítva. Annyi a minimum, hogy megtud állapítani a mozgás irányt is.
És az elmozdulás fokát adja az Impulzus*(360/enkóder osztásának száma).
Jobbról balra haladva az egyik irány, balról jobbra a másik irány!
És forduláskór a vizsgált élek mindig átkerülnek a másik oldalra.
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Sziasztok!
Küzdök egy ilyen:http://www.ia.omron.com/data_pdf/data_s ... csm490.pdf E6A2-CW5 encoderrel.
Ezzel a progival:
A bajom az hogy nem tudom hogy lehetne számolni mert ez össze vissza írja most így ki, ami nem is lep meg, mert ugye egyik megszakításból jön a másik ahogy forog és amit számolna fel a következő húzza is le.
Hogy szoktátok ezt csinálni?
Küzdök egy ilyen:http://www.ia.omron.com/data_pdf/data_s ... csm490.pdf E6A2-CW5 encoderrel.
Ezzel a progival:
Kód: Egész kijelölése
'MCU
$regfile = "m16def.dat"
$crystal = 8000000
'LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Initlcd
Cursor Off
Cls
'ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'FŰTÉS
Config Portd.5 = Output
Triak Alias Portd.5
'SPEAKER
Config Portd.6 = Output
Speaker Alias Portd.6
'MEGSZAKÍTÁSOK
Config Int0 = Falling
Config Int1 = Falling
Enable Interrupts
Enable Int0
Enable Int1
On Int0 Encodera
On Int1 Encoderb
'VÁLTOZÓK
Const Debouncetime = 5
Dim Encounter As Integer
Dim Wait_time As Word
Dim T_ram As Eram Integer
Dim W As Word
Dim I As Integer
'RUTINOK
Declare Sub Encoder_push
'_______________________________________________________________________________
'BOOT
Wait_time = 1000
Lcd "Inicializalas:"
Lowerline
For I = 1 To 16
Lcd "."
Waitms Wait_time
Next I
Cls
Encounter = T_ram
'MAIN
Do
' Locate 1 , 1
' W = Getadc(0)
'Cls
' Lcd " value: " ; W
'Lowerline
Locate 2 , 1
Lcd Encounter
Waitms Wait_time
Loop
End
'ÁLLÁS MENTÉSE
Sub Encoder_push:
T_ram = Encounter
End Sub
Encodera:
Waitms Debouncetime
Incr Encounter
If Encounter > 450 Then Encounter = 450
Gifr = 64
Return
Encoderb:
Waitms Debouncetime
Decr Encounter
If Encounter < 0 Then Encounter = 0
Gifr = 128
Return
Hogy szoktátok ezt csinálni?