Reversing 18V25 motor controller

I have not purchased one yet, but would like to use this motor controller with a single channel R/C input, with the full range of the R/C control being used to control speed (from zero to full power in forward direction). If the motor gets overloaded I want to stop the motor for one second, reverse it for 3 seconds then return to forward direction (will use external logic to create these signals).

Is there any way to tell the 18V25 to stop then change direction without doing it from the R/C signal (the R/C signal will remain at a steady speed value during this stop/reverse process).

I was hoping to use a separate stop & reverse signals independent of the R/C signal but am not sure if the 18V25 has these inputs.
Any ideas please?


When the SMC is in RC mode, there is no way to get it to set the motor speed to anything other than stopped or the speed corresponding to the RC inputs. You could use the limit-switch functionality to stop the motor for one second, but you would not be able to get it to move in reverse.

One way around this would be to use the controller in serial mode, which lets you specify the motor speed directly via serial commands from a computer or microcontroller. You could effectively simulate RC control by having the serial controller read the values of the RC inputs and set the motor speeds accordingly (it’s as simple as continually setting the motor speed equal to the value of the RC1 scaled variable) except when you want the special pause-reverse behavior.

- Ben

Hello Ben
Thanks for your reply.
If I use a single RC input in the normal way and have the pulse width set to 1.5mS the motor would be stopped (as I understand it).
If the pulse width is increased the motor will go forward, and if the pulse width is reduced towards 1mS the motor will go backwards.
Is this correct?
If it is then I can change my code and have a simpler reversing system than I was planning.

Yes, by default 1.5 ms is neutral (motor stopped), 1 ms is max speed in one direction, and 2 ms is max speed in the other direction. The SMC can have these values adjusted to correspond to your receiver via automatic calibration if necessary.

It sounds to me like you are using a microcontroller to generate the RC signals; is this the case? If so, why not just use serial commands?

- Ben

Hello Ben
Thanks for clarifying the RC pulse widths required for forward/ stop/ reverse.

I have written the following code (not tested yet) to respond to a current overload (arduino variable ol) signal derived from the SMC current sensor. This code assumes 180 is 2ms & 0 is 1ms (is this correct?). ct is a counter that is driven up and down between (say) 20 and 180 in order to regulate the vessel speed in response to a signal from GPS).

ol=digitalRead(6); if (ol==1) {ct=90;delay(2000);ct=10;delay(3000);ct=150;} //if motor overload stop motor, wait 2 sec then reverse motor 3 sec, then go forward

This is on a small water craft, and the reversing may be necessary if the propellor gets tangled with weed.
Thanks for your help.

I have no idea. Why are you using RC inputs for control? Have you seen the section of the user guide that has sample Arduino code for controlling the SMC? In my opinion, you should just be setting the motor speed to what you want directly by calling the setMotorSpeed() function.

- Ben

I was going to use the rc inputs to the SMC because I had previously been controlling a brushless motor.

I now have several options to look at.
Thanks for your comments.