Hello,
i'm not getting enough power to the driving wheels on the setup described in the following diagram.
i'v done very similar cuircuits in the past with the exact same components and the driving force from DC motors was much stronger. Can't seem to find what i'm doing wrong..
The DC motors used are these: https://www.pololu.com/product/2215
Here is the code used:
#include <Servo.h>
#define E 5 // Enable Pin for all motors
#define drive_up_left_wheel1 6 // Control pin 1 for motor 1
#define drive_up_left_wheel2 7 // Control pin 2 for motor 1
#define drive_up_right_wheel1 8 // Control pin 1 for motor 2
#define drive_up_right_wheel2 9 // Control pin 2 for motor 2
#define drive_down_right_wheel1 10 // Control pin 1 for motor 3
#define drive_down_right_wheel2 11 // Control pin 2 for motor 3
#define drive_down_left_wheel1 12 // Control pin 1 for motor 4
#define drive_down_left_wheel2 13 // Control pin 2 for motor 4
Servo steer_up_left_wheel;
Servo steer_up_right_wheel;
Servo steer_down_right_wheel;
Servo steer_down_left_wheel;
void setup() {
set_low_speed();
attach_steer_servos();
steer_vertical();
drive_down();
delay(6500);
drive_stop();
delay(1000);
}
void loop() {
steer_horizontal();
delay(1000);
drive_left();
delay(2500);
drive_stop();
steer_vertical();
delay(1000);
drive_up();
delay(4000);
drive_stop();
steer_horizontal();
delay(1000);
drive_right();
delay(2500);
drive_stop();
steer_vertical();
delay(1000);
drive_down();
delay(3600);
drive_stop();
}
void attach_steer_servos(){
steer_up_left_wheel.attach(A1);
steer_up_right_wheel.attach(A0);
steer_down_right_wheel.attach(A2);
steer_down_left_wheel.attach(A3);
}
void steer_horizontal(){
steer_up_left_wheel.write(48);
steer_up_right_wheel.write(128);
steer_down_right_wheel.write(32);
steer_down_left_wheel.write(154);
}
void steer_vertical(){
steer_up_left_wheel.write(144);
steer_up_right_wheel.write(35);
steer_down_right_wheel.write(122);
steer_down_left_wheel.write(66);
delay(500);
}
void steer_sleight_right(){
steer_up_left_wheel.write(52);
steer_up_right_wheel.write(134);
steer_down_right_wheel.write(25);
steer_down_left_wheel.write(128);
}
void steer_sleight_left(){
steer_up_left_wheel.write(52);
steer_up_right_wheel.write(134);
steer_down_right_wheel.write(25);
steer_down_left_wheel.write(128);
}
void set_medium_high_speed(){
analogWrite(E, 250); // Run in almost full speed
}
void set_medium_speed(){
analogWrite(E, 195); // Run in half speed
}
void set_low_speed(){
analogWrite(E, 30); // Run in low speed
}
void drive_stop(){
digitalWrite(drive_up_left_wheel1, LOW);
digitalWrite(drive_up_left_wheel2, LOW);
digitalWrite(drive_up_right_wheel1, LOW);
digitalWrite(drive_up_right_wheel2, LOW);
digitalWrite(drive_down_right_wheel1, LOW);
digitalWrite(drive_down_right_wheel2, LOW);
digitalWrite(drive_down_left_wheel1, LOW);
digitalWrite(drive_down_left_wheel2, LOW);
}
void drive_right(){
digitalWrite(drive_up_left_wheel1, LOW);
digitalWrite(drive_up_left_wheel2, HIGH);
digitalWrite(drive_up_right_wheel1, LOW);
digitalWrite(drive_up_right_wheel2, HIGH);
digitalWrite(drive_down_right_wheel1, LOW);
digitalWrite(drive_down_right_wheel2, HIGH);
digitalWrite(drive_down_left_wheel1, HIGH);
digitalWrite(drive_down_left_wheel2, LOW);
}
void drive_left (){
digitalWrite(drive_up_left_wheel1, HIGH);
digitalWrite(drive_up_left_wheel2, LOW);
digitalWrite(drive_up_right_wheel1, HIGH);
digitalWrite(drive_up_right_wheel2, LOW);
digitalWrite(drive_down_right_wheel1, HIGH);
digitalWrite(drive_down_right_wheel2, LOW);
digitalWrite(drive_down_left_wheel1,LOW);
digitalWrite(drive_down_left_wheel2, HIGH);
}
void drive_down (){
digitalWrite(drive_up_left_wheel1, HIGH);
digitalWrite(drive_up_left_wheel2, LOW);
digitalWrite(drive_up_right_wheel1, LOW);
digitalWrite(drive_up_right_wheel2, HIGH);
digitalWrite(drive_down_right_wheel1, HIGH);
digitalWrite(drive_down_right_wheel2, LOW);
digitalWrite(drive_down_left_wheel1,HIGH);
digitalWrite(drive_down_left_wheel2, LOW);
}
void drive_up (){
digitalWrite(drive_up_left_wheel1, LOW);
digitalWrite(drive_up_left_wheel2, HIGH);
digitalWrite(drive_up_right_wheel1, HIGH);
digitalWrite(drive_up_right_wheel2, LOW);
digitalWrite(drive_down_right_wheel1, LOW);
digitalWrite(drive_down_right_wheel2, HIGH);
digitalWrite(drive_down_left_wheel1,LOW);
digitalWrite(drive_down_left_wheel2, HIGH);
}
Any ideas what could be the reason for that problem?
Thanks.