This is an old revision of the document!

Futaba 9CAP Mixes for Robots (Robots)

The Futaba 9CAP is the radio of choice in combat robotics. It is programmable enough to do single-stick mixing in the radio (eliminating the need for

Configuring the Futaba 9CAP / 9CAF / 9CHP / 9CHF Radio to do single-stick mixing

The Futaba 9CAP is the radio of choice in combat robotics. It is programmable enough to do single-stick mixing in the radio (eliminating the need for a mixer chip in the actual robot). By single-stick mixing, I mean using the right stick for all driving, converting the forward/back and left/right axes to two motor channels (left motor and right motor).

The Futaba website has confusing instructions on how to configure the radio to do this kind of mixing. I eventually figured it out and posted a tutorial on the <A HREF=“” TARGET=“_blank”>Battlebots Forum</A> explaining it in more detail.

Subsequently, Ted Zeiger posted an even simpler mixing configuration that does the same job. So what I've done is combined my tutorial with his mix. Thanks, Ted! You da man!

How to set up the configuration

The motor outputs will be channels 1 and 2; channel 1 is the left side of the bot, channel 2 is the right side.

Start with a clean, empty ACRO model configuration. Decide what switch you want to control the INVERT function. In this example, switch E flipped away from you will be normal, switch E flipped towards you will be INVERT. To confuse matters, in Futabaspeak, away from you is considered the UP position (even though it is DOWN towards the floor when you are holding the transmitter in a normal position). Go figure.

I personally like to configure my radio so that my left hand does all the switch flipping, leaving my right had free for driving. So I use switch E for invert, switch A as a forward/back dual-rate control, and switch B as a left/right dual-rate control. This also leaves switch F available as a momentary on weapons switch.

Pressing MODE a second time gets you to the ADVANCED mix menu. Scroll to PROG.MIX1 (if not already highlighted) and press the scroll button to configure it.

Press the down cursor button a few times to get to page 2. Set MIX to either ON ro OFF (anything but INH) using the scroll wheel. Set MAS (Master) to ELEV. Set SLV (Slave) to ELEV as well. Set LINK and TRIM to OFF. Set SW (Switch) to E (or whatever switch you want to use). Set POSI to DOWN. Note that as you toggle switch E up and down, the MIX setting will change from ON to OFF.

Keep pressing the down cursor button until you get back to page 1. Change both RATEs to -100; you can toggle between the two by moving the elevator stick up and down. Set OFFSET to 0.

Hit END to get back to advanced menu.

Now that you've got the hang of it, set PROG.MIX2 to: <BLOCKQUOTE>RATEs=-100,-100; OFFSET=0; MAS=ELEV; SLV=ELEV; LINK=OFF; TRIM=OFF; SW=E; POSI=DOWN </BLOCKQUOTE>




Now go to the Basic Acro menus, and select SERVO on page 2. Make sure switch E is down. Push the right stick forward and you should see both channels 1 and 2 go up. Pull it back and both will go down. Push to the right and channel 1 will go up while channel 2 goes down. Push to the left and the opposite occurs. Flip up switch E (turning on invert mode) and you'll see that the front/back response is reversed, but the turning response is not. Your mix is complete.

Turn on your robot and give it a try. Depending on how your motor controllers are wired up to the motors, you may have to reverse some of the channels. This is done in the REVERSE option on page 1 of the Basic Acro menus.

Dual Rates and Exponential

A little tweaking can get you much better driving performance. I had two issues with my latest robot <A HREF=“anorexia.t.html”>Anorexia</A>. The first was that going full-blast with 14.4v for a long period of time would melt my motor endbells. Not good. The solution was to put a “dual-rate” on the elevator STICK using switch A. When Switch A was pushed forward, I'd get full authority, but when it was pulled back, I'd limit myself to half-speed.

To do this, go to the D/R,EXP option. Cursor up/down to select channel, then turn the scroll wheel to select channel 2. Cursor down to SW and rotate wheel to select switch A. Now flip switch A to the forward (UP in Futabaspeak) position, and scroll to D/R and set them to 100,100. Same wiggling of the stick to select the two sides. Set EXP to 0,0. Now flip the switch back (DOWN) and set the D/R to 50,50 and EXP to 0,0.

Now you have, in effect, two gears; regular (A flipped back) and afterburner (flipped forward)

I also had a problem with the turn response being too squirrely. I fixed this by using a combination of reduced authority and exponential. Exponential makes the stick response a curve, so that you get a softer response when the stick is near the center. By experiment I found that D/R=50,50; EXP=-50,-50 and D/R=30,30; EXP=-50,-50 seem to work well for me. The former for normal conditions and the latter for when things are slick.

Even so, the robot is squirrelly when you command a turn while moving at full speed. What is needed is something that reduces the left/right commanding automatically when you're moving forward/back at high rates. While there is no perfect solution, you can link the dual rate to the ELEV (forward/back) stick, so you have a reduced turning input when commanding a lot of speed. I'm still playing with this, but if you want to try it, set SW to ELEV(90%). Change the % by moving the ELEV stick to the desired setting (by eye) and pressing and holding the scroller. You might, for example, set D/R=50,50; EXP=-50,-50 for normal operations, and D/R=10,10; EXP=-50,-50 when you're going over 75% of full speed forward and back.

It would be nicer if there was a way to smoothly blend between two settings, but currently I don't see how to do this. If you know how, let me in on the secret!


It's often useful to know how much time is left in your match. The 9CAP has two timers, which is convenient since there are two standard match lengths, 3 and 5 minutes.

What I did was configure the timers so that when the throttle (otherwise unusued) was above a certain value, the timers would count down. So timer 1 was configured as TIME=3:00; MODE=DOWN; SW=STK-THR; POSI=^23%, and timer 2 was configured as TIME=3:00; MODE=DOWN; SW=STK-THR; POSI=^23%.

During a match, as soon as the Christmas Tree starts counting down, I flip up the throttle, and the countdown starts. If there's a timeout, I just flip the throttle down. Turning the radio on and off resets the timers.

Multiple-Failsafe Weapon Control

In one of my new robots, I wanted to use a speed controller to control the weapon. However, this raises a safety issue, since if the robot is turned on with the radio sending out a non-neutral signal to the speed controller, the weapon will start up, which is not amusing in the slightest.

I decided that the best solution was to use the throttle stick to control the weapon, but have several switches act as failsafes. In order for the radio to send out a non-neutral signal to the robot, not only would the stick have to be more than 50% off center, but two switches, one of them a momentary-on switch, would have to be set. Moreover, I wanted some sort of visual indication that the weapon was armed.

Fortunately, by using the mysterious LINK ability of the 9CAP, this is possible - and you can do it while using all of the other mixing functions listed above!

Assuming you're using in-radio mixing to do tank steering, you've used up the first 5 programmable mixes. This means you've got two left, PROG.MIX6 and PROG.MIX7. These two mixes are interesting because they let you adjust the output at 5 points (full down, mid down, neutral, mid-up and full-up). This turns out to be very useful.

One thing to keep in mind: I have modified my 9CAPs and swapped switch H and switch F. This means that the momentary contact switch on them is Switch F, and lets my left hand control both the throttle and a momentary-on switch. Why I did this will become clear soon.

The first step is to set PROG.MIX6 to: <BLOCKQUOTE>MAS=THRO; SLV=GEAR; LINK=ON; TRIM=OFF; SW=H; POSI=UP POS-1 through -5 = +100,0,0,0,-100 </BLOCKQUOTE>

Set all the stuff on Page 2 of the mix first, then go back and set the POS-1 through 5 values. The reason for this is that if you change the MAS or SLV settings, the 9CAP zeroes the values on Page 1.

When this is done, if you check the servo monitor page, you'll see that if switch H is in the up position, channel 5 (GEAR) now copies channel 3 (THRO) with a huge deadband; you have to move the stick 50% before channel 5 starts moving, but it reaches 100% just as THRO reaches 100%. If switch H is down, then GEAR is neutral no matter what position the throttle is in.

It is very important to set the LINK to ON. If you don't, then the next mix (MIX7) will use the GEAR value as it was before it was modified by MIX6 - and so will always get a neutral setting. Apparently, the way LINK works is that it tells subsequent mixes to use the modified value instead of the original value (hmm, might be possible to make the tank-steer mix a bit simpler using that…)

Anyway, now set PROG.MIX7 to: <BLOCKQUOTE>MAS=GEAR; SLV=FLAP; LINK=OFF; TRIM=OFF; SW=F; POSI=DOWN POS-1 through -5 = +100,+50,0,-50,-100 </BLOCKQUOTE>

If you now monitor the servo output, you'll see that channel 6 (FLAP) now copies channel 5 if, any only if, Switch F is down. So what this means is that in order for the weapon to be told to turn on, the throttle stick must be more than 50% off center and both switches must be in the correct positions (when you do your setup, you'll change the switches and positions to suit your tastes, of course).

For the final touch, exit SERVO and go back to page 1 of the basic setup menu, and select THR-CUT. Set it as follows: <BLOCKQUOTE>RATE=0% SW=H (or whatever you used in PROG.MIX6) POSI=UP </BLOCKQUOTE>

With a RATE of 0%, Throttle Cut doesn't actually do anything to the throttle setting, but it has an interesting side-effect - when switch H is in the armed position, the POWER LED will flash! So now you have a visual indication that the weapon might be dangerous.

Reminder: while failsafes like these are a good idea, you should not depend on them. There are many things that can go wrong; you might start the radio on the wrong model, the robot might be damaged, etc. Develop and use a good startup/shutdown checklist, and be paranoid.