Cuprins:

Motor pas cu pas controlat de lumină + suport / perete de perete: 6 pași
Motor pas cu pas controlat de lumină + suport / perete de perete: 6 pași

Video: Motor pas cu pas controlat de lumină + suport / perete de perete: 6 pași

Video: Motor pas cu pas controlat de lumină + suport / perete de perete: 6 pași
Video: Cum scrii când începi un caiet nou 2024, Iunie
Anonim
Motor pas cu pas controlat de lumină + suport / perete de perete
Motor pas cu pas controlat de lumină + suport / perete de perete

Acest suport este folosit pentru a adăposti un motor pas cu pas Arduino controlat, conceput pentru a controla automat o perdea în funcție de nivelul de lumină din cameră. De asemenea, puteți adăuga un ecran LCD pentru a imprima nivelul de lumină. Angrenajul 3D este doar pentru demonstrație, poate fi necesar un angrenaj real pentru aplicații practice, cum ar fi cortina, dar și orice altă aplicație la care vă puteți gândi.

Pasul 1: Ingrediente

Pentru a începe acest proiect veți avea nevoie;

- 2 seturi de cipuri Arduino- Un ecran de motor Arduino- Un ecran LCD Arduino- 1 panou de măsurare- 1 motor pas cu pas bipolar- 1 baterie D- 1 rezistor dependent de lumină - 1 rezistor 10k Ω- 10 fire mascul-mascul - 6 mascul- fire de sex feminin - Acces la o imprimantă 3D

Pasul 2: Construcția Arduino

Construcția Arduino
Construcția Arduino

În primul rând aliniați scutul motorului cu știfturile Arduino și, odată ce sunt aliniate, așezați-l ferm. Apoi atașați firele motorului pas cu pas la pinii 8, 9, 10 și 11 ale ecranului motorului. După aceea conectați bateria D în sloturile așa cum se arată în diagramă. Apoi veți dori să obțineți cele 6 fire (de la tată la tată) pentru ecranul LCD și conectați-le la cealaltă unitate Arduino așa cum se arată în diagrama circuitului. Apoi configurați LDR așa cum se arată mai sus, cu rezistorul conectat la rândul negativ. Când adăugați LDR, pe partea cu rezistorul, adăugați conexiunile A0 și pe partea opusă, adăugați 1 intrare de 5V pentru fiecare placă pe care o utilizați, deci dacă utilizați 2 plăci, veți dori ca fiecare dintre ele să aibă un pin 5V și A0 care să meargă la LDR.

Conectați toate firele astfel încât să fie la fel ca diagrama- 2 intrări la LDR- 2 ieșiri de la LDR și un rezistor care se conectează la masă- 8 fire la LCD, 1 5V, 1 masă și 6 intrări- 4 fire conectate la pas cu pas - 2 conexiuni la baterie - Pământul plăcii ar trebui să fie conectat

Pasul 3: Codificarea Arduino

Codificare Arduino
Codificare Arduino

Iată câteva exemple de cod pentru a schimba starea angrenajului pe baza LDR

Acesta este codul care ar permite proiectului să controleze automat o perdea. Fotografia de mai sus explică diferitele căi prin declarațiile IF imbricate în ceea ce privește ridicarea perdelei în sus, în jos sau rămânând acolo unde este. (faceți clic pe imagine pentru a o vedea complet, deoarece există probleme de formatare)

# defineLDRA0 // Definește variabila "LDR" la A0 pin # include// Include codul motorului pas cu pas

constintstepsPerRevolution = 200; // Când motorul pas cu pas este activat, rotația sa completă este egală cu 200 de pași

SteppermyStepper (stepsPerRevolution, 8, 9, 10, 11); // Definește intrarea la stepper ca pinii 8, 9, 10, 11

voidsetup () {myStepper.setSpeed (60); // Setează cât de repede motorul efectuează o rotirepinMode (LDR, INPUT); // Definește variabila „LDR” ca intrare Serial.begin (9600); // Pornește o citire în serie }

voidloop () {intlightlevel = analogRead (LDR); // Definește variabila "lightlevel" ca o acțiune care citește valoarea "LDR" Serial.print ("Light Level:"); Serial.println (lightlevel); // Tipărește valoarea „lightlevel” cu legenda de mai sus

/ * Există acum o buclă care detectează nivelul luminii în fiecare punct al drumului * sunt disponibile 3 opțiuni, urcați, coborâți, rămâneți în aceeași poziție * Este proiectat astfel încât, dacă nivelul de lumină să rămână același, va fi rămâneți la fel, dacă nu, se va schimba * adică dacă este 950, apoi trece la 952, nu se va întâmpla nimic, totuși, dacă ar trece de la 950 la 600 ar trage cortina în sus și arta versa * Fiecare pas este semnificat printr-o scrisoare în fața pasului pentru a urmări unde se află în buclă prin monitorul serial * /

if (lightlevel> = 900) {Serial.println ("A"); // Care pas este în loopmyStepper.step (3 * stepsPerRevolution); // Stepper face 3 rotații înainte. Dacă este negativ, se întoarce înapoi (30000); // îl lasă acolo timp de 5 minute intlightlevel = analogRead (LDR); // Definește „lightlevel” variabil ca cea mai recentă lectură din LDRSerial.print („Nivel de lumină:”); // Tipărește textul din fața variabilei Serial.println (lightlevel) // Tipărește valoarea nivelului de lumină

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

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 (nivel ușor);}

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 (lightlevel);

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 (nivel ușor);}

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

}}

}

}

Pasul 4: Opțional: ecran LCD

Aceasta ar imprima nivelul de lumină detectat de LDR pe ecranul LCD.

#include

  • // Adaugă biblioteca de cristale lichide cu cod suplimentar # define ldr A0 // Definește variabila "ldr" la pinul A0

    LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // inițializați biblioteca cu numerele pinilor de interfață

    voidsetup () {// cod care rulează o dată la startlcd.begin (16, 2); // configurați numărul LCD de coloane și liniile respectivpinMode (ldr, INPUT); // Definește ldr ca un pin de intrareSerial.begin (9600); // Începe comunicarea cu monitorul serial

    }

    voidloop () {// cod care va fi repetat continuuSerial.println (analogRead (ldr)); // Tipărește citirea preluată de ldr (un număr între 0-1023) pe monitorul seriallcd.setCursor (6, 0); // setați cursorul la coloana 6, linia 0lcd.print (analogRead (ldr)); // Tipărește această citire pe ecranul LCD (1000); // Întârzie următoarea comandă pentru o secundă

    }

    Pasul 5: Părți tipărite

    Utilizați următoarele fișiere pentru a imprima suportul și echipamentul. Puteți personaliza uneltele pentru propriile scopuri și puteți utiliza consola pentru a o monta pe un perete sau ca afișaj. Deoarece echipamentul 3D este slab, un angrenaj real poate fi folosit ca înlocuitor pentru el atâta timp cât se potrivește cu cortina pe care ar controla-o.

    Dacă va fi folosit uneltele tipărite 3D, unul dintre dinții dințelor a fost îndepărtat, astfel încât un șurub de fixare să-l poată fixa pe motor.

    Cele 2 picioare din față ale suportului de perete pot fi, de asemenea, îndepărtate dacă ar fi montat pe un perete. Au fost adăugate doar pentru a rezista în timp ce testam cu el.

    Pasul 6: plasare

    Acum că toate piesele sunt gata, este timpul să începeți plasarea finală.

    În primul rând, așezați motorul pas cu pas în cutia furnizată pe suport și puneți angrenajul pe axă Apoi, mutați firele astfel încât acestea să meargă în spatele suportului În cele din urmă, așezați arduino și bateria în spatele suportului

    Tabloul dvs. ar trebui să arate acum ca cel din imaginea de mai sus.

    Felicitări!

    Echipamentul poate fi folosit pentru perdele automate sau orice alt lucru pe care doriți să îl controlați LDR.

    Esti gata. Bucurați-vă de noua dvs. creație.

Recomandat: