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, HIGH);
delay(1500);
digitalWrite(m11, LOW); //IZQUIERDA
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(1500);
digitalWrite(m11, LOW); //DERECHA
digitalWrite(m12, LOW);
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); //REVERSA
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
delay(2000);
digitalWrite(m11, LOW); //ALTO
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
delay(9000);
}
disculpa, por que en ese codigo, no declaras ninguna señal analoga para los cny70?
ResponderEliminarsi porque no declaras la variable
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarBuenas buenas . Donde puedo ver el código de los sensores?
ResponderEliminarBuenas buenas . Donde puedo ver el código de los sensores?
ResponderEliminar