0
\$\begingroup\$

I'm building an Arduino-based quadcopter. I already built a partially working prototype and now I'm preparing the second version, which will probably be the definitive one.

Instead of the the whole Arduino (UNO) board (actually it's quite a small quadcopter, and the board is too big for it), I'm going to use only the microcontroller, ATMEGA328. I set it up on a breadboard following this tutorial on Arduino's site and it works fine... if I don't use my 4 motors simultaneously (but of course in order to run a quadcopter I need them to work together).

My quadcopter is powered by a single cell LiPo battery (3,7V; 600mAh; 2,22Wh): a unique battery for the 4 brushed motors, the microcontroller and some sensors. If I connect the ATmega328 directly to the battery, just like the motors, it sometimes fails and reset for example because of some current spikes, too big for the battery, when the motors start.


So my question is: can I set up a "stable" circuit, with as little noise as possible, to run the Arduino and the sensors first of all without risk of failure in case of current spikes in the motor's circuit, and secondarily to get the best ADC results etc.? How can I do that?

\$\endgroup\$
1
  • \$\begingroup\$ Use a DC to DC regulator to provide a constant voltage to the Arduino's and use appropriate power filtering. \$\endgroup\$
    – Voltage Spike
    Oct 21, 2016 at 17:42

2 Answers 2

0
\$\begingroup\$

it's not a noise issue, that's a power supply decoupling issue and general issue with motors like this. You should also attempt to do a 'soft start' on the rotors or start each rotor individually (start them into some kind of idle mode, and then all can ramp up together).

The microcontroller power supply circuit should come off the lipo battery in parallel with the rotor supply, and the use of a series inductor and reasonable sized capacitors on each size (100uf-1000uf).

Also if you are running your Atmega328 at 16Mhz you will have glitches with such a low VCC voltage. make sure you are running it at a lower clock frequency or get a 1-cell lipo to 5V boost converter (which will help a lot with decoupling by the way, at the same time) to run the microcontroller and any sensors.

You should further decouple the AVCC of the ATMEGA328 (analogue supply voltage) by using a ferrite bead or another small inductor in series from the VCC to the AVCC with appropriate small value capacitors scattered throughout. VREF can be the internal band-gap reference, or you can connect VREF to AVCC and select to use external VREF for the ADC.

\$\endgroup\$
3
  • \$\begingroup\$ Thank you for your useful answer!could you please tell me what \$\endgroup\$ Oct 22, 2016 at 20:52
  • \$\begingroup\$ sorry, I sent my comment before finishing it. Could you please tell me what capacitor value shoud I use for the avcc decoupling? \$\endgroup\$ Oct 22, 2016 at 20:55
  • \$\begingroup\$ @noearchimede please read this document AVR042 - hardware design considerations pages 4 & 5, and this one AVR040 - EMC design considerations pages 9,10,11. They don't mention any numbers except 100nf. Use a small series inductor + 100nF cap to decouple battery voltage to VCC. then after this, from VCC to AVCC+AREF do another series inductor + 100nF cap. AREF should have an extra 100nf cap on it as suggested in the app note. \$\endgroup\$
    – KyranF
    Oct 22, 2016 at 21:09
0
\$\begingroup\$

You'll need to isolate the microcontroller from the motors. This can be easily done with a separate battery on a common ground, which it sounds like you're not eager to do, or by a diode and a sufficiently large capacitor on the microcontroller side. You'll want a small capacitor for small line noise and a larger one to cover brief dropouts from battery spikes.

Be aware that a diode will drop the voltage slightly between the battery and microcontroller, so you'll want to account for that when selecting the needed capacitance. A schottky diode will help minimize the drop.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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