Ok.. tried a new circuit today.
http://4.bp.blogspot.com/-0oqvn95WCf8/UPvndlg4kfI/AAAAAAAAAZw/pz0uShYp3qw/s1600/IR2110+-+2.png
This one.
Again all the mosfets blew up. Using 26v, and IRF540s
bellow is the arduino code used..
int HallState1; //Variables for the three hall sensors (3,2,1)
int HallState2;
int HallState3;
int HallVal = 1; //binary value of all 3 hall sensors
int mSpeed = 0; //speed level of the motor
int bSpeed = 0; //braking level
int throttle = 0; //this variable is used with analog in to measure the position of the throttle potentiometer
void setup() {
pinMode(2,INPUT); // Hall 1
pinMode(4,INPUT); // Hall 2
pinMode(7,INPUT); // Hall 3
pinMode(3,OUTPUT); // IN 1
pinMode(5,OUTPUT); // IN 2
pinMode(6,OUTPUT); // IN 3
pinMode(9,OUTPUT); // EN 1
pinMode(10,OUTPUT); // EN 2
pinMode(11,OUTPUT); // EN 3 // put your setup code here, to run once:
}
void loop() {
throttle = analogRead(0); //value of the throttle potentiometer
mSpeed = map(throttle, 512, 1023, 0, 255); //motoring is mapped to the top half of potentiometer
bSpeed = map(throttle, 0, 511, 255, 0); // regenerative braking on bottom half of pot
//mSpeed = 100; //used for debugging
HallState1 = digitalRead(2); // read input value from Hall 1
HallState2 = digitalRead(4); // read input value from Hall 2
HallState3 = digitalRead(7); // read input value from Hall 3 // put your main code here, to run repeatedly:
if (throttle > 511){
if (HallState1 == 1 && HallState2 == 0 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,mSpeed);
analogWrite(11,0);
analogWrite(3,255);
analogWrite(5,0);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,mSpeed);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,255);
}
else if (HallState1 == 0 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,mSpeed);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,255);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,mSpeed);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,255);
analogWrite(6,0);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,mSpeed);
analogWrite(3,0);
analogWrite(5,255);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,mSpeed);
analogWrite(3,255);
analogWrite(5,0);
analogWrite(6,0);
}
}
else {
if (HallState1 == 1 && HallState2 == 0 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,bSpeed);
analogWrite(5,0);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,bSpeed);
}
else if (HallState1 == 0 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,bSpeed);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,bSpeed);
analogWrite(6,0);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,bSpeed);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,bSpeed);
analogWrite(5,0);
analogWrite(6,0);
}
}
}