Hybrid View
-
05-07-2023 #1
Took a while to discover what the output was, now how do I read it?
It is a quadrature encoder fitted with a 100 step/rev detente that always parks you in the 00 condition.
So when you try to buzz out the output you always get zeros
As you turn it, you either get 01 11 10 00 or 10 11 01 00 depending on the direction.
So how would you read it? Preferably on an interrupt!
best
Robin
-
06-07-2023 #2
So I asked my elder brother who looks at me like I have gone senile and says, "You connect one line to the interrupt and read the other for direction".
-
07-07-2023 #3
Not sure that it's quite that easy! If you look at the data patterns there is no simple link between either data line and direction. And if you only interrupt on one data line, you will miss half the transitions.
How about writing your interrupt code to read both data inputs and work out whether to increment or decrement an internal counter based on comparing current with previous state. Then set up "interrupt on change of state" on both input lines linked to same interrupt routine. The principle of quadrature inputs means that only one data line changes at a time so you should be able to handle one interrupt before the next arrives. How fast can a user turn the encoder knob?
I need to do something similar for a device that currently uses a pot delivering an analogue input to an ADC input on an Arduino but my main processing loop is so fast (compared with rate at which data changes could happen) that I am planning to just use polling of the data lines. I need to do this because the pot is a bit noisy and my soldering iron temperature keeps jumping about...
-
14-07-2023 #4
You configure the interrupt on either leading or trailing edge - so the interrupt occurs on a transition on one phase - the other phase is steady state at this point. The interrupt is essentially the "clock" to increment or decrement the counter. The state of the second phase, either 0 or 1 determines whether to increment or decrement.
-
08-07-2023 #5
I didn't think it was that easy either, but it does explain why you get four transitions between each detente but only one counts
What does your pot control?
Robin
-
08-07-2023 #6
Which processor? Arduino? Is there a library you could use?
-
08-07-2023 #7
-
08-07-2023 #8
I seem to remember that there's a hardware solution using a couple of exclusive OR gates and a counter.....
-
09-07-2023 #9
Yes there is, and maybe a D-type flip-flop too to sense direction. (XOR gates just double the pulse rate.) But you then still need to accumulate the pulses with an up/down counter and convert the counter to analogue to emulate the pot.
If there's a C compiler for the processor I guess it should be possible to modify the library code.
-
08-07-2023 #10
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Similar Threads
-
Spindle pulses on shutting down.
By John11668 in forum General ElectronicsReplies: 6Last Post: 22-08-2020, 11:45 AM -
Basic 540 CNC. Motors skipping pulses?
By Skydeals in forum General ElectronicsReplies: 3Last Post: 18-10-2014, 06:56 PM -
Do you make stuff with knobs on?
By D.C. in forum General ElectronicsReplies: 1Last Post: 20-02-2013, 11:04 PM -
servo control vs stepper control
By Peter. in forum Motor Drivers & ControllersReplies: 24Last Post: 17-09-2012, 08:36 AM -
G-Code into stepper driver pulses?
By HankMcSpank in forum Computer SoftwareReplies: 5Last Post: 09-01-2010, 12:55 PM
Bookmarks