Sunday, May 15, 2011

Timing

Well, everyone says it's all about timing. Sometimes, it is.

In this case, the timing is down to milliseconds.

The project at hand is making a VEX platform run with an Arduino microcontroller. Should be simple enough. I looked up the specs for the VEX 3-wire servo motor and found that to control direction and speed is:
• PWM Input:1ms - 2ms will give full reverse to full forward, 1.5ms is neutral

• Dead Band:1.47ms - 1.55m

Simple enough- the dead band yields no revolutions, everything below the dead band turns the motor one direction and everything above turns it another within the 1ms and 2ms ranges. I selected a couple of pins for PWM on the Arduino and wrote some code using the analogWrite() command and worked within 1.00 and 2.00 ms. Or so I thought.

It didn't work.

I stripped the code down to writing directly to a pin with a particular value: analogWrite(10,1.50) and could not make it work. It just would not work.

Well, after getting some assistance, it appears the command should have been analogWrite(10,150) and the range was 100-250 with about 190 as neutral and about 180 to 200 as the dead zone. It's probably closer than that, and maybe I will research it further later, but for now, we are in the ballpark.

There will be more work to do- the motor runs faster in the 120-180 range than it does in the 200-250 range. It also runs in a different direction on each side of neutral, but one way is "forward" and the other is "reverse". I use the quotes because "forward" and "reverse" depend on which side of the chassis the motor is mounted. To move the robot forward, one motor runs "forward" and the other "reverse". at the same absolute value from neutral, the different directions run different speeds.

The result is that with the motors running different speeds, a straight line run becomes very difficult to maintain as the robot will turn in the direction of the slower wheel.

I have more work to do- running two motors draws more current than my circuit wants to deliver and this is a four motor platform.

And we missed the RoboRama because neither my son nor I had a running platform. Not even for show and tell or VEX unlimited class. I really wanted to get this VEX platform running; after all, VEX was kind enough to give it to me- I should get it running.

Pictures soon.

Your Host