Πίνακας περιεχομένων:
- Βήμα 1: Βήμα 1: Συγκόλληση και σύνδεση κυκλώματος έξω από το δοχείο
- Βήμα 2: Βήμα 2: Μεταφόρτωση κώδικα και προσαρμογή του στις ανάγκες σας
- Βήμα 3: Βήμα 3: Περιέχετε τα Steppers και το Arduino αν θέλετε
Βίντεο: Χρονόμετρο Stepper Pomodoro: 3 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Το 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: Μεταφόρτωση κώδικα και προσαρμογή του στις ανάγκες σας
Παρακάτω είναι ο κωδικός για το κουμπί μου 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 αν θέλετε
Επέλεξα να δημιουργήσω μια παραλληλογραμική φόρμα για το ρολόι μου. Αυτή η μορφή και οι υλικές επιλογές της κόκκινης βελανιδιάς ήταν εμπνευσμένη από μοντέρνα έπιπλα του μεσαίωνα. Ένα μέρος με το οποίο δυσκολεύτηκα περισσότερο ήταν να τοποθετήσω τους βηματιστές με καντράν μέσα από τα πορτάκια τους για να φανούν.
Συνιστάται:
Stepper Motor ελεγχόμενη Stepper Motor χωρίς μικροελεγκτή (V2): 9 βήματα (με εικόνες)
Stepper Motor Controlled Stepper Motor Without Microcontroller (V2): Σε μία από τις προηγούμενες οδηγίες μου, σας έδειξα πώς να ελέγχετε ένα βηματικό μοτέρ χρησιμοποιώντας ένα βηματικό μοτέρ χωρίς μικροελεγκτή. Ταν ένα γρήγορο και διασκεδαστικό έργο αλλά ήρθε με δύο προβλήματα που θα λυθούν σε αυτό το Instructable. Έτσι, εξυπνάδα
ESP8266 - Άρδευση κήπου με χρονόμετρο και τηλεχειριστήριο μέσω Internet / ESP8266: 7 βήματα (με εικόνες)
ESP8266 - Άρδευση κήπου με χρονόμετρο και τηλεχειριστήριο μέσω Διαδικτύου / ESP8266: ESP8266 - Τηλεχειριστήριο άρδευσης και με χρονοδιάγραμμα για λαχανόκηπους, ανθισμένους κήπους και γκαζόν. Χρησιμοποιεί το κύκλωμα ESP-8266 και μια υδραυλική / ηλεκτρική βαλβίδα για τροφοδοσία άρδευσης. Πλεονεκτήματα: Χαμηλό κόστος (30,00 ~ US $) εντολές γρήγορης πρόσβασης
Μοντέλο ατμομηχανής ελεγχόμενης από Stepper Motor - Stepper Motor As a Rotary Encoder: 11 βήματα (με εικόνες)
Μοντέλο ατμομηχανής ελεγχόμενου από Stepper Motor | Stepper Motor As a Rotary Encoder: Σε ένα από τα προηγούμενα Instructables, μάθαμε πώς να χρησιμοποιούμε ένα βηματικό μοτέρ ως περιστροφικό κωδικοποιητή. Σε αυτό το έργο, θα χρησιμοποιήσουμε τώρα αυτόν τον περιστροφικό κωδικοποιητή βηματικού κινητήρα για τον έλεγχο μιας ατμομηχανής μοντέλου χρησιμοποιώντας έναν μικροελεγκτή Arduino. Έτσι, χωρίς fu
Όλα σε ένα ψηφιακό χρονόμετρο (ρολόι, χρονόμετρο, ξυπνητήρι, θερμοκρασία): 10 βήματα (με εικόνες)
All in One Digital Chronometer (Ρολόι, Χρονόμετρο, Ξυπνητήρι, Θερμοκρασία): Σχεδιάζαμε να φτιάξουμε χρονόμετρο για κάποιον άλλο διαγωνισμό, αλλά αργότερα εφαρμόσαμε επίσης ένα ρολόι (χωρίς RTC). Καθώς μπήκαμε στον προγραμματισμό, ενδιαφερθήκαμε να εφαρμόσουμε περισσότερες λειτουργίες στη συσκευή και καταλήξαμε να προσθέσουμε DS3231 RTC, ως
Stepper Motor ελεγχόμενη Stepper Motor - Stepper Motor As a Rotary Encoder: 11 βήματα (με εικόνες)
Stepper Motor ελεγχόμενη Stepper Motor | Stepper Motor As a Rotary Encoder: Έχετε μερικά stepper motors ξαπλωμένα και θέλετε να κάνετε κάτι; Σε αυτό το Instructable, ας χρησιμοποιήσουμε έναν βηματικό κινητήρα ως περιστροφικό κωδικοποιητή για να ελέγξουμε τη θέση ενός άλλου βηματικού κινητήρα χρησιμοποιώντας έναν μικροελεγκτή Arduino. Οπότε, χωρίς άλλη παρατήρηση, ας