View Full Version : Scanning encoder debounce on new scope
Demon
- 6th June 2024, 21:45
SOLVED: Had probes set on AC coupling instead of DC coupling. D'OH!
I am scanning an EC11 rotary encoder wired according to Bourns debounce design using a Owon SDS1104 scope:
R1 = 10K
R2 = 10K
C = 0.1uF (Bourns uses 0.01uF)
https://www.bourns.com/docs/technical-documents/technical-library/sensors-controls/technical-notes/Bourns_enc_sgnl_cond_technote.pdf?sfvrsn=348415eb_ 4
This is what the scan looks like:
https://i.imgur.com/09H7TXe.png
The peak voltage slowly drifts up as I turn the encoder, and then settles back down. That is not the problem.
I'm concerned with the low voltage, it's also drifting up, well above the 0.8V threshold that is often referred to in Microchip documentation as the LOW level. The 10 or so encoder signals on the right would not get picked up.
Is this normal with RC circuits?
Or is the graph on this $250 DSO drifting north because it's low quality?
HenrikOlsson
- 7th June 2024, 11:33
I'd be more worried by the fact that signal swings negative and not positive :-)
Don't worry though, it looks like you have the input coupling set to AC on the scope. Set it to DC and try again.
Demon
- 7th June 2024, 22:03
... Set it to DC and try again.
Thanks! I thought of rechecking my stuff a Nth time yesterday and noticed the coupling too.
All is well in the world.
:biggrin:
9674
Demon
- 9th June 2024, 04:26
Got this from AllAboutCircuits. First time I hear about a MC14490, Hex Contact Bounce Eliminator:
https://www.youtube.com/watch?v=BeFYsx6M3BM
Too bad it's in multiples of 6 pins. It would be perfect if it was 8; that way I could have 2 ICs running alongside MCP23017 I/O Expanders with no waste.
DaveP
- 9th June 2024, 13:04
Wow, I designed those into counting circuits about 45 years ago.....
Ioannis
- 9th June 2024, 20:14
Nice chip! I did not knew that one although I am of the CMOS era!
Anyway, since you master the art of software, I think is waste of money to add hardware when you can debounce in software.
Plenty of ways to do that and as you said, going into production, will save you a lot of money and complexity.
One example. Read all buttons in an array. After a period of say 10ms, read again and compare all the buttons. One pass, reading and debouncing all buttons.
Ioannis
Demon
- 10th June 2024, 00:07
Nice chip! I did not knew that one although I am of the CMOS era! ...
I also found the MAX6818 debouncer, but it's $4.37 for 8-bit at JLCPCB.
... since you master the art of software, I think is waste of money to add hardware when you can debounce in software. ...
More like master of none. :wink:
... One example. Read all buttons in an array. After a period of say 10ms, read again and compare all the buttons. One pass, reading and debouncing all buttons.
Ioannis
I might still go for that. But I'd really like to avoid any debounce on the PICs so they are free to USART with the main USB PIC.
Ioannis
- 10th June 2024, 06:57
I might still go for that. But I'd really like to avoid any debounce on the PICs so they are free to USART with the main USB PIC.
This can work just fine:
1. Set up a timer interrupt at 10ms. Or even at 1ms and after ten int's do step 2.
2. Every interrupt read the buttons into the arrays. You can use a low priority interrupt if the PIC supports it.
3. Either with or without interrupt use the hardware USART to communicate. If you choose interrupt driven USART, use it as high priority, or Disable as long as you do serial, the timer interrupt.
Problem solved.
Ioannis
Demon
- 11th June 2024, 03:54
I wanted to see just how sharp a Schmitt trigger could clean up a signal.
This is using a MR0102 with rocker actuator, followed by the Bourns RC debounce circuit, and then inverted with a TCC74HC14 Schmitt trigger, followed by LED/330R resistor:
9678
(text on image has been corrected)
Datasheet says negative threshold is 1.6V at 4.5V. This is USB 5V, so 1.8-1.9V seems ok to me.
Ioannis
- 11th June 2024, 07:06
What a magic tool Oscilloscope is, right?
Ioannis
Demon
- 11th June 2024, 07:36
Darn tootin' right.
It's nice to finally use it as a diagnostic/testing tool. The scope has always been a mystery to me. I've always wanted to use one, but never had any electronics training. So it's slow; getting old and a worsening memory doesn't help, but help from you folk make it fun.
One thing is for sure, I wouldn't hire me to do this stuff. :D
HenrikOlsson
- 11th June 2024, 17:21
Your waveforms seem to indicate that you might benefit from adjusting the trimmer capacitor on your probe(s).
Demon
- 11th June 2024, 21:00
Your waveforms seem to indicate that you might benefit from adjusting the trimmer capacitor on your probe(s).
I noticed that "rhythmic pulse" too. I figured it might be the breadboard.
I wanted to enjoy my scope for a few days before tweaking it and messing it up.
😄
HenrikOlsson
- 12th June 2024, 06:19
OK, if you just want to see squiggly lines on the screen :-)
But you're not going to mess it up. It's part of verifying that it actually works as it should.
Compensating the probe, or at least veryfying its compensation, should ideally be done whenever you move a probe from one channel to another - which is another great reason to use the color coded rings on the probes so that the same probe gets used on the same channel each time.
Without a properly compensated probe your scope will not display a "true" representation of the waveform and things like automatic risetime and peak-to-peak voltage measurements might be incorect.
I'm sure there's a section, close to the beginning, in the manual on how to perform the probe compensation.
Demon
- 30th June 2024, 04:40
So I finally got around to compensate each probe (in their colour-coded connector, just in case that matters). Also auto-calibrated the scope; very straight-forward.
Before/after compensating:
https://i.imgur.com/UNGj1Rv.jpg
https://i.imgur.com/LIxmUAA.jpg
Demon
- 30th June 2024, 04:42
Before compensating, the probes had a slight up-tick/down-tick when changing edge:
https://i.imgur.com/Db9URoS.jpg
That is now gone, so I must have done something right:
https://i.imgur.com/qShLrP2.jpg
Yellow, encoder A
Blue, encoder B
Beige encoder A after Schmitt trigger
Green encoder B after Schmitt trigger
But there is still some static that cycles through at a regular rhythm. Here it is at a slower rate so it's more apparent:
https://i.imgur.com/G2U5Jub.jpg
This could just be an artifact on the USB port (have that static on PC USB port and external hub). I'll have to test on another 5 VDC power source.
richard
- 30th June 2024, 12:07
But there is still some static that cycles through at a regular rhythm. Here it is at a slower rate so it's more apparent:
would your mains power be at 60Hz ?
hint 16.667mS
the A B debounce looks very uneven between rising and falling edges. the unequal phase shifts so introduced will make R.E data interpretation interesting, especially at varying rotational speeds
Ioannis
- 30th June 2024, 21:30
Do you have any Switch Mode Power Supplies, either 5Volts or other?
The noise might be because of that. If it is on a specific pattern and rate then something else cause this. Either clock, interrupt or as you said USB action.
Critical decoupling may come to rescue. Also earthing correctly also may help.
Ioannis
Demon
- 2nd July 2024, 03:15
ARGH.... I finally found out what is that regular noise, the probes reset to AC coupling. I haven't looked in the manual yet if there's a way to save the current setting as Default.
https://i.imgur.com/yLH7sEn.jpeg
About the uneven edge spacing, it's mostly the A wiper (yellow) that varies a LOT. B wiper seems to remain stable on average (sometimes it gives a longer intermission, but nothing as radical as A wiper).
I don't know if it's me that damaged the rotary encoder, or if it's "cheap" that way. I turned it countless times both directions, and I don't find a pattern.
If I turn CW and get a long intermission, I turned 2 clicks CCW, then turned again CW, but didn't get the long intermissions again.
Demon
- 2nd July 2024, 04:51
I moved the posts here from the SDS-1104 review thread.
Your waveforms seem to indicate that you might benefit from adjusting the trimmer capacitor on your probe(s).
Yup, waveforms are cleaner now.
:cool:
Demon
- 2nd July 2024, 05:10
... Anyway, since you master the art of software, I think is waste of money to add hardware when you can debounce in software.
Plenty of ways to do that and as you said, going into production, will save you a lot of money and complexity....
I know. But I haven't started coding yet and don't know exactly how burdened my processors will be. I prefer to start with hardware debounce, and then see as I advance. It's a lot easier to take stuff off a PCB, than to add it all later.
...insert drum roll and trumpets here...
I present to you, the Encoder Driver v1: 24 encoders, 1 switch, debounced according to Bourns, inverted via 74HC14 Schmitt triggers, in a 30mm x 160mm vertical package. I have 180° pins on the design, but it'll be 90° pins on the final product.
https://i.imgur.com/2xJ1IlG.png
Ioannis
- 2nd July 2024, 10:02
Hmm, too many wires to connect switches and encoders. Have you thought about that? For a production this is very time consuming.
Ioannis
Demon
- 2nd July 2024, 20:40
No more wires. It's unrealistic.
I changed to a single main board for all switches. The ADC, MCP (switches and LEDs) and encoder drivers will be placed around the perimeter with headers.
So now I'm down to just soldering the switches, pots and encoders.
Powered by vBulletin® Version 4.1.7 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.