Daftar Isi:

Stepper Pomodoro Timer: 3 Langkah (dengan Gambar)
Stepper Pomodoro Timer: 3 Langkah (dengan Gambar)

Video: Stepper Pomodoro Timer: 3 Langkah (dengan Gambar)

Video: Stepper Pomodoro Timer: 3 Langkah (dengan Gambar)
Video: 3. BELAJAR ELEKTROPNEUMATIK - GERAKAN SEKUENSIONAL 2024, Juli
Anonim
Image
Image
Langkah 1: Menyolder dan Menghubungkan Sirkuit Di Luar Wadah
Langkah 1: Menyolder dan Menghubungkan Sirkuit Di Luar Wadah

Stepper Pomodoro adalah pengatur waktu meja untuk membantu seseorang mengelola daftar tugas harian mereka dengan membagi setiap periode kerja menjadi segmen 30 menit. Namun, tidak seperti timer Pomodoro biasa, timer ini tidak membuat Anda cemas dengan menunjukkan jumlah waktu yang tersisa. Sebagai gantinya, ini menampilkan waktu kira-kira melalui mana dari tiga tombol yang berdetak. Dengan tidak menunjukkan waktu yang tepat, ini memungkinkan Anda untuk benar-benar fokus pada tugas yang ada, alih-alih terus-menerus memeriksa waktu Anda yang tersisa. Pomodoro ini sangat cocok untuk mereka yang membutuhkan struktur ringan dan tidak mencolok untuk manajemen tugas mereka.

Peralatan

• Besi solder

• Penari telanjang kawat

• Pemotong laser (atau sander tergantung pada bagaimana Anda ingin membuat tombol pengatur waktu)

• Bor (saya menggunakan bor tekan untuk membuat lubang yang cukup besar untuk dial)

Bahan:

• 1 Arduino Uno

• 1 papan tempat memotong roti ukuran setengah

• 3 H bridge (saya menggunakan DRV8833, pelindung motor akan menghemat waktu dan sakit kepala saya)

• 3 motor stepper (saya menggunakan stepper NEMA 17)

• 1 Tombol

• 1 resistor 220-1K ohm (apa pun yang berada dalam jangkauan bagus)

• Adaptor AC/DC (saya menggunakan 12V, mungkin terlalu besar untuk jumlah stepper ini)

• Pembagi daya

• Kabel USB A-B

• Kabel papan tempat memotong roti

• Solder

• Bahan untuk wadah pengatur waktu

• Akrilik untuk dial

• Paku atau pin logam untuk bertindak sebagai lengan pengatur waktu stasioner

Langkah 1: Langkah 1: Menyolder dan Menghubungkan Sirkuit Di Luar Wadah

Untuk langkah ini saya mulai dengan menyolder bersama semua jembatan H saya (jika Anda membeli pelindung motor, Anda tidak perlu menyoldernya. Setelah Anda memiliki jembatan H untuk setiap stepper, Anda dapat memeriksa bagaimana kabel stepper Anda.

NEMA 17 adalah apa yang dikenal sebagai motor stepper bipolar, yang berarti bahwa mereka memiliki dua (bukan satu) set kumparan di dalam motor yang mengubah polaritas untuk memungkinkan pergerakan motor yang tepat. Stepper bipolar biasanya memiliki empat kabel dan stepper Polar biasanya memiliki enam kabel, ini sedikit memperumit instruksi online. Namun Anda dapat memasang multimeter ke dua kabel dan melihat apakah keduanya terhubung atau tidak. Stepper NEMA 17 memiliki urutan kabel dalam urutan warna MERAH, KUNING, ABU-ABU, HIJAU, dengan merah dan abu-abu menjadi pasangan kutub pertama dan kuning dan hijau menjadi pasangan kutub kedua. Jika pada suatu saat stepper mulai berkedut alih-alih menyelesaikan gerakan yang diharapkan, kemungkinan besar kabel Anda entah bagaimana tidak terpolarisasi dengan benar ke kembarannya atau salah satunya terputus. Setiap stepper dikendalikan melalui empat pin keluaran yang terhubung ke jembatan DRV8833 H. Urutan pengkabelan untuk input ke DRV8833 adalah: IN1, IN2, Power, Ground, IN3, IN4. Untuk tujuan keluaran, NEMA hanya menghubungkan ke empat tengah dari enam pin dengan urutan: MERAH, GREY, KUNING, HIJAU. Sekarang mari kita sambungkan daya. Saya memiliki NEMA di port digital 2–13.

Untuk menyalakan ini, saya membeli adaptor AC/DC 12V dengan splitter untuk dapat memberi daya pada Arduino, dan semua stepper. PERINGATAN: Jangan hubungkan kabel daya dan arde Anda dari Arduino yang sudah menerima daya dari port ke papan tempat memotong roti yang menerima daya langsung dari AC/DC. Ini akan menggoreng papan Anda. Dari adaptor 12V yang dicolokkan ke dinding, satu bagian splitter langsung menuju port Arduino dan yang lainnya ke positif dan negatif papan roti.

Terakhir, saatnya untuk menghubungkan tombol. Satu sisi tombol akan membutuhkan daya (dengan resistor kami disambungkan) serta pin output yang disolder (ini juga dapat dilakukan dari papan tempat memotong roti). Pin lainnya akan menjadi tanah kita. Ketiga kabel ini harus dicolokkan ke: Daya dengan resistor ke 5V, output ke A0, dan ground ke ground semua di papan Arduino Uno itu sendiri.

Dari sini kita harus dapat mencoba mengontrol stepper menggunakan kode tes stepper dasar yang ditemukan di sini. Penjelasan di Arduino.cc ini juga melakukan penjelasan yang lebih menyeluruh tentang stepper bi/unipolar jika Anda membutuhkannya. Selanjutnya mari kita masuk ke kode untuk Pomodoro!

Langkah 2: Langkah 2: Mengunggah Kode dan Menyesuaikannya dengan Kebutuhan Anda

Langkah 2: Mengunggah Kode dan Menyesuaikannya dengan Kebutuhan Anda
Langkah 2: Mengunggah Kode dan Menyesuaikannya dengan Kebutuhan Anda

Di bawah ini adalah kode untuk Pomodoro saya dengan tombol, untuk menyesuaikannya dengan pengaturan Anda, ikuti langkah-langkah ini:

1. Tetapkan berapa banyak langkah per revolusi yang dimiliki tipe stepper pribadi Anda (NEMA 17 memiliki 200 dan terdaftar dalam bilangan bulat konstan yang disebut stepsPerRevolution).

2. Setel di mana tombol Anda dimasukkan ke dalam pin tombol pemanggil bilangan bulat konstan.

3. Tetapkan dari mana Arduino Anda harus mengeluarkan untuk memerintahkan stepper (bagian-bagian ini mungkin paling bervariasi antara tipe jembatan H karena banyak yang memiliki perpustakaan berbeda yang mereka gunakan).

4. Setel kecepatan stepper dalam RPM di.setSpeed (saya mengatur kecepatan saya untuk 1 rpm saat memutar searah jarum jam dan 30 rpm saat memutar berlawanan arah jarum jam).

5. Atur berapa kali Anda ingin setiap stepper Anda berputar sebelum bergerak (stepper saya menghitung sepuluh menit, jadi mereka berputar sepuluh kali pada 1 RPM).

6 Atur berapa lama Anda ingin memutar ke belakang.

#termasuk

const int langkahPerRevolusi = 200; // menetapkan konstanta berapa banyak langkah dalam setiap putaran penuh motor stepper saya

const int buttonPin = A0; // menyetel konstanta input tombol saya

Stepper firstStepper(langkahPerRevolution, 2, 3, 4, 5); // inisialisasi perpustakaan stepper pada pin tertentu

Stepper secondStepper(langkahPerRevolution, 6, 7, 8, 9); Stepper thirdStepper(stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // menginisialisasi ulang perpustakaan stepper pada pin ini untuk dapat mengatur ulang rpm ketika mengingatkan bahwa waktu telah kedaluwarsa Stepper secondStepperBack(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack(stepsPerRevolution, 10, 11, 12, 13);

int menitPenghitung = 0; // int menghitung putaran penuh stepper

int timerState = RENDAH; // status timer pomodoro saat ini (HIGH = on, LOW = off/reset) int buttonState; // pembacaan saat ini dari pin input int lastButtonState = HIGH; // pembacaan sebelumnya dari pin input

// variabel-variabel berikut adalah unsigned long karena waktu, diukur dalam milidetik, // akan dengan cepat menjadi angka yang lebih besar daripada yang dapat disimpan dalam int. unsigned long lastDebounceTime = 0; // terakhir kali pin output di-toggle unsigned long debounceDelay = 50; // waktu debounce; meningkat jika output berkedip

batalkan pengaturan() {

pinMode(tombolPin, INPUT_PULLUP); // atur konstanta tombol sebagai input

firstStepper.setSpeed(1); // atur kecepatan pada 1 rpm untuk menghitung 10 menit per detik stepper.setSpeed(1); thirdStepper.setSpeed(1); firstStepperBack.setSpeed(30); // atur kecepatan pada 30 rpm untuk memberi tahu bahwa waktu telah berakhir setelah Pomodoro menyelesaikan secondStepperBack.setSpeed(30); thirdStepperBack.setSpeed(30);

Serial.begin(9600); // mulai monitor serial dengan baud rate 9600

}

lingkaran kosong() {

// membaca status switch ke variabel lokal: int reading = digitalRead(buttonPin);

// periksa untuk melihat apakah Anda baru saja menekan tombol

// (yaitu input berubah dari LOW ke HIGH), dan Anda telah menunggu // cukup lama sejak penekanan terakhir untuk mengabaikan noise apa pun:

// Jika sakelar berubah, karena kebisingan atau penekanan:

if (membaca != lastButtonState) { // reset timer debouncing lastDebounceTime = milis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // apa pun pembacaannya, sudah ada lebih lama // daripada penundaan debounce, jadi anggap itu sebagai keadaan aktual saat ini:

// jika status tombol telah berubah:

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

// hanya mengaktifkan pengaktifan timer jika status tombol baru menunjukkan telah ditekan

// tekan sekali untuk menyalakan, tekan lagi untuk mematikan if (buttonState == LOW) { timerState = !timerState; Serial.print("Kondisi Timer adalah "); Serial.println(timerState); } } }

if (timerState == TINGGI) {

Serial.println("Pewaktu Pomodoro telah dimulai"); if (minutesCounter < 11) { //jika nilai kedua saat ini berbeda dari nilai sebelumnya maka firstStepper.step(stepsPerRevolution); // putar stepper 200 langkah/1 putaran menitCounter++; Serial.print("Penghitung menit adalah "); Serial.println(Penghitung menit); }

if (11 <= minutesCounter && minutesCounter < 21) { //jika nilai detik saat ini berbeda dari nilai sebelumnya maka secondStepper.step(stepsPerRevolution); // putar stepper 200 langkah/1 putaran menitCounter++; Serial.print("Penghitung menit adalah "); Serial.println(Penghitung menit); }

if (21 <= minutesCounter && minutesCounter < 31) { //jika nilai kedua saat ini berbeda dari nilai sebelumnya maka thirdStepper.step(stepsPerRevolution); // putar stepper 200 langkah/1 putaran menitCounter++; Serial.print("Penghitung menit adalah "); Serial.println(Penghitung menit); }

if (31 <= minutesCounter && minutesCounter < 1031) { //jika nilai kedua saat ini berbeda dari nilai sebelumnya maka firstStepperBack.step(-1); // putar stepper mundur 1 langkah secara berurutan agar terlihat seperti semua berjalan bersamaan secondStepperBack.step(-1); thirdStepperBack.step(-1); menitPenghitung++; Serial.print("Penghitung menit adalah "); Serial.println(Penghitung menit); } } else { Serial.println("Pewaktu Pomodoro mati"); } // simpan bacaan. Lain kali melalui loop, // itu akan menjadi lastButtonState: lastButtonState = reading; }

Langkah 3: Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin

Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin
Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin
Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin
Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin
Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin
Langkah 3: Berisi Steppers dan Arduino Jika Anda Ingin

Saya memilih untuk membuat bentuk jajaran genjang untuk jam saya. Bentuk dan pilihan material kayu ek merah ini terinspirasi dari furnitur modern abad pertengahan. Satu bagian yang paling sulit bagi saya adalah memasang stepper dengan dial melalui lubang intipnya agar dapat dilihat.

Direkomendasikan: