Taula de continguts:

Motor pas a pas controlat per llum + suport de paret / suport: 6 passos
Motor pas a pas controlat per llum + suport de paret / suport: 6 passos

Vídeo: Motor pas a pas controlat per llum + suport de paret / suport: 6 passos

Vídeo: Motor pas a pas controlat per llum + suport de paret / suport: 6 passos
Vídeo: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, Desembre
Anonim
Motor pas a pas controlat per llum + suport / suport de paret
Motor pas a pas controlat per llum + suport / suport de paret

Aquest suport s'utilitza per allotjar un motor pas a pas controlat per Arduino, dissenyat per controlar automàticament una cortina segons el nivell de llum de l'habitació. També podeu afegir una pantalla LCD per imprimir el nivell de llum. L’engranatge 3D només serveix per demostrar, és possible que sigui necessari un engranatge real per a aplicacions pràctiques com la cortina, però també qualsevol altra aplicació que se us pugui imaginar.

Pas 1: Ingredients

Per iniciar aquest projecte necessitareu;

- 2 jocs de xips Arduino- Un escut del motor Arduino- Una pantalla LCD Arduino- 1 placa de pa- 1 motor pas a pas bipolar- 1 bateria D- 1 resistència depenent de la llum - 1 resistència de 10 kΩ- 10 cables masculí-masculí- 6 masculí- cables femella: accés a una impressora 3D

Pas 2: construcció d'Arduino

Construcció d'Arduino
Construcció d'Arduino

Primer alineu el blindatge del motor amb els passadors Arduino i, un cop alineats, col·loqueu-lo fermament. A continuació, connecteu els cables del motor pas a pas als passadors 8, 9, 10 i 11 del blindatge del motor. Després, connecteu la bateria D a les ranures tal i com es mostra al diagrama. A continuació, voldreu obtenir els 6 cables (de mascle a femella) per a la pantalla LCD i connecteu-les a l’altra unitat Arduino tal com es mostra al diagrama del circuit. A continuació, configureu el LDR com es mostra a dalt, amb la resistència connectant-se a la fila negativa. Quan afegiu el LDR, al costat de la resistència, afegiu a les connexions A0 i al costat oposat, afegiu 1 entrada de 5V per a cada placa que utilitzeu, de manera que si feu servir dues plaques, voldreu que cadascuna d'elles tingui un pin de 5V i A0 que vagi al LDR.

Connecteu tots els cables de manera que sigui el mateix que el diagrama- 2 entrades a la LDR- 2 sortides de la LDR i una resistència que es connecta a terra- 8 cables a la pantalla LCD, 1 5V, 1 terra i 6 entrades- 4 cables que es connecten a la pas a pas- 2 connexions a la bateria- La terra del tauler ha de ser connectada

Pas 3: Codificació d'Arduino

Codificació d'Arduino
Codificació d'Arduino

Aquí teniu un codi de mostra per canviar l’estat de l’engranatge en funció del LDR

Aquest és el codi que permetria al projecte controlar automàticament una cortina. La foto superior explica els diferents camins a través de les declaracions IF imbricades pel que fa a la cortina que puja, baixa o es queda allà on és. (feu clic a la imatge per veure-la completa ja que hi ha problemes de format)

# defineLDRA0 // Defineix la variable "LDR" a A0 pin # include// Inclou el codi del motor pas a pas

constintstepsPerRevolution = 200; // Quan el motor pas a pas està activat, la seva rotació completa és igual a 200 passos

SteppermyStepper (stepsPerRevolution, 8, 9, 10, 11); // Defineix l'entrada al stepper com a pins 8, 9, 10, 11

voidsetup () {myStepper.setSpeed (60); // Estableix la velocitat amb què el motor fa una rotaciópinMode (LDR, INPUT); // Defineix la variable "LDR" com a entrada Serial.begin (9600); // Inicia una lectura en sèrie }

voidloop () {intlightlevel = analogRead (LDR); // Defineix la variable "lightlevel" com una acció que llegeix el valor de "LDR" Serial.print ("Nivell de llum:"); Serial.println (lightlevel); // Imprimeix el valor de "lightlevel" amb el títol superior

/ * Ara hi ha un bucle que detecta el nivell de llum en cada punt del camí * Hi ha 3 opcions disponibles, pujar, baixar, mantenir-se a la mateixa posició * Està dissenyat de manera que si el nivell de llum es manté, mantingueu-vos igual, si no, canviarà * és a dir, si és 950, passa a 952, no passarà res, però si passés de 950 a 600 tiraria la cortina cap amunt i tornaria viceversa * Cada pas es significa amb una carta davant del pas per rastrejar on es troba al bucle a través del monitor sèrie * /

if (lightlevel> = 900) {Serial.println ("A"); // Quin pas es troba al loopmyStepper.step (3 * stepsPerRevolution); // El pas fa 3 revolucions cap endavant. Si és negatiu, es retarda endarrere (30000); // El deixa allà durant 5 minuts intlightlevel = analogRead (LDR); // Defineix el "lightlevel" variable com la darrera lectura de LDRSerial.print ("Nivell de llum:"); // Imprimeix el text davant de la variable Serial.println (lightlevel) // Imprimeix el valor del nivell de llum

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

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

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

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

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

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 ("Nivell de llum:"); Serial.println (lightlevel);

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

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

else {Serial.println ("K"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Nivell de llum:"); 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 (lightlevel);}

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

}}

}

}

Pas 4: opcional: pantalla LCD

Això imprimiria el nivell de llum detectat per l'LDR a la pantalla LCD.

#incloure

  • // Afegeix la biblioteca de cristalls líquids amb el codi addicional # define ldr A0 // Defineix la variable "ldr" al pin A0

    LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // inicialitzeu la biblioteca amb els números dels pins de la interfície

    voidsetup () {// codi que s'executa una vegada a startlcd.begin (16, 2); // configureu el nombre de columnes i línies de la pantalla LCD respectivamentpinMode (ldr, INPUT); // Defineix ldr com a pinSerial.begin d'entrada (9600); // Inicia la comunicació amb el monitor sèrie

    }

    voidloop () {// codi que es repetirà contínuamentSerial.println (analogRead (ldr)); // Imprimeix la lectura que recull ldr (un número entre 0-1023) al monitorlcd.setCursor sèrie (6, 0); // configureu el cursor a la columna 6, línia 0lcd.print (analogRead (ldr)); // Imprimeix aquesta lectura a la pantalla LCD (1000); // Retarda la següent ordre durant un segon

    }

    Pas 5: parts impreses

    Utilitzeu els fitxers següents per imprimir el suport i l’engranatge. Podeu personalitzar l’engranatge per als vostres propis propòsits i podeu utilitzar el suport per muntar-lo a la paret o com a pantalla. Com que l’engranatge 3D és feble, es pot utilitzar un engranatge real com a substitut del mateix sempre que coincideixi amb la cortina que controlaria.

    Si s’utilitzarà l’engranatge imprès en 3D, s’ha eliminat una de les dents de l’engranatge de manera que un cargol fix podria fixar-lo al motor.

    Les 2 potes anteriors del suport de paret també es poden treure si es fixés a la paret. Només es van afegir perquè s’aguantés mentre provàvem amb ell.

    Pas 6: col·locació

    Ara que totes les parts estan llestes, és hora de començar la col·locació final.

    En primer lloc, col·loqueu el motor pas a pas a la caixa proporcionada al suport i poseu l’engranatge a l’eix. A continuació, moveu els cables perquè vagin darrere del suport. Finalment, col·loqueu l’arduino i la bateria darrere del suport.

    El tauler hauria de semblar ara al de la imatge superior.

    Enhorabona!

    L'engranatge es pot utilitzar per a cortines automatitzades o qualsevol altra cosa que vulgueu controlar mitjançant el LDR.

    Estàs acabat. Gaudeix de la teva nova creació.

Recomanat: