Inhaltsverzeichnis:

Stepper Pomodoro Timer - Gunook
Stepper Pomodoro Timer - Gunook

Video: Stepper Pomodoro Timer - Gunook

Video: Stepper Pomodoro Timer - Gunook
Video: POMODORO timer 2 hours - Classical music for studying & brain power (MOZART EFFECT) 2024, Juli
Anonim
Image
Image
Schritt 1: Löten und Anschließen der Schaltung außerhalb des Containers
Schritt 1: Löten und Anschließen der Schaltung außerhalb des Containers

Der Stepper Pomodoro ist ein Schreibtisch-Timer, der einem bei der Verwaltung seiner täglichen Aufgabenliste hilft, indem er jeden Arbeitsabschnitt in 30-Minuten-Segmente unterteilt. Im Gegensatz zu einem normalen Pomodoro-Timer macht er Sie jedoch nicht nervös, indem er die verbleibende Zeit anzeigt. Stattdessen zeigt es die Uhrzeit an, über welche der drei Zifferblätter ungefähr tickt. Indem Sie nicht die genaue Zeit anzeigen, können Sie sich auf die anstehende Aufgabe konzentrieren, anstatt ständig Ihre verbleibende Zeit zu überprüfen. Dieser Pomodoro ist perfekt für diejenigen, die eine leichte und unauffällige Struktur für ihre Aufgabenverwaltung benötigen.

Werkzeuge

• Lötkolben

• Abisolierzangen

• Laserschneider (oder Schleifer, je nachdem, wie Sie die Zifferblätter des Timers erstellen möchten)

• Bohrer (ich habe eine Bohrmaschine verwendet, um Löcher zu stanzen, die groß genug für die Zifferblätter sind)

Materialien

• 1 Arduino Uno

• 1 halbes Steckbrett

• 3 H-Brücken (ich habe DRV8833 verwendet, ein Motorschild hätte mir Zeit und Kopfschmerzen erspart)

• 3 Schrittmotoren (ich habe NEMA 17-Schrittmotoren verwendet)

• 1 Taste

• 1 220-1K Ohm Widerstand (jeder innerhalb des Bereichs ist gut)

• AC/DC-Adapter (ich habe einen 12V verwendet, wahrscheinlich zu groß für diese Anzahl an Steppern)

• Stromverteiler

• USB A-B-Kabel

• Steckbrettdrähte

• Löten

• Materialien für Behälter der Zeitschaltuhr

• Acryl für Zifferblätter

• Nägel oder Metallstifte als stationärer Arm der Zeitschaltuhr

Schritt 1: Schritt 1: Löten und Anschließen der Schaltung außerhalb des Containers

Für diesen Schritt habe ich damit begonnen, alle meine H-Brücken zusammenzulöten (wenn Sie die Motorabschirmung kaufen, sollten Sie diese nicht löten müssen. Sobald Sie eine H-Brücke für jeden Stepper haben, können Sie überprüfen, wie Ihre Stepper verdrahtet sind.

Die NEMA 17s sind sogenannte bipolare Schrittmotoren, was bedeutet, dass sie zwei (anstelle eines) Spulensätze innerhalb des Motors haben, die die Polarität ändern, um eine präzise Bewegung des Motors zu ermöglichen. Bipolar-Stepper haben normalerweise vier Drähte und Polar-Stepper haben normalerweise sechs, dies hat die Online-Anleitung etwas kompliziert. Sie können jedoch ein Multimeter an zwei Drähte anschließen und sehen, ob sie verbunden sind oder nicht. Die NEMA 17 Stepper haben ihre Kabelreihenfolge in ROT, GELB, GRAU, GRÜN, wobei Rot und Grau das erste Polarpaar und Gelb und Grün das zweite Polarpaar sind. Wenn der Stepper zu irgendeinem Zeitpunkt anfängt zu zucken, anstatt die erwartete Bewegung zu vollenden, besteht die Möglichkeit, dass Ihre Drähte irgendwie nicht richtig auf ihren Zwilling polarisiert sind oder einer getrennt ist. Jeder Stepper wird über vier Ausgangspins gesteuert, die mit den DRV8833 H-Brücken verbunden sind. Die Verdrahtungsreihenfolge für den Eingang des DRV8833 ist: IN1, IN2, Power, Ground, IN3, IN4. Für Ausgabezwecke wird die NEMA nur mit den mittleren vier der sechs Pins in der Reihenfolge ROT, GRAU, GELB, GRÜN verbunden. Jetzt können wir die Stromversorgung anschließen. Ich habe meine NEMAs an den digitalen Ports 2-13.

Um dies mit Strom zu versorgen, kaufte ich einen 12-V-AC / DC-Adapter mit Splitter, um sowohl den Arduino als auch alle Stepper mit Strom versorgen zu können. WARNUNG: Verbinden Sie nicht Ihre Strom- und Erdungskabel vom Arduino, der bereits Strom vom Port erhält, mit dem Steckbrett, das direkten Strom vom AC / DC erhält. Es wird Ihr Brett braten. Von dem in die Wand gesteckten 12-V-Adapter ging ein Teil des Splitters direkt zum Arduino-Port und der andere zum Plus- und Minuspol des Steckbretts.

Schließlich ist es Zeit, den Knopf anzuschließen. Eine Seite des Knopfes benötigt sowohl Strom (mit unserem eingespleißten Widerstand) als auch den angelöteten Ausgangsstift (dies kann auch vom Steckbrett aus erfolgen). Der andere Pin wird unser Boden sein. Diese drei Drähte sollten eingesteckt werden: Strom mit Widerstand an 5V, Ausgang an A0 und Masse an Masse auf der Arduino Uno-Platine selbst.

Von hier aus sollten wir versuchen, die Stepper mit diesem hier gefundenen einfachen Stepper-Testcode zu steuern. Diese Erklärung auf Arduino.cc bietet auch eine gründlichere Erklärung von bi/unipolaren Steppern, wenn Sie sie benötigen. Kommen wir als nächstes zum Code für den Pomodoro!

Schritt 2: Schritt 2: Code hochladen und an Ihre Bedürfnisse anpassen

Schritt 2: Code hochladen und an Ihre Bedürfnisse anpassen
Schritt 2: Code hochladen und an Ihre Bedürfnisse anpassen

Unten ist der Code für meinen Pomodoro mit Taste, um ihn an Ihr Setup anzupassen, folgen Sie diesen Schritten:

1. Stellen Sie ein, wie viele Schritte pro Umdrehung Ihr persönlicher Schrittmotortyp hat (NEMA 17s haben 200 und es wird in der konstanten Ganzzahl namens stepsPerRevolution aufgeführt).

2. Legen Sie fest, wo Ihre Schaltfläche in der konstanten Ganzzahl-AnrufertastePin eingibt.

3. Stellen Sie ein, wo Ihr Arduino ausgeben soll, um die Stepper zu steuern (diese Teile können zwischen den H-Brückentypen am stärksten variieren, da viele unterschiedliche Bibliotheken verwenden).

4. Stellen Sie die Schrittgeschwindigkeit in RPMs in der.setSpeed ein (ich habe meine auf 1 U / min beim Drehen im Uhrzeigersinn und 30 U / min beim Drehen gegen den Uhrzeigersinn eingestellt).

5. Stellen Sie ein, wie oft sich jeder Ihrer Stepper drehen soll, bevor er weiterfährt (meine Stepper zählen zehn Minuten, also drehen sie sich zehnmal mit 1 U/min).

6 Stellen Sie ein, wie lange es rückwärts gedreht werden soll.

#enthalten

const int SchrittePerRevolution = 200; // Konstante einstellen, wie viele Schritte in jeder vollen Umdrehung meiner Schrittmotoren sind

const int buttonPin = A0; // Konstante meiner Tasteneingabe einstellen

Stepper firstStepper(stepsPerRevolution, 2, 3, 4, 5); // die Stepper-Bibliothek auf bestimmten Pins initialisieren

Stepper secondStepper(stepsPerRevolution, 6, 7, 8, 9); Stepper dritterStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // die Stepper-Bibliothek auf diesen Pins neu initialisieren, um die Drehzahl zurücksetzen zu können, wenn die Zeit abgelaufen ist Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper dritterStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int MinutenZähler = 0; // int zählt volle Umdrehungen von Steppern

int TimerState = NIEDRIG; // der aktuelle Status des Pomodoro-Timers (HIGH = on, LOW = off/reset) int buttonState; // der aktuelle Messwert vom Eingangspin Int lastButtonState = HIGH; // der vorherige Messwert vom Eingangspin

// Die folgenden Variablen sind vorzeichenlose Longs, da die Zeit, gemessen in Millisekunden, // wird schnell eine größere Zahl, als in einem int gespeichert werden kann. unsigned long lastDebounceTime = 0; // das letzte Mal, als der Ausgangspin umgeschaltet wurde unsigned long debounceDelay = 50; // die Entprellzeit; erhöhen, wenn die Ausgabe flimmert

Leere Einrichtung () {

pinMode (buttonPin, INPUT_PULLUP); // Konstante des Buttons als Eingabe setzen

firstStepper.setSpeed(1); // Stellen Sie die Geschwindigkeit auf 1 U / min ein, um 10 Minuten pro Schritt zu zählen secondStepper.setSpeed (1); ThirdStepper.setSpeed(1); firstStepperBack.setSpeed(30); // Stellen Sie die Geschwindigkeit auf 30 U / min ein, um zu warnen, dass die Zeit abgelaufen ist, nachdem Pomodoro secondStepperBack.setSpeed (30) abgeschlossen hat; dritterStepperBack.setSpeed(30);

Serial.begin (9600); // seriellen Monitor mit einer Baudrate von 9600 starten

}

Leere Schleife () {

// den Zustand des Schalters in eine lokale Variable lesen: int reading = digitalRead (buttonPin);

// Überprüfen Sie, ob Sie gerade die Taste gedrückt haben

// (d.h. der Eingang ging von LOW auf HIGH) und Sie haben seit dem letzten Drücken // lange genug gewartet, um jegliches Rauschen zu ignorieren:

// Wenn sich der Schalter aufgrund von Geräuschen oder Drücken geändert hat:

if (reading != lastButtonState) {// den Entprell-Timer zurücksetzen lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // Was auch immer der Messwert ist, es war länger // als die Entprellungsverzögerung da, also nehmen Sie es als den aktuellen aktuellen Zustand:

// wenn sich der Schaltflächenstatus geändert hat:

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

// Schalte die Timer-Aktivierung nur um, wenn der neue Tastenzustand anzeigt, dass sie gedrückt wurde

// Einmal drücken zum Einschalten, erneut drücken zum Ausschalten if (buttonState == LOW) { TimerState = !timerState; Serial.print ("Timer-Zustand ist"); Serial.println (timerState); } } }

if (timerState == HIGH) {

Serial.println ("Pomodoro-Timer hat begonnen"); if (minutesCounter <11) {//wenn der aktuelle zweite Wert vom vorherigen Wert abweicht, dann firstStepper.step(stepsPerRevolution); // Schrittmotor drehen 200 Schritte / 1 UmdrehungsminutenCounter++; Serial.print ("minutesCounter is"); Serial.println (MinutenZähler); }

if (11 <= minutesCounter && minutesCounter <21) {//wenn der aktuelle zweite Wert vom vorherigen Wert abweicht, dann secondStepper.step (stepsPerRevolution); // Schrittmotor drehen 200 Schritte / 1 UmdrehungsminutenCounter++; Serial.print ("minutesCounter is"); Serial.println (MinutenZähler); }

if (21 <= minutesCounter && minutesCounter <31) {//wenn der aktuelle zweite Wert vom vorherigen Wert abweicht, dann ThirdStepper.step(stepsPerRevolution); // Schrittmotor drehen 200 Schritte / 1 UmdrehungsminutenCounter++; Serial.print ("minutesCounter is"); Serial.println (MinutenZähler); }

if (31 <= minutesCounter && minutesCounter <1031) { // Wenn der aktuelle zweite Wert vom vorherigen Wert abweicht, dann firstStepperBack.step (-1); // Stepper um 1 Schritt zurückdrehen, um so zu erscheinen, als ob alle gleichzeitig laufen secondStepperBack.step (-1); ThirdStepperBack.step(-1); MinutenZähler++; Serial.print ("minutesCounter is"); Serial.println (MinutenZähler); } } else { Serial.println ("Pomodoro-Timer ist ausgeschaltet"); } // speichere den Messwert. Beim nächsten Durchlauf der Schleife // ist es lastButtonState: lastButtonState = reading; }

Schritt 3: Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten

Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten
Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten
Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten
Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten
Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten
Schritt 3: Enthalten Sie die Stepper und Arduino, wenn Sie möchten

Ich entschied mich für eine parallelogrammartige Form für meine Uhr. Diese Form und die Materialwahl von Red Oak wurden von modernen Möbeln aus der Mitte des Jahrhunderts inspiriert. Ein Teil, mit dem ich die größten Schwierigkeiten hatte, war, die Stepper mit Zifferblättern durch ihre Bullaugen zu versehen, um von dort aus gesehen zu werden.

Empfohlen: