Obsah:

Časovač Stepper Pomodoro: 3 kroky (s obrázky)
Časovač Stepper Pomodoro: 3 kroky (s obrázky)

Video: Časovač Stepper Pomodoro: 3 kroky (s obrázky)

Video: Časovač Stepper Pomodoro: 3 kroky (s obrázky)
Video: कबड्डी टाइमर। 30 Sec Kabaddi Timer & Raid Timer with Hooter, Timer Device for Sports #shortfeed 2024, Červenec
Anonim
Image
Image
Krok 1: Pájecí a spojovací obvod mimo kontejner
Krok 1: Pájecí a spojovací obvod mimo kontejner

Stepper Pomodoro je stolní časovač, který vám pomůže spravovat každodenní seznam úkolů tím, že rozdělí každé období práce na 30minutové segmenty. Na rozdíl od normálního časovače Pomodoro vás však neznepokojuje tím, že ukazuje zbývající čas. Místo toho zobrazuje čas přibližně prostřednictvím kterého ze tří číselníků tiká. Pokud neukážete přesný čas, umožní vám to skutečně se soustředit na daný úkol, spíše než neustálou kontrolu zbývajícího času. Toto Pomodoro je ideální pro ty, kteří potřebují pro správu úkolů lehkou a nenápadnou strukturu.

Nástroje

• Páječka

• Odstraňovače drátů

• Laserová řezačka (nebo bruska podle toho, jak chcete vytvořit číselníky časovače)

• Vrták (použil jsem vrtačku k vyražení otvorů dostatečně velkých pro číselníky)

Materiály

• 1 Arduino Uno

• 1 poloviční prkénko

• 3 H můstky (použil jsem DRV8833, ochranný kryt motoru mi ušetřil čas a bolesti hlavy)

• 3 krokové motory (použil jsem krokové motory NEMA 17)

• 1 tlačítko

• 1 220-1K ohmový rezistor (jakýkoli v dosahu je dobrý)

• AC/DC adaptér (použil jsem 12V, pravděpodobně příliš velký pro toto množství stepperů)

• Rozdělovač výkonu

• USB A-B drát

• Dráty na prkénko

• Pájka

• Materiály pro kontejner časovače

• Akryl pro číselníky

• Hřebíky nebo kovové kolíky fungují jako stacionární rameno časovače

Krok 1: Krok 1: Pájecí a spojovací obvod mimo kontejner

Pro tento krok jsem začal spojením všech mých můstků H (pokud si koupíte kryt motoru, nemusíte je pájet. Jakmile budete mít můstek H pro každý stepper, můžete zkontrolovat, jak jsou vaše steppery zapojeny.

NEMA 17 jsou známé jako bipolární krokové motory, což znamená, že mají v motoru dvě (spíše než jednu) sadu cívek, které mění polaritu, aby umožnily přesný pohyb motoru. Bipolární steppery mají běžně čtyři dráty a polární steppery běžně šest, což trochu zkomplikovalo online pokyny. Ke dvěma vodičům však můžete připojit multimetr a zjistit, zda jsou připojeny nebo nejsou. Steppery NEMA 17 mají pořadí vodičů v ČERVENÉ, ŽLUTÉ, ŠEDÉ, ZELENÉ barvě, přičemž červená a šedá je první polární dvojice a žlutá a zelená je druhá polární dvojice. Pokud se v jakémkoli okamžiku začne stepper škubat, než aby dokončil očekávaný pohyb, je pravděpodobné, že vaše dráty nejsou nějak správně polarizovány na své dvojče nebo je jeden odpojen. Každý stepper je řízen čtyřmi výstupními piny, které se připojují k můstkům DRV8833 H. Pořadí zapojení pro vstup do DRV8833 je: IN1, IN2, Power, Ground, IN3, IN4. Pro účely výstupu se NEMA připojuje k prostředním čtyřem ze šesti kolíků v pořadí: ČERVENÁ, ŠEDÁ, ŽLUTÁ, ZELENÁ. Nyní připojíme napájení. Mám své NEMA na digitálních portech 2–13.

K napájení jsem si koupil 12V AC/DC adaptér s rozdělovačem, abych mohl napájet jak Arduino, tak všechny steppery. VAROVÁNÍ: Nepřipojujte napájecí a zemnící vodiče z Arduina, který již dostává energii z portu, k prkénku přijímajícímu přímé napájení z AC/DC. Smaží vaši desku. Z adaptéru 12 V zapojeného do zdi jedna část rozdělovače směřovala přímo do portu Arduina a druhá do kladného a záporného póru chleba.

Nakonec je čas připojit tlačítko. Jedna strana tlačítka bude potřebovat jak napájení (s naším rezistorem spojeným), tak i připájený výstupní kolík (to lze také provést z prkénka). Druhý kolík bude naše země. Tyto tři vodiče by měly být zapojeny do: Napájení s rezistorem na 5V, výstup na A0 a uzemnění na desce samotné na desce Arduino Uno.

Odtud bychom se měli pokusit ovládat steppery pomocí tohoto základního testovacího kódu stepperu, který najdete zde. Toto vysvětlení na Arduino.cc také dělá důkladnější vysvětlení bi/unipolárních stepperů, pokud to potřebujete. Dále se dostaneme ke kódu pro Pomodoro!

Krok 2: Krok 2: Nahrání kódu a jeho přizpůsobení vašim potřebám

Krok 2: Nahrání kódu a jeho přizpůsobení vašim potřebám
Krok 2: Nahrání kódu a jeho přizpůsobení vašim potřebám

Níže je kód pro můj Pomodoro s tlačítkem, abyste jej mohli přizpůsobit svému nastavení, postupujte podle těchto kroků:

1. Nastavte, kolik kroků za otáčku má váš osobní typ stepperu (NEMA 17 má 200 a je uveden v konstantním čísle nazvaném stepsPerRevolution).

2. Nastavte, kam se má vaše tlačítko zadávat, v tlačítku PinP volajícího s konstantním číslem.

3. Nastavte, odkud má vaše arduino vycházet, abyste mohli ovládat steppery (tyto části se mezi typy můstků H mohou nejvíce lišit, protože mnoho z nich používá různé knihovny).

4. Nastavte rychlost krokování v otáčkách za minutu v.setSpeed (já mám nastaveno 1 otáčky za minutu při otáčení ve směru hodinových ručiček a 30 otáček za minutu při otáčení proti směru hodinových ručiček).

5. Nastavte, kolikrát se má každý z vašich steperů otočit, než se pohne (moje stepery počítají deset minut, takže se otočí desetkrát rychlostí 1 RPM).

6 Nastavte, jak dlouho se má otáčet dozadu.

#zahrnout

const int stepsPerRevolution = 200; // nastavení konstanty, kolik kroků je v každé plné otáčce mých krokových motorů

tlačítko const intPin = A0; // nastavení konstanty mého tlačítkového vstupu

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // inicializace knihovny stepperů na určitých pinech

Stepper secondStepper (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // opětovná inicializace knihovny stepperů na těchto pinech, aby bylo možné resetovat otáčky po uplynutí doby, na kterou upozornilo, že čas vypršel Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int počítání plných otáček stepperů

int timerState = LOW; // aktuální stav časovače pomodoro (HIGH = zapnuto, LOW = vypnuto/reset) int buttonState; // aktuální čtení ze vstupního pinu int lastButtonState = HIGH; // předchozí čtení ze vstupního pinu

// následující proměnné jsou dlouhé bez znaménka, protože čas měřený v milisekundách, // se rychle stane větším číslem, než je možné uložit do int. unsigned long lastDebounceTime = 0; // naposledy byl výstupní pin přepnut bez znaménka long debounceDelay = 50; // doba odskoku; zvýšit, pokud výstup bliká

neplatné nastavení () {

pinMode (buttonPin, INPUT_PULLUP); // nastavení konstanty tlačítka jako vstupu

firstStepper.setSpeed (1); // nastavení rychlosti na 1 ot/ min pro počítání 10 minut na stepper secondStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // nastavení rychlosti na 30 ot/ min pro upozornění, že čas vypršel poté, co Pomodoro dokončí secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);

Serial.begin (9600); // spusťte sériový monitor s přenosovou rychlostí 9600 baudů

}

prázdná smyčka () {

// načtení stavu přepínače do lokální proměnné: int reading = digitalRead (buttonPin);

// zkontrolujte, zda jste právě stiskli tlačítko

// (tj. vstup přešel z LOW na HIGH) a vy jste čekali // dost dlouho od posledního stisknutí, abyste ignorovali jakýkoli hluk:

// Pokud se přepínač změnil kvůli hluku nebo stisknutí:

if (reading! = lastButtonState) {// reset časovače odskoku lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// ať už je čtení kdekoli, je tam déle // než zpoždění odskoku, takže to berte jako aktuální aktuální stav:

// pokud se změnil stav tlačítka:

if (čtení! = buttonState) {buttonState = čtení;

// pouze přepnutí aktivace časovače, pokud nový stav tlačítka indikuje, že bylo stisknuto

// jedním stisknutím zapnete, dalším stisknutím vypnete if (buttonState == LOW) {timerState =! timerState; Serial.print ("Stav časovače je"); Serial.println (timerState); }}}

if (timerState == HIGH) {

Serial.println („Časovač Pomodoro začal“); if (minutesCounter <11) {// pokud je aktuální druhá hodnota odlišná od předchozí hodnoty, pak firstStepper.step (stepsPerRevolution); // otočení stepperu 200 kroků/1 otáčka minutCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (11 <= minutesCounter && minutesCounter <21) {// pokud je aktuální druhá hodnota odlišná od předchozí hodnoty, pak secondStepper.step (stepsPerRevolution); // otočení stepperu 200 kroků/1 otáčka minutCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (21 <= minutesCounter && minutesCounter <31) {// pokud je aktuální druhá hodnota odlišná od předchozí hodnoty, pak thirdStepper.step (stepsPerRevolution); // otočení stepperu 200 kroků/1 otáčka minutCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (31 <= minutesCounter && minutesCounter <1031) {// pokud je aktuální druhá hodnota odlišná od předchozí hodnoty, pak firstStepperBack.step (-1); // otočit stepper zpět o 1 krok v pořadí, aby vypadal, že všechny běží současně secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} else {Serial.println ("Časovač Pomodoro je vypnutý"); } // uloží čtení. Příště smyčkou, // to bude lastButtonState: lastButtonState = reading; }

Krok 3: Krok 3: Obsahujte steppery a Arduino, pokud si přejete

Krok 3: Obsahujte steppery a Arduino, pokud si přejete
Krok 3: Obsahujte steppery a Arduino, pokud si přejete
Krok 3: Obsahujte steppery a Arduino, pokud si přejete
Krok 3: Obsahujte steppery a Arduino, pokud si přejete
Krok 3: Obsahujte steppery a Arduino, pokud si přejete
Krok 3: Obsahujte steppery a Arduino, pokud si přejete

Rozhodl jsem se pro své hodiny vytvořit rovnoběžník. Tato forma a výběr materiálu z červeného dubu byl inspirován moderním nábytkem středního století. Jedna část, se kterou jsem měl největší potíže, bylo osazení stepperů číselníky skrz jejich okénka, ze kterých bylo vidět.

Doporučuje: