Cuprins:

Stepper Pomodoro Timer: 3 pași (cu imagini)
Stepper Pomodoro Timer: 3 pași (cu imagini)

Video: Stepper Pomodoro Timer: 3 pași (cu imagini)

Video: Stepper Pomodoro Timer: 3 pași (cu imagini)
Video: Pomodoro Technique 6 x 25 min - Study Timer 3h 2024, Iulie
Anonim
Image
Image
Pasul 1: lipirea și conectarea circuitului în afara containerului
Pasul 1: lipirea și conectarea circuitului în afara containerului

Stepper Pomodoro este un cronometru de birou care vă ajută să vă gestionați lista de sarcini zilnice, împărțind fiecare perioadă de lucru în segmente de 30 de minute. Cu toate acestea, spre deosebire de un cronometru normal Pomodoro, nu vă face să vă faceți anxietate, arătând timpul rămas. În schimb, afișează timpul aproximativ prin care dintre cele trei cadrane bifează. Dacă nu afișați ora exactă, vă permite să vă concentrați de fapt asupra sarcinii la îndemână, mai degrabă decât să vă verificați în mod constant timpul rămas. Acest Pomodoro este perfect pentru cei care au nevoie de o structură ușoară și discretă pentru gestionarea sarcinilor lor.

Instrumente

• Ciocan de lipit

• Dispozitive de decojire a firelor

• Cutter laser (sau șlefuitor în funcție de modul în care doriți să creați cadranele temporizatorului)

• Burghiu (am folosit o burghie pentru perforarea găurilor suficient de mari pentru cadrane)

Materiale

• 1 Arduino Uno

• 1 placă de măsurare pe jumătate

• 3 poduri H (am folosit DRV8833, un scut al motorului mi-a economisit ceva timp și dureri de cap)

• 3 motoare pas cu pas (am folosit pas cu pas NEMA 17)

• 1 buton

• 1 rezistor de 220-1K ohm (orice domeniu este bun)

• Adaptor AC / DC (am folosit un 12V, probabil prea mare pentru această cantitate de steppers)

• Distribuitor de putere

• Sârmă USB A-B

• Sârme de panouri

• lipit

• Materiale pentru containerul temporizatorului

• Acrilic pentru cadrane

• Cuie sau știfturi metalice pentru a acționa ca braț staționar al temporizatorului

Pasul 1: Pasul 1: Circuit de lipire și conectare în afara containerului

Pentru acest pas, am început prin lipirea tuturor podurilor mele H (dacă achiziționați scutul motorului, nu ar trebui să le lipiți. Odată ce aveți un pod H pentru fiecare stepper, puteți verifica modul în care sunt conectate stepper-urile dvs.

NEMA 17 sunt cele cunoscute sub numele de motoare pas cu pas bipolare, ceea ce înseamnă că au două (mai degrabă decât unul) set de bobine în interiorul motorului care schimbă polaritatea pentru a permite deplasarea precisă a motorului. Stepper-urile bipolare au în mod normal patru fire, iar step-urile Polar în mod normal au șase, acest lucru a complicat puțin instrucțiunile online. Cu toate acestea, puteți atașa un multimetru la două fire și puteți vedea dacă acestea sunt conectate sau dacă nu. Stepper-urile NEMA 17 au ordinea firelor în culoare roșie, galbenă, gri, verde, roșu și gri fiind prima pereche polară, iar galbenul și verdele fiind a doua pereche polară. Dacă în orice moment stepperul începe să se zvârcolească mai degrabă decât să finalizeze mișcarea așteptată, șansele sunt că firele dvs. nu sunt cumva polarizate corect cu gemenii lor sau unul este deconectat. Fiecare pas cu pas este controlat prin intermediul a patru pini de ieșire care se conectează la podurile DRV8833 H. Ordinea de cablare pentru intrarea la DRV8833 este: IN1, IN2, Putere, Masă, IN3, IN4. În scopuri de ieșire, NEMA se conectează doar la mijlocul celor patru știfturi în ordinea: ROȘU, GRI, GALBEN, VERDE. Acum permite conectarea puterii. Am NEMA-urile mele pe porturile digitale 2-13.

Pentru a alimenta acest lucru, am achiziționat un adaptor 12V AC / DC cu splitter pentru a putea alimenta atât Arduino, cât și toate stepper-urile. AVERTISMENT: Nu vă conectați firele de alimentare și de împământare de la Arduino care primesc deja energie din port la placa de alimentare care primește alimentare directă de la AC / DC. Vă va prăji tabla. De la adaptorul de 12V conectat la perete, o parte a separatorului a mers direct la portul Arduino și cealaltă la pozitivul și negativul plăcii pentru pâine.

În sfârșit, este timpul să conectați butonul. O parte a butonului va avea nevoie atât de alimentare (cu rezistența noastră îmbinată), cât și de pinul de ieșire lipit (acest lucru se poate face și de pe panou). Celălalt știft va fi terenul nostru. Aceste trei fire ar trebui să fie conectate la: Alimentare cu rezistor la 5V, ieșire la A0 și împământare la masă, toate pe placa Arduino Uno.

De aici ar trebui să putem încerca să controlăm stepper-urile folosind acest cod de test stepper de bază găsit aici. Această explicație de pe Arduino.cc oferă, de asemenea, o explicație mai amănunțită a treptelor bi / unipolare, dacă aveți nevoie de ea. În continuare, să intrăm în codul pentru Pomodoro!

Pasul 2: Pasul 2: Încărcarea codului și ajustarea acestuia la nevoile dvs

Pasul 2: încărcarea codului și ajustarea acestuia la nevoile dvs
Pasul 2: încărcarea codului și ajustarea acestuia la nevoile dvs

Mai jos este codul pentru butonul meu Pomodoro cu, pentru a-l personaliza în funcție de configurare, urmați acești pași:

1. Setați câți pași pe revoluție are tipul dvs. personal de pas cu pas (NEMA 17 are 200 și este listat în întregul constant numit stepsPerRevolution).

2. Setați unde intră butonul dvs. în butonul Pin constant al apelantului întreg.

3. Setați de unde arduino ar trebui să iasă pentru a comanda stepper-urile (aceste părți pot varia cel mai mult între tipurile de poduri H deoarece multe au biblioteci diferite pe care le utilizează).

4. Setați viteza pasului în RPM-uri în.setSpeed (am setat-o la 1 rpm la rotirea în sensul acelor de ceasornic și la 30 rpm la rotirea în sensul acelor de ceasornic).

5. Setați de câte ori doriți să se întoarcă fiecare dintre stepper-urile dvs. înainte de a trece mai departe (stepper-urile mele contează zece minute, astfel încât acestea să se rotească de zece ori la 1 RPM).

6 Setați cât timp doriți să se rotească înapoi.

#include

const int stepsPerRevolution = 200; // setarea constantă a câte pași sunt în fiecare revoluție completă a motoarelor mele pas cu pas

const int buttonPin = A0; // setarea constantei introducerii butonului meu

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // inițializează biblioteca stepper pe anumiți pini

Stepper secondStepper (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // reinițializați biblioteca stepper pe acești pini pentru a putea reseta rpm pentru avertiza că timpul a expirat Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minuteCounter = 0; // int numărând revoluțiile complete ale treptelor

int timerState = LOW; // starea curentă a temporizatorului pomodoro (HIGH = pornit, LOW = off / reset) int buttonState; // citirea curentă de la pinul de intrare int lastButtonState = HIGH; // citirea anterioară din pinul de intrare

// următoarele variabile sunt nesemnate pentru că timpul, măsurat în milisecunde, // va deveni rapid un număr mai mare decât poate fi stocat într-un int. unsigned long lastDebounceTime = 0; // ultima dată când pinul de ieșire a fost comutat nesemnat lung debounceDelay = 50; // timpul de debounce; crește dacă ieșirea pâlpâie

configurare nulă () {

pinMode (buttonPin, INPUT_PULLUP); // setați constanta butonului ca intrare

firstStepper.setSpeed (1); // setați viteza la 1 rpm pentru numărarea a 10 minute pe secundă Stepper Step.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // setați viteza la 30 rpm pentru a avertiza că timpul a expirat după ce Pomodoro a finalizat secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);

Serial.begin (9600); // porniți monitorul serial cu o rată de 9600 baud

}

bucla nulă () {

// citiți starea comutatorului într-o variabilă locală: int reading = digitalRead (buttonPin);

// verificați dacă tocmai ați apăsat butonul

// (adică intrarea a trecut de la LOW la HIGH) și ați așteptat // suficient de mult de la ultima apăsare pentru a ignora orice zgomot:

// Dacă comutatorul s-a schimbat, din cauza zgomotului sau a apăsării:

if (reading! = lastButtonState) {// resetează temporizatorul de debouncing lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// indiferent de lectură, este acolo de mai mult timp // decât întârzierea de retragere, deci luați-o ca stare curentă reală:

// dacă starea butonului s-a schimbat:

if (reading! = buttonState) {buttonState = reading;

// comutați activarea temporizatorului numai dacă starea noului buton indică faptul că a fost apăsat

// apăsați o dată pentru a porni, apăsați din nou pentru a opri dacă (buttonState == LOW) {timerState =! timerState; Serial.print („Timer State is”); Serial.println (timerState); }}}

if (timerState == HIGH) {

Serial.println („Cronometrul Pomodoro a început”); if (minutesCounter <11) {// dacă a doua valoare curentă este diferită de valoarea anterioară, atunci firstStepper.step (stepsPerRevolution); // rotiți pasul cu 200 de pași / 1 rev minute Contor ++; Serial.print („minuteCounter este”); Serial.println (minutesCounter); }

if (11 <= minutesCounter && minutesCounter <21) {// dacă a doua valoare curentă este diferită de valoarea precedentă, atunci secondStepper.step (stepsPerRevolution); // rotiți pasul cu 200 de pași / 1 rev minute Contor ++; Serial.print („minuteCounter este”); Serial.println (minutesCounter); }

if (21 <= minutesCounter && minutesCounter <31) {// dacă a doua valoare curentă este diferită de valoarea anterioară, atunci thirdStepper.step (stepsPerRevolution); // rotiți pasul cu 200 de pași / 1 rev minute Contor ++; Serial.print („minuteCounter este”); Serial.println (minutesCounter); }

if (31 <= minutesCounter && minutesCounter <1031) {// dacă a doua valoare curentă este diferită de valoarea anterioară, atunci firstStepperBack.step (-1); // întoarceți pasul înapoi cu 1 pas în ordine pentru a apărea ca și cum toți rulează simultan secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print („minuteCounter este”); Serial.println (minutesCounter); }} else {Serial.println ("Pomodoro timer este dezactivat"); } // salvați lectura. Data viitoare prin buclă, // va fi ultimaButtonState: lastButtonState = citire; }

Pasul 3: Pasul 3: Conține Steppers și Arduino, dacă doriți

Pasul 3: Conține Steppers și Arduino, dacă doriți
Pasul 3: Conține Steppers și Arduino, dacă doriți
Pasul 3: Conține Steppers și Arduino, dacă doriți
Pasul 3: Conține Steppers și Arduino, dacă doriți
Pasul 3: Conține Steppers și Arduino, dacă doriți
Pasul 3: Conține Steppers și Arduino, dacă doriți

Am ales să creez o formă paralelogramică pentru ceasul meu. Această formă și alegerile materiale ale stejarului roșu au fost inspirate din mobilierul modern din mijlocul secolului. O parte cu care am avut cea mai mare dificultate a fost aceea de a monta treptele cu cadrane prin hublourile lor pentru a fi văzute.

Recomandat: