Inhoudsopgave:

Lichtgestuurde stappenmotor + muurbeugel/standaard - Ajarnpa
Lichtgestuurde stappenmotor + muurbeugel/standaard - Ajarnpa

Video: Lichtgestuurde stappenmotor + muurbeugel/standaard - Ajarnpa

Video: Lichtgestuurde stappenmotor + muurbeugel/standaard - Ajarnpa
Video: Melexis instructiefilm: een lichtgestuurde robot maken. 2024, November
Anonim
Lichtgestuurde stappenmotor + muurbeugel/standaard
Lichtgestuurde stappenmotor + muurbeugel/standaard

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

Bouw van Arduino
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

Arduino coderen
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// Bevat de stappenmotorcode

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.