Cannot get Cytron 30a motor drivers to reverse with F405 wing board

I have a new build i’m working on that will be a skid steer boat using trolling motors. I have a pair of cytron 30a motor drivers. So far I have been able to get them to throttle up and down but cannot get them to reverse. I have tried using bidirectional esc mode and also tried escwitharelay using a wire from my s5 and s6 to the dir pins on the motor drivers. But so far the motors only spin forward. Any tips on setting this up with the matek f405. I find a lot of the info online is specific to the pixhawk and when I try to follow that for my board it doesn’t seem to work.

Using Brushed with relay i seem to be getting closest to the performance i’m looking for. With the throttle stick centered there is no motor movement. Lowered to the bottom they are full speed, and raise to the top they are full speed. But only forward. So it seems I am not triggering the relay correctly?


I have the relay wires connected to my servo5 and servo6 pins on the matek board. Do I need to set the servo output to something other than 0?

Which cytron motor driver are you using? I’ve used the smartdrive duo 30A controller (MDDS30) with an RC mower and it takes the RC style of PWM as inputs. RC PWM uses the pulse length not the duty cycle to set the speed and direction.

Other cytron drivers like the MD30C take a different style of PWM I believe, the duty cycle sets speed and another logic pin sets direction. I’ve never used one like this with ardupilot and don’t know if it’s supported. It is similar to an L298 motor driver in operation and googling “ardupilot L298” finds many questions but no answer; maybe someone else knows? If it were me I’d program an arduino to read the RC pulses from ardupilot with pulsein() and create the speed and direction signals with analogWrite() and digitalWrite() but maybe there is a simpler method.

Anyway, knowing which module will help getting an answer.

I’m using MD30C. I eventually figured it out. The documentation isn’t great, but the MD10 manual mentioned putting 5v constant to PWM pin and your PWM output from ardupilot goes to DIR pin. With Ardupilot set to brushedbidirectional that gives me the right behavior. Hopefully if someone else is stuck like I was they can find this post.

Great to hear you got it working! With the description I see on the docs, it would seem that the brushed with relay mode is designed for your type of controller that drives an H-Bridge directly. But the docs are somewhat confusing about how to configure this and what pins to use, and the warning boxes add to the complexity.

Your method of setting the PWM to high (full throttle) and putting the bidirectional PWM to DIR means
(I think) that instead of stopping the motors you are alternately sending full speed fwd and full speed reverse equally half the time, which averages to stop but you might see a lot of current use? Do you see that? Using the speed & direction pins separately should be more efficient as it just turns off rather than going into reverse to slow down. But if it works carry on, I am just curious and don’t mean to sound critical!

It took me awhile to think through your reply. But there should not be any current drawn at zero throttle. At zero throttle there is no voltage going to the DC motors, hence no movement and no amp draw. At idle it does not send full forward and full reverse, it sends 50% pwm signal to the board. Which in this configuration is what it expects for zero throttle idle. So it does not output any voltage to the DC motors, and hence there is no amp drain at idle. When throttle or steering is given it will then give the corresponding output in voltage (pos or neg) to the motors, running them appropriately and then drawing amps. It should be no less efficient than any other esc situation.