3
\$\begingroup\$

I'm trying to build a quadcopter with and Arduino, and I'm facing a problem, that is the RF receiver of the quadcopter freezes (not the Arduino) when I turn on the brushless motor.

setup:
 Controller:
   ->arduino
   ->nrf24l01
   -> 2 joysticks
 quadcopter:
   ->arduino
   ->nrf24l01
   ->4 brushless ac motors

I achieved communication between the controller and the quadcopter, but when I connect the motor so that the velocity of the motor be proportional to the control joystick position, the moment I apply some throttle the motor start running and at that moment the RF module stop working (freezes), and the motor stays on with the last power level received from the controller. I know that is the RF modules that is failing because I have the Arduino also controlling a blinking LED, and the LED stays blink during the freezing.

I think the problem is because the motor is connected to the Arduino power line without enough protection. But anyway, I put bellow a image of a schematic of the circuit that power the quadcopter, and some images of the controller and the quadcopter.

enter image description here

enter image description here

enter image description here

enter image description here

Note that both the Arduino, ESC and RF modules use the same ground, (I think that's the problem).

Can anybody give me a solution for this?

\$\endgroup\$
1
  • \$\begingroup\$ your schematic is not very clear, can you draw a better schematic? \$\endgroup\$
    – DRF
    Commented Jun 17 at 13:52

2 Answers 2

4
\$\begingroup\$

Note that both the Arduino, ESC and RF modules use the same ground, (I think that's the problem).

Yeah, quite possibly... or more to the point, the problem is there is no ground, it's all spaghetti.

Wires are not short-circuits at radio frequencies. What you think of as one net, at one point in the circuit, in general, does not have the same voltage at some other point. That wire has traveled through a varying electromagnetic field, and has some voltage induced on it in addition to the source signal. And similarly for all ground connections. "Ground" itself is meaningless in such an environment: we can consider local ground at a circuit, or component (say, an IC's VDD/GND pins, and signals with respect to that), but in the space between, where wiring flows, both connections pick up indeterminate induced voltages (or currents) and the whole thing is a nightmare to troubleshoot.

It's very likely the ESC switches its outputs very fast (say, 10s of ns), which launches a wave at the motor, and an inverse wave up the supply and control pins. As the wave induces into nearby wiring, logic levels are momentarily corrupted, and sensitive circuits can be disturbed. In more extreme cases (like ESD), clamp diodes are activated and stray currents can flow all over the place (including triggering CMOS latchup). I think that extreme is unlikely, but it could also be that some parts are in a really unlucky position and things have conspired to have a similar effect.

The Arduino doesn't seem to have too much trouble with that (if you were reading any inputs from the ESCs, they would probably need filtering or error correction), but the comms between Arduino and nRF, or the nRF itself (noisy supply?), aren't going to be doing well.

Note that this isn't, or isn't necessarily, corruption of the radio itself -- I mean direct interference with the antenna and signals. The ESCs probably don't produce significant if any harmonics that high up (whatever it is, 433MHz, 2450MHz, etc.). More likely routes of interference are poor supply voltage quality (more and better filtering), corrupted signals (induced and ground-loop), or corrupted analog functions like clock oscillator or PLL, etc.

The first line of defense is to use a structure that permits some manner of analytical sanity. If we can always have a nearby point to measure voltage against, we might still have induced voltage between points on that surface -- but at least we can read a signal consistently. This surface is called a ground plane.

Try adding a sheet of metal (copper or tin plated steel is effective for this) underneath all the circuits, and attach all ground connections to it. More pins, the merrier -- again, wire length counts against you, keep grounds short and many. Keep wires low, close to the ground plane, to greatly reduce induction between them. Route the ESC power lines some distance away from everything else -- they should only be common where the battery and regulator connect. The ESC power lines will still have to cross signal lines by the looks of it, but this can be done with a brief hop across the signals, minimizing coupling. A strip of grounded metal could also be placed between the wires to further shield them, but this probably won't be required (you also may not have any way to determine if such a minor change is actually the problem).

The ESCs draw considerable currents, and quickly (albeit on ~ms time scales, not the ~ns we're talking for EMI here). This may still drop relatively a lot of voltage along the plane, due to its resistance (particularly if steel). You should probably keep their ground wires, and just strip some insulation near the unit to make a local ground connection. That way the ground wires can be RF-grounded where important, but the wire is still the dominant (LF/DC) current flow path.

\$\endgroup\$
4
\$\begingroup\$

It sounds like you may be getting RF interference from the motors and/or their drivers.

There are several ways to deal with RF interference:

  1. Distance - keep the source of interference physically far from the receiver. Not really practical in this case. The wiring layout can be improved though to minimize coupling between one circuit and another. Basically clean up the rat's nest of wires.
  2. Bypassing - use capacitors to bypass RF on power leads, putting small capacitors such as 1 nF to 100 nF across the power leads of the motors and controllers may help.
  3. Filtering - use inductors or ferrite beads on power leads to block RF, this can be done in conjunction with bypassing.
  4. Shielding - modules can be put in shielded enclosures (maybe not practical where weight is an issue) and some wiring can be done with shielded cables to reduce coupling of signals.

You may also be getting non-RF frequency interference, basically spikes and noise on the power leads. Bypassing and filtering can help with this but larger capacitors may be needed as the frequencies involved would be lower, maybe 1 uF to 100 uF.

If you have an oscilloscope you could try to look for noise on the power leads.

\$\endgroup\$

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