3
\$\begingroup\$

I'm using an Atmega328P running at 16Mhz (similar to an Arduino UNO). to control a 433Mhz Superheterodyne RF receiver (WL101-541) and two TowerPro SG90 analog servos.

Everything is working except for the situation I describe here. In the event a servo is under a load, such that it is remaining active trying to hold position, RF cannot be received. I believe that the motor activity is causing some sort of interference. I have been unable to track it down or work around it and am looking for ideas.

Some details:

  1. A single switching power regulator capable of 3A (far more than is
    being used).
  2. Power and ground split at the power regulator with one path going to and from the servos, and another going to and from the MCU and RF receiver. My understanding is that this will minimize any ground loops.
  3. The servos currently reside behind 3 220uF capacitors to handle startup current needs (There are 3 because I had no larger ones available).
  4. I have tried a variety of other capacitors across the serve power and ground to try to filter any feedback to no effect.
  5. I have tried twisting the servo cable. This had no effect.
  6. I have tried placing Ferrite around the servo cable (both straight through and 3 loops). This had no effect.

I'm not sure how to proceed identifying the issue or fixing it. Thanks.

Update: 1/23/18:

Running with the theme that it is likely the power, here are some additional findings.

  1. The issue does not occur when powering with 5V from my Tekpower TP3005T variable linear power supply.
  2. Issue does occur when powering with a L7805CV Voltage Regulator to supply the 5V with 10uF capacitors on both the input and output lines.
  3. Issue does occur when powering using an LM2596 based buck converter.
  4. I need to confirm this again, but I believe the issue occurs using the L7805CV and LM2596 whether they are powered using a battery or the Tekpower.
  5. Using two L7805CV regulators, one to the receiver and another to the servos, from the same power source appears to greatly reduce, if not resolve the issue.
\$\endgroup\$
  • 1
    \$\begingroup\$ Normal debugging to determine if conducted or radiated interference is by isolation. Can you measure Conducted ripple with AC coupled 50 Ohm load? Do you have Rx Ripple specs? Does Rx share Servo DC power wires from power source? ( bad ) Servo motors impedance ? 5~25 Ohms??, Cap g.p. or ultralow ESR? \$\endgroup\$ – Sunnyskyguy EE75 Jan 22 '18 at 20:48
  • 1
    \$\begingroup\$ Cant you test with separate power sources? \$\endgroup\$ – Sunnyskyguy EE75 Jan 22 '18 at 21:33
  • 1
    \$\begingroup\$ @denver -- I build a consumer product using a similar IC. I suspect I may even know the Asian company building that IC. I wouldn't listen to all this chatter about needing a new radio. The goal isn't to toss your design, right? Do you have a spectrum analyzer? Can you see the demodulated signal coming out of the IC, when the system goes haywire? Go to Amazon and buy some different power source board (I have some little cheapo LDO regulator boards), try it with some batteries? As Tony is saying, it sounds like power. Tony is a good EE, he has helped me many times. \$\endgroup\$ – Leroy105 Jan 22 '18 at 21:35
  • 1
    \$\begingroup\$ I noticed on a cheap receiver IC, using a power adapter through a cheap LDO (notice a trend...?), I might see some really wonky demodulated signals. You can have the amplifier in the Receiver IC backfeeding all kinds of garbage, that's monkeying with the received signal. Sorry not a great EE answer, but my vote is power too. When I say check the demodulated signal, like where does the signal from the receiver go to your microcontroller? Check that line with an oscilloscope when you spin up the servo. What is going on, how does that signal look compared to normal operation? \$\endgroup\$ – Leroy105 Jan 22 '18 at 21:40
  • 1
    \$\begingroup\$ Try these boards from Amazon. I use these to prototype stuff. Seem okay: amazon.com/UCEC-Breadboard-Supply-Arduino-Solderless/dp/… \$\endgroup\$ – Leroy105 Jan 22 '18 at 21:56
5
\$\begingroup\$

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
  • \$\begingroup\$ Thanks. I'll do some testing and report back. Does the filter need to be applied directly in front of the receiver, or can it cover the MCU as well (the whole non-servo power branch)? Is this a lowpass filter with a cut-off frequency around 1575Hz? I used the equation 1/(2*piRC). Was this value picked based on experience with some expected noise values from the servos? \$\endgroup\$ – denver Jan 23 '18 at 18:38
  • 1
    \$\begingroup\$ HE uses 10 ohms as a starting point. 10mA to receiver and 1 ohms causes 0.1 volt drop, which is within normal tolerances for supply voltages. You can also use 100uF in place of 10uF, if Receiver problems still occur. \$\endgroup\$ – analogsystemsrf Jan 23 '18 at 18:56
  • 1
    \$\begingroup\$ I'd use a ferrite bead or an inductor instead of the resistor. \$\endgroup\$ – Nick Alexeev Jan 23 '18 at 19:05
  • 1
    \$\begingroup\$ Any DC power noise test should be done with a 50 coax terminated with an AC coupled 50 load load. This can be a scope or a spectrum analyzer. Since the PS source needs to be << 1 Ohm in most cases, 50 Ohm suppresses stray false readings from long probe ground leads and cable resonances. So the 10:1 probe with clips removed for exposed tip + ring to short test pins <1cm is also acceptable up to 100 or 200 Mhz \$\endgroup\$ – Sunnyskyguy EE75 Jan 24 '18 at 6:01
  • 1
    \$\begingroup\$ But he clearly has a functional issue and the servo pulse rate can lead to current noise right inside the 100KHz IF bandwidth. \$\endgroup\$ – Sunnyskyguy EE75 Jan 24 '18 at 6:07
3
\$\begingroup\$

In working on the issue I came about 3 solutions. Each solution by itself resolved the issue - but a combo is probably the correct approach. I decided to post them here in case they can help anyone else.

  1. Apply a lowpass filter in the power/ground lines to the reciever as suggested by Tony in the accepted answer. Using 10uF for C1 did not quite filter enough, I had to use 100 uF. This results in a drop-off frequency of around 160 Hz.

  2. In my design the regulator output was forked with one 5V/Gnd going to the servos and another to the MCU & receiver. I was using a LM2596 based buck converter. Taking the ground from the servos and attaching it on the input side of the regulator also resolved the issue.

  3. Using TowerPro SG92R instead of the SG90. The SG92R is a revision of the SG90. The servos are nearly identical, with the same form factor, however the SG92R has a higher torque. The higher torque reduced the amount of activity to hold the position under load. This reduced the interference to the point it was no longer a problem.

\$\endgroup\$
  • \$\begingroup\$ Check out the USB spectrum analyzers on Ebay for $80. I use a Rigol ($1500-ouch), but the USB ones (software based) actually do work... I've measured them using a signal generator vs. my Rigol. You'll bring your RF game to the next level. ;) \$\endgroup\$ – Leroy105 Jan 29 '18 at 20:24
  • \$\begingroup\$ @Leroy105 I wasn't aware of those. Thanks for pointing them out. \$\endgroup\$ – denver Feb 2 '18 at 2:27
1
\$\begingroup\$

Tony called out measuring the power ripple going to the RX receiver.

I didn't want to bury this in the comments. I spent some time looking at the actual nuts and bolts of making that power ripple measurement.

This describes how to make that measurement using an oscilloscope.

This shows how to create the 50 ohm coax cable for this measurement

Here are some some engineers describing how they create their test cable

The importance of keeping the measurement at 50 ohms, is a bit outside my depth. Other than to say, pretty much everything engineering wise uses 50 ohm impedances. (75 ohms, is used for certain things too, but 50 ohms is what I mostly see for PCB projects).

Your scope inputs, expect a 50 ohm impedance signal. So you need to keep the measurement at 50 ohms otherwise the measurement is not accurate.

(Certain efficiency stuff with 50 ohm impedance and AC signals. Impedance calculation start to get into some heavier math...).

The nuts and bolts is that you can make this measurement using a 50 ohm coax cable, but it must be "terminated" on one end to keep the impedance at 50 ohms.

We are talking strip a 50 ohm coax cable at one end, and have the bare center conductor exposed as your new oscilloscope probe.

The articles says you can use a 50 ohm resistor in series on this exposed tip, or you can just use a 50 ohm coax cable that already has the 50 ohm termination on it. (I would just buy a 50 ohm coax cable, with two BNC connectors, and cut one off, strip the coax, and solder on that DC blocking cap. You can use the DC blocking cap as your new probe tip. Or if you have a scope with AC coupling, you can just that. The important part is keeping your cable at 50 ohms!)

You would want to block off the DC component of the power signal, so you can put a capacitor in series with your coax cable (I saw a X7R, 0.6 uF recommended for this on the web). Or you can buy that fancy $500 DC blocker thing. I'll go with the cap in series.

So, if you weren't using a mystery IC there might be a published ripple value. In your case, probably not. But here you go on the nuts and bolts of making measurement.

\$\endgroup\$
  • 1
    \$\begingroup\$ While it might see low frequencies disturbing the operation of the circuit, a scope is the wrong instrument for measuring the more challenging issue of radio frequency interference conducted down or radiating from power and signal lines. Professionally a spectrum analyzer would be used (either with a coupling probe, pickup antenna or a very solid DC block), but a halfway decent 433 MHz receiver would also work for detecting components in the band related to the observed problem. \$\endgroup\$ – Chris Stratton Jan 24 '18 at 4:51
  • 1
    \$\begingroup\$ Just nuts and bolts again: a "coupling probe", could be a 50 ohm coax cable with that stripped and exposed center conductor again in this case you are using the spectrum analyzer. Just hover that cable 1mm above the traces, and go around the board using the tip as your "probe". So the general approach is what sort of noise do I see on the spectrum analyzer before I activate the servo and the receiver is working? When you activate the servo, what sort of new noise do you see? Eliminate the new noise = problem solved. This is kind of a down and dirty way to get the job done. \$\endgroup\$ – Leroy105 Jan 24 '18 at 15:44
  • \$\begingroup\$ @Leroy105 Thanks for all the additional details. I'll update the post after I absorb all this and do some testing. It will likely be a few days. \$\endgroup\$ – denver Jan 24 '18 at 16:45
  • \$\begingroup\$ @Leroy105 Issue is solved, so just playing around some now. I don't have setup as recommended so not sure how much that affects what I am seeing. I have a DYI scope with a built in 1MOhm/20pF. I put my DYI scope on the power line before the receiver and the signal is pretty consistent regardless of what the servos are doing (the servos do seem to cause a very minor phase shift). When I put the probe on the ground line however I do see jitter of about .2V when the servos are active. \$\endgroup\$ – denver Feb 2 '18 at 2:48
  • \$\begingroup\$ What is interesting is if I put the probe on the signal line from the receiver I get what looks like noise (expected), but when the servo is running I get a nice square wave (which I suppose is some of my interference). Anyway, thanks for the help. A lot more to learn :) \$\endgroup\$ – denver Feb 2 '18 at 2:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.