Reverse Tamer by Alan Bond
This PICAXE based project was designed to limit the reverse speed of radio control model boats. Most speed controllers give full speed in both directions and while full speed may not be required for reverse use, it is often most undesirable to have it available! The problem is that boats only have one pointy end - apply too much speed in reverse and the blunt end dips under the water and the boat is swamped and may even sink. This is particularly easy to do with high speed launches where even relatively little throttle yields a speed which is dangerous in the reverse direction.
This unit was designed to intercept the throttle channel from the receiver and pass a processed speed demand signal to the ESC (Electronic Speed Controller). The forward speed demand remains unchanged, whereas any reverse speed demand is suitably scaled. A potentiometer allows the user to set the maximum reverse speed anywhere between 0 and 100%.
A PICAXE 08M is used to read the incoming pulsewidth from the receiver (use the 'pulsin' command) and signals either side of the 1.5mSec (standard neutral) duration are determined to be either forward or reverse speed demands. For forward speed demands, an identical output pulsewidth is generated (use the 'pulsout' command) and sent to the ESC connector. In the case of reverse speed demand inputs, the difference between the demand and 1.5mSec neutral is determined (call this result='n') and then reduced by the ratio desired by the user. This new result (call it 'k') is then added back to the 1.5mSec neutral to yield the final pulsewidth to be output to the ESC.
The potentiometer is connected across the 5v supply and its wiper connected to an ADC (Analogue to Digital Converter) input of the PICAXE 08M. Each time round the main program loop, the potentiometer setting is read (use the 'readadc' command) yielding a value between 0 and 255 (call this result 'p'). The result 'n' (from earlier) is multiplied by 'p' and then divided by 255 to yield the result 'k' - so word variables have to be used for this operation and the order of calculation 'n' * 'p' / 255 strictly observed, otherwise overflow and/or truncation due to integer arithmetic will occur.
A transistor buffer is used to condition the signal from the receiver. The output voltage swing of some receivers (especially 2.4Ghz types) has been found to be insufficient to trigger the PICAXE 08M (Schmitt Trigger type) input. The buffer has the result of inverting the incoming signal so the 'pulsin' command syntax needs to be set for measuring negative going pulses.
Additional code is used to check the validity of the input signal and take appropriate action, including 'failsafe' - otherwise rubbish in = rubbish out, and you may get that full speed reverse you were trying to avoid!
As can be seen from the pictures, the unit is easily constructed on stripboard and utilises a servo extender lead cut in half to provide the input and output interfaces. All the parts are available from Technobots. No provision was made for programming the PICAXE chip in situ, as this was done elsewhere in a slave rig.
R1 - resistor 47k #2008-047
R2 - resistor 1M #2009-010
R3 - resistor 4k7 #2007-407
Q1 - transistor BC337-16 #2300-412
U1 - integrated circuit PICAXE08M #3803-110 pre-programmed chip
IC Socket for U1 #2700-008
RV1 - preset potentiometer 4K7 #2000-405
stripboard 25x64 #2700-105
Servo Lead 3601-003
Designer: Alan Bond