Sida 2 av 3
Postat: 22 augusti 2008, 13:25:40
av BJ
Jag tror att jag hade ungefär samma frekvens...
Jag menade både A och B.
Det första du frågade om blev jag lite osäker på nu,
Postat: 22 augusti 2008, 14:22:23
av Icecap
Jag har gjort en sådan avläsning i mjukvara, den avläser 3 st encoders i ren mjukvara.
Jag har gjort så att den kollar inkommande nivåer och jämför med förra avläsningen. Om nivåerna för en av encoderna har varit i ett visst nivå (t.ex. '0' & '1') och NU har ett visst värde (t.ex. '1' & '1') räknar jag upp en räknare (som har förtecken), har de en annan kombination räknar jag ner räknaren.
Sedan överför jag nivåerna NU till nivåerna FÖRR och avslutar rutinen.
Då jag har massor av processorkraft tillövers kör den ISR som gör detta med 1KHz.
Postat: 22 augusti 2008, 14:47:40
av JimmyAndersson
Jag brukar också använda den metoden och det fungerar fint. Kanske inte så konstigt: Jag fick tipset från Icecap.

Postat: 22 augusti 2008, 15:29:30
av jonas2307
Nu var det en tid sedan jag byggde något med encoders men jag har för mig att jag använde port B på en PIC, den ger ett interrupt när den ändras.
Så man behövde inte läsa pinnarna förrän det hände något på dem.
-- Jonas
Postat: 22 augusti 2008, 15:46:48
av Icecap
Låter som en bra lösning och användning av IOC-funktionen.
Postat: 22 augusti 2008, 16:01:27
av vfr
Håller med!
Eftersom man får avbrott vid vilken förändring som helst på flera pinnar så passar den utmärkt för detta.
Postat: 22 augusti 2008, 16:05:41
av sodjan
Timerinterrupt blir lite mer okänslig för falska ändringar (kontaktstudsar t.ex).
Och om man har har cykler "to spare" så spelar det ingen större roll,
*något* måste ju processorn alltid göra...

Postat: 22 augusti 2008, 16:13:03
av vfr
Jovisst. Det är ju riktigt. Men vill man ändå ha en effektiv avbrottsdriven variant så går ju den "filtreringen" också att lösa i avbrottsrutinen. Enklast med att läsa av pinnarna några ggr extra bara, annars lite mer avancerat med en timer som kollar när senaste förändringen skedde och bara godkänner efter viss stabil tid. Fast det är klart. Då är det liiite mer jobb, å andra sidan.

Postat: 23 augusti 2008, 16:43:27
av Rocky_AL
jag har fortfarande problem med pulsgivaren. Som jag har förstått det hela så ska de två utgångarna på pulsgivaren ändra läge vi varje hack (har modellen med distinkta lägen). Men när jag kopplar in allt och kollar med oscilloskop så är båda utgångarna alltid höga och när man vrider ett hack på pulsgivaren så ändras signalen till låg en kort stund, sedan tillbaka upp på hög nivå. Jag trodde att vissa hack/lägen var konstant låga och vissa var konstant höga. Är den trasig?
Postat: 23 augusti 2008, 17:16:20
av sodjan
Hur är det kopplat ?
> Som jag har förstått det hela så ska de två utgångarna på pulsgivaren ändra läge vi varje hack...
Naj, en av dom, har jag för mig...
Postat: 23 augusti 2008, 17:33:27
av bearing
Om det är så att din givare har distinkta lägen så stannar den på samma värde varje "hack".
Det är som jag skrev förut, den går igenom serien (00 01 11 10) 24 gånger per varv, den verkliga upplösningen är alltså 96 förändringar per varv.
Postat: 23 augusti 2008, 17:54:18
av sodjan
Notera att visa encoders går igenom en full 4-fas cykel mellan varje "hack".
Andra modeller har ett hack per fas (alltså 4 hack för att få samma utsignal igen).
Det är lite oklart vilken det gäller i detta fall, men det är ju skitenkelt att mäta upp...
> den verkliga upplösningen är alltså 96 förändringar per varv.
Njae, den *praktiska* upplösningen är fortfarande 24 "hack" per varv, eftersom
den alltid stannar (vilar) i ett hack. Jag ser inte finessen med med en hel 4-fas
cykel för varje hack, man kan ju i alla fall inte använda det, och det blir bara
(4 gånger) mer job för dekodrutinen...
Postat: 23 augusti 2008, 21:32:07
av Rocky_AL
Pulsgivaren jag använder är art. nr. 35-847-60 på elfa. Databladet finns här (detta är även datablad för samma pulsgivare fast utan distinkta lägen):
http://www.elfa.se/pdf/35/03584745.pdf
Denna pulsgivare kanske är en sådan som går igenom en hel 4-fascykel för varje hack.
Edit: Pulsgivaren är inkopplad så att terminal C är kopplad till jord. Terminalerna A och B är kopplade till varsin 10kΩ resistor som i sin tur går till +5V. Picens ingångar är kopplade direkt till terminal A/B.
Postat: 23 augusti 2008, 22:28:49
av bearing
Jag hjälpte en kompis använda en pulsgivare som ser ut precis som den i den här tråden, så jag antar att det var samma modell. Den hade alltså 24 cykler eller 96 förändringar per varv
>Jag ser inte finessen med med en hel 4-fas
cykel för varje hack, man kan ju i alla fall inte använda det, och det blir bara
(4 gånger) mer job för dekodrutinen...
Ja, det stämmer ju för modellen med hack. Med modellen utan hack är det en fördel.
Postat: 23 augusti 2008, 23:19:30
av sodjan
OK, då så, "databladet" som ELFA har var inte 100% tydligt på hur "hacken"
låg i förhållande till pulserna, så jag undvek avsiktligt att uttala mig om den.
Men, som jag sa, det är ju skitenkelt att mäta upp...