# Controlling motors induvidually

I have four motors attached to each of the wheels of my car. Two of these motors are servo motors and the remaining two are 12V DC motors. Since I could not get a rack and pinion type steering mounted on my car, I decided I would save myself the trouble and use Dc motors along with the servos to facilitate steering. But I have a couple of question as to whether I am on the right track:

1. Is the above idea a good one. (I don't want to use four servos since I would have to open it and modify it to allow continuous rotation.)
2. I was thinking of using something like the 8051(may just buy an Arduino to ease the process) to generate the PWM and then feed it into the two servos and use a H-bridge for the back wheels to reverse polarity, start and stop.

Is what I am doing right?

• What is it that you are trying to achieve? – HikeOnPast Aug 16 '12 at 4:42
• Two motors are (rear?) drive motors Yes/No? Two servo motors are (front?) wheel steering motors Yes/No?. Note that in mostcases you'd want steered wheels to track using eg a tie rod. – Russell McMahon Aug 16 '12 at 4:52
• What I am trying to do is steer. But I realized that it is best to not use a servo motor and simply spin one rear DC motor in the front direction and the other one in the opposite direction. The two Dc motors are at the rear and the servos are at the front. – Developer Android Aug 16 '12 at 4:55
• Based on robotics projects in the past, you for sure want the front wheels mechanically linked and driven by one motor. You can't do the job well with multiple steering motors. – boatcoder Aug 16 '12 at 18:43

This problem looks like an accidental problem, which is better to avoid completely. Unless you are designing some extreme robot rover or super heavy miner's truck with electrical transmission.

This problem can be named "implementing a 2 axis 4 motors gantry". One axis is X linear motion with velocity, torque, acceleration. Another axis is Theta angle of Yaw with position, velocity. The torque conditions are impacted by strong friction noise and semi-rigidness of chassis, wheels, rubber, aerodynamics, pitch, roll, gravity, all 6 axes of kinetic energy. Each axis involves all 4 motors. So there are at least 8-10 control loops for all axis positional data and derivatives.

The arduino will not help if your caret is heavy with high energy high speed motors. This is a very computationally intensive real-time multithreaded something with a timeslice below 1 millisecond. Extra added complexity to motion task comes a kinematics level, because of non-zero size of whole robot (a problem of translation of planned kinematic trajectory into motion trajectory for individual axes). It is possibly more efficient to replace the processing algorythms with a pilot (small person).

You can start implementation with choosing how your processing board will read Theta angle and balance the torque. Normal approach is looking at prior art. The best practice in this setups is avoiding gantries and avoiding sharing motors between axes and using single torque source with mechanical calculator (gears) for balance (cardan, rod, transmission, single rigid axis for back wheels) for X axis. And separate zero torque Theta axis for turnable front wheels to make turns. The design is known as "Car".

Its seems that your car weight is much higher than the two motors can handle its drive. Thats why you are using combination four.

You have to use only one type of motor for better performance, either it should be SERVO or a DC Motor. Use of two different types of motors will produce complexity in motor controling and handling. As DC Motors speed is higher than SERVO motor speed at nominal voltages.

If you decide to use simple DC motor than PWM is the best choice, and yes you can buy and use Arduino for PWM generation. Same Arduino can be useful to SERVO motors.