Bad John

Bad John is a project of Rotor Garage ( looking to advance control of remote airborne devices.

Table of contents

The Premise

RC control for flight has not evolved and represents an anti-pattern for advanced control, comfort, and integration with new technology. The dual X/Y gimbals, with 2 channels per gimbal, seemingly random control elements, and a dangerous finished product is a recipe for unimaginative entrapment.

The Bad John project is an attempt to reverse engineer necessary elements to reposition the basic control of a RC (drone) Transmitter.

Here is a presentation on the topic:

Going Beyond the Dual X/Y Gimbal

The X/Y gimbal provides 2 channels of control. Differentiation of control in different products can be summed up as:

When working with joystick based control paradigms many more axes are available. A reasonable max is 3 channels fully proportional and a possible boolean (switches) adds a fourth channel.

However, 6 channels of fully proportional control with possible additional boolean controls (switches) is not beyond current technology. This style of control is a little bit extreme.

Products do exist. A joystick with 3 axis of control is very common.

Above is an Apem Product number M31L0M1M from the "M series Miniature resistive joysticks". Here is a PDF data sheet. Available via Mouser among many warehouses.

Areas of possible impact:

Most 4+ channel transmitters follow the same pattern of a thin box with dual X/Y gimbals, possibly additional proportional channels as the design team sees fit, and switches in the worst possible areas.

"Or that is how I feel" Says people all the time.

The 2 Major Problems with Switch Placement

  1. Position + switch type + direction + quality is is not a controlled element and leaves one helpless to the ABS plastic box chosen from the favorite hobby shop.

  2. The switching elements are placed in a manner that enhances the possibility of damage and accelerates decay.

As a result all of the controllers generally feel the same, variation is minimal and you hope the bigger money brings better quality parts, engineering, and QA.

You Hope.

My List of Complaints is Long

But I think I figured out the problem.


Resource collection:

16Jan2016 Update: Initial Decomposition:

The Spektrum DXe was disassembled, view the private video of 2+ hours of sitting at the desk taking this thing apart. The video exists for reference of how the device "goes back together". Additionally I was testing out a new web-cam, new broadcasting software, and testing out ideas.

The unit reassembled and operated as expected.

Currently there is a set of minimal parts, the general summary:

Current blocker:

Determining type of encoder, discovering alternates in encoder, software, and hardware. This process has not started.

On the Horizon:

18Jan2016: Research

Rotary encoder search begins. All we have is "100tc" on the side of the encoders (all 4 are the same). The encoder is an absolute type and not incremental.

Searches for 100TC were not fruitful. Nor were parts research on DigiKey and Mouser. An easy win would have been nice, but luck is not always on your side.

The working theory is that Spektrum is not using some military grade 100% unique WTF style of encoder. A $70 price point and highly cost effective engineering int he DXe transmitter seems to support this case.

So my alternative is to learn how encoders work and gain a solid enough understanding to make hardware and design choices around the 100TC encoder.

So I read:

After some delightful demo on encoders I decided to put one of the 100TC encoders on the breadboard with a resistance check to look for a suspicious on/off pattern. At first it looked like I was working with an encoder, some yes/no with a lot of no using the boolean setting (no resistance) for the multi-meter.

After switching the multi-meter over to variable resistance mode the results got interesting. Moving the resistance to the 200k range no on/off pattern was visible, but instead a very "rheostat style" output of linear scaling values.

At the 20k setting the 100TC range was 0.10 to ~4.74 using. I quickly determined that the center pin was common, not surprising. When the lead was moved to the other hot the values were the same but reversed.

So this MIGHT NOT BE A ROTARY? Starting to smell like a 10-20k potentiometer. That would be amazing! More soon.

1Feb2016 update: The Pots are analog 5k Ω potentiometers all around.

24Jan2016 Research:

It looks like Spektrum is using 20K ohm potentiometers. Not encoders. After some A/B testing and an assortment of testing trim pots at 20k ohm I was able to mimic the yaw sent to the transmitter -> rx -> flight computer -> Cleanflight (OSX).

The DXe is now mounted on cardboard:

On the Horizon

Dreamy stuff:

Digital resistor and simple bio that accepted math.

One can dream.

31Jan2016: Moving forward.

In the past week I received my 3-axis joystick from Super Droid Robots.

3 Axis is GO!

Many new images and scans added tot he Flickr gallery

On the unit is the following information:

I think this is the product. Google translate was able to bring most of the Chinese into English for me.

I have this unboxing video and some (pending) engineering notes:

Over the weekend I was able to construct and test a minimal resistor+trim pot circuit that addressed an issue with the Spektrum DXe PCB. The problem is that the gimbals limited the range of the potentiometers (confirmed 5k) so the "hard zero" value was never hit. If the pot traveled from ~5 to 0 (ohm) the range from approximately .6 to 0 would register on the Spektrum PCB as full. This is according to the CleanFlight interface.

To solve this I used a 67Ω resistor on one of the terminals in series to raise the zero-calibration to greater than ~.6Ω. I also added a 10k Ω trim-pot in parallel to the wiper and resistor to decrease the span. The math is not perfect but does limit the (greater than expected) throw of the joystick. All tested well on roll, pitch and yaw axis.

The above tests were done via a bread board, but I transposed the circuit wrong when I moved to a prototype PCB and things did not function as planned. Regardless, everything is working great and I need to re-do the adaptor board.

I may also add a physical "limiter" to the X/Y (roll/pitch) axis to not need the resistor/trim pot, using the curcuit adjustment on the yaw only. The mechanics of the control (twist/z-axis) is too fragile to mechanically modify. By "physical limiter" my intent is to add a barrier overlay on the top of the controller to stop the motion at the right area.

Regarding expo and rates: Much thinking has been put into the fear of the pots (joystick) having the wrong curve or being a negative or drag on performance to my needs and desires for flight. Right now the consensus is that rate, expo and other CleanFlight adjustments will allow me to overcome any items of this type. So for now this is a non-issue.

Also in the past week cardboard models have begun and the physical size, shape, and functionality has changed greatly. The initial approximate scans of the PCB has been made and put in Flickr.

Button Madness!

Arcade buttons were purchased!

These will be operational throttle mutes.

A throttle mute will override the throttle and return a fixed (but adjustable) value, key for inverted and free-fall maneuvers. I also anticipate having a (field) adjustable throttle mute opening up new acrobatic possibilities.

Originally I was considering using the "adjustment" element in CleanFlight using an aux channel, but I was not finding what I wanted. It dawned on me that I can simply bypass throttle and induce whatever value (resistance) I want using a parallel circuit (think DPDT trigger that A/B switches between throttle via potentiometer and a fixed value). I may also use a subtractive method for initial testing where a limit on span is induced (circuit completed) via arcade button. The long term goal is to have an exact throttle value that is tuned for prop+motor. I will open up on these ideas more once I am in the testing stages for throttle mute.

I will be using 2 buttons that each serve the same function. The placement and ergonomics have not been settled, but recent sketches are showing some promise.

Physical Prototyping

I am now moving into early physical prototyping. My estimate is to generate 3-4 cardboard prototypes to iterate cheap and fast. After cardboard I will move to foam-core or corrugated plastic (lawn sign material). The physical prototype stage is very exciting and the post-cardboard versions will be field testable (but fragile).

Another key part of the physical prototyping is making decisions on the placement, range, action and functionality of the throttle. I still need to purchase the potentiometer for this feature. There are many (100k+) options, but I want the controller to be a very natural fit for the hand and as slim as possible. The physical prototype will allow me to make these decisions and spec out the right part.

On the Horizon

Notes and Etcetera

3Feb2016: Preparing for success.

As prototyping starts, I decided to get a few possible slide 5k pots on order. I settled on these for prototyping:

Generally the choices were 20, 30, 45, 60, and 100mm throw. After some physical prototyping I decided that 30mm is the smallest and 45mm is nominally ideal.

The 45mm choice also factors in the possibility that I may need to limit the throw, so starting with something that is a little small will only decrease the range and ultimately accuracy and usability.

Luckily these parts are very cheap and iterations cost time and not money.

Mounting is still unknown, but I suspect the prototype will call for an inverted mount of a PCB in or under the middle layer. The "trigger" will be created by affixing a ring from a child's bubble blower toy. I expect the trigger to evolve, but no need to plan beyond a simple MVP.

This coming weekend I intend to re-do the circuit for YAW and mount the unit in a corrugated plastic prototype. I am also currently looking for a cheap testing drone to bind. I may have one in the closet, but the motor+ESC need some work (calibration?). The test drone is going to be small, sub 200, and currently I am looking at 120-170mm range.