Πίνακας περιεχομένων:

Χρονόμετρο Stepper Pomodoro: 3 βήματα (με εικόνες)
Χρονόμετρο Stepper Pomodoro: 3 βήματα (με εικόνες)

Βίντεο: Χρονόμετρο Stepper Pomodoro: 3 βήματα (με εικόνες)

Βίντεο: Χρονόμετρο Stepper Pomodoro: 3 βήματα (με εικόνες)
Βίντεο: कबड्डी टाइमर। 30 Sec Kabaddi Timer & Raid Timer with Hooter, Timer Device for Sports #shortfeed 2024, Νοέμβριος
Anonim
Image
Image
Βήμα 1: Συγκόλληση και σύνδεση κυκλώματος έξω από το δοχείο
Βήμα 1: Συγκόλληση και σύνδεση κυκλώματος έξω από το δοχείο

Το Stepper Pomodoro είναι ένα χρονόμετρο γραφείου για να σας βοηθήσει να διαχειριστείτε τη λίστα καθημερινών εργασιών του σπάζοντας κάθε περίοδο εργασίας σε τμήματα 30 λεπτών. Ωστόσο, σε αντίθεση με έναν κανονικό χρονοδιακόπτη Pomodoro, δεν σας προκαλεί άγχος δείχνοντας το χρονικό διάστημα που απομένει. Αντ 'αυτού, εμφανίζει την ώρα περίπου μέσω της οποίας από τις τρεις κλήσεις χτυπάει. Με το να μην εμφανίζετε τον ακριβή χρόνο, σας επιτρέπει να εστιάσετε στην εργασία σας, αντί να ελέγχετε συνεχώς τον χρόνο που απομένει. Αυτό το Pomodoro είναι ιδανικό για όσους χρειάζονται μια ελαφριά και διακριτική δομή για τη διαχείριση των καθηκόντων τους.

Εργαλεία

• Συγκολλητικό σίδερο

• Απογυμνωτές καλωδίων

• Κόφτης λέιζερ (ή τριβείο ανάλογα με τον τρόπο που θέλετε να δημιουργήσετε τα καντράν του χρονοδιακόπτη)

• Τρυπάνι (χρησιμοποίησα μια πρέσα για να ανοίξω τρύπες αρκετά μεγάλες για τα καντράν)

Υλικά

• 1 Arduino Uno

• 1 πλάκα ψωμιού μισού μεγέθους

• Γέφυρες 3 H (χρησιμοποίησα το DRV8833, μια ασπίδα κινητήρα με έχει εξοικονομήσει λίγο χρόνο και πονοκεφάλους)

• 3 βηματικά μοτέρ (χρησιμοποίησα βηματικά NEMA 17)

• 1 κουμπί

• 1 αντίσταση 220-1K ohm (οποιαδήποτε εντός εμβέλειας είναι καλή)

• Προσαρμογέας AC/DC (χρησιμοποίησα 12V, πιθανώς πολύ μεγάλο για αυτή την ποσότητα βημάτων)

• Διαχωριστής ισχύος

• Καλώδιο USB A-B

• Σύρματα Breadboard

• Συγκολλητικό

• Υλικά για δοχείο χρονοδιακόπτη

• Ακρυλικό για καντράν

• Καρφιά ή μεταλλικές καρφίτσες για να λειτουργούν ως σταθεροί βραχίονες του χρονοδιακόπτη

Βήμα 1: Βήμα 1: Συγκόλληση και σύνδεση κυκλώματος έξω από το δοχείο

Για αυτό το βήμα ξεκίνησα κολλώντας μαζί όλες τις γέφυρές μου H (εάν αγοράσετε την ασπίδα κινητήρα δεν πρέπει να τις κολλήσετε. Μόλις έχετε μια γέφυρα H για κάθε βήμα, μπορείτε να ελέγξετε πώς συνδέονται τα βηματικά σας.

Τα NEMA 17 είναι αυτά που είναι γνωστά ως διπολικοί βηματικοί κινητήρες, πράγμα που σημαίνει ότι έχουν δύο (και όχι ένα) σετ πηνίων μέσα στον κινητήρα που αλλάζουν πολικότητα για να επιτρέψουν την ακριβή κίνηση του κινητήρα. Τα διπολικά βήματα έχουν συνήθως τέσσερα σύρματα και τα Polar steppers έχουν κανονικά έξι, αυτό περιπλέκει λίγο τις οδηγίες στο διαδίκτυο. Ωστόσο, μπορείτε να συνδέσετε ένα πολύμετρο σε δύο καλώδια και να δείτε αν είναι συνδεδεμένα ή αν δεν είναι. Οι βηματιστές NEMA 17 έχουν σειρά συρμάτων σε ΚΟΚΚΙΝΟ, ΚΙΤΡΙΝΟ, ΓΚΡΙ, ΠΡΑΣΙΝΟ χρώμα, με το κόκκινο και το γκρι να είναι το πρώτο πολικό ζεύγος και το κίτρινο και το πράσινο το δεύτερο πολικό ζεύγος. Εάν σε οποιοδήποτε σημείο το stepper αρχίσει να στριφογυρίζει αντί να ολοκληρώσει την αναμενόμενη κίνηση, οι πιθανότητες είναι ότι τα καλώδια σας δεν είναι κατά κάποιον τρόπο πολωμένα σωστά στο δίδυμο τους ή ένα είναι αποσυνδεδεμένο. Κάθε βηματικό ελέγχεται μέσω τεσσάρων ακίδων εξόδου που συνδέονται με τις γέφυρες DRV8833 H. Η σειρά καλωδίωσης για την είσοδο στο DRV8833 είναι: IN1, IN2, Power, Ground, IN3, IN4. Για σκοπούς εξόδου, το NEMA απλώς συνδέεται με τις μεσαίες τέσσερις από τις έξι ακίδες με τη σειρά: ΚΟΚΚΙΝΟ, ΓΚΡΙ, ΚΙΤΡΙΝΟ, ΠΡΑΣΙΝΟ. Τώρα ας συνδέσουμε την τροφοδοσία. Έχω τα NEMA μου σε ψηφιακές θύρες 2-13.

Για να το τροφοδοτήσω, αγόρασα έναν προσαρμογέα 12V AC/DC με διαχωριστή για να μπορώ να τροφοδοτώ τόσο το Arduino όσο και όλα τα βηματικά. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Μην συνδέετε τα καλώδια τροφοδοσίας και γείωσης από το Arduino που λαμβάνει ήδη ρεύμα από τη θύρα με το breadboard που λαμβάνει απευθείας ισχύ από το AC/DC. Θα τηγανίσει τον πίνακα σας. Από τον προσαρμογέα 12V συνδεδεμένο στον τοίχο, ένα μέρος του διαχωριστή πήγε κατευθείαν στη θύρα του Arduino και το άλλο στα θετικά και αρνητικά της σανίδας ψωμιού.

Τέλος, ήρθε η ώρα να συνδέσετε το κουμπί. Η μία πλευρά του κουμπιού θα χρειαστεί τόσο τροφοδοσία (με την αντίσταση μας συνδεδεμένη) όσο και τον πείρο εξόδου που συγκολλήθηκε (αυτό μπορεί να γίνει και από το breadboard). Η άλλη καρφίτσα θα είναι το έδαφος μας. Αυτά τα τρία καλώδια πρέπει να συνδεθούν: Ισχύς με αντίσταση στα 5V, έξοδος σε A0 και γείωση σε γείωση όλα στην ίδια την πλακέτα Arduino Uno.

Από εδώ θα πρέπει να είμαστε σε θέση να προσπαθήσουμε να ελέγξουμε τα steppers χρησιμοποιώντας αυτόν τον βασικό κωδικό δοκιμής stepper που βρίσκεται εδώ. Αυτή η εξήγηση στο Arduino.cc κάνει επίσης μια πιο ενδελεχή εξήγηση των διπολικών βημάτων αν το χρειάζεστε. Επόμενο ας μπούμε στον κώδικα για το Pomodoro!

Βήμα 2: Βήμα 2: Μεταφόρτωση κώδικα και προσαρμογή του στις ανάγκες σας

Βήμα 2: Μεταφόρτωση κώδικα και προσαρμογή του στις ανάγκες σας
Βήμα 2: Μεταφόρτωση κώδικα και προσαρμογή του στις ανάγκες σας

Παρακάτω είναι ο κωδικός για το κουμπί μου Pomodoro με, για να το προσαρμόσετε στις ρυθμίσεις σας, ακολουθήστε αυτά τα βήματα:

1. Ορίστε πόσα βήματα ανά περιστροφή έχει ο προσωπικός σας τύπος βηματισμού (τα NEMA 17 έχουν 200 και παρατίθεται στον σταθερό ακέραιο αριθμό που ονομάζεται βήματαPerRevolution).

2. Ορίστε πού εισάγεται το κουμπί σας στο κουμπί σταθερού ακέραιου καλούντοςPin.

3. Ρυθμίστε από πού πρέπει να εξέρχεται το arduino σας για να διατάξετε τα βήματα (αυτά τα μέρη μπορεί να διαφέρουν περισσότερο μεταξύ των τύπων γέφυρας H, καθώς πολλά έχουν διαφορετικές βιβλιοθήκες που χρησιμοποιούν).

4. Ρυθμίστε την ταχύτητα βηματισμού σε RPM σε.setSpeed (έχω ρυθμίσει τη δική μου για 1 σ.α.λ. όταν στρέφετε δεξιόστροφα και 30 σ.α.λ. όταν στρέφετε αριστερόστροφα).

5. Ορίστε πόσες φορές θέλετε να γυρίζει κάθε βήμα σας πριν ξεκινήσει (τα βήματά μου μετρούν δέκα λεπτά, οπότε περιστρέφονται δέκα φορές με 1 σ.α.λ.).

6 Ρυθμίστε πόσο καιρό επιθυμείτε να περιστραφεί προς τα πίσω.

#περιλαμβάνω

const int stepsPerRevolution = 200; // σταθερά ρύθμισης πόσα βήματα υπάρχουν σε κάθε πλήρη περιστροφή των βηματικών κινητήρων μου

const int buttonPin = A0; // σταθερά ρύθμισης της εισόδου του κουμπιού μου

Stepper firstStepper (βήματαPerRevolution, 2, 3, 4, 5); // προετοιμάστε τη βιβλιοθήκη stepper σε ορισμένες ακίδες

Stepper secondStepper (βήματαPerRevolution, 6, 7, 8, 9); Stepper 3rdStepper (βήματαPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (βήματαPerRevolution, 2, 3, 4, 5); // επανεκκινήστε τη βιβλιοθήκη stepper σε αυτές τις καρφίτσες για να μπορείτε να επαναφέρετε τις στροφές ανά λεπτό όταν ειδοποιείτε ότι ο χρόνος έχει λήξει Stepper secondStepperBack (βήματαPerRevolution, 6, 7, 8, 9). Stepper thirdStepperBack (βήματαPerRevolution, 10, 11, 12, 13);

int λεπτάCounter = 0; // int μετρώντας πλήρεις περιστροφές βημάτων

int timerState = LOW; // η τρέχουσα κατάσταση του χρονοδιακόπτη pomodoro (HIGH = on, LOW = off/reset) κουμπί intState; // η τρέχουσα ανάγνωση από τον πείρο εισόδου int lastButtonState = HIGH; // η προηγούμενη ανάγνωση από την καρφίτσα εισόδου

// οι ακόλουθες μεταβλητές είναι ανυπόγραφες μακροχρόνιες επειδή ο χρόνος, μετρημένος σε χιλιοστά του δευτερολέπτου, // θα γίνει γρήγορα μεγαλύτερος αριθμός από αυτόν που μπορεί να αποθηκευτεί σε int. unsigned long lastDebounceTime = 0; // την τελευταία φορά που ο πείρος εξόδου ενεργοποιήθηκε χωρίς υπογραφή μακροχρόνια debounceDelay = 50; // ο χρόνος αποκοπής αυξάνεται εάν η έξοδος αναβοσβήνει

void setup () {

pinMode (buttonPin, INPUT_PULLUP); // ορίστε σταθερά του κουμπιού ως είσοδο

firstStepper.setSpeed (1); // ρυθμίστε την ταχύτητα σε 1 σ.α.λ. για μέτρηση 10 λεπτών ανά βηματικό δευτερόλεπτο Stepper.setSpeed (1). thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // ρυθμίστε την ταχύτητα στις 30 σ.α.λ. για ειδοποίηση ότι ο χρόνος έχει λήξει αφού ο Pomodoro έχει ολοκληρώσει το δεύτεροStepperBack.setSpeed (30). thirdStepperBack.setSpeed (30);

Serial.begin (9600); // εκκίνηση σειριακής οθόνης με ρυθμό baud 9600

}

void loop () {

// διαβάστε την κατάσταση του διακόπτη σε μια τοπική μεταβλητή: int reading = digitalRead (buttonPin);

// ελέγξτε αν μόλις πατήσατε το κουμπί

// (δηλαδή η είσοδος πήγε από LOW σε HIGH) και περιμένατε // αρκετά καιρό από το τελευταίο πάτημα για να αγνοήσετε τυχόν θόρυβο:

// Εάν ο διακόπτης άλλαξε, λόγω θορύβου ή πίεσης:

εάν (ανάγνωση! = lastButtonState) {// επαναφέρετε το χρονόμετρο κατάργησης lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// όποια και αν είναι η ανάγνωση, ήταν εκεί για περισσότερο // από την καθυστέρηση κατάργησης, οπότε πάρτε το ως την τρέχουσα κατάσταση:

// εάν η κατάσταση του κουμπιού έχει αλλάξει:

εάν (ανάγνωση! = buttonState) {buttonState = ανάγνωση?

// εναλλαγή ενεργοποίησης του χρονοδιακόπτη μόνο εάν η νέα κατάσταση κουμπιού υποδεικνύει ότι έχει πατηθεί

// πατήστε μία φορά για ενεργοποίηση, πατήστε ξανά για απενεργοποίηση εάν (buttonState == LOW) {timerState =! timerState; Serial.print ("Κατάσταση χρονοδιακόπτη είναι"); Serial.println (timerState); }}}

εάν (timerState == HIGH) {

Serial.println ("Το χρονόμετρο Pomodoro έχει ξεκινήσει"); if (minutesCounter <11) {// εάν η τρέχουσα δεύτερη τιμή είναι διαφορετική από την προηγούμενη τιμή τότε firstStepper.step (stepsPerRevolution); // στροφή stepper 200 βήματα/1 περιστροφή λεπτώνCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

εάν (11 <= minutesCounter && minutesCounter <21) {// εάν η τρέχουσα δεύτερη τιμή είναι διαφορετική από την προηγούμενη τιμή τότε secondStepper.step (stepsPerRevolution); // στροφή stepper 200 βήματα/1 περιστροφή λεπτώνCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

εάν (21 <= minutesCounter && minutesCounter <31) {// εάν η τρέχουσα δεύτερη τιμή είναι διαφορετική από την προηγούμενη τιμή τότε thirdStepper.step (stepsPerRevolution); // στροφή stepper 200 βήματα/1 περιστροφή λεπτώνCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

εάν (31 <= minutesCounter && minutesCounter <1031) {// εάν η τρέχουσα δεύτερη τιμή είναι διαφορετική από την προηγούμενη τιμή τότε firstStepperBack.step (-1); // γυρίστε το βήμα προς τα πίσω 1 βήμα στη σειρά για να εμφανιστεί ότι όλα εκτελούνται ταυτόχρονα secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} else {Serial.println ("Ο χρονοδιακόπτης Pomodoro είναι απενεργοποιημένος"); } // αποθηκεύστε την ανάγνωση. Την επόμενη φορά μέσω του βρόχου, // θα είναι το lastButtonState: lastButtonState = ανάγνωση; }

Βήμα 3: Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε

Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε

Επέλεξα να δημιουργήσω μια παραλληλογραμική φόρμα για το ρολόι μου. Αυτή η μορφή και οι υλικές επιλογές της κόκκινης βελανιδιάς ήταν εμπνευσμένη από μοντέρνα έπιπλα του μεσαίωνα. Ένα μέρος με το οποίο δυσκολεύτηκα περισσότερο ήταν να τοποθετήσω τους βηματιστές με καντράν μέσα από τα πορτάκια τους για να φανούν.

Συνιστάται: