Table des matières:

Moteur pas à pas à lumière contrôlée + support mural/support : 6 étapes
Moteur pas à pas à lumière contrôlée + support mural/support : 6 étapes

Vidéo: Moteur pas à pas à lumière contrôlée + support mural/support : 6 étapes

Vidéo: Moteur pas à pas à lumière contrôlée + support mural/support : 6 étapes
Vidéo: Replacing the Motor on a Chain-Drive Garage Door Opener 2024, Juillet
Anonim
Moteur pas à pas contrôlé par la lumière + support mural/support
Moteur pas à pas contrôlé par la lumière + support mural/support

Ce support est utilisé pour abriter un moteur pas à pas contrôlé par Arduino, conçu pour contrôler automatiquement un rideau en fonction du niveau de lumière dans la pièce. Vous pouvez également ajouter un écran LCD pour imprimer le niveau de luminosité. L'équipement 3D est uniquement pour la démonstration, un véritable équipement peut être nécessaire pour une application pratique comme le rideau mais aussi toute autre application à laquelle vous pouvez penser.

Étape 1: Ingrédients

Pour démarrer ce projet, vous aurez besoin de;

- 2 chipsets Arduino- Un blindage de moteur Arduino- Un écran LCD Arduino- 1 Breadboard- 1 Moteur pas à pas bipolaire- 1 batterie D- 1 Résistance dépendante de la lumière - 1 Résistance 10k Ω- 10 fils mâle-mâle- 6 mâle- fils femelles - Accès à une imprimante 3D

Étape 2: Construction d'Arduino

Construction d'Arduino
Construction d'Arduino

Alignez d'abord le blindage du moteur avec les broches Arduino et une fois qu'elles sont alignées, placez-le fermement. Ensuite, attachez les fils du moteur pas à pas dans les broches 8, 9, 10 et 11 du blindage du moteur. Après cela, connectez la batterie D dans les fentes comme indiqué sur le schéma. Ensuite, vous voudrez obtenir les 6 fils (mâle à femelle) pour l'écran LCD et branchez-les dans l'autre unité Arduino comme indiqué dans le schéma de circuit. Ensuite, configurez le LDR comme indiqué ci-dessus, avec la résistance connectée à la ligne négative. Lors de l'ajout du LDR, du côté de la résistance, ajoutez les connexions A0 et du côté opposé, ajoutez 1 entrée 5V pour chaque carte que vous utilisez, donc si vous utilisez 2 cartes, vous voudrez que chacune d'elles ait une broche 5V et A0 allant au LDR.

Connectez tous les fils de manière à ce que ce soit le même que sur le schéma - 2 entrées vers le LDR - 2 sorties du LDR et une résistance se connectant à la terre - 8 fils vers l'écran LCD, 1 5V, 1 masse et 6 entrées - 4 fils se connectant au stepper- 2 connexions à la batterie- La terre de la planche à pain doit être connectée

Étape 3: Codage Arduino

Codage Arduino
Codage Arduino

Voici un exemple de code pour modifier l'état de l'équipement en fonction du LDR

C'est le code qui permettrait au projet de contrôler automatiquement un rideau. La photo ci-dessus explique les différents chemins à travers les instructions IF imbriquées en termes de rideau qui monte, descend ou reste où il se trouve. (cliquez sur l'image pour la voir en entier car il y a des problèmes de formatage)

#defineLDRA0//Définit la variable "LDR" sur la broche A0#include//Inclut le code du moteur pas à pas

constintstepsPerRevolution=200;//Lorsque le moteur pas à pas est activé, sa rotation complète est égale à 200 pas

SteppermyStepper(stepsPerRevolution, 8, 9, 10, 11); // Définit l'entrée du stepper comme les broches 8, 9, 10, 11

voidsetup(){myStepper.setSpeed(60);//Définit la vitesse à laquelle le moteur effectue une rotationpinMode(LDR, INPUT);//Définit la variable "LDR" comme entrée Serial.begin(9600);//Démarre une lecture en série }

voidloop(){intlightlevel=analogRead(LDR);//Définit la variable "lightlevel" comme une action qui lit la valeur de "LDR"Serial.print("Light Level: ");Serial.println(lightlevel);// Imprime la valeur de "lightlevel" avec la légende ci-dessus

/* Il y a maintenant une boucle qui détecte le niveau de lumière à chaque point du chemin * 3 options sont disponibles, monter, descendre, rester dans la même position* Elle est conçue pour que si le niveau de lumière reste le même, il reste le même, sinon ça va changer* c'est-à-dire si c'est 950, alors ça passe à 952, rien ne se passera, cependant si ça passait de 950 à 600 cela tirerait le rideau et vice versa * Chaque étape est signifiée par une lettre devant la marche pour savoir où elle se trouve dans la boucle via le moniteur série */

if(lightlevel>=900){Serial.println("A");// Quelle étape se trouve dans le loopmyStepper.step(3*stepsPerRevolution);//Le stepper fait 3 tours vers l'avant. S'il est négatif, il reculedelay(30000);// Le laisse là pendant 5 minutes intlightlevel=analogRead(LDR);// Définit la variable "lightlevel" comme la dernière lecture du LDRSerial.print("Light Level: ");//Imprime le texte devant la variable Serial.println(lightlevel)// Imprime la valeur du niveau de luminosité

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

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

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 (niveau de luminosité);}

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: ");Série.println(niveau d'éclairage);

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

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 (niveau de luminosité);}

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

}}

}

}

Étape 4: Facultatif: Écran LCD

Cela imprimerait le niveau de lumière détecté par le LDR sur l'écran LCD.

#comprendre

  • //Ajoute la bibliothèque de cristaux liquides avec un code supplémentaire#define ldr A0 //Définit la variable "ldr" à la broche A0

    LiquidCrystal LCD (8, 9, 4, 5, 6, 7); // initialise la bibliothèque avec les numéros des broches de l'interface

    voidsetup() { //code qui s'exécute une fois au startlcd.begin (16, 2); // configure le nombre de colonnes et de lignes de l'écran LCD respectivementpinMode(ldr, INPUT); // Définit le ldr comme entrée pinSerial.begin(9600); // Démarre la communication avec le moniteur série

    }

    voidloop() { //code qui sera répété en continuSerial.println(analogRead(ldr)); // Imprime la lecture que ldr prend (un nombre entre 0-1023) sur le moniteur sérielcd.setCursor(6, 0); // place le curseur sur la colonne 6, ligne 0lcd.print(analogRead(ldr)); // Imprime cette lecture sur l'écran LCDdelay(1000); // Retarde la commande suivante d'une seconde

    }

    Étape 5: Pièces imprimées

    Utilisez les fichiers suivants pour imprimer le support et l'équipement. Vous pouvez personnaliser l'équipement à vos propres fins et vous pouvez utiliser le support pour le monter sur un mur ou comme écran. Comme l'engrenage 3D est faible, un vrai engrenage peut être utilisé comme substitut tant qu'il correspond au rideau qu'il contrôlerait.

    Si l'engrenage imprimé en 3D doit être utilisé, l'une des dents de l'engrenage a été retirée afin qu'une vis de réglage puisse le fixer au moteur.

    Les 2 pieds avant du support mural peuvent également être retirés s'il devait être monté sur un mur. Ils n'ont été ajoutés que pour qu'il se lève pendant que nous testions avec.

    Étape 6: Emplacement

    Maintenant que toutes les pièces sont prêtes, il est temps de commencer le placement final.

    Tout d'abord, placez le moteur pas à pas dans la boîte fournie sur le support et placez l'engrenage sur l'axe Ensuite, déplacez les fils pour qu'ils passent derrière le support Enfin, placez l'arduino et la batterie derrière le support

    Votre tableau devrait maintenant ressembler à celui illustré ci-dessus.

    Toutes nos félicitations!

    L'équipement peut être utilisé pour des rideaux automatisés ou toute autre chose que vous souhaitez contrôler par le LDR.

    Vous avez terminé. Profitez de votre nouvelle création.

Conseillé: