First, I decided to measure the power draw before doing anything. This means pulling everything apart and attaching the multimeter to one of the motors. I created the simplest sketch I could create. This just runs each of the forward motors at a speed of 100, then turns them off. This repeats indefinitely until powered off.
- #include <AFMotor.h>
- AF_DCMotor motor1(1);
- AF_DCMotor motor2(2);
- AF_DCMotor motor3(3);
- AF_DCMotor motor4(4);
- void setup()
- {
- motor1.setSpeed(100);
- motor2.setSpeed(100);
- motor3.setSpeed(100);
- motor4.setSpeed(100);
- }
- void loop()
- {
- motor1.run(FORWARD);
- motor2.run(FORWARD);
- motor3.run(FORWARD);
- motor4.run(FORWARD);
- ::delay(5000);
- motor1.run(RELEASE);
- motor2.run(RELEASE);
- motor3.run(RELEASE);
- motor4.run(RELEASE);
- ::delay(5000);
- }
Next, I soldered some capacitors over the motor connectors. This will help regulate the voltage. I used .1uf ceramic capacitors as recommended by the ada fruit motor shield faq. Here is a picture of the capacitor and the solder job to mount them on the motors. This took a little bit of work to get the solder iron close to the leads without having to take the motors out. I would recommend soldering these on before you put the motors in the chassis. I then repeated the test with the volt meter and observed the measurements were much more stable (about 1.7 consistently).
The final step was to double up the L293D chips. First I soldered one chip on top (make sure the U shapes are aligned). and then mounted them. I repeated the simple sketch again and now the wheels start moving at about speeds of 60. Definitely better than before.
Next up, put everything back together and try driving around again. I will also output the encoder and wheel information in ros messages so that it will be easier to record data.
No comments:
Post a Comment