Codigo De Arduino
Enviado por nayiith • 24 de Mayo de 2014 • 1.334 Palabras (6 Páginas) • 370 Visitas
Controlar dos motores con arduino.
Del video anterior la rutina que se programo en el Arduino es muy simple, solo se mandan salidas altas o bajas dependiendo de como queremos que se comporte el motor.
La función del driver esta descrita en la tabla que publiqué anteriormente en la descripción del driver para manejar los motores.
En estas entradas también es muy útil inyectar una señal PWM en lugar de solo un 1 lógico para así controlar la velocidad del motor, la condición de motor bloqueado es para frenar el motor y mantenerlo sin movimiento, esto es mediante un campo magnético generado dentro del motor que evita que el rotor gire.
A continuación coloco el programa hecho para un arduino uno rev. 3, este programa solo controla la dirección de los motores, si se desea controlar la velocidad hay que cambiar las salidas lógicas por salidas PWM, la frecuencia que debe manejar el PWM debe ser alta por encima del rango de frecuencias audibles (mayor a 20KHz) para evitar que nuestros motores emitan sonidos molestos y al final del dia terminemos con dolor de cabeza (lo digo por experiencia propia XD)
int E1 = 0; //Habilita o desablita la primera mitad del driver
int E2 = 1; //Habilita o desablita la segunda mitad del driver
int m11 = 2; //m11 y m12 son los bits de control del motor uno (en la tabla PIN5 PIN7)
int m12 = 3;
int m21 = 4; //m21 y m22 son los bits de control del motor dos (en la tabla PIN10 PIN12)
int m22 = 5;
void setup() {
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(E1, HIGH); //ACTIVAR DRIVER
digitalWrite(E2, HIGH);
digitalWrite(m11, LOW); //ADELANTE
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
delay(1500);
digitalWrite(m11, LOW); //ALTO
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(500);
digitalWrite(m11, LOW); //IZQUIERDA 90°
digitalWrite(m12, HIGH);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
delay(500);
digitalWrite(m11, LOW); //ALTO
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(500);
digitalWrite(m11, LOW); //ADELANTE
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
delay(1500);
digitalWrite(m11, LOW); //ALTO
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(500);
digitalWrite(m11, HIGH); //DERECHA 90°
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
delay(500);
digitalWrite(m11, LOW); //ALTO
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(500);
digitalWrite(m11, LOW); //ADELANTE
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22,
...