Përmbajtje:

Kohëmatësi Stepper Pomodoro: 3 hapa (me fotografi)
Kohëmatësi Stepper Pomodoro: 3 hapa (me fotografi)

Video: Kohëmatësi Stepper Pomodoro: 3 hapa (me fotografi)

Video: Kohëmatësi Stepper Pomodoro: 3 hapa (me fotografi)
Video: useMemoized ?? | hooks, caching in app, high performance | amplifyabhi 2024, Korrik
Anonim
Image
Image
Hapi 1: Saldimi dhe lidhja e qarkut jashtë kontejnerit
Hapi 1: Saldimi dhe lidhja e qarkut jashtë kontejnerit

Stepper Pomodoro është një kohëmatës tavoline për të ndihmuar në menaxhimin e listës së detyrave të tyre të përditshme duke e ndarë secilën periudhë të punës në segmente 30 minutëshe. Sidoqoftë, ndryshe nga një kohëmatës normal Pomodoro, nuk ju shqetëson duke treguar sasinë e kohës së mbetur. Në vend të kësaj, ajo tregon kohën përafërsisht përmes cilës nga të tre dials është tik -tak. Duke mos treguar kohën e saktë ju lejon të përqendroheni në të vërtetë në detyrën në fjalë, në vend që të kontrolloni vazhdimisht kohën tuaj të mbetur. Ky Pomodoro është i përsosur për ata që kanë nevojë për një strukturë të lehtë dhe modeste në menaxhimin e detyrave të tyre.

Mjetet

• Makine per ngjitjen e metalit

• Zhveshëset me tela

• Prerës me lazer (ose sander në varësi të mënyrës se si dëshironi të krijoni numrat e kohëmatësit)

• Stërvitje (kam përdorur një stërvitje për të shpuar vrima mjaft të mëdha për numrat)

Materiale

• 1 Arduino Uno

• 1 pjatë buke me madhësi gjysmë

• Ura 3 H (kam përdorur DRV8833, një mburojë motorike më ka kursyer pak kohë dhe dhimbje koke)

• 3 motorë Stepper (kam përdorur stepat NEMA 17)

• 1 Buton

• 1 rezistencë 220-1K ohm (çdo brenda rrezes është e mirë)

• Përshtatës AC/DC (kam përdorur një 12V, ndoshta shumë i madh për këtë sasi stepash)

• Ndarës i energjisë

• Teli USB A-B

• Telat e pllakave të bukës

• Saldator

• Materialet për enën e kohëmatësit

• Akrilik për dials

• Thonjtë ose kunjat metalikë për të vepruar si krah i palëvizshëm i kohëmatësit

Hapi 1: Hapi 1: Saldimi dhe lidhja e qarkut jashtë kontejnerit

Për këtë hap unë fillova duke bashkuar të gjitha urat e mia H (nëse blini mburojën motorike nuk duhet të lidhni këto. Pasi të keni një urë H për secilin hap, mund të kontrolloni se si janë lidhur telat tuaj.

NEMA 17 janë ata që njihen si motorë stepper bipolarë, që do të thotë se ata kanë dy (dhe jo një) mbështjellje brenda motorit të cilat ndryshojnë polaritetin për të lejuar lëvizjen e saktë të motorit. Hapat bipolar normalisht kanë katër tela dhe stepat Polar normalisht kanë gjashtë, kjo i komplikoi udhëzimet në internet pak. Sidoqoftë, mund të lidhni një metër shumëfish në dy tela dhe të shihni nëse ato janë të lidhura ose nëse nuk janë. Nxjerrësit NEMA 17 kanë rendin e tyre të telit në rendin e ngjyrave të KUQ, të Verdhë, GRI, GREEN, ku e kuqja dhe grija janë çifti i parë polar dhe e verdha dhe jeshilja çifti i dytë polar. Nëse në çdo moment hapi fillon të dridhet në vend që të përfundojë lëvizjen e pritshme, shanset janë që telat tuaj në një farë mënyre nuk janë polarizuar saktë me binjakun e tyre ose një është shkëputur. Çdo hap kontrollohet nëpërmjet katër kunjave dalës të cilët lidhen me urat DRV8833 H. Rendi i instalimeve elektrike për hyrjen në DRV8833 është: IN1, IN2, Power, Ground, IN3, IN4. Për qëllime dalëse, NEMA thjesht lidhet me katër të mesmet nga gjashtë kunjat në rendin e: E KUQ, GRI, E VERT,, E GJELLE. Tani le të lidhim energjinë. Unë kam NEMA -të e mia në portet dixhitale 2-13.

Për ta fuqizuar këtë kam blerë një përshtatës 12V AC/DC me ndarës për të qenë në gjendje të fuqizojë si Arduino, ashtu edhe të gjithë stepat. KUJDES: Mos i lidhni telat e rrymës dhe të tokëzimit nga Arduino që tashmë marrin energji nga porti në panelin e bukës që merr energji të drejtpërdrejtë nga AC/DC. Do të skuqet dërrasa juaj. Nga përshtatësi 12V i lidhur në mur, një pjesë e ndarësit shkoi direkt në portin e Arduino dhe tjetra në pozitive dhe negative të tabelës së bukës.

Së fundmi, është koha për të lidhur butonin. Njëra anë e butonit do të ketë nevojë për energji (me rezistencën tonë të bashkuar), si dhe kunjin e daljes të bashkuar (kjo mund të bëhet edhe nga pllaka e bukës). Kunja tjetër do të jetë toka jonë. Këto tre tela duhet të lidhen me: Fuqinë me rezistencë në 5V, daljen në A0 dhe tokëzimin në tokë të gjitha në vetë bordin Arduino Uno.

Nga këtu ne duhet të jemi në gjendje të përpiqemi të kontrollojmë hapat duke përdorur këtë kod bazë të testit të hapave që gjendet këtu. Ky shpjegim në Arduino.cc gjithashtu bën një shpjegim më të plotë të stepave bi/polare nëse keni nevojë për të. Tjetra le të hyjmë në kodin për Pomodoro!

Hapi 2: Hapi 2: Ngarkimi i kodit dhe përshtatja e tij sipas nevojave tuaja

Hapi 2: Ngarkimi i Kodit dhe Përshtatja e tij sipas nevojave tuaja
Hapi 2: Ngarkimi i Kodit dhe Përshtatja e tij sipas nevojave tuaja

Më poshtë është kodi për butonin tim Pomodoro, në mënyrë që ta personalizoni sipas konfigurimit tuaj, ndiqni këto hapa:

1. Vendosni sa hapa për revolucion ka lloji juaj i hapave personal (NEMA 17 kanë 200 dhe është i shënuar në numrin e plotë konstant të quajtur stepsPerRevolution).

2. Vendosni se ku po futet butoni juaj në butonin e thirrësit të numrit të plotë konstant.

3. Vendosni se nga duhet të dalë arduino juaj për të komanduar hapat (këto pjesë mund të ndryshojnë më shumë midis llojeve të urës H, pasi shumë prej tyre kanë biblioteka të ndryshme që përdorin).

4. Vendosni shpejtësinë e hapit në RPM në.setSpeed (e kam vendosur timen për 1 rpm kur ktheni në drejtim të akrepave të orës dhe 30 rpm kur ktheheni në drejtim të kundërt).

5. Vendosni sa herë dëshironi që secila nga njerkat tuaja të kthehet para se të vazhdojë (njerkat e mia numërojnë dhjetë minuta, kështu që ato rrotullohen dhjetë herë me 1 RPM).

6 Vendosni sa kohë dëshironi që ajo të rrotullohet prapa.

#përfshi

const int hapaPerRevolution = 200; // vendosja e konstantes se sa hapa janë në çdo revolucion të plotë të motorëve të mi stepper

const int buttonPin = A0; // vendosja e konstantes së hyrjes së butonit tim

Stepper firstStepper (hapaPerRevolution, 2, 3, 4, 5); // inicializoni bibliotekën stepper në disa kunja

Stepper secondStepper (hapaPerRevolution, 6, 7, 8, 9); Hapi i tretë Hapi (hapatPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (hapatPerRevolution, 2, 3, 4, 5); // riinitalizoni bibliotekën stepper në këto kunja për të qenë në gjendje të rivendosni rpm për kur paralajmëroni se koha ka skaduar Stepper secondStepperBack (hapatPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (hapatPerRevolution, 10, 11, 12, 13);

int minutaCounter = 0; // int duke numëruar revolucionet e plota të stepave

int timerState = LOW; // gjendja aktuale e kohëmatësit pomodoro (HIGH = on, LOW = off/reset) butoni intState; // leximi aktual nga kunja hyrëse int lastButtonState = HIGH; // leximi i mëparshëm nga kunja hyrëse

// variablat e mëposhtëm janë të gjata pa shenjë sepse koha, e matur në milisekonda, // shpejt do të bëhet një numër më i madh sesa mund të ruhet në një int. pa shenjë e gjatë lastDebounceTime = 0; // hera e fundit që kunja e daljes ishte e ndryshuar pa nënshkrim debounceDelay = 50; // koha e zbardhjes; rritet nëse prodhimi dridhet

void setup () {

pinMode (buttonPin, INPUT_PULLUP); // vendosni konstanten e butonit si hyrje

firstStepper.setSpeed (1); // vendosni shpejtësinë në 1 rpm për numërimin 10 minuta për stepper secondStepper.setSpeed (1); tretëStepper.setSpeed (1); firstStepperBack.setSpeed (30); // vendosni shpejtësinë në 30 rpm për të paralajmëruar se koha ka skaduar pasi Pomodoro ka përfunduar secondStepperBack.setSpeed (30); tretëStepperBack.setSpeed (30);

Serial.filloj (9600); // filloni monitorin serik me një normë baud 9600

}

lak void () {

// lexoni gjendjen e kalimit në një ndryshore lokale: int leximi = digitalRead (buttonPin);

// kontrolloni për të parë nëse sapo keni shtypur butonin

// (dmth. hyrja shkoi nga LOW në HIGH), dhe ju keni pritur // mjaft kohë që nga shtypja e fundit për të injoruar çdo zhurmë:

// Nëse ndërruesi ndryshoi, për shkak të zhurmës ose shtypjes:

nëse (leximi! = lastButtonState) {// rivendosni kohëmatësin e debunimit lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// çfarëdo që të jetë leximi, ka qenë atje për më gjatë // sesa vonesa e debuncimit, prandaj merreni si gjendjen aktuale aktuale:

// nëse gjendja e butonit ka ndryshuar:

nëse (leximi! = buttonState) {buttonState = leximi;

// kaloni vetëm aktivizimin e kohëmatësit nëse gjendja e re e butonit tregon se është shtypur

// shtyp një herë për ta ndezur, shtyp përsëri për ta fikur nëse (buttonState == LOW) {timerState =! timerState; Serial.print ("Gjendja e kohëmatësit është"); Serial.println (timerState); }}}

nëse (timerState == LART) {

Serial.println ("Kohëmatësi Pomodoro ka filluar"); if (minutaCounter <11) {// nëse vlera e dytë aktuale është e ndryshme nga vlera e mëparshme atëherë firstStepper.step (stepsPerRevolution); // ktheni hapin 200 hapa/1 rrotull minutaCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutaCounter); }

nëse (11 <= minutaCounter && minutaCounter <21) {// nëse vlera e dytë aktuale është e ndryshme nga vlera e mëparshme atëherë secondStepper.step (stepsPerRevolution); // ktheni hapin 200 hapa/1 rrotull minutaCounter ++; Serial.print ("minutesCounter is"); Serial.println (minuta Counter); }

nëse (21 <= minutaCounter && minutaCounter <31) {// nëse vlera e dytë aktuale është e ndryshme nga vlera e mëparshme atëherë thirdStepper.step (hapatPerRevolution); // ktheni hapin 200 hapa/1 rrotull minutaCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutaCounter); }

nëse (31 <= minutaCounter && minutaCounter <1031) {// nëse vlera e dytë aktuale është e ndryshme nga vlera e mëparshme atëherë firstStepperBack.step (-1); // kthejeni hapin mbrapa 1 hap në sekuencë për t'u dukur sikur të gjithë po punojnë njëkohësisht secondStepperBack.step (-1); tretëStepperBack.step (-1); minutaCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutaCounter); }} else {Serial.println ("Kohëmatësi Pomodoro është i fikur"); } // ruani leximin. Herën tjetër përmes lakut, // do të jetë lastButtonState: lastButtonState = leximi; }

Hapi 3: Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi

Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi
Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi
Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi
Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi
Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi
Hapi 3: Përmbajini Steppers dhe Arduino nëse dëshironi

Zgjodha të krijoja një formë paralelogramike për orën time. Kjo formë dhe zgjedhjet materiale të lisit të kuq u frymëzuan nga mobiljet moderne të shekullit të mesëm. Njëra pjesë me të cilën e kisha më së shumti vështirësi ishte vendosja e njerkëve me numra përmes portave të tyre që duheshin parë.

Recommended: