Spisu treści:

Stepper Pomodoro Timer: 3 kroki (ze zdjęciami)
Stepper Pomodoro Timer: 3 kroki (ze zdjęciami)

Wideo: Stepper Pomodoro Timer: 3 kroki (ze zdjęciami)

Wideo: Stepper Pomodoro Timer: 3 kroki (ze zdjęciami)
Wideo: 9월 첫째주 일상|스페인식 문어요리, 강주연못 드라이브, 건강한친구들 후기, 조말론 향수 추천 2024, Listopad
Anonim
Image
Image
Krok 1: Lutowanie i podłączanie obwodu na zewnątrz pojemnika
Krok 1: Lutowanie i podłączanie obwodu na zewnątrz pojemnika

Stepper Pomodoro to licznik czasu pracy na biurku, który pomaga zarządzać codzienną listą zadań, dzieląc każdy okres pracy na 30-minutowe segmenty. Jednak w przeciwieństwie do zwykłego timera Pomodoro, nie wzbudza niepokoju, pokazując ilość pozostałego czasu. Zamiast tego wyświetla w przybliżeniu czas, przez który z trzech pokręteł tyka. Niepokazywanie dokładnego czasu pozwala skupić się na zadaniu, a nie na ciągłym sprawdzaniu pozostałego czasu. Ten Pomodoro jest idealny dla tych, którzy potrzebują lekkiej i dyskretnej struktury do zarządzania zadaniami.

Narzędzia

• lutownica

• Narzędzia do ściągania izolacji

• Wycinarka laserowa (lub szlifierka w zależności od tego, jak chcesz stworzyć tarcze timera)

• Wiertarka (użyłem wiertarki do wybijania otworów wystarczająco dużych dla tarcz)

Materiały

• 1 Arduino Uno

• 1 płytka do krojenia chleba o połowie wielkości

• 3 mostki H (użyłem DRV8833, osłona silnika zaoszczędziła mi trochę czasu i bólu głowy)

• 3 silniki krokowe (użyłem silników krokowych NEMA 17)

• 1 przycisk

• 1 rezystor 220-1 kΩ (dowolny w zakresie jest dobry)

• zasilacz AC/DC (użyłem 12V, chyba za duży na taką ilość stepperów)

• Rozdzielacz zasilania

• Przewód USB A-B

• Druty do krojenia chleba

• Lutowane

• Materiały na pojemnik timera

• Akryl na tarcze

• Gwoździe lub metalowe kołki pełniące rolę nieruchomego ramienia timera

Krok 1: Krok 1: Lutowanie i podłączanie obwodu na zewnątrz pojemnika

W tym kroku zacząłem od przylutowania wszystkich moich mostków H (jeśli kupisz osłonę silnika, nie musisz ich lutować. Gdy masz już mostek H dla każdego steppera, możesz sprawdzić, jak są podłączone twoje stepery.

NEMA 17 to tak zwane bipolarne silniki krokowe, co oznacza, że mają dwa (a nie jeden) zestaw cewek w silniku, które zmieniają polaryzację, aby umożliwić precyzyjny ruch silnika. Steppery bipolarne mają zwykle cztery przewody, a stepery polarne sześć, co nieco komplikuje instrukcje online. Możesz jednak podłączyć multimetr do dwóch przewodów i sprawdzić, czy są połączone, czy nie. Steppery NEMA 17 mają kolejność przewodów w kolejności kolorów CZERWONY, ŻÓŁTY, SZARY, ZIELONY, przy czym czerwony i szary to pierwsza para biegunów, a żółty i zielony to druga para biegunów. Jeśli w dowolnym momencie stepper zacznie drgać, a nie wykonać oczekiwany ruch, istnieje prawdopodobieństwo, że twoje przewody w jakiś sposób nie są prawidłowo spolaryzowane do bliźniaka lub jeden jest rozłączony. Każdy krok jest sterowany za pomocą czterech pinów wyjściowych, które łączą się z mostkami DRV8833 H. Kolejność okablowania wejścia do DRV8833 to: IN1, IN2, Zasilanie, Uziemienie, IN3, IN4. Dla celów wyjściowych NEMA łączy się po prostu ze środkowymi czterema z sześciu pinów w kolejności: CZERWONY, SZARY, ŻÓŁTY, ZIELONY. Teraz podłączmy zasilanie. Mam swoje NEMA na portach cyfrowych 2–13.

Aby to zasilić, kupiłem zasilacz 12V AC/DC z rozdzielaczem, aby móc zasilać zarówno Arduino, jak i wszystkie stepery. OSTRZEŻENIE: Nie podłączaj przewodów zasilających i uziemiających z Arduino już zasilanego z portu do płytki stykowej otrzymującej bezpośrednie zasilanie z AC/DC. Usmaży twoją deskę. Z zasilacza 12V podłączonego do ściany jedna część rozdzielacza poszła prosto do portu Arduino, a druga do dodatniego i ujemnego płytki chleba.

Wreszcie nadszedł czas, aby podłączyć przycisk. Jedna strona przycisku będzie wymagała zarówno zasilania (z wpiętym naszym rezystorem), jak i przylutowanego pinu wyjściowego (można to również zrobić z płytki stykowej). Drugi pin będzie naszą ziemią. Te trzy przewody należy podłączyć do: zasilania z rezystorem do 5 V, wyjścia do A0 i uziemienia do masy, wszystko na samej płytce Arduino Uno.

Stąd powinniśmy być w stanie spróbować kontrolować steppery za pomocą tego podstawowego kodu testu krokowego, który można znaleźć tutaj. To wyjaśnienie na Arduino.cc zawiera również dokładniejsze wyjaśnienie bi/unipolarnych stepperów, jeśli tego potrzebujesz. Następnie przejdźmy do kodu Pomodoro!

Krok 2: Krok 2: Prześlij kod i dostosuj go do swoich potrzeb

Krok 2: Prześlij kod i dostosuj go do swoich potrzeb
Krok 2: Prześlij kod i dostosuj go do swoich potrzeb

Poniżej znajduje się kod mojego Pomodoro z przyciskiem, aby dostosować go do swojej konfiguracji, wykonaj następujące kroki:

1. Ustaw, ile kroków na obrót ma twój osobisty stepper (NEMA 17 ma 200 i jest wymieniony w stałej liczbie całkowitej zwanej stepsPerRevolution).

2. Ustaw, gdzie przycisk jest wprowadzany w stałej liczbie całkowitej dzwoniącego buttonPin.

3. Ustaw, skąd twoje arduino ma wyprowadzać dane, aby sterować krokami (te części mogą się najbardziej różnić między typami mostków H, ponieważ wiele z nich ma różne biblioteki, z których korzystają).

4. Ustaw prędkość krokową w obrotach na minutę w.setSpeed (mam swoje ustawione na 1 obr./min podczas obracania zgodnie z ruchem wskazówek zegara i 30 obr./min podczas obracania w lewo).

5. Ustaw, ile razy każdy z Twoich stepperów ma się obrócić, zanim ruszy (moje stepery liczą dziesięć minut, więc obracają się dziesięć razy z prędkością 1 obr./min).

6 Ustaw, jak długo ma się obracać do tyłu.

#włączać

const int stepsPerRevolution = 200; // ustawienie stałej liczby kroków w każdym pełnym obrocie moich silników krokowych

const int buttonPin = A0; // ustawianie stałej mojego wejścia przycisku

Stepper firstStepper(stepsPerRevolution, 2, 3, 4, 5); // zainicjuj bibliotekę krokową na określonych pinach

Krok drugiStepper(kroki na obrót, 6, 7, 8, 9); Krok trzeciStepper(krokiPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // ponownie zainicjuj bibliotekę krokową na tych pinach, aby móc zresetować rpm w przypadku powiadomienia, że czas upłynął Stepper secondStepperBack(stepsPerRevolution, 6, 7, 8, 9); Krok trzeciStepperBack(krokiPerRevolution, 10, 11, 12, 13);

int minutLicznik = 0; // int liczenie pełnych obrotów stepperów

int stan licznika = NISKI; // aktualny stan timera pomodoro (HIGH = on, LOW = off/reset) int buttonState; // aktualny odczyt z pinu wejściowego int lastButtonState = HIGH; // poprzedni odczyt z pinu wejściowego

// poniższe zmienne są unsigned long, ponieważ czas mierzony w milisekundach, // szybko stanie się większą liczbą niż można przechowywać w int. unsigned long lastDebounceTime = 0; // ostatni raz przełączany pin wyjściowy unsigned long debounceDelay = 50; // czas odbicia; zwiększyć, jeśli wyjście migocze

pusta konfiguracja () {

pinMode(buttonPin, INPUT_PULLUP); // ustaw stałą przycisku jako wejście

pierwszystepper.setSpeed(1); // ustaw prędkość na 1 rpm dla odliczania 10 minut na sekundę krokowąStepper.setSpeed(1); trzeciStepper.setSpeed(1); pierwszyStepperBack.setSpeed(30); // ustaw prędkość na 30 obr./min, aby ostrzec, że czas upłynął po zakończeniu przez Pomodoro secondStepperBack.setSpeed(30); trzeciStepperBack.setSpeed(30);

Serial.początek(9600); // uruchom monitor szeregowy z szybkością transmisji 9600 ba

}

pusta pętla () {

// odczytaj stan przełącznika do zmiennej lokalnej: int reading = digitalRead(buttonPin);

// sprawdź, czy właśnie nacisnąłeś przycisk

// (tj. wejście przeszło z LOW na HIGH) i czekałeś // wystarczająco długo od ostatniego naciśnięcia, aby zignorować wszelkie szumy:

// Jeśli przełącznik zmienił się z powodu hałasu lub naciskania:

if (odczyt != lastButtonState) { // zresetuj licznik odbicia lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // niezależnie od tego, jaki jest odczyt, jest tam dłużej // niż opóźnienie debounce, więc weź to jako aktualny stan bieżący:

// jeśli zmienił się stan przycisku:

if (odczyt != stan_przycisku) { stan_przycisku = czytanie;

// przełącz aktywację timera tylko wtedy, gdy nowy stan przycisku wskazuje, że został naciśnięty

// naciśnij raz, aby włączyć, naciśnij ponownie, aby wyłączyć, jeśli (buttonState == LOW) { timerState = !timerState; Serial.print("Stan zegara to "); Serial.println(stan timera); } } }

if (stan timera == WYSOKI) {

Serial.println("Licznik czasu Pomodoro został uruchomiony"); if (minutesCounter < 11) { //jeśli bieżąca druga wartość jest inna niż poprzednia to firstStepper.step(stepsPerRevolution); // włącz stepper 200 kroków/1 min obrotówLicznik++; Serial.print("Licznik minut to "); Serial.println(Licznik minut); }

if (11 <= licznik minut && licznik minut < 21) { //jeśli bieżąca druga wartość jest inna niż poprzednia to secondStepper.step(stepsPerRevolution); // włącz stepper 200 kroków/1 min obrotówLicznik++; Serial.print("Licznik minut to "); Serial.println(Licznik minut); }

if (21 <= licznik minut && licznik minut < 31) { //jeśli bieżąca druga wartość jest inna niż poprzednia, to thirdStepper.step(stepsPerRevolution); // włącz stepper 200 kroków/1 min obrotówLicznik++; Serial.print("Licznik minut to "); Serial.println(Licznik minut); }

if (31 <= minutesCounter && minutesCounter < 1031) { //jeśli aktualna druga wartość jest inna niż poprzednia, to firstStepperBack.step(-1); // cofnij krok do tyłu o 1 krok w kolejności, aby wyglądało na to, że wszystkie działają jednocześnie secondStepperBack.step(-1); trzeciStepperBack.step(-1); minutyLicznik++; Serial.print("Licznik minut to "); Serial.println(Licznik minut); } } else { Serial.println("Zegar Pomodoro jest wyłączony"); } // zapisz odczyt. Następnym razem w pętli, // będzie to lastButtonState: lastButtonState = czytanie; }

Krok 3: Krok 3: Zawieraj steppery i Arduino, jeśli chcesz

Krok 3: Zawieraj steppery i Arduino, jeśli chcesz
Krok 3: Zawieraj steppery i Arduino, jeśli chcesz
Krok 3: Zawieraj steppery i Arduino, jeśli chcesz
Krok 3: Zawieraj steppery i Arduino, jeśli chcesz
Krok 3: Zawieraj steppery i Arduino, jeśli chcesz
Krok 3: Zawieraj steppery i Arduino, jeśli chcesz

Zdecydowałem się stworzyć formę równoległoboczną dla mojego zegara. Ta forma i wybór materiałów czerwonego dębu zostały zainspirowane nowoczesnymi meblami z połowy wieku. Jedną z części, z którą miałem najwięcej trudności, było umieszczenie w stepperach tarczy przez ich iluminatory, aby były widoczne.

Zalecana: