Note on Arduino Uno servo jitter

Yesterday I discovered very nasty feature of Arduino Uno (and all other AVR ATMega328 boards) when using servos. Although official Servo library states that it can support up to 12 servos on Arduino Uno (more on advanced boards as Mega), it does not say much about quality of PWM signal.

Since all connected servos (in case of Arduino Uno/ATMega328) are driven using the same timer (timer1), the more servos are connected, the more jitter is introduced to PWM signal. Control “window” of each servo starts to overlap. This results in a situation when real pulse width jumps up and down, sometimes even outside allowed values.

My experiments says that Servo library can support up to 3 servos per 16 bit timer with acceptable jitter level to use as RC control signal. Specially when PWM signal is fed to flight controller. With 3 channels signal quality was acceptable after enabling input filtering on Cleanflight. 2 PWM/Servo channels did not required input filtering.

4 or more PWM channels can be used when real servos, not flight controller inputs, are used. Servo inertia “solves” issue of signal jitter.

Detecting Cleanflight PID tuning issues with Blackbox: not enough P

This is third part of Cleanflight PID tuning tutorial with Blackbox. Previously I’ve showed examples of:

This time it is time for something slightly different: not enough P gain. Usually this problem can be identified without any log analysis. Symptoms are quite visible: multirotor is sluggish during maneuvers, has a tendency to change attitude on its own, constant course corrections are required. In worse cases, it is unflyable. But how does it look like on Blackbox logs.

First of all, symptoms are not so clearly visible. There are no huge oscillations for example. Zoomed out log might event look good on a first glance. For example like this:

blackbox pid tuning not enough P overview

Continue reading Detecting Cleanflight PID tuning issues with Blackbox: not enough P

Detecting Cleanflight PID tuning issues with Blackbox: excess D gain

Welcome to second part of Blackbox PID tuning tutorial. Last time I have showed few examples how excess P gain might look like. Today I will write few words about next common PID tuning problem: too much D. Derivative (future) part of PID controller is very useful, since it allows to smoothen control loop output when it is reaching the target. So, at the end of move (roll, pitch, yaw, anything else) multicopter will start to “slow down” before target is reached. It’s just like accelerator pedal in a car. When you want to reach 50 you start to release it before you reach 50, and not in the exact moment you reached target speed. If you would, you would have to use brake to slow down to 50. Derivative part helps not to overshoot. Without it, movement would be shaky, not smooth.

Unfortunately, D is tricky. Like everything that tries to see the future, it is unreliable and can introduce noise. We do not like noise. Not enough D = shaky, mechanical, movement and overshooting. Too much D = extra noise, vibrations, damped response.

How excess D would look like in Blackbox logs? Like this:

Too much D gain on Cleanflight Continue reading Detecting Cleanflight PID tuning issues with Blackbox: excess D gain

Quick Peek: Eachine Light-2D Brushless Gimbal

You can buy almost everything from China. Including 2 axis gimbal for less than 50 Euro. Websites like BangGood and Aliexpress sell them worldwide. The only question is: are they any good? I’ve decided to check that out and I have purchased Eachine Light-2D Brushless Gimbal w/Motor&Controller For DJI Phantom. Of course, it is not only for Phantom. If you can mount it on your multicopter, you can use it. Why not, it is a clone of BaseCam SimpleBGC 8-bit. The most general purpose gimbal controller there is!

Eachine Light-2D Gimbal

So, is it any good? Continue reading Quick Peek: Eachine Light-2D Brushless Gimbal

Using transistors as switches

I think all popular computerized DIY devices like Arduino, Raspberry Pi or any other microprocessor/microcontroller based boards has one common drawback: low output current. Few miliamps per pin. While this is enough to light a single LED or provide input to other electronics device, it is far from enough to run a motor or power a LED strip. It’s all about current.

Good thing this problem can be solved with two additional devices: resistor and bipolar transistor. Together they can act as a switch. Idea is simple: low current (and voltage if you wish) applied to transistor base causes bigger current (and voltage) to be passed between collector and emmiter. We have two choices: NPN or PNP bipolar transistor. Switch that uses NPN transistor is open/enabled when positive voltage is applied to base. In other words, base is connected to plus.

NPN transistor as switch Continue reading Using transistors as switches

Problem: no OSD when camera is connected on minimOSD MW OSD


When camera and minimOSD are connected to video transmitter, minimOSD is not overlaying OSD data. If camera is disconnected, OSD data is transmitted. After connecting camera, only camera image is transmitted.

Possible Solution

Check if camera and minimOSD are using the same display system. Usually monitor/goggles and video transmitter does not care very much about used display system. Transmitter just transmits, and monitor/goggles very often can detect if signal is PAL or NTSC. But if camera is sending PAL signal, minimOSD has be overlaying imag using PAL subroutine. If it will try to use NTSC mode, it will fail. In case on MW OSD software (Scarab OSD), OSD display system is configured in GUI. Set it to the same system as camera.