Sommario:

Stepper Pomodoro Timer: 3 Passi (con Immagini)
Stepper Pomodoro Timer: 3 Passi (con Immagini)

Video: Stepper Pomodoro Timer: 3 Passi (con Immagini)

Video: Stepper Pomodoro Timer: 3 Passi (con Immagini)
Video: 30 min step workout 3/25/2020 2024, Dicembre
Anonim
Image
Image
Passaggio 1: circuito di saldatura e collegamento all'esterno del contenitore
Passaggio 1: circuito di saldatura e collegamento all'esterno del contenitore

Lo Stepper Pomodoro è un timer da scrivania che aiuta a gestire l'elenco delle attività quotidiane suddividendo ogni periodo di lavoro in segmenti di 30 minuti. Tuttavia, a differenza di un normale timer Pomodoro, non ti rende ansioso mostrando la quantità di tempo rimasta. Invece, mostra il tempo approssimativamente attraverso quale dei tre quadranti sta ticchettando. Non mostrando l'ora esatta ti consente di concentrarti effettivamente sull'attività da svolgere, piuttosto che controllare costantemente il tempo rimasto. Questo Pomodoro è perfetto per chi ha bisogno di una struttura leggera e discreta per la gestione delle proprie attività.

Utensili

• Saldatore

• Spelafili

• Taglierina laser (o levigatrice a seconda di come si vogliono creare i quadranti del timer)

• Trapano (ho usato un trapano a colonna per praticare fori abbastanza grandi per i quadranti)

Materiali

• 1 Arduino Uno

• 1 tagliere di mezza grandezza

• 3 ponti H (ho usato DRV8833, uno scudo motore mi avrebbe risparmiato tempo e mal di testa)

• 3 motori passo-passo (ho usato stepper NEMA 17)

• 1 pulsante

• 1 resistenza da 220-1K ohm (qualsiasi all'interno dell'intervallo va bene)

• Adattatore AC/DC (ho usato un 12V, probabilmente troppo grande per questa quantità di stepper)

• Separatore di potenza

• Cavo USB A-B

• Fili per tagliere

• Saldare

• Materiali per contenitore di timer

• Acrilico per quadranti

• Chiodi o spilli metallici per fungere da braccio fisso del timer

Passaggio 1: Passaggio 1: saldatura e collegamento del circuito all'esterno del contenitore

Per questo passaggio ho iniziato saldando insieme tutti i miei ponti H (se acquisti lo scudo del motore non dovresti aver bisogno di saldarli. Una volta che hai un ponte H per ogni stepper puoi controllare come sono cablati i tuoi stepper.

I NEMA 17 sono i cosiddetti motori passo-passo bipolari, il che significa che hanno due (piuttosto che uno) set di bobine all'interno del motore che cambiano polarità per consentire un movimento preciso del motore. Gli stepper bipolari normalmente hanno quattro fili e gli stepper Polar normalmente ne hanno sei, questo ha complicato un po' le istruzioni online. Tuttavia puoi collegare un multimetro a due fili e vedere se sono collegati o no. Gli stepper NEMA 17 hanno il loro ordine dei fili nell'ordine dei colori ROSSO, GIALLO, GRIGIO, VERDE, con il rosso e il grigio che sono la prima coppia polare e il giallo e il verde sono la seconda coppia polare. Se in qualsiasi momento lo stepper inizia a contrarsi invece di completare il movimento previsto, è probabile che i tuoi fili non siano in qualche modo correttamente polarizzati sul loro gemello o che uno sia scollegato. Ogni stepper è controllato tramite quattro pin di uscita che si collegano ai bridge DRV8833 H. L'ordine di cablaggio per l'ingresso al DRV8833 è: IN1, IN2, Alimentazione, Terra, IN3, IN4. Ai fini dell'uscita, il NEMA si collega solo ai quattro pin centrali dei sei nell'ordine: ROSSO, GRIGIO, GIALLO, VERDE. Ora colleghiamo l'alimentazione. Ho i miei NEMA sulle porte digitali 2-13.

Per alimentare questo ho acquistato un adattatore 12V AC/DC con splitter per poter alimentare sia l'Arduino, sia tutti gli stepper. ATTENZIONE: non collegare i cavi di alimentazione e di massa dall'Arduino che già riceve alimentazione dalla porta alla breadboard che riceve alimentazione diretta dall'AC/DC. Friggerà la tua tavola. Dall'adattatore da 12V collegato al muro una parte dello splitter è andata direttamente alla porta dell'Arduino e l'altra al positivo e negativo della breadboard.

Infine, è il momento di agganciare il pulsante. Un lato del pulsante avrà bisogno sia dell'alimentazione (con il nostro resistore collegato) che del pin di uscita saldato (questo può essere fatto anche dalla breadboard). L'altro perno sarà il nostro terreno. Questi tre fili dovrebbero essere collegati: alimentazione con resistore a 5 V, uscita su A0 e messa a terra a terra tutto sulla scheda Arduino Uno stessa.

Da qui dovremmo essere in grado di provare a controllare gli stepper usando questo codice di test stepper di base trovato qui. Questa spiegazione su Arduino.cc fa anche una spiegazione più approfondita degli stepper bi/unipolari se ne hai bisogno. Passiamo ora al codice per il Pomodoro!

Passaggio 2: Passaggio 2: caricare il codice e adattarlo alle proprie esigenze

Passaggio 2: caricare il codice e adattarlo alle proprie esigenze
Passaggio 2: caricare il codice e adattarlo alle proprie esigenze

Di seguito è riportato il codice per il mio Pomodoro con pulsante, per personalizzarlo secondo la tua configurazione segui questi passaggi:

1. Imposta quanti passi per giro ha il tuo tipo di stepper personale (i NEMA 17 hanno 200 ed è elencato nell'intero costante chiamato stepsPerRevolution).

2. Impostare il punto in cui viene immesso il pulsante nel buttonPin del chiamante intero costante.

3. Imposta da dove il tuo arduino dovrebbe emettere per comandare gli stepper (queste parti possono variare di più tra i tipi di ponte H poiché molti hanno librerie diverse che utilizzano).

4. Impostare la velocità dello stepper in RPM in.setSpeed (ho impostato il mio per 1 rpm quando si gira in senso orario e 30 rpm quando si gira in senso antiorario).

5. Imposta quante volte vuoi che ciascuno dei tuoi stepper ruoti prima che si muova (i miei stepper contano dieci minuti, quindi ruotano dieci volte a 1 RPM).

6 Imposta per quanto tempo desideri che ruoti all'indietro.

#includere

const int stepsPerRevolution = 200; // impostazione costante di quanti passi ci sono in ogni giro completo dei miei motori passo-passo

const int pulsantePin = A0; // impostazione costante dell'input del mio pulsante

Stepper firstStepper(stepsPerRevolution, 2, 3, 4, 5); // inizializza la libreria stepper su determinati pin

Stepper secondStepper(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper(stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // reinizializza la libreria stepper su questi pin per poter ripristinare rpm per quando si avvisa che il tempo è scaduto Stepper secondStepperBack(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack(stepsPerRevolution, 10, 11, 12, 13);

int minutiContatore = 0; // int conta i giri completi degli stepper

int timerState = BASSO; // lo stato attuale del timer pomodoro (HIGH = on, LOW = off/reset) int buttonState; // la lettura corrente dal pin di input int lastButtonState = HIGH; // la lettura precedente dal pin di input

// le seguenti variabili sono unsigned long perché il tempo, misurato in millisecondi, // diventerà rapidamente un numero più grande di quello che può essere memorizzato in un int. unsigned long lastDebounceTime = 0; // l'ultima volta che il pin di output è stato attivato unsigned long debounceDelay = 50; // il tempo di antirimbalzo; aumentare se l'uscita sfarfalla

void setup() {

pinMode(buttonPin, INPUT_PULLUP); // imposta la costante del pulsante come input

firstStepper.setSpeed(1); // imposta la velocità a 1 rpm per contare 10 minuti per stepper secondStepper.setSpeed(1); thirdStepper.setSpeed(1); firstStepperBack.setSpeed(30); // imposta la velocità a 30 rpm per avvisare che il tempo è scaduto dopo che Pomodoro ha completato secondStepperBack.setSpeed(30); thirdStepperBack.setSpeed(30);

Serial.begin(9600); // avvia il monitor seriale con una velocità di trasmissione di 9600

}

ciclo vuoto() {

// legge lo stato dello switch in una variabile locale: int reading = digitalRead(buttonPin);

// controlla se hai appena premuto il pulsante

// (cioè l'input è passato da LOW a HIGH), e hai aspettato // abbastanza a lungo dall'ultima pressione per ignorare qualsiasi rumore:

// Se l'interruttore è cambiato, a causa del rumore o della pressione:

if (lettura != lastButtonState) { // reimposta il timer di antirimbalzo lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // qualunque sia la lettura, è stata lì per più tempo // del ritardo di antirimbalzo, quindi prendilo come lo stato attuale effettivo:

// se lo stato del pulsante è cambiato:

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

// attiva/disattiva l'attivazione del timer solo se il nuovo stato del pulsante indica che è stato premuto

// premere una volta per accendere, premere di nuovo per spegnere if (buttonState == LOW) { timerState = !timerState; Serial.print("Lo stato del timer è "); Serial.println(timerState); } } }

if (stato timer == ALTO) {

Serial.println("Il timer del pomodoro è iniziato"); if (minutesCounter < 11) { //se il secondo valore corrente è diverso dal valore precedente allora firstStepper.step(stepsPerRevolution); // gira stepper 200 passi/1 giro minutiCounter++; Serial.print("il contatore dei minuti è "); Serial.println(minutesCounter); }

if (11 <= minutesCounter && minutesCounter < 21) { //se il secondo valore corrente è diverso dal valore precedente allora secondStepper.step(stepsPerRevolution); // gira stepper 200 passi/1 giro minutiCounter++; Serial.print("il contatore dei minuti è "); Serial.println(minutesCounter); }

if (21 <= minutesCounter && minutesCounter < 31) { //se il secondo valore corrente è diverso dal valore precedente allora thirdStepper.step(stepsPerRevolution); // gira stepper 200 passi/1 giro minutiCounter++; Serial.print("il contatore dei minuti è "); Serial.println(minutesCounter); }

if (31 <= minutesCounter && minutesCounter < 1031) { //se il secondo valore corrente è diverso dal valore precedente allora firstStepperBack.step(-1); // riporta lo stepper indietro di 1 passo in sequenza per far sembrare che tutti stiano eseguendo simultaneamente secondStepperBack.step(-1); thirdStepperBack.step(-1); minutiContatore++; Serial.print("il contatore dei minuti è "); Serial.println(minutesCounter); } } else { Serial.println("Il timer del pomodoro è disattivato"); } // salva la lettura. La prossima volta attraverso il ciclo, // sarà lastButtonState: lastButtonState = reading; }

Passaggio 3: Passaggio 3: contenere gli stepper e Arduino se lo si desidera

Passaggio 3: contenere gli stepper e Arduino se lo si desidera
Passaggio 3: contenere gli stepper e Arduino se lo si desidera
Passaggio 3: contenere gli stepper e Arduino se lo si desidera
Passaggio 3: contenere gli stepper e Arduino se lo si desidera
Passaggio 3: contenere gli stepper e Arduino se lo si desidera
Passaggio 3: contenere gli stepper e Arduino se lo si desidera

Ho scelto di creare una forma parallelogramma per il mio orologio. Questa forma e le scelte materiche della quercia rossa sono state ispirate dai mobili moderni della metà del secolo. Una parte con cui ho avuto più difficoltà è stata montare gli stepper con i quadranti attraverso i loro oblò da cui essere visti.

Consigliato: