PDA

View Full Version : Filtering noise from a wire



Demon
- 19th January 2024, 07:05
I have install pushbuttons on the flip side of these (5V circuit), and the button state is sent via a 3rd wire to another board along with the VDD and VSS wires:

https://i.imgur.com/Fvf2AMT.png


What is the proper technique to filter noise picked up by the wires before the signal is processed by a MCP23017 I/O Expander?


I searched here and google for "decouple wire lines", but it's too vague of a question. And I don't know how I can state it better, or differently.


I've read about ferrite beads, but I'm not sure if capacitors could do the job as well. I remember hacking a keyboard many moons ago, and it had aluminium foil along the back cover.


EDIT: I have to consider that someone might have speakers, cell phones or other "noisy" devices placed right beside the unit.

Demon
- 19th January 2024, 07:18
This lady recommends "This is one of the two ways to control EMI—eliminate the source or eliminate the antenna."

https://resources.altium.com/p/everything-you-need-to-know-about-ferrite-beads


I can't eliminate the source for the simple reason that I have no idea what a user might put within proximity of the device.

As for the antenna, I assume she means protecting the wire. I will have a LOT of unshielded small gauge wires, ranging from 1 to 8 inches (I'm up to nearly 100 switches). I could wind them up in aluminium foil like I see on network cables (I haven't done any research on this subject yet).

Ioannis
- 19th January 2024, 09:35
Maybe it is simpler to put all these stuff in a metal box and earth it?

Ioannis

Demon
- 19th January 2024, 14:05
Weight is an issue. :(

Ioannis
- 19th January 2024, 15:32
Then using shielded cables or wraping with copper foils like these may help on this: https://nl.aliexpress.com/item/1005003118020966.html?src=google&aff_fcid=99a8f0e7d1b14275bd1b48a06e0a5e7c-1703992529149-05693-UneMJZVf&aff_fsk=UneMJZVf&aff_platform=aaf&sk=UneMJZVf&aff_trace_key=99a8f0e7d1b14275bd1b48a06e0a5e7c-1703992529149-05693-UneMJZVf&terminal_id=cfc40eba1c334ba58e08955fa5710553&afSmartRedirect=y&af=mDD&cn=aliexpress&cv=banner&dp=Cj0KCQiA2KitBhCIARIsAPPMEhL6_LvM6SuBjaqH6n0zkDQ 2IAvD4BMzmpYBDBKv8OMJJN0Y1j8DQR8aAhKSEALw_wcB&tp2=mDD&afref=&gad_source=1&gclid=Cj0KCQiA2KitBhCIARIsAPPMEhL6_LvM6SuBjaqH6n0z kDQ2IAvD4BMzmpYBDBKv8OMJJN0Y1j8DQR8aAhKSEALw_wcB&gatewayAdapt=glo2nld4itemAdapt#site#&mall_affr=pr3

But why bother with all this stuff? Did you have any reliability problems?

Ioannis

Demon
- 19th January 2024, 19:52
...But why bother with all this stuff? Did you have any reliability problems?

Ioannis


Nothing so far. I just like to be prepared for the worst case scenario if I can. But I'm not going to drive costs up 500% to protect from 0.0001% insane user conditions either. :)

My old scopes are acting up; switches and buttons causing noise on the screen; image is jumping like an old CRT. I'm not going to spend time figuring out if seemingly bad signals are real, or the result of faulty ancient equipment.

I'm waiting for a small scope that had a good review for testing switch debounce. I don't do any advanced scoping routines; I only need it to check 5V lines for noise and switch bounces.
Right now, I just don't know just how sensitive or hardy 5V circuits can really be.

What ordinary household items that a gamer might have on his desk that you would consider as the biggest causes of noise on circuits?

Electric kettle?
Large speaker?
Cell phone playing a movie?

I'm planning on setting up some tests to see just how much noise my circuit can pick up.

Demon
- 19th January 2024, 20:05
Then using shielded cables or wraping with copper foils like these may help on this...


I already have a lot of manual tasks required to assemble a single unit. I would probably get shielded wire; something like this.

9564


I haven't searched for prices. I just took a pic of the first one I found.

But first I want to test to see exactly what I'm facing.

Demon
- 19th January 2024, 20:47
Case in point: these guys say a 10 meter wire is an antenna, but under 10 cm is nothing to be worried about (under normal circumstances).

https://www.eevblog.com/forum/beginners/protection-from-noise-in-a-long-wire/msg3863054/#msg3863054

My longest wires might not even be longer than 10cm. I'm just starting the I/O Expander circuit (it's going to sit "somewhere" in the middle of a bunch of switches//buttons).

richard
- 20th January 2024, 01:51
what is the shortest switch activation period that you would expect to need to detect and how quickly do you need to respond ?
generally any key press under 50mS i would just ignore . for basically "static" switches 200 0r 300 mS would be more than adequate

why care about noise and debouncing if quick responses are not required

Demon
- 20th January 2024, 05:11
what is the shortest switch activation period that you would expect to need to detect and how quickly do you need to respond ?
generally any key press under 50mS i would just ignore . for basically "static" switches 200 0r 300 mS would be more than adequate

why care about noise and debouncing if quick responses are not required


The only issue I can think of is that I have rotary encoders. Nothing is preventing the user from turning 2 encoders at the same time while on auto-pilot.

There's also the possibility of someone flying with a co-pilot/navigator; that could mean the "possibility" of up to 4 encoders moving at the same time. I want to be ready for that.


My goal is to undercut the market by a wide margin. It's very possible someone with vested interests would try their best to find "bugs" with my product, and drag my name on flight sim groups.

For example: back in college during the late 70ies, Burroughs brought in a main-frame but we thought it sucked. So most a lot of computer students flooded the queues with duplicates of their jobs. The techs from Burroughs were not prepared; the machine failed, badly, and IBM came back. We didn't have vested interests, we were just goofballs, but we did crash the system.

Just look at this thing; couple of switches and 3 LEDs for $140CAD. That's insane. That's worth something like $20 at most. There's very few competition, so they pretty much do as they please.

I'm not the next Delorean, but I still expect resistant. :)

richard
- 20th January 2024, 05:27
I have rotary encoders. Nothing is preventing the user from turning 2 encoders at the same time while on auto-pilot.

rotary encoders are a completely different story to switches, you have virtually no chance of reading multiple re's via i/o extenders with any confidence that steps and direction changes won't be missed

Ioannis
- 20th January 2024, 09:21
Regarding the Rotary encoders Richard covered it 100%.

With shielded wires I am pretty sure you won't have any problems. Forget about R's and C's, just read two times the switch state and your are done with debounce.

As for long or short wires acting like antennas, well, the general statement "long wires act like antenna" is not quite right. It depends on the frequency we are talking about. For example, 10cm may seem very short, but this is an antenna for 750MHz and the 10m is an antenna for 7.5Mhz. So, which one may be a problem for you? It depends on what signal sources you have nearby, right?

Best way to deal with all frequencies is both cable shielding and metal case box wherever there is a possibility of interference.

But I think we are getting crazy on this...

Ioannis

tumbleweed
- 20th January 2024, 23:36
rotary encoders are a completely different story to switches, you have virtually no chance of reading multiple re's via i/o extenders with any confidence that steps and direction changes won't be missed
+1

If you're trying to use an IO expander to do that good luck!

Demon
- 21st January 2024, 00:37
Challenge accepted 😁

Ioannis
- 22nd January 2024, 10:57
Even if you have the fastest MCU to decode rotary encoder, the bottleneck is the I/O expander and will not be fast enough to follow users speedy fingers!

Ioannis

Demon
- 30th January 2024, 04:41
what is the shortest switch activation period that you would expect to need to detect and how quickly do you need to respond ?
generally any key press under 50mS i would just ignore . for basically "static" switches 200 0r 300 mS would be more than adequate
...


I didn't have real world data yet. Here's the switch with the longest activation period mounted on a test PCB:

(similar to this switch, yellow circuit, about 10cm end to end)

9571


5vdc with 10:1 probe
.1 volt / division
.2 ms / division

9570


It takes 5 divisions for a press, so 1 millisecond end to end. The other switches take about 0.3 to 0.6 ms.

It has a blurry bounce of under 2 sub-divisions at the top (∼0.07ms), I saw at least one other press with a bounce twice as long (it was out of focus - I didn't save it).

I wasn't able to get any rising edges for some reason. I'm sure that has to do with the trigger settings, but I just don't know how to do that, yet.


This is what I get probed directly to an identical unconnected switch:

9572


It took a lot less time to activate, under 0.5ms. I assume this is what you guys meant about traces acting as antennas.

Demon
- 30th January 2024, 04:53
At least now I have an idea of what sort of activation times and switch bounce that I'm facing. I really had no clue what sort of activation delays I was facing (never got this far in a project).

Now I need to test from a secondary PCB, out using wires (max 10cm) to a 1" x 1" switch PCB, and back to the secondary PCB.

That will give me actual data using the planned hardware.

Demon
- 30th January 2024, 05:03
Even if you have the fastest MCU to decode rotary encoder, the bottleneck is the I/O expander and will not be fast enough to follow users speedy fingers!

Ioannis


This is a signal from an EC11 rotary encoder.

5vdc with 10:1 probe
.1 volt / division
.2 ms / division

9573


It takes about 2.5 time divisions to activate; so about 0.5ms.

MCP23017 I/O Expanders can run up to 1.7 MHz in I2C mode.
MCP23018 I/O Expanders can run up to 3.4 MHz in I2C mode.
MCP23S17 I/O Expanders can run up to 10 MHz in SPI mode.

I'm not keen on the new addressing mode on the MCP23018 version. I'm hoping the MCP23017 is fast enough at 1.7 MHz in I2C mode. At worse, I'll learn how to use the MCP23017 at 10 MHz in SPI mode.

(nope, haven't done any math to check if it's possible, mainly cause I have no clue how to do that properly :D )

tumbleweed
- 30th January 2024, 12:33
MCP23017 I/O Expanders can run up to 1.7 MHz in I2C mode.
MCP23S17 I/O Expanders can run up to 10 MHz in SPI mode.


That's the wire speed... you'll never get the code to run anywhere near that fast except for a single byte transaction.
You won't get I2C to run that fast without active pullups, and getting the PIC to do 10MHz SPI depends on your system clock.