Inhoudsopgave:
- Stap 1: Ingrediënten
- Stap 2: Bouw van Arduino
- Stap 3: Arduino coderen
- Stap 4: Optioneel: LCD-scherm
- Stap 5: Gedrukte onderdelen
- Stap 6: Plaatsing
Video: Lichtgestuurde stappenmotor + muurbeugel/standaard - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze standaard wordt gebruikt om een Arduino-gestuurde stappenmotor te huisvesten, ontworpen om automatisch een gordijn te bedienen op basis van het lichtniveau in de kamer. U kunt ook een LCD-scherm toevoegen om het lichtniveau af te drukken. De 3D-uitrusting is alleen voor demonstratie, een echte uitrusting kan nodig zijn voor praktische toepassing zoals het gordijn maar ook voor elke andere toepassing die je maar kunt bedenken.
Stap 1: Ingrediënten
Om dit project te starten heb je nodig;
- 2 Arduino-chipsets- Een Arduino-motorschild- Een Arduino LCD-scherm- 1 Breadboard- 1 bipolaire stappenmotor- 1 D-batterij- 1 lichtafhankelijke weerstand - 1 10k Ω-weerstand - 10 mannelijke-mannelijke draden- 6 mannelijke- vrouwelijke draden- Toegang tot een 3D-printer
Stap 2: Bouw van Arduino
Lijn eerst het motorschild uit met de Arduino-pinnen en als ze eenmaal zijn uitgelijnd, plaatst u het stevig neer. Bevestig vervolgens de draden van de stappenmotor in pinnen 8, 9, 10 en 11 van het motorscherm. Sluit daarna de D-batterij aan in de sleuven zoals weergegeven in het diagram. Vervolgens wilt u de 6 draden (mannelijk naar vrouwelijk) voor het LCD-scherm en sluit ze aan op de andere Arduino-eenheid zoals weergegeven in het schakelschema. Stel vervolgens de LDR in zoals hierboven weergegeven, waarbij de weerstand is aangesloten op de negatieve rij. Voeg bij het toevoegen van de LDR aan de kant met de weerstand toe de A0-aansluitingen en aan de andere kant, voeg 1 5V-ingang toe voor elk bord dat u gebruikt, dus als u 2 borden gebruikt, wilt u dat elk van hen een 5V- en A0-pin naar de LDR heeft.
Sluit alle draden aan zodat het hetzelfde is als het diagram - 2 ingangen naar de LDR - 2 uitgangen van de LDR en een weerstand die wordt aangesloten op aarde - 8 draden op het LCD-scherm, 1 5V, 1 aarde en 6 ingangen - 4 draden die worden aangesloten op de stepper- 2 aansluitingen op de batterij- De breadboard-aarde moet worden aangesloten
Stap 3: Arduino coderen
Hier is een voorbeeldcode om de status van de uitrusting te wijzigen op basis van de LDR
Dit is de code waarmee het project automatisch een gordijn kan bedienen. De foto hierboven verklaart de verschillende paden door de geneste IF-statements in termen van het gordijn dat omhoog, omlaag gaat of blijft waar het is. (klik op de afbeelding om deze volledig te zien aangezien er opmaakproblemen zijn)
#defineLDRA0//Definieert variabele "LDR" naar A0 pin#include
constintstepsPerRevolution=200;//Wanneer de stappenmotor wordt geactiveerd, is de volledige rotatie gelijk aan 200 stappen
SteppermyStepper(stepsPerRevolution, 8, 9, 10, 11);//Definieert de invoer naar de stepper als pinnen 8, 9, 10, 11
voidsetup(){myStepper.setSpeed(60);//Stelt in hoe snel de motor een rotatiepinMode(LDR, INPUT) uitvoert;//Definieert variabele "LDR" als invoer Serial.begin (9600);//Start een seriële meting }
voidloop(){intlightlevel=analogRead(LDR);//Definieert de variabele "lightlevel" als een actie die de waarde van "LDR"Serial.print("Light Level: ");Serial.println(lightlevel);// Drukt de waarde van "lightlevel" af met het bovenstaande bijschrift
/* Er is nu een lus die het lichtniveau op elk punt van de weg detecteert * Er zijn 3 opties beschikbaar, omhoog, omlaag, in dezelfde positie blijven* Het is zo ontworpen dat als het lichtniveau hetzelfde blijft, het hetzelfde blijven, zo niet, dan verandert het* dwz als het 950 is, gaat het naar 952, gebeurt er niets, maar als het van 950 naar 600 gaat, wordt het gordijn omhooggetrokken en vice versa * Elke stap wordt aangegeven met een letter voor de trede om bij te houden waar deze zich bevindt in de lus via de seriële monitor */
if(lightlevel>=900){Serial.println("A");// Welke stap het is in de loopmyStepper.step(3*stepsPerRevolution);//De stepper maakt 3 voorwaartse omwentelingen. Als het negatief is, gaat het achteruitdelay (30000);// Laat het daar 5 minuten staan intlightlevel=analogRead(LDR);// Definieert de variabele "lightlevel" als de laatste meting van de LDRSerial.print("Light Level: ");// Drukt de tekst af voor de variabele Serial.println(lightlevel)// Drukt de waarde van het lichtniveau af
if(lightlevel>=900){Serial.println("B");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Light Level: ");Serial.println (lichtniveau);
if(lightlevel>=900){Serial.println("C");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Light Level: "); Serieel.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 (lichtniveau);}
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(lichtniveau);
if(lightlevel>=900){Serial.println("J");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Light Level: "); Serieel.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 (lichtniveau);}
else{Serial.println("N");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Light Level: ");Serial.println(lightlevel);
}}
}
}
Stap 4: Optioneel: LCD-scherm
Dit zou het door de LDR gedetecteerde lichtniveau op het LCD-scherm afdrukken.
#erbij betrekken
-
// Voegt de bibliotheek met vloeibare kristallen toe met extra code # define ldr A0 // Definieert de variabele "ldr" aan de A0-pin
LiquidCrystal-lcd (8, 9, 4, 5, 6, 7); // initialiseer de bibliotheek met de nummers van de interface-pinnen
voidsetup() { // code die één keer wordt uitgevoerd op de startlcd.begin (16, 2); // stel respectievelijk het aantal kolommen en lijnen van het LCD-scherm in pinMode (ldr, INPUT); // Definieert de ldr als een invoer pinSerial.begin (9600); // Start de communicatie met de seriële monitor
}
voidloop() {//code die continu wordt herhaaldSerial.println(analogRead(ldr)); // Drukt de waarde af die de ldr oppikt (een getal tussen 0-1023) op de seriële monitorlcd.setCursor(6, 0); // zet de cursor op kolom 6, regel 0lcd.print(analogRead(ldr)); // Drukt deze lezing af op het LCD-schermvertraging (1000); // Vertraagt het volgende commando een seconde
}
Stap 5: Gedrukte onderdelen
Gebruik de volgende bestanden om de standaard en uitrusting af te drukken. Je kunt de gear aanpassen voor je eigen doeleinden en je kunt de beugel gebruiken om hem aan een muur of als display te bevestigen. Omdat de 3D-uitrusting zwak is, kan een echte uitrusting als vervanging hiervoor worden gebruikt, zolang deze overeenkomt met het gordijn dat het zou besturen.
Als de 3D-geprinte versnelling wordt gebruikt, is een van de tanden van de versnelling verwijderd, zodat een stelschroef deze aan de motor kan bevestigen.
De voorste 2 poten van de muurbeugel kunnen ook worden verwijderd als deze aan een muur zou worden gemonteerd. Ze werden alleen toegevoegd zodat het zou blijven staan terwijl we ermee aan het testen waren.
Stap 6: Plaatsing
Nu alle onderdelen klaar zijn, is het tijd om te beginnen met de definitieve plaatsing.
Plaats eerst de stappenmotor in de meegeleverde doos op de standaard en plaats het tandwiel op de asVerplaats vervolgens de draden zodat ze achter de standaard gaan Plaats ten slotte de arduino en batterij achter de standaard
Je bord zou er nu uit moeten zien zoals hierboven afgebeeld.
Gefeliciteerd!
De uitrusting kan worden gebruikt voor geautomatiseerde gordijnen of iets anders dat u wilt bedienen door de LDR.
Je bent klaar. Geniet van je nieuwe creatie.