Inhoudsopgave:

Stepper Pomodoro Timer - Ajarnpa
Stepper Pomodoro Timer - Ajarnpa

Video: Stepper Pomodoro Timer - Ajarnpa

Video: Stepper Pomodoro Timer - Ajarnpa
Video: POMODORO timer 2 hours - Classical music for studying & brain power (MOZART EFFECT) 2024, Juli-
Anonim
Image
Image
Stap 1: Soldeer- en verbindingscircuit buiten de container
Stap 1: Soldeer- en verbindingscircuit buiten de container

De Stepper Pomodoro is een bureautimer om iemand te helpen bij het beheren van zijn dagelijkse takenlijst door elke werkperiode op te delen in segmenten van 30 minuten. In tegenstelling tot een normale Pomodoro-timer, maakt het je echter niet angstig door de resterende tijd te laten zien. In plaats daarvan geeft het ongeveer de tijd weer via welke van de drie wijzerplaten tikt. Door niet de exacte tijd weer te geven, kunt u zich daadwerkelijk concentreren op de taak die voor u ligt, in plaats van constant uw resterende tijd te controleren. Deze Pomodoro is perfect voor diegenen die een lichte en onopvallende structuur nodig hebben voor hun taakbeheer.

Gereedschap

• Soldeerbout

• Draadstrippers

• Lasersnijder (of schuurmachine, afhankelijk van hoe u de wijzerplaten van de timer wilt maken)

• Boor (ik gebruikte een kolomboormachine om gaten te slaan die groot genoeg waren voor de wijzerplaten)

Materialen

• 1 Arduino Uno

• 1 halve broodplank

• 3 H-bruggen (ik heb DRV8833 gebruikt, een motorschild heeft me tijd en hoofdpijn bespaard)

• 3 Stappenmotoren (ik gebruikte NEMA 17 stappenmotoren)

• 1 knop

• 1 weerstand van 220-1K ohm (elke binnen bereik is goed)

• AC/DC-adapter (ik gebruikte een 12V, waarschijnlijk te groot voor dit aantal steppers)

• Stroomsplitter

• USB A-B-draad

• Breadboard-draden

• Soldeer

• Materialen voor container met timer

• Acryl voor wijzerplaten

• Spijkers of metalen pinnen om als stationaire arm van de timer te fungeren

Stap 1: Stap 1: Soldeer- en verbindingscircuit buiten de container

Voor deze stap ben ik begonnen met het aan elkaar solderen van al mijn H-bruggen (als je het motorschild koopt, hoef je deze niet te solderen. Als je eenmaal een H-brug voor elke stepper hebt, kun je controleren hoe je steppers zijn bedraad.

De NEMA 17's zijn wat bekend staat als bipolaire stappenmotoren, wat betekent dat ze twee (in plaats van één) set spoelen in de motor hebben die van polariteit veranderen om een nauwkeurige beweging van de motor mogelijk te maken. Bipolaire steppers hebben normaal gesproken vier draden en Polar steppers hebben er normaal zes, dit bemoeilijkte de instructies online een beetje. U kunt echter een multimeter op twee draden aansluiten en kijken of ze zijn aangesloten of niet. De NEMA 17 steppers hebben hun draadvolgorde in ROOD, GEEL, GRIJS, GROEN kleurvolgorde, waarbij rood en grijs het eerste polaire paar zijn en geel en groen het tweede polaire paar. Als de stepper op enig moment begint te trillen in plaats van de verwachte beweging te voltooien, is de kans groot dat uw draden op de een of andere manier niet correct zijn gepolariseerd naar hun tweelingbroer of dat een is losgekoppeld. Elke stepper wordt bestuurd via vier uitgangspinnen die worden aangesloten op de DRV8833 H-bruggen. De bedradingsvolgorde voor de ingang naar de DRV8833 is: IN1, IN2, Power, Ground, IN3, IN4. Voor uitvoerdoeleinden maakt de NEMA gewoon verbinding met de middelste vier van de zes pinnen in de volgorde: ROOD, GRIJS, GEEL, GROEN. Laten we nu de stroom aansluiten. Ik heb mijn NEMA's op digitale poorten 2-13.

Om dit van stroom te voorzien heb ik een 12V AC/DC-adapter met splitter gekocht om zowel de Arduino als alle steppers van stroom te kunnen voorzien. WAARSCHUWING: Sluit uw stroom- en aardingsdraden van de Arduino die al stroom krijgt van de poort niet aan op het breadboard dat directe stroom krijgt van de AC/DC. Het zal je bord frituren. Van de 12V-adapter die in de muur was gestoken, ging het ene deel van de splitter rechtstreeks naar de Arduino-poort en het andere naar de positieve en negatieve van het breadboard.

Ten slotte is het tijd om de knop aan te sluiten. De ene kant van de knop heeft zowel stroom nodig (met onze weerstand erin gesplitst) als de uitgangspin erop gesoldeerd (dit kan ook vanaf het breadboard). De andere pin zal onze grond zijn. Deze drie draden moeten worden aangesloten: voeding met weerstand naar 5V, uitgang naar A0 en aarde naar aarde allemaal op het Arduino Uno-bord zelf.

Vanaf hier zouden we moeten kunnen proberen de steppers te besturen met behulp van deze standaard stepper-testcode die hier te vinden is. Deze uitleg op Arduino.cc geeft ook een meer grondige uitleg van bi/unipolaire steppers als je die nodig hebt. Laten we vervolgens ingaan op de code voor de Pomodoro!

Stap 2: Stap 2: Code uploaden en aanpassen aan uw behoeften

Stap 2: Code uploaden en aanpassen aan uw behoeften
Stap 2: Code uploaden en aanpassen aan uw behoeften

Hieronder vindt u de code voor mijn Pomodoro met knop, om deze aan uw instellingen aan te passen, volgt u deze stappen:

1. Stel in hoeveel stappen per omwenteling uw persoonlijke stepper-type heeft (NEMA 17's hebben 200 en het wordt vermeld in het constante gehele getal genaamd stepsPerRevolution).

2. Stel in waar uw knop naar invoert in de constante integer caller buttonPin.

3. Stel in waar je arduino moet uitkomen om de steppers te besturen (deze onderdelen kunnen het meest verschillen tussen H-brugtypes, omdat veel verschillende bibliotheken hebben die ze gebruiken).

4. Stel de stappensnelheid in RPM's in de.setSpeed in (ik heb de mijne ingesteld op 1 rpm bij rechtsom draaien en 30 rpm bij linksom draaien).

5. Stel in hoe vaak u wilt dat elk van uw steppers wordt gedraaid voordat het verder gaat (mijn steppers tellen tien minuten, dus ze draaien tien keer met 1 RPM).

6 Stel in hoe lang u wilt dat hij achteruit draait.

#erbij betrekken

const int stepsPerRevolution = 200; // constante instelling van het aantal stappen in elke volledige omwenteling van mijn stappenmotoren

const int buttonPin = A0; // constante van mijn knopinvoer instellen

Stepper firstStepper(stepsPerRevolution, 2, 3, 4, 5); // initialiseer de stepper-bibliotheek op bepaalde pinnen

Stepper secondStepper(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper(stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // initialiseer de stepper-bibliotheek op deze pinnen opnieuw om het toerental opnieuw in te stellen voor wanneer wordt gewaarschuwd dat de tijd is verstreken Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack(stepsPerRevolution, 10, 11, 12, 13);

int minutenTeller = 0; // int tellen van volledige omwentelingen van steppers

int timerState = LAAG; // de huidige status van de pomodoro-timer (HIGH = aan, LOW = off/reset) int buttonState; // de huidige waarde van de invoerpin int lastButtonState = HOOG; // de vorige lezing van de invoerpin

// de volgende variabelen zijn unsigned long's omdat de tijd, gemeten in milliseconden, // wordt snel een groter getal dan kan worden opgeslagen in een int. niet-ondertekend lang lastDebounceTime = 0; // de laatste keer dat de uitvoerpin werd omgeschakeld naar unsigned long debounceDelay = 50; // de debouncetijd; verhogen als de output flikkert

ongeldige setup() {

pinMode (buttonPin, INPUT_PULLUP); // stel de constante van de knop in als invoer

firstStepper.setSpeed(1); // stel de snelheid in op 1 rpm voor het tellen van 10 minuten per stepper secondStepper.setSpeed(1); thirdStepper.setSpeed(1); firstStepperBack.setSpeed(30); // stel de snelheid in op 30 rpm om te waarschuwen dat de tijd is verstreken nadat Pomodoro secondStepperBack.setSpeed (30) heeft voltooid; thirdStepperBack.setSpeed (30);

Serieel.begin(9600); // start seriële monitor met een baudrate van 9600

}

lege lus() {

// lees de status van de switch in een lokale variabele: int reading = digitalRead (buttonPin);

// controleer of je net op de knop hebt gedrukt

// (d.w.z. de invoer ging van LAAG naar HOOG), en je hebt // lang genoeg gewacht sinds de laatste keer drukken om ruis te negeren:

// Als de schakelaar is gewijzigd vanwege ruis of door te drukken:

if (lezing! = lastButtonState) {// reset de debounce-timer lastDebounceTime = millis (); } if ((millis() - lastDebounceTime) > debounceDelay) { // wat de meting ook is, het is er al langer // dan de debounce-vertraging, dus neem het als de werkelijke huidige status:

// als de knopstatus is gewijzigd:

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

// schakel de timer-activering alleen in als de nieuwe knopstatus aangeeft dat deze is ingedrukt

// druk eenmaal om in te schakelen, druk nogmaals om uit te schakelen als (buttonState == LAAG) { timerState = !timerState; Serial.print("Timerstatus is "); Serial.println(timerState); } } }

if (timerState == HOOG) {

Serial.println ("Pomodoro-timer is begonnen"); if (minutesCounter < 11) { // als de huidige tweede waarde anders is dan de vorige waarde dan firstStepper.step (stepsPerRevolution); // draai stepper 200 stappen/1 omwenteling minutenCounter++; Serial.print("minutenteller is "); Serial.println(minutenteller); }

if (11 <= minutesCounter && minutesCounter < 21) { // als de huidige tweede waarde anders is dan de vorige waarde dan secondStepper.step (stepsPerRevolution); // draai stepper 200 stappen/1 omwenteling minutenCounter++; Serial.print("minutenteller is "); Serial.println(minutenteller); }

if (21 <= minutesCounter && minutesCounter < 31) { // als de huidige tweede waarde anders is dan de vorige waarde dan thirdStepper.step (stepsPerRevolution); // draai stepper 200 stappen/1 omwenteling minutenCounter++; Serial.print("minutenteller is "); Serial.println(minutenteller); }

if (31 <= minutesCounter && minutesCounter < 1031) { // als de huidige tweede waarde anders is dan de vorige waarde dan firstStepperBack.step (-1); // draai stepper 1 stap terug zodat het lijkt alsof ze allemaal tegelijk draaien secondStepperBack.step(-1); thirdStepperBack.step(-1); minutenTeller++; Serial.print("minutenteller is "); Serial.println(minutenteller); } } else { Serial.println ("Pomodoro-timer is uit"); } // sla de lezing op. De volgende keer door de lus, // is het de lastButtonState: lastButtonState = reading; }

Stap 3: Stap 3: Bevat de steppers en Arduino als je wilt

Stap 3: Bevat de steppers en Arduino als je wilt
Stap 3: Bevat de steppers en Arduino als je wilt
Stap 3: Bevat de steppers en Arduino als je wilt
Stap 3: Bevat de steppers en Arduino als je wilt
Stap 3: Bevat de steppers en Arduino als je wilt
Stap 3: Bevat de steppers en Arduino als je wilt

Ik koos ervoor om een parallellogramvorm voor mijn klok te maken. Deze vorm en de materiaalkeuzes van rood eiken zijn geïnspireerd op moderne meubels uit het midden van de eeuw. Een onderdeel waar ik de meeste moeite mee had, was om de steppers te voorzien van wijzerplaten door hun patrijspoorten om vanaf te kunnen worden gezien.

Aanbevolen: