Paso 33: Robot prueba del Motor - ido mal
Así que mira este video y ver si pueden decir lo que como mal...Video - primera prueba -
1 - los motores están funcionando a muy rápido
2 - se quema el mosfet que controla el motor de la cintura
Video 2 - trate de girar y volver
1 - los motores están funcionando a muy rápido
¿Ves por qué?
He ejecutar todas las velocidades salidas digitales como, por lo que solo obtenemos 0Volts o 18Volts va al motor.
Así que dondequiera que hay algo como esto:
digitalWrite (RightArmSpeed, rápido);
debe ser;
analogWrite (RightArmSpeed, rápido);
el comando analogWrite envía lo que es básicamente una tensión variable entre 0 y 5V (con 0 = 0V; y 255 = 5V)-esto que atraviesa el mosfet da una salida con 0 = 0V; y 255 = 18V.
-A continuación el código fija. Los valores ahora están en el rango de 0-255 y se pueden cambiar en la parte superior del código.
2 - se quema el mosfet que controla el motor de la cintura
Dos problemas-la primera es que no estamos controlando correctamente potencia el motor - pero que ahora debe ser corregido. La otra cuestión es que es muy difícil de levantar para arriba la parte posterior del robot como este - por lo que el motor está dibujando un montón de corriente para conseguir que el robot a la curva en la cintura. Deberíamos podemos solucionar esto mecánicamente por: construcción de un vínculo mejor; resortes o pesos en saldo la parte superior del cuerpo, o algo más... Siento que será un paso entero largo sobre esta parte de la fijación. Ignoro el problema por ahora.
Código de Arduino para el Control de la velocidad con analogWrite función / / /
Dirección baja hacia el cuerpo o delante
Dirección = alto del cuerpo o al revés
int RightArmDir = 2;
int RightArmSpeed = 3;
int LeftArmDir = 4;
int LeftArmSpeed = 5;
int WaistDir = 7;
int WaistSpeed = 6;
int RightWheelDir = 8;
int RightWheelSpeed = 9;
int LeftWheelDir = 12;
int LeftWheelSpeed = 10;
int lenta = 100;
int rápido = 200;
int t1 = 500;
t2 de int = 100;
int WheelSpeed = 120;
void setup() {}
pinMode (RightArmDir, salida);
pinMode (RightArmSpeed, salida);
pinMode (LeftArmDir, salida);
pinMode (LeftArmSpeed, salida);
pinMode (WaistDir, salida);
pinMode (WaistSpeed, salida);
pinMode (RightWheelDir, salida);
pinMode (RightWheelSpeed, salida);
pinMode (LeftWheelDir, salida);
pinMode (LeftWheelSpeed, salida);
Serial.Begin(9600);
}
void loop() {}
PRUEBAS BÁSICAS / /
Serial.println ("pruebas básicas");
Brazo derecho de prueba
Serial.println ("brazo derecho");
Brazo derecho hacia arriba
Serial.println("up");
digitalWrite (RightArmDir, alto);
analogWrite (RightArmSpeed, lento);
retardo (t1);
analogWrite(RightArmSpeed,Fast);
retardo (t2);
analogWrite(RightArmSpeed,Slow);
Delay(T1);
analogWrite (RightArmSpeed, 0);
Delay(T1);
Brazo derecho abajo
Serial.println("Down");
digitalWrite (RightArmDir, bajo);
analogWrite (RightArmSpeed, lento);
retardo (t1);
analogWrite (RightArmSpeed, rápido);
retardo (t2);
analogWrite (RightArmSpeed, lento);
Delay(T1);
analogWrite (RightArmSpeed, 0);
Delay(T1);
Prueba de brazo izquierdo
Serial.println ("brazo izquierdo");
Brazo izquierdo arriba
Serial.println("up");
digitalWrite (LeftArmDir, alto);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, rápido);
retardo (t2);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, 0);
Delay(T1);
Brazo izquierdo hacia abajo
Serial.println("Down");
digitalWrite (LeftArmDir, bajo);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, rápido);
retardo (t2);
analogWrite(LeftArmSpeed,Slow);
Delay(T1);
analogWrite (LeftArmSpeed, 0);
Delay(T1);
Cintura de prueba
Serial.println("waist");
De la curva hacia abajo
Serial.println("Down");
digitalWrite (WaistDir, alto);
analogWrite (WaistSpeed, lento);
demora (2 * t1);
analogWrite (WaistSpeed, rápido);
retardo (4 * t2);
analogWrite (WaistSpeed, lento);
Delay(2 * T1);
analogWrite (WaistSpeed, 0);
Delay(T1);
Doble hacia arriba
Serial.println("up");
digitalWrite (WaistDir, bajo);
analogWrite (WaistSpeed, lento);
demora (2 * t1);
analogWrite (WaistSpeed, rápido);
retardo (4 * t2);
analogWrite (WaistSpeed, lento);
Delay(2 * T1);
analogWrite (WaistSpeed, 0);
Delay(T1);
Prueba de rueda derecha
Serial.println ("rueda derecha");
Delante de la rueda derecha '
Serial.println("Foward");
digitalWrite (RightWheelDir, alto);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (RightWheelSpeed, 0);
Delay(T1);
Rueda hacia atrás
Serial.println("Backward");
digitalWrite (RightWheelDir, bajo);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (RightWheelSpeed, 0);
Delay(T2);
Prueba de rueda izquierda
Serial.println ("rueda izquierda");
Delante de la rueda izquierda
Serial.println("Foward");
digitalWrite (LeftWheelDir, alto);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
Delay(T1);
Rueda izquierda detrás
Serial.println("Backward");
digitalWrite (LeftWheelDir, bajo);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
Delay(T1);
PRUEBAS DE LUJO / /
Serial.println ("pruebas de lujo");
Tocar suelo
Tocar el cielo
Posición inicial
Giro izquierda
Girar derecha
Ir delante
Serial.println ("ir delante");
digitalWrite (LeftWheelDir, alto);
digitalWrite(RightWheelDir,HIGH);
analogWrite (RightWheelSpeed, WheelSpeed/2);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
analogWrite (RightWheelSpeed, 0);
Delay(T1);
Ir hacia atrás
Baile de robot
Serial.println("REPEAT...");
} / / Dirección baja hacia el cuerpo o delante
Dirección = alto del cuerpo o al revés
int RightArmDir = 2;
int RightArmSpeed = 3;
int LeftArmDir = 4;
int LeftArmSpeed = 5;
int WaistDir = 7;
int WaistSpeed = 6;
int RightWheelDir = 8;
int RightWheelSpeed = 9;
int LeftWheelDir = 12;
int LeftWheelSpeed = 10;
int lenta = 100;
int rápido = 200;
int t1 = 500;
t2 de int = 100;
int WheelSpeed = 120;
void setup() {}
pinMode (RightArmDir, salida);
pinMode (RightArmSpeed, salida);
pinMode (LeftArmDir, salida);
pinMode (LeftArmSpeed, salida);
pinMode (WaistDir, salida);
pinMode (WaistSpeed, salida);
pinMode (RightWheelDir, salida);
pinMode (RightWheelSpeed, salida);
pinMode (LeftWheelDir, salida);
pinMode (LeftWheelSpeed, salida);
Serial.Begin(9600);
}
void loop() {}
PRUEBAS BÁSICAS / /
Serial.println ("pruebas básicas");
Brazo derecho de prueba
Serial.println ("brazo derecho");
Brazo derecho hacia arriba
Serial.println("up");
digitalWrite (RightArmDir, alto);
analogWrite (RightArmSpeed, lento);
retardo (t1);
analogWrite(RightArmSpeed,Fast);
retardo (t2);
analogWrite(RightArmSpeed,Slow);
Delay(T1);
analogWrite (RightArmSpeed, 0);
Delay(T1);
Brazo derecho abajo
Serial.println("Down");
digitalWrite (RightArmDir, bajo);
analogWrite (RightArmSpeed, lento);
retardo (t1);
analogWrite (RightArmSpeed, rápido);
retardo (t2);
analogWrite (RightArmSpeed, lento);
Delay(T1);
analogWrite (RightArmSpeed, 0);
Delay(T1);
Prueba de brazo izquierdo
Serial.println ("brazo izquierdo");
Brazo izquierdo arriba
Serial.println("up");
digitalWrite (LeftArmDir, alto);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, rápido);
retardo (t2);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, 0);
Delay(T1);
Brazo izquierdo hacia abajo
Serial.println("Down");
digitalWrite (LeftArmDir, bajo);
analogWrite (LeftArmSpeed, lento);
retardo (t1);
analogWrite (LeftArmSpeed, rápido);
retardo (t2);
analogWrite(LeftArmSpeed,Slow);
Delay(T1);
analogWrite (LeftArmSpeed, 0);
Delay(T1);
Cintura de prueba
Serial.println("waist");
De la curva hacia abajo
Serial.println("Down");
digitalWrite (WaistDir, alto);
analogWrite (WaistSpeed, lento);
demora (2 * t1);
analogWrite (WaistSpeed, rápido);
retardo (4 * t2);
analogWrite (WaistSpeed, lento);
Delay(2 * T1);
analogWrite (WaistSpeed, 0);
Delay(T1);
Doble hacia arriba
Serial.println("up");
digitalWrite (WaistDir, bajo);
analogWrite (WaistSpeed, lento);
demora (2 * t1);
analogWrite (WaistSpeed, rápido);
retardo (4 * t2);
analogWrite (WaistSpeed, lento);
Delay(2 * T1);
analogWrite (WaistSpeed, 0);
Delay(T1);
Prueba de rueda derecha
Serial.println ("rueda derecha");
Delante de la rueda derecha '
Serial.println("Foward");
digitalWrite (RightWheelDir, alto);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (RightWheelSpeed, 0);
Delay(T1);
Rueda hacia atrás
Serial.println("Backward");
digitalWrite (RightWheelDir, bajo);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (RightWheelSpeed, 0);
Delay(T2);
Prueba de rueda izquierda
Serial.println ("rueda izquierda");
Delante de la rueda izquierda
Serial.println("Foward");
digitalWrite (LeftWheelDir, alto);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
Delay(T1);
Rueda izquierda detrás
Serial.println("Backward");
digitalWrite (LeftWheelDir, bajo);
analogWrite (RightWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
Delay(T1);
PRUEBAS DE LUJO / /
Serial.println ("pruebas de lujo");
Tocar suelo
Tocar el cielo
Posición inicial
Giro izquierda
Girar derecha
Ir delante
Serial.println ("ir delante");
digitalWrite (LeftWheelDir, alto);
digitalWrite(RightWheelDir,HIGH);
analogWrite (RightWheelSpeed, WheelSpeed/2);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
retardo (t1);
analogWrite (RightWheelSpeed, WheelSpeed);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
retardo (t2);
analogWrite (RightWheelSpeed, WheelSpeed/2);
analogWrite (LeftWheelSpeed, WheelSpeed/2);
Delay(T1);
analogWrite (LeftWheelSpeed, 0);
analogWrite (RightWheelSpeed, 0);
Delay(T1);
Ir hacia atrás
Baile de robot
Serial.println("REPEAT...");
}