İçindekiler:

Step Pomodoro Zamanlayıcı: 3 Adım (Resimlerle)
Step Pomodoro Zamanlayıcı: 3 Adım (Resimlerle)

Video: Step Pomodoro Zamanlayıcı: 3 Adım (Resimlerle)

Video: Step Pomodoro Zamanlayıcı: 3 Adım (Resimlerle)
Video: Ders Çalışmanı Sağlayacak 3 Saatlik Motivasyon Videosu - Ders Çalışamıyorsan İzle 2024, Temmuz
Anonim
Image
Image
Adım 1: Konteyner Dışındaki Devreyi Lehimleme ve Bağlama
Adım 1: Konteyner Dışındaki Devreyi Lehimleme ve Bağlama

Stepper Pomodoro, her çalışma dönemini 30 dakikalık bölümlere ayırarak kişinin günlük görev listesini yönetmesine yardımcı olan bir masa sayacıdır. Ancak normal bir Pomodoro zamanlayıcısının aksine kalan süreyi göstererek sizi endişelendirmiyor. Bunun yerine, yaklaşık olarak üç kadrandan hangisinin tıklandığını gösterir. Tam zamanı göstermeyerek, kalan zamanınızı sürekli kontrol etmek yerine gerçekten eldeki göreve odaklanmanızı sağlar. Bu Pomodoro, görev yönetiminde hafif ve göze batmayan bir yapıya ihtiyaç duyanlar için mükemmeldir.

Aletler

• Havya

• Tel sıyırıcılar

• Lazer kesici (veya zamanlayıcının kadranlarını nasıl oluşturmak istediğinize bağlı olarak zımpara)

• Matkap (kadranlar için yeterince büyük delikler açmak için bir matkap presi kullandım)

Malzemeler

• 1 Arduino Uno

• 1 yarım boy breadboard

• 3 H köprüler (DRV8833 kullandım, bir motor kalkanı wold bana biraz zaman ve baş ağrısı kazandırdı)

• 3 Step motor (NEMA 17 step kullandım)

• 1 Düğme

• 1 220-1K ohm direnç (aralık içindeki herhangi biri iyidir)

• AC/DC adaptörü (12V kullandım, muhtemelen bu miktardaki stepper için çok büyük)

• Güç ayırıcı

• USB A-B kablosu

• Breadboard kabloları

• Lehim

• Zamanlayıcı kabı için malzemeler

• Kadranlar için akrilik

• Zamanlayıcının sabit kolu olarak işlev görecek çiviler veya metal pimler

Adım 1: Adım 1: Konteyner Dışındaki Devreyi Lehimleme ve Bağlama

Bu adım için tüm H köprülerimi lehimleyerek başladım (motor kalkanını satın alırsanız bunları lehimlemeniz gerekmez. Her adım için bir H köprüsünüz olduğunda, adımlarınızın nasıl kablolandığını kontrol edebilirsiniz.

NEMA 17'ler bipolar step motorlar olarak bilinirler, yani motor içinde, motorun hassas hareketine izin vermek için polariteyi değiştiren iki (bir yerine) bobin grubuna sahiptirler. Bipolar stepperlerin normalde dört kablosu vardır ve Polar stepperlerin normalde altı kablosu vardır, bu çevrimiçi talimatları biraz karmaşıklaştırdı. Ancak iki kabloya bir multimetre bağlayabilir ve bağlı olup olmadıklarını görebilirsiniz. NEMA 17 stepperlerin kablo sırası KIRMIZI, SARI, GRİ, YEŞİL renk sırasına sahiptir, kırmızı ve gri ilk kutup çifti ve sarı ve yeşil ikinci kutup çiftidir. Herhangi bir noktada step, beklenen hareketi tamamlamak yerine seğirmeye başlarsa, kablolarınızın bir şekilde ikizlerine doğru polarize olmaması veya birinin bağlantısının kesilmesi ihtimali vardır. Her adım, DRV8833 H köprülerine bağlanan dört çıkış pimi aracılığıyla kontrol edilir. DRV8833'e giriş için kablolama sırası: IN1, IN2, Power, Ground, IN3, IN4. Çıkış amaçları için NEMA, altı pimin orta dördüne şu sırayla bağlanır: KIRMIZI, GRİ, SARI, YEŞİL. Şimdi gücü bağlayalım. NEMA'larım 2-13 arasındaki dijital bağlantı noktalarında var.

Buna güç sağlamak için hem Arduino'ya hem de tüm steplere güç sağlayabilmek için ayırıcılı bir 12V AC/DC adaptör satın aldım. UYARI: Bağlantı noktasından zaten güç alan Arduino'dan gelen güç ve topraklama kablolarınızı AC/DC'den doğrudan güç alan devre tahtasına bağlamayın. Tahtanızı kızartacak. Duvara takılan 12V adaptörden ayırıcının bir kısmı doğrudan Arduino'nun portuna, diğeri ise breadboard'un pozitif ve negatifine gitti.

Son olarak, düğmeyi bağlamanın zamanı geldi. Düğmenin bir tarafı hem güce (direncimiz eklenmiş olarak) hem de lehimlenmiş çıkış pimine ihtiyaç duyacaktır (bu, devre tahtasından da yapılabilir). Diğer pin bizim topraklamamız olacak. Bu üç kablo şuna takılmalıdır: 5V'a dirençli güç, A0'a çıkış ve hepsini Arduino Uno kartının kendisinde topraklamak için topraklayın.

Buradan, burada bulunan bu temel step test kodunu kullanarak stepperleri kontrol etmeyi deneyebilmeliyiz. Arduino.cc'deki bu açıklama, ihtiyacınız varsa, bi/unipolar stepperlerin daha kapsamlı bir açıklamasını da yapar. Şimdi Pomodoro'nun koduna girelim!

Adım 2: Adım 2: Kodu Yükleme ve İhtiyaçlarınıza Göre Ayarlama

2. Adım: Kodu Yükleme ve İhtiyaçlarınıza Göre Ayarlama
2. Adım: Kodu Yükleme ve İhtiyaçlarınıza Göre Ayarlama

Pomodoro'mun düğmeli kodu aşağıdadır, kurulumunuza göre özelleştirmek için aşağıdaki adımları izleyin:

1. Kişisel stepper tipinizin devir başına kaç adıma sahip olduğunu ayarlayın (NEMA 17'lerde 200 vardır ve stepPerRevolution adı verilen sabit tamsayıda listelenir).

2. Sabit tamsayılı arayan buttonPin'de düğmenizin nereye giriş yapacağını ayarlayın.

3. Adımlayıcılara komut vermek için arduino'nuzun nereden çıktı alması gerektiğini ayarlayın (bu parçalar, kullandıkları farklı kitaplıklara sahip olduklarından, bu parçalar en çok H köprü türleri arasında değişebilir).

4. Adım hızını.setSpeed'de RPM olarak ayarlayın (benimki saat yönünde dönerken 1 rpm ve saat yönünün tersine dönerken 30 rpm olarak ayarladım).

5. Adım adımlarınızın her birinin hareket etmeden önce kaç kez dönmesini istediğinizi ayarlayın (stepper'larım on dakika sayıyor, bu nedenle 1 RPM'de on kez dönüyorlar).

6 Ne kadar süre geriye dönmesini istediğinizi ayarlayın.

#Dahil etmek

const int stepPerRevolution = 200; // step motorlarımın her tam devrinde kaç adım olduğuna dair sabit ayar

const int buttonPin = A0; // buton girişimin sabitini ayarlama

Step ilkStepper(stepsPerRevolution, 2, 3, 4, 5); // belirli pinlerde step kütüphanesini başlat

Adım saniyeStepper(stepsPerRevolution, 6, 7, 8, 9); Step üçüncüStepper(stepsPerRevolution, 10, 11, 12, 13); Stepper ilkStepperBack(stepsPerRevolution, 2, 3, 4, 5); // bu pinler üzerindeki step kütüphanesini yeniden başlatarak rpm'yi sıfırlayabilir ve bu sürenin dolduğunu bildirdiğinde Stepper secondStepperBack(stepsPerRevolution, 6, 7, 8, 9); Stepper üçüncüStepperBack(stepsPerRevolution, 10, 11, 12, 13);

int dakikaSayaç = 0; // int steplerin tam devirlerini sayma

int timerState = DÜŞÜK; // pomodoro zamanlayıcının mevcut durumu (HIGH = on, LOW = off/reset) int buttonState; // giriş pininden geçerli okuma int lastButtonState = HIGH; // giriş pininden önceki okuma

// aşağıdaki değişkenler işaretsiz uzunlardır çünkü süre, milisaniye cinsinden ölçülür, // hızla bir int'de depolanabilecek olandan daha büyük bir sayı olacak. imzasız uzun lastDebounceTime = 0; // çıkış pininin en son değiştirildiği zaman unsigned long debounceDelay = 50; // geri dönme zamanı; çıkış titriyorsa artırın

geçersiz kurulum() {

pinMode(buttonPin, INPUT_PULLUP); // buton sabitini girdi olarak ayarla

firstStepper.setSpeed(1); // her adımda 10 dakika saymak için hızı 1 rpm'ye ayarlayınStepper.setSpeed(1); üçüncüStepper.setSpeed(1); firstStepperBack.setSpeed(30); // Pomodoro'nun ikinciStepperBack.setSpeed(30) işlemini tamamladıktan sonra sürenin dolduğunu bildirmek için hızı 30 rpm'ye ayarlayın; üçüncüStepperBack.setSpeed(30);

Seri.başla(9600); // seri monitörü 9600 baud hızıyla başlat

}

boşluk döngüsü () {

// anahtarın durumunu yerel bir değişkene oku: int read = digitalRead(buttonPin);

// düğmeye basıp basmadığınızı kontrol edin

// (yani giriş DÜŞÜK'ten YÜKSEK'e gitti) ve son basıştan beri herhangi bir gürültüyü yok saymak için // yeterince beklediniz:

// Gürültü veya basma nedeniyle anahtar değiştiyse:

if (okuma != lastButtonState) { // geri dönme zamanlayıcısını sıfırlayın lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // okuma değeri ne olursa olsun, geri dönme gecikmesinden // daha uzun süredir oradadır, bu yüzden onu gerçek mevcut durum olarak alın:

// düğme durumu değiştiyse:

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

// sadece yeni düğme durumu basıldığını gösteriyorsa zamanlayıcı aktivasyonunu değiştir

// açmak için bir kez basın, kapatmak için tekrar basın if (buttonState == LOW) { timerState = !timerState; Serial.print("Zamanlayıcı Durumu "); Serial.println(timerState); } } }

if (timerState == YÜKSEK) {

Serial.println("Pomodoro zamanlayıcı başladı"); if (dakikaSayacı < 11) { //eğer mevcut ikinci değer önceki değerden farklıysa firstStepper.step(stepsPerRevolution); // stepi çevir 200 adım/1 devir dakikaSayaç++; Serial.print("dakikaSayacı"); Serial.println(dakikaSayaç); }

if (11 <= dakikaSayacı && DakikaSayacı < 21) { //geçerli ikinci değer önceki değerden farklıysa ikinciStepper.step(stepsPerRevolution); // stepi çevir 200 adım/1 devir dakikaSayaç++; Serial.print("dakikaSayacı"); Serial.println(dakikaSayaç); }

if (21 <= dakikaSayacı && DakikaSayacı < 31) { //geçerli ikinci değer önceki değerden farklıysa üçüncüStepper.step(stepsPerRevolution); // stepi çevir 200 adım/1 devir dakikaSayaç++; Serial.print("dakikaSayacı"); Serial.println(dakikaSayaç); }

if (31 <= dakikaSayaç && dakikaSayaç < 1031) { //geçerli ikinci değer önceki değerden farklıysa o zaman firstStepperBack.step(-1); // stepper'ı sırayla 1 adım geri çevirerek hepsi aynı anda çalışıyor gibi görünecek saniyeStepperBack.step(-1); üçüncüStepperBack.step(-1); dakikaSayaç++; Serial.print("dakikaSayacı"); Serial.println(dakikaSayaç); } } else { Serial.println("Pomodoro zamanlayıcı kapalı"); } // okumayı kaydet. Döngü boyunca bir sonraki sefer // bu lastButtonState olacaktır: lastButtonState = okuma; }

Adım 3: Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın

Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın
Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın
Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın
Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın
Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın
Adım 3: Dilerseniz Stepper'ları ve Arduino'yu İçeri Alın

Saatim için paralelkenar bir form oluşturmayı seçtim. Kırmızı meşenin bu formu ve malzeme seçimleri, orta çağdaki modern mobilyalardan ilham almıştır. En çok zorlandığım kısımlardan biri de kadranlı stepperleri lombozlardan görülebilecek şekilde yerleştirmekti.

Önerilen: