Tabla de contenido:

Motor paso a paso con control de luz + soporte de pared / soporte: 6 pasos
Motor paso a paso con control de luz + soporte de pared / soporte: 6 pasos

Video: Motor paso a paso con control de luz + soporte de pared / soporte: 6 pasos

Video: Motor paso a paso con control de luz + soporte de pared / soporte: 6 pasos
Video: Motores Paso a Paso 2024, Noviembre
Anonim
Motor paso a paso con control de luz + soporte de pared / soporte
Motor paso a paso con control de luz + soporte de pared / soporte

Este soporte se utiliza para albergar un motor paso a paso controlado por Arduino, diseñado para controlar automáticamente una cortina de acuerdo con el nivel de luz en la habitación. También puede agregar una pantalla LCD para imprimir el nivel de luz. El equipo 3D es solo para demostración, es posible que se necesite un equipo real para una aplicación práctica, como la cortina, pero también cualquier otra aplicación que se le ocurra.

Paso 1: ingredientes

Para comenzar este proyecto necesitará;

- 2 conjuntos de chips Arduino- Un protector de motor Arduino- Una pantalla LCD Arduino- 1 Placa de pruebas- 1 Motor paso a paso bipolar- 1 batería D- 1 Resistencia dependiente de la luz - 1 Resistencia de 10k Ω- 10 cables macho-macho- 6 macho- cables hembra - Acceso a una impresora 3D

Paso 2: Construcción de Arduino

Construcción de Arduino
Construcción de Arduino

Primero alinee el escudo del motor con los pines Arduino y una vez que estén alineados, colóquelo firmemente. A continuación, conecte los cables del motor paso a paso en los pines 8, 9, 10 y 11 del blindaje del motor. Luego, conecte la batería D en las ranuras como se muestra en el diagrama. A continuación, querrá obtener los 6 cables (macho a hembra) para la pantalla LCD y conéctelos a la otra unidad Arduino como se muestra en el diagrama del circuito. Luego configure el LDR como se muestra arriba, con la resistencia conectada a la fila negativa. Cuando agregue el LDR, en el lado con la resistencia, agregue las conexiones A0 y en el lado opuesto, agregue 1 entrada de 5V para cada placa que esté usando, por lo que si está usando 2 placas, querrá que cada una de ellas tenga un pin de 5V y A0 que vaya al LDR.

Conecte todos los cables para que sean iguales al diagrama- 2 entradas al LDR- 2 salidas del LDR y una resistencia que se conecta a tierra- 8 cables al LCD, 1 5V, 1 tierra y 6 entradas- 4 cables que se conectan al paso a paso- 2 conexiones a la batería- La tierra de la placa de pruebas debe estar conectada

Paso 3: codificación de Arduino

Codificación de Arduino
Codificación de Arduino

Aquí hay un código de muestra para cambiar el estado del equipo según el LDR

Este es el código que permitiría al proyecto controlar automáticamente una cortina. La foto de arriba explica los diferentes caminos a través de las declaraciones IF anidadas en términos de que la cortina sube, baja o se queda donde está. (haga clic en la imagen para verla en su totalidad ya que hay problemas de formato)

# defineLDRA0 // Define la variable "LDR" en el pin A0 # include// Incluye el código del motor paso a paso

constintstepsPerRevolution = 200; // Cuando se activa el motor paso a paso, su rotación completa es igual a 200 pasos

SteppermyStepper (stepsPerRevolution, 8, 9, 10, 11); // Define la entrada al paso a paso como pines 8, 9, 10, 11

voidsetup () {myStepper.setSpeed (60); // Establece la rapidez con la que el motor realiza una rotaciónpinMode (LDR, INPUT); // Define la variable "LDR" como entrada Serial.begin (9600); // Inicia una lectura en serie }

voidloop () {intlightlevel = analogRead (LDR); // Define la variable "lightlevel" como una acción que lee el valor de "LDR" Serial.print ("Light Level:"); Serial.println (lightlevel); // Imprime el valor de "nivel de luz" con el título de arriba

/ * Ahora hay un bucle que detecta el nivel de luz en cada punto del camino * Hay 3 opciones disponibles, subir, bajar, permanecer en la misma posición * Está diseñado para que si el nivel de luz permanece igual, permanece igual, si no cambiará * es decir, si es 950, luego pasa a 952, no pasará nada, sin embargo si pasara de 950 a 600 se levantaría la cortina y viceversa * Cada paso se indica con una letra delante del escalón para rastrear dónde se encuentra en el bucle a través del monitor en serie * /

if (lightlevel> = 900) {Serial.println ("A"); // Qué paso está en el loopmyStepper.step (3 * stepsPerRevolution); // El stepper da 3 vueltas hacia adelante. Si es negativo, retrocede retardo (30000); // Lo deja ahí por 5 minutos intlightlevel = analogRead (LDR); // Define la variable "lightlevel" como la última lectura de LDRSerial.print ("Light Level:"); // Imprime el texto delante de la variable Serial.println (lightlevel) // Imprime el valor del nivel de luz

if (lightlevel> = 900) {Serial.println ("B"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nivel de luz);

if (lightlevel> = 900) {Serial.println ("C"); myStepper.step (3 * -stepsPerRevolution); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Nivel de luz:"); Serial.println (nivel de luz);}

else {Serial.println ("D"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);}}

else {Serial.println ("E"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

if (lightlevel> = 900) {Serial.println ("F"); myStepper.step (0); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nivel de luz);}

else {Serial.println ("G"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);}}

}

else {Serial.println ("H"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

if (lightlevel> = 900) {Serial.println ("I"); myStepper.step (3 * stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nivel de luz);

if (lightlevel> = 900) {Serial.println ("J"); myStepper.step (3 * -stepsPerRevolution); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Nivel de luz:"); Serial.println (nivel de luz);}

else {Serial.println ("K"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

}}

else {Serial.println ("L"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

if (lightlevel> = 900) {Serial.println ("M"); myStepper.step (0); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nivel de luz);}

else {Serial.println ("N"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

}}

}

}

Paso 4: Opcional: pantalla LCD

Esto imprimiría el nivel de luz detectado por el LDR en la pantalla LCD.

#incluir

  • // Agrega la biblioteca de cristal líquido con código adicional # define ldr A0 // Define la variable "ldr" en el pin A0

    LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // inicializa la biblioteca con los números de los pines de la interfaz

    voidsetup () {// código que se ejecuta una vez en startlcd.begin (16, 2); // configura el número de columnas y líneas de la pantalla LCD respectivamente pinMode (ldr, INPUT); // Define el ldr como una entrada pinSerial.begin (9600); // Inicia la comunicación con el monitor serial

    }

    voidloop () {// código que se repetirá continuamenteSerial.println (analogRead (ldr)); // Imprime la lectura que recoge el ldr (un número entre 0-1023) en el monitor serie lcd.setCursor (6, 0); // coloca el cursor en la columna 6, línea 0lcd.print (analogRead (ldr)); // Imprime esta lectura en la pantalla LCD demora (1000); // Retrasa el siguiente comando por un segundo

    }

    Paso 5: Piezas impresas

    Utilice los siguientes archivos para imprimir el soporte y el equipo. Puede personalizar el equipo para sus propios fines y puede usar el soporte para montarlo en una pared o como una pantalla. Como el equipo 3D es débil, se puede usar un equipo real como sustituto, siempre que coincida con la cortina que controlaría.

    Si se va a utilizar el engranaje impreso en 3D, se ha quitado uno de los dientes del engranaje para que un tornillo de fijación pueda fijarlo al motor.

    Las 2 patas delanteras del soporte de pared también se pueden quitar si se va a montar en una pared. Solo se agregaron para que se mantuviera en pie mientras estábamos probando con él.

    Paso 6: Colocación

    Ahora que todas las piezas están listas, es hora de comenzar con la colocación final.

    En primer lugar, coloque el motor paso a paso en la caja provista en el soporte y coloque el engranaje en el eje Luego, mueva los cables para que vayan detrás del soporte Finalmente, coloque el arduino y la batería detrás del soporte

    Su tablero ahora debería verse como el que se muestra arriba.

    ¡Felicidades!

    El equipo se puede utilizar para cortinas automáticas o cualquier otra cosa que desee que controle el LDR.

    Estás listo. Disfrute de su nueva creación.

Recomendado: