How to implement skid steering using a RC remote and Arduino?

I hope some of you RC-fans can help me here. I am building a RC lawn mower that is going to have two motors left and right for driving and also steering. The motors will be powered by a BTS 7960 They are PWM controlled so I can use nice acceleration settings in the Arduino.

My plan is to connect a RC receiver to the Arduino and then to let the Arduino run some functions on the lawnmower.

Now I wonder about skid steering. How do I implement some kind of logic that makes the motors spin faster or slower depending which way I want to steer? Is that a function that should be handled inside the RC-transmitter? What steering mode is best for this?

I bought a fancy # Radiolink AT9S Pro recently. It has a digital display which was unheard of 14 years ago. Back then they cost 1000€. This one was only 150€.

The wheels or tracks on opposite sides of the vehicle rotate at different speeds in order to steer it. Think tank :grinning:

Do you want the steering to work from a single stick or using separate (left/right) sticks, one for each motor ?

What experience of using an Arduino do you have ?

It will be easier to do the mixing with the Arduino, even if you could figure out how to do it in the transmitter.

It is probably possible, but way nicer to work with code you can see, and won't be much of an additional challenge if you've got the Arduino receiving control signals and running motors.

Unless you value your time at $0.00 per minute, taking an all-up off the shelf modern r/c radio set will be way cheaper.

The transmitter @MaxMaker has is often packaged with a receiver. Libraries exist that make grabbing up N channels of high resolution control signals easy.

Meanwhile, you're fiddling with some modules and wondering why the examples you working from don't. Work.

a7

Dead easy.
Connect each motor to "aileron output", via whatever interface of course.

Ailerons coming from 2 channels on the receiver naturally work in opposite directions....AND.... one can dial in "differential" if needed so one will react more than the other in a given direction.
Mixing will take care of forward or reverse on both motors at the same time possibly via a throttle mix on your tx free mixes.

For example, as built so-to-speak, differential on ailerons normally allows up going aileron to have more travel.
Reason is in the aircraft it creates more drag and helps the roll/turn combination.

As above, all required is to convert each channel signal to a "relative speed" such as is done via any brushless or brushed speed control.
You may find a "forward/off/reverse" may be an advantage also. (car type esc as compared to aircraft type esc)
Just need to know what type of motors you'll use on your model for the drive track/wheels.

Yes. Mixing or other abilities of the transmitter can be exploited.

Many r/c devices can get along with no onboard flight controller. The transmitter handles any such heavy lifting; the receiver can be connected directly to the servos and ESCs the motors run off.

In something like a quadcopter, an onboard flight controller between the receiver and the ESCs is essential. I do not think it would be possible to fly one if all you could say from ground was how fast each motor should be spinning, bo matter the sophistication of the software running in the transmitter.

So a lawn mower presents an in between case. Choices around where to do what will present themselves as the project develops.

As always, in part it comes down to what kind of fun you want to have.

a7

Waste Spend your time however you want. And your money. There is a tradeoff there.

You obvsly didn't what I did, to find that the named transmitter almost always comes with a comfortable receiver.

a7

@MaxMaker do you get the receiver? does it have PPM output?

R9DS has standard PWM (servo) out and selectable SBUS on one connector. I believe no PPM.
Although, as before (wasting money)....... one can get Ibus and same pwm on a $70 FS-i6 radio expandable to 10 channels through the Ibus and FS-iA6B receiver.
Sufficient for any standard servo application or used in conjunction with almost any flight controller and Inav or similar.

1 Like

is this what you mean?

maybe you will need converter(inverter)

I wonder, too. Do you have wheels/tires with proper tread for skid steering? The tread must be designed to really grip the soil/grass so as to not slip while doing the turning.

Well, perhaps however if using IBUS from the FS-i6B rx , perhaps no inversion required.
Really wasn't commenting on the Arduino side of things just what info about his rc system that was supplied.

Thank you for all your comments and suggestions.

I guess one stick will be enough and I made the following plan.

  • Stick all the way left = Right Motor 100% Forward, Left Motor 100% Backwards

  • Stick all the way forward = Both Motors 100% Forward

  • Stick all the way forward and to the left = Right Motor 70% Forward, Left Motor 100% Forward.

I think with the last scenario, there will be a more gentle turning radius similar to when you go into a corner on a motorway. If you don´t apply any throttle and only steer left it will move one motor forwards and the other backwards to turn on a dime.

I guess reading out the PPM signal from the receiver will be doable. I found this Library to handle that. PPM - Arduino Reference

Cannot see your getting 100% travel on a diagonal stick movement.
However a quick check of what you do get from the Tx in the serial monitor should give you approximate travel amounts.

Can you clarify what you mean?

A diagonal would mean you want to go full speed but also turn. So one motor has to go (roughly) 70% speed and the other 100%.

confusing

If your machine has any weight at all, you will need to retard the rotation of the slower motor, as it will want to keep up with the faster motor, even with no power applied to it.

@MaxMaker you have analog joysticks?

I googled

   mixer for robot tank steering

and found many plausible variations on

left = speed + steering
right = speed - steering


where left and right are motor speeds and speed is throttle and steering is rudder from you transmitter channels .

This one uses analog mixing, old school:

http://robots.freehostia.com/Circuits/SteeringMixer/SteeringMixer.html

and this brings it into the 21st century:

Poke around. A totally solved problem with some options for how you want to control the thing ultimately.

HTH

a7

1 Like

As I said, diagonal movement of a joystick restricts physical movement as compared to say left or right only.
Also as I already said, plug it into the serail monitor for readout.

Reference was between Op's "expensive, totally unnecessary" R9DS rx and the much simpler, cheaper and completely sufficient, FS-iA6B or similar rx.