For my senior project I intend to use two
Pololu 3-Amp Motor Controller with Feedback
Motor controllers for navigation of my robot.
I have a few inquiries that I would like to make and believe that the Kind Ladies and Gentle-men in this forum will be able to help me.
I would like to use the serial connectivity and my question/concern is that: Will I be able to connect the motor controller to an I/O pin on a microcontroller and be able to communicate with the motorcontroller.It shows in the user guide that we can use an RS-232 port and use the other circuitry but I just want to confirm if we can also use the I/O pin to transmit the serial data that the Motor controller requires to function.
I am planning to use a set of encoders that will provide a 0 to 5V output. The encoder will sense the wheel rotation by providing a +5V output when they “see” white and a 0V output when they “see” black:
Can I connect a similar encoder to the motor controller to control the speed of the motors? Will any extra hardware be necessary? How exact can I expect the result to be?
Since I will have 2 of these motor controllers will I be able to invoke them to perform simultaneously. It says in the user guide that given a motor number of 0 all the motor controllers will accept and carry out the command. How will this be possible if I have both motor controllers connected to different I/O lines? Or will it be possible to connect them together on a single I/O line.
Here are some answers to your questions:
The serial input is a logic-level input; that is why an extra circuit is necessary for use with RS-232. A microcontroller line is fine if it is running at 5 V.
Your speed sensors should work without additional hardware. What do you mean by “how exact can I expect the result to be?” The response of the motors depends on the parameters you choose for the PID calculation and how fast your PID rate is. Slow speeds are not handled well since there isn’t as much resolution available there. What frequency do you expect out of your sensor for a maximum motor speed?
Obviously, a motor controller cannot respond to a command that you don’t send to it, so if you have two separate serial lines, you will need to send the command on each serial line. However, you can configure each motor controller to respond to a different number (1 and 2, for instance) and then put them on the same serial line. You can send individual commands to the unique numbers and send commands for both units using motor number 0.
First for thanks for the response.
I also have another issue that i would like to get some clarification on.
The motors that i have spec’ed for use with the 3A motor controller draw 730Amps at rated load.
Its all cool there but after looking at some more datasheets it states that the stall current of the motor is 3.3Amps.
Since the motorcontroller specification states 3A current draw will that be an issue.
I do not plan to stall the motors ever.
But essentially when the robot is at rest and first starts to move the motors are stall at that point.
With what i have heard from the GURU’s most motor controller manufacturers take into consideration the spikes that are caused when the motor first moves.
Will it be an issue as such.
My alternative option would be to add a resistance between the power supply and the motor controller so that max current through the motor controller is never more than 3A.
Please share your thoughts on this senario
If the stall current is 3.3A, you’ll probably be fine. It looks like you have a typo regarding the 730 A; if it’s 730 mA, you should have no problems. The motor controller gets hot after continuous running at 2A, but you can add a heatsink if your average current is higher.
The motor controller has over-current and over-temperature protection, so in the worst case, you will see that you are drawing too much and you can add your resistor. You should stick the resistor between the motor controller and the motor, not between the power supply and the motor controller.
Using the tachometer setting on the pololu 3A motor controller with feedback
Here is the encoder frequecy calculations that i have for my project.
V(max) = 20 inch/sec
The maximum rotational speed of the wheel.
D=diameter of the wheel= 2.55" inches.
N= # of total ticks (88 ticks per revolution) including black and white ticks. The encoders will output a +5V when they see white and a 0V when they see black.
thus finding the frequency
Vmax / (pi * D)
(rev / sec) * N white ticks.
gives us 110Hz for white ticks and 220Hz total.
White navigating this robot on a 4ft x 4ft board can the frequency stated above can the speeds be handled effectively? In essence is the above stated resolution enough for the motor controllers to effectively perform speed corrections over a short distance.
Hope i have stated this clearly enough for the experts to understand.
Your resolution is probably too low for effective use with the motor controller. The motor controller tries to maintain a certain number of ticks per PID period. With a PID rate of 10 Hz, which is low, you would have only 11 speeds available, and the low speeds would not work very well since a 1 tick difference per period would be seen as a large change in speed. The speed control would work better if you could get your tachometer frequency up to at least a few kHz.
I love it when existing threads answer my questions, but I have a quick followup:
In tachometer feedback mode, does the SMC03A count all pulse edges as ticks, or only one type of edge (like just rising or just falling edges)?
Time to pick up some laser-printer safe transparency stock for codewheels!
It counts just rising edges.