Se rompió el modulo de control de mi robot, pero los motores estaban bien por lo que le he fabricado un control con un arduino nano y usando un modulo L298.
Básicamente es una fuente de alimentación de 28V que alimenta un motor que hace la aspiración y otro motor que tracciona las orugas de desplazamiento .
Necesito que el motor de aspiracion haga ciclos de 1 minuto (aprox) al tiempo que el motor de traccion avance ese minuto en una direccion , y el siguiente minuto en la otra
entre ciclo y ciclo se tienen que detener ambos por unos 6 segundos para que el robot caiga desde la superficie (linea del agua ) donde siempre acaba el ciclo y de forma aleatoria vuelva al fondo para otro ciclo.
El programa esta hecho y va francamente bien , pero no se como terminar el loop al cabo de 90 minutos.
me gustaría que después de estar encadenando 40 - 45 ciclos aproximadamente se pare de forma definitiva, para no tener que está pendiente de apagarlo . He probado con un delay largo al final , pero no se porque no me funciona.
Alguien podría ayudarme soy supernovato en programación , y por mas que leo no acabo de encontrar la manera optima .
Por otro lado si a alguien le resulta util la reparación del robot puedo compartir imágenes y circuitos ,
etc.
/*
Ejemplo de control de 2 motores DC usando modulo L298
*/
int IN3 = 3; // motor traccion
int IN4 = 4; // motor traccion
int ENA = 5; // PWM motor traccion
int IN6 = 6; // motor aspiracion
int IN7 = 7; // motor aspiracion
int VELOCIDAD; // variable para control PWM
int RUN; // TIEMPO DE CADA CICLO
int STOP; // INTERVALO ENTE CICLOS
int DECALAJE; // ESPERA ENTRE MOTOR ASPIRACION Y MOTOR TRACCION
#define RUN 60000 // 1 minuto
#define STOP 10000 // 10 segundos
#define DECALAJE 2000 // 2 segundos
void setup()
{
pinMode (IN3, OUTPUT); // Input3 conectada al pin 3
pinMode (IN4, OUTPUT); // Input4 conectada al pin 5
pinMode (ENA, OUTPUT);
pinMode (IN6, OUTPUT);
pinMode (IN7, OUTPUT);
}
void loop(){
digitalWrite (IN6, HIGH); // arranca motor aspiracion
delay(DECALAJE); // espera hasta incio motor traccion
for (VELOCIDAD = 100; VELOCIDAD < 256; VELOCIDAD++){ // arranque suave motor traccion
analogWrite (ENA, VELOCIDAD);
digitalWrite (IN3, LOW); // MOTOR TRACCION low high marcha adelante
digitalWrite (IN4, HIGH);
delay(10); // tiempo para incrementos PWM
}
delay(RUN); // duracion ciclo 1
digitalWrite (IN3, LOW); //paran ambos motores
digitalWrite (IN6, LOW);
analogWrite (ENA, LOW);
delay(STOP);
digitalWrite (IN6, HIGH); // arranca motor aspiracion
delay(DECALAJE); // espera hasta incio motor traccion
for (VELOCIDAD = 100; VELOCIDAD < 256; VELOCIDAD++){
analogWrite (ENA, VELOCIDAD);
digitalWrite (IN3, HIGH); // MOTOR TRACCION high low marcha atras
digitalWrite (IN4, LOW);
delay(10);
}
delay(RUN);
digitalWrite (ENA, LOW);
digitalWrite (IN6, LOW);
analogWrite (ENA, LOW);
delay(STOP);
}