Ik ga voor digitale invoer de impulsgever van Conrad gebruiken. Deze geeft 30 pulsen per omwenteling af.

Het ding heeft een common ground, dus de twee pennen die de pulsen afgeven, zullen met ene pull-upje aan de +5v gehangen moeten worden.

Nu is het zo, dit is een mechanisch ding. Heeft iemand ervaring met deze impulsgever qua ontdendering? Hoeft dat bij deze, of zal ik dat zelf moeten doen? Als ik dat zelf moet doen zal het wel wat 'lastig' worden met het dimensioneren van de ontdendering, aangezien bij snel draaien pulsen gemist kunnen worden. Als de ontdendering te zwak is, dan krijg ik nog te veel pulsen per draaistand.

Pulsen missen lijkt me niet zo erg, tenzij je de encoder gebruikt voor een motor-positie terugkoppeling.
De ontdendering (als je bang bent voor het missen van pulsen) kun je natuurlijk altijd nog extern met hardware doen. Sterker nog, dan kun je er meteen een pulsgever-circuit + richtingbit van maken. Scheelt je weer graycodes enzo..

(of je koopt een optische encoder ;) )

Die ontdendering is juist lekker. Als de gebruiker een te harde zwiep aan de knop geeft, dan doet hij het lekker niet. Prima UserInterface ontwerpfeature lijkt me ;-)

Da fripster

Ontdenderen met een RC-filter met daarachter een Schmitt-trigger met flinke hysterese zal zeker weten afdoende zijn. Het RC filter laat je kantelen op de maximale pulsfrequentie waarmee de knop bediend zal gaan worden.

De meeste posters hebben zeker nooit een rotary encoder aangesloten ?
Je telt niet de pulsen maar kijkt naar de flanken. Missen van flanken betekend dat je de knop verkeerd decodeert (bijv. met een state machine), dus jij draait rechtsom om de waarde omhoog te krijgen en dan krijg je er af en toe stapjes links (dus omlaag) toe tussendoor. Dat is niet leuk en dus wel wat erger dan het missen van een stapje. Ik heb ooit eens met zo'n ding gespeeld maar inderdaad: dender en veel te weinig stappen per omwenteling om lekker te werken. Ik heb het probleem met een optische encoder omzeilt. Het schijnt trouwens dat je die optische encodersook uit oude muizen kunt slopen.
Probleem van een RC filter is de faseverschuiving, maar ik heb dit niet uitgeprobeerd.

Bij volumeregeling zou het wel handig zijn, dat 'ie pulsen zou missen bij snel draaien. Maar bij menubediening waarbij je b.v. letters wil invoeren d.m.v. selecteren, of menu items zelf kiezen, is dit weer een heel vervelend verschijnsel.

Ik heb even een schema'tje gemaakt voor wat Fuzzbass bedoelt. Zou dit dan goed gaan werken?

http://img365.imageshack.us/img365/2836/ontdendering3xi.jpg

U2A dient als buffer, om een stevige 0 of 1 af te geven. R1 is het pull-upje. R2, C1 het lowpass filter.

Heb het als volgd berekend:

Ik kan niet sneller dan 0.1 seconde die hele knop rond om draaien. Per rondgang geeft de impulsgever 15 pulsen af per uitgang. Dus dat is een maximale frequentie van 150Hz.

Kantelfrequentie neem ik 300Hz voor. Voor de gegeven weerstandwaarde de C berekenen:

F = 1/(2*pi*R*C) = 1/(2*pi*22K*C)
C = 1/(2*pi*22K*300) = 24nF --> 27nF nemen.

Op 17 augustus 2005 15:57:32 schreef JoWi:
De meeste posters hebben zeker nooit een rotary encoder aangesloten ?
Je telt niet de pulsen maar kijkt naar de flanken. Missen van flanken betekend dat je de knop verkeerd decodeert (bijv. met een state machine), dus jij draait rechtsom om de waarde omhoog te krijgen en dan krijg je er af en toe stapjes links (dus omlaag) toe tussendoor. Dat is niet leuk en dus wel wat erger dan het missen van een stapje. Ik heb ooit eens met zo'n ding gespeeld maar inderdaad: dender en veel te weinig stappen per omwenteling om lekker te werken. Ik heb het probleem met een optische encoder omzeilt. Het schijnt trouwens dat je die optische encodersook uit oude muizen kunt slopen.
Probleem van een RC filter is de faseverschuiving, maar ik heb dit niet uitgeprobeerd.

De faseverschuiving is geen ramp als voor beide encoder uitgangen het zelfde filtertje wordt gebruikt. De vertraging die het oploopt zal denk ik niet eens waarneembaar zijn.

Op 17 augustus 2005 15:57:32 schreef JoWi:
De meeste posters hebben zeker nooit een rotary encoder aangesloten ?

Ik wel, zij het optisch.

Op 17 augustus 2005 15:57:32 schreef JoWi:
Je telt niet de pulsen maar kijkt naar de flanken.

Dat kun je dus eventueel wel doen, door wat extra hardware te bouwen.

Op 17 augustus 2005 15:57:32 schreef JoWi:
Missen van flanken betekend dat je de knop verkeerd decodeert (bijv. met een state machine), dus jij draait rechtsom om de waarde omhoog te krijgen en dan krijg je er af en toe stapjes links (dus omlaag) toe tussendoor.

Als je de statemachine goed bouwt, heb je hier volgens mij geen last van..

Anyway, mijn ervaring is met optische encoders.

Op 17 augustus 2005 16:04:02 schreef DIY:
[...]
Ik wel, zij het optisch.

[...]
Dat kun je dus eventueel wel doen, door wat extra hardware te bouwen.

[...]
Als je de statemachine goed bouwt, heb je hier volgens mij geen last van..

Anyway, mijn ervaring is met optische encoders.

Precies, wat ik ga doen, is dus op de flanken reageren. Dan met behulp van een dual-edged statemachientje een up- of down bitje zetten en een interrupt afgeven. De UC leest dan deze bits uit (worden dan automatisch weer gereset) en kan vervolgens zijn ding doen :)

Op 17 augustus 2005 16:04:02 schreef DIY:
[...]
Als je de statemachine goed bouwt, heb je hier volgens mij geen last van..
Anyway, mijn ervaring is met optische encoders.

Met een optische encoder werkte het dus feilloos (invalid states zijn don't cares).
Maar zo'n mechanische bak genereert met zijn dender dus valid codes de verkeerde kant op. Ik moet nog ergens een logic analyser trace hebben van zo'n ding. Bovendien: de optische encoder genereert veel meer stapjes per omwenteling en dat is een stuk makkelijker in het gebruik (in mijn geval een VFO)

Op 17 augustus 2005 16:12:36 schreef JoWi:
[...]
Met een optische encoder werkte het dus feilloos (invalid states zijn don't cares).
Maar zo'n mechanische bak genereert met zijn dender dus valid codes de verkeerde kant op. Ik moet nog ergens een logic analyser trace hebben van zo'n ding. Bovendien: de optische encoder genereert veel meer stapjes per omwenteling en dat is een stuk makkelijker in het gebruik (in mijn geval een VFO)

Misschien weet jij dat dan, JoWi..: Waar kan ik een optische encoder krijgen als particulier voor niet al te veel geld? Ik neem die van Conrad vanwege gebrek aan beters.. P.S. ingebouwde drukknop functionaliteit wel gewenst.. de knop gaat n.l. ook als Enter button werken

Op 17 augustus 2005 16:15:45 schreef MagicBox:
[...]

Misschien weet jij dat dan, JoWi..: Waar kan ik een optische encoder krijgen als particulier voor niet al te veel geld?

Zoeken op rommelmarkten, want het zijn inderdaad geen goedkope dingen. Helaas heb ik twee linkerhanden anders had ik wel een muis gesloopt (d'r liggen er nog wel wat in de kast). Op het internet is daar wel wat over te vinden.
Sommige mensen zijn zo slim om de muis als muis te gebruiken, heb je er gelijk twee knopjes bij, maar dat is natuurlijk niet leuk als je een kastje met een knop wil hebben.

Op 17 augustus 2005 16:15:45 schreef MagicBox:
[...]

Misschien weet jij dat dan, JoWi..: Waar kan ik een optische encoder krijgen als particulier voor niet al te veel geld? Ik neem die van Conrad vanwege gebrek aan beters.. P.S. ingebouwde drukknop functionaliteit wel gewenst.. de knop gaat n.l. ook als Enter button werken

Ik heb er een bij farnell gekocht en moet er waarschijnlijk binnenkort nog wat bestellen. Ik kan er 1 voor je meebestellen. Rond de 35 euro.
Het is deze:
http://nl.farnell.com/jsp/endecaSearch/partDetail.jsp?SKU=3720172&…

Op 17 augustus 2005 16:34:27 schreef DIY:
[...]
Ik heb er een bij farnell gekocht en moet er waarschijnlijk binnenkort nog wat bestellen. Ik kan er 1 voor je meebestellen. Rond de 35 euro.
Het is deze:
http://nl.farnell.com/jsp/endecaSearch/partDetail.jsp?SKU=3720172&…

Ik denk niet dat deze veel beter is dan die van Conrad (afgezien van levensduur en 'feel').. De hoogste resolutie is ook 30 pulsen, en volgens de datasheet:

"Contact Bounce: less than 4mS at make and less than 10mS at break" Dus dat geeft te kennen dat dit ding ook ontdendering nodig heeft? Dan zou ik het daarvoor niet hoeven te doen. Ik denk maar dat ik je aanbod afsla, aangezien ik er weinig mee opschiet.. de maximale draaisnelheid is ook 1,6 omwentelingen per seconde.

[Edit:] verkeerd gelezen, het ding zou geen ontdendering nodig hebben. Die tijden slaan meer op rijs en daaltijd.

Op 17 augustus 2005 16:47:27 schreef MagicBox:
[Edit:] verkeerd gelezen, het ding zou geen ontdendering nodig hebben. Die tijden slaan meer op rijs en daaltijd.

Dus, bestellen of niet?

//edit
het zijn overigens 32 stappen.

Op 17 augustus 2005 17:05:04 schreef DIY:
[...]
Dus, bestellen of niet?

//edit
het zijn overigens 32 stappen.

Een aantal afwegingen gedaan, maar nee, hoef je niet mee te bestellen. Maar in elk geval bedankt voor het aanbod :) Qua levensduur heb ik weining eisen, het is niet zo dat ik elke dag 4 uur aan die knop zit te jassen. Verder zijn 4 weerstandjes, 2 C'tjes en een 4093 cmos ic'tje goedkoper dan de ruim 28 euros die ik boven op de prijs van die van Conrad zou moeten doen.

Ik ga voor het idee van Fuzzbass, zal ik op een gaatjesbord maken zodra ik kan en dan kijken of dat zaakje goed werkt zoals ik het berekend heb.

Op 17 augustus 2005 17:30:21 schreef MagicBox:
[...]

Ik ga voor het idee van Fuzzbass, zal ik op een gaatjesbord maken zodra ik kan en dan kijken of dat zaakje goed werkt zoals ik het berekend heb.

MagicBox, ik heb ook nog zon ding van liggen van conrad, zou dat schema een keer willen posten als het helemaal werkt? ik ben namelijk niet echt goed met filtertjes enzo.

alvast bedankt

Op 17 augustus 2005 18:08:11 schreef pinochet:
[...]

MagicBox, ik heb ook nog zon ding van liggen van conrad, zou dat schema een keer willen posten als het helemaal werkt? ik ben namelijk niet echt goed met filtertjes enzo.

alvast bedankt

Dat is prima, maar dat gaat nog wel een dag of 3 kosten. Ik heb vandaag de conradbestelling de deur uitgedaan.

Het schema decodeert de pulsen niet naar een kant- en klare up/down. Het zorgt er alleen voor dat de afgegeven pulsen van de encoder worden schoongemaakt door de contactruis er uit te halen.

Ik heb die Conrad encoder wel eens getest.
Ik vind dat ding niet al te best kwalitatief, gaat na een tijdje stroever draaien. (rommel :) )
Maar softwarematig ontdenderen werkt goed, pollen en na ongeveer 2msec nog eens pollen, dan de status bekijken 00 01 10 of 11. De detend posities zijn 00 en 11 ertussen ziet ie 01 of 10 voorbij komen, daaruit haal je de draairichting (inc/dec)

Op 17 augustus 2005 18:38:53 schreef RES:
Ik vind dat ding niet al te best kwalitatief, gaat na een tijdje stroever draaien. (rommel :) )

Is dat niet met een beetje oliën op te lossen? Dat zal toch wel..

Wat encoden betreft.. ik wil graag zo veel mogelijk interrupt based werken, zo min mogelijk pollen voor dingetjes. Als ik 'm in software moet gaan decoderen dan kost dat weer programmageheugen en MIPs. Okay, niet noemenswaardig veel, maar alle beetjes helpen. Dit zal ik met een CPLD doen, welke ook de interfacing met het LCD gaat regelen. Die zorgt er voor dat er een registertje komt met twee bitjes, up en down (andere bitjes voor de gewone pushbuttons op het bedieningspaneel) en een interrupt generator die een int aanvraagt als er aan de encoder gedraaid wordt, of wanneer een knop ingedrukt of losgelaten wordt. Door dit soort dingetjes allemaal in hardware op te lossen, kunnen de routines in de Atmel lekker compact blijven, aangezien ze de info in hapklare brokken aangeleverd krijgen :)

Edit: als voorbeeld: Het mainprogramma in de atmel leest de ADCs uit en update het display met het gelezen geluidsnivo, om op die manier een VU meter te tonen op het LCD. In de interrupt routine maak ik dan de code die de encoder bits check'ed en naar de volumereglaar gaat schrijven. Hoef ik dus niet in het VU meter programma de hele userinterface te pollen.

[Bericht gewijzigd door MagicBox op ]

Op 17 augustus 2005 18:18:20 schreef MagicBox:
[...]

Dat is prima, maar dat gaat nog wel een dag of 3 kosten. Ik heb vandaag de conradbestelling de deur uitgedaan.

Het schema decodeert de pulsen niet naar een kant- en klare up/down. Het zorgt er alleen voor dat de afgegeven pulsen van de encoder worden schoongemaakt door de contactruis er uit te halen.

nee dat snap ik hoor, het gaat mij ook puur om de ontdendering ervan, de rest kan ik zelf wel :)

Ik heb wel eens wat Bourns mechanical rotary encoders gebruikt.

Wat ik merkte is dat software wel belangrijk is in het goed afhandelen van zon draaitoetsje.

Ik heb hem aan een PICje portB gehangen met interupt on Change.
En dan een supersnelle statemachine in de interupt routine hangen. (statemachine werkt met oudestate/newstate jumptabel en result counter up of down).
De statemachine is zo snel dat hij het denderen bijna bijhoud :) .

Werkt erg goed, voor draaitoetsen die ERG kunnen denderen soms.

Hier nog wat resources :
http://piclist.com/techref/io/sensor/pos/enc/quadrature.htm

Op 20 augustus 2005 12:42:03 schreef FrostByte:
Ik heb wel eens wat Bourns mechanical rotary encoders gebruikt.

Wat ik merkte is dat software wel belangrijk is in het goed afhandelen van zon draaitoetsje.

Ik heb hem aan een PICje portB gehangen met interupt on Change.
En dan een supersnelle statemachine in de interupt routine hangen. (statemachine werkt met oudestate/newstate jumptabel en result counter up of down).
De statemachine is zo snel dat hij het denderen bijna bijhoud :) .

Werkt erg goed, voor draaitoetsen die ERG kunnen denderen soms.

Hier nog wat resources :
http://piclist.com/techref/io/sensor/pos/enc/quadrature.htm

Handige link, Frostbyte, daar zal ik zeker wat aan hebben :)

Op 17 augustus 2005 15:57:32 schreef JoWi:
...Het schijnt trouwens dat je die optische encodersook uit oude muizen kunt slopen.
...

Ja, ik heb er hier een elektronisch zwaar aangepast met een iets dikkere kabel aan m'n PIC met LCD hangen. Niet bijzonder zinvol maar wel erg leuk. Meesten snappen er niets van als ze een kursor over zo'n klein LCD'tje zien bewegen.

Daar is 'ie dan, het boefje. Met een "vingerbediening" knop van ALPS:

http://img388.imageshack.us/img388/566/rotenc8je.jpg