Motro paso a paso controlado por LDR para gallinero

Hola soy nuevo en esto de Arduino y ya que tenia un starter kit del mega 2560 `por un trabajo de clase me he decidido ha enfrascarme en la automatización de mi gallinero el problema es que he hecho un programación sencilla adaptando otra programación de un trabajo de clase y tengo varios problemas :

  • Cuando alimento solo con una pila de 9V el 28BYJ-48 no se enciende debo aparte conectar el USB para que empiece a andar el motor esta con su drive
  • La programación esta hecha para que cuando sea de noche suba la puerta y tras un determinado tiempo vuelva a bajar y no se como incorporar otra orden en sentido adverso para cuando sea de día se abra y después de un determinado tiempo vuelva bajar.
    querría añadir alguna melodía para que las gallinas y patos lo interpreten pero me parece igual demasiado embrollo no se.
    Este es mi código de programación:
    //Utilizo una LDR y una R=10K como divisor de tensión
    // La LDR a +5V y la R a masa.
    // Con la entrada analógica A0 de Arduino leo la tensión, que va a depender de la luz
    //Declaración de los pines del Arduino para conectar al ULN2003 y correspondencia con los del motor 28BYJ48
    #define motor1 8 // pin 1 del ULN2003, corresponde a Azul del motor (pin 1)
    #define motor2 9 // pin 2 del ULN2003, corresponde a Rosa del motor (pin 2)
    #define motor3 10 // pin 3 del ULN2003, corresponde a Amarillo del motor (pin 3)
    #define motor4 11 // pin 4 del ULN2003, corresponde a Naranja del motor (pin 4)

int velocidadmotor = 1000; //variable para velocidad de pasos del motorto set stepper speed
int conta = 0; // variable para llevar la cuenta de los pasos
int cuentas720g = 1024; // número de pasos para giro de 720º - 128 pasos son 90 grados asi que 720 grados 1024
//Array para excitar al ULN2003 que a su vez ataca al motor
int nivelesSalida[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
// Lo vamos a girar en secuencia de medio paso

void setup() {
//declare the motor pins as outputs
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(motor4, OUTPUT);
Serial.begin(9600);
}
void loop() {

float sensorLDR = analogRead(A0)*5.0/1000; //convierto lectura A0 a tensión

Serial.println(sensorLDR); //para ver en "monitor serie" el valor
if(sensorLDR <1.0) //midiendo la tensión, veo que este valor delimita presencia/ausencia de luz
{
for(conta=0;conta<cuentas720g;conta++) //se repite los pasos necesarios para 720grados dos vuelta y aumentar si seria necesario para subir puerta
giroID(); //sentido del reloj

delay(10000); //tiempo con la puerta abierta 
for(conta=0;conta<(cuentas720g);conta++) //idem para el otro lado
  giroDI();
}

else

delay(10000); // tiempo de espera antes de volver a comprobar el estado de la LDR
}
// giro Derecha a Izq.
//
void giroDI()
{
for(int i = 0; i < 8; i++)
{
SalidaDato(i); //sacar por Outputs el valor 'i' del array
delayMicroseconds(velocidadmotor);
}
}
void giroID() //giro Izq. a Derecha
{
for(int i = 7; i >= 0; i--)
{
SalidaDato(i);
delayMicroseconds(velocidadmotor);
}
}
void SalidaDato(int posi) // sacamos por los pines de arduino los bits correspondientes
{
digitalWrite(motor1, bitRead(nivelesSalida[posi], 0)); //usamos la función bitRead para extraer el bit 0
digitalWrite(motor2, bitRead(nivelesSalida[posi], 1)); //idem con bit 1
digitalWrite(motor3, bitRead(nivelesSalida[posi], 2)); //idem
digitalWrite(motor4, bitRead(nivelesSalida[posi], 3)); //idem


Aquí se aprecia el problema de alimentación qué en el momento que desconecto el USB se me apaga el motor paso a paso 28BYJ-48

Hola, tienes dos opciones:

  • HARWARE: cambia laconexion de la LDR a: La R a +5V y la LDR a masa.
  • SOFRARE: La linea:
if(sensorLDR <1.0) //midiendo la tensión, veo que este valor delimita presencia/ausencia de luz
{

La cambias por:

if(sensorLDR >1.0) //midiendo la tensión, veo que este valor delimita presencia/ausencia de luz
{

Olvidadte de alimentar el arduino con pilas secas, por poquito que la uses ya no tendras los 9V, o cuado el motor exige potencia el voltaje de la pila cae mucho y no tienes el suficiente para que funcione tu arduino, Debes usar un transformador o pilas recargables del tipo lipo o ni-mH.
Saludos.

Muchísimas gracias me voy poner con ello y os digo el resultado muchas gracias

Un saludo

Pero eso sería para por la noche eso lo tengo lo que me falta es para que actúe de día de la misma forma o añadiendo ya estaría .

Gracias

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.