Daftar Isi:

Arduino Cradle Rocker: 19 Langkah (dengan Gambar)
Arduino Cradle Rocker: 19 Langkah (dengan Gambar)

Video: Arduino Cradle Rocker: 19 Langkah (dengan Gambar)

Video: Arduino Cradle Rocker: 19 Langkah (dengan Gambar)
Video: Tutorial arduino pemula part 3 - Pushbutton 2024, Juli
Anonim
Image
Image

Maaf, saya tidak bisa menahan musik intens yang klise yang disarankan oleh penyuntingan video saya.

Saya baru-baru ini memiliki anak pertama saya dan sudah memiliki buaian kayu yang dibuat oleh paman saya (yang merupakan tukang kayu yang luar biasa) untuk keponakan saya. Keponakan saya sudah lama melampauinya, jadi saya senang menerimanya dan menghindari menghabiskan SEMUA UANG untuk buaian / keranjang apa pun yang ibu blogger buat istri saya pingsan. Cradle adalah desain yang cukup sederhana, pada dasarnya dua uprights dengan baut melalui mereka yang mendukung tubuh cradle. Ada pasak yang bisa dilepas untuk menguncinya di tempatnya.

Dalam beberapa minggu, kami menemukan bahwa kami sering dapat mengatasi kerewelan ringan dengan mengayunkan buaian sedikit sampai anak laki-laki kami tenang. Malam kami menemukan ini, saya menghabiskan beberapa 10 menit peregangan larut malam dengan tangan saya meraih dari bawah selimut, mengantuk mengayunkannya, senang bahwa saya telah menemukan cara untuk menenangkannya tanpa bangun dari tempat tidur sendiri. Berikutnya pagi saya memasang tali dan karabiner kecil sehingga saya bisa mengayunkan buaian tanpa harus merentangkan tangan.

Pagi setelah itu, saya mulai melakukan brainstorming cara untuk membuat robot mengayunkan anak ini untuk saya. Masuk Arduinonya…

Perlengkapan

Oke, ini adalah proyek Arduino pertama saya, jadi saya melakukan beberapa percobaan dan coba-coba, dan saya yakin ada ruang untuk perbaikan dalam desain saya, tapi inilah daftar bagian saya: Arduino Uno ($ 13) untuk mengendalikan semuanya Papan tempat memotong roti kit ($10) untuk menghubungkan kabel

Motor stepper ($14) Ini adalah bagian yang paling menyenangkan, karena ini adalah hal yang melakukan semua pekerjaan. Saya mulai dengan driver torsi yang sedikit lebih rendah, tetapi kemudian mendapatkan yang ini dan bekerja dengan cukup baik. Jangan ragu untuk mendapatkan yang lebih bertenaga. Driver motor stepper ($10-30) Ini berada di antara Arduino dan motor. Yang satu ini tampaknya mampu mengendarai motor lebih tenang daripada yang lain, jadi saya melakukannya karena motor akan berada beberapa meter dari kepala saya (dan anak saya) saat kami sedang tidur. Saya awalnya hanya membeli satu driver TMC2209 seharga ~ $10, tetapi akhirnya membeli paket 4 karena saya mengalami kesulitan pada awalnya dan ingin memastikan saya tidak menggoreng papan di beberapa titik. Saya akhirnya benar-benar membunuh 3 papan, yang membawa saya ke item saya berikutnya… Kapasitor! ($10) Anda benar-benar hanya membutuhkan 1 47 uF 50V kapasitor, jadi kotak 240 ini sangat berlebihan. Catu daya 36V ($17) Saya awalnya membeli catu daya 12V kecil, kemudian menemukan bahwa itu adalah sumber dari semua masalah saya dan mendapatkan satu yang lebih dekat dengan tegangan maksimum yang dapat ditangani oleh motor stepper saya. Jika Anda menggunakan motor atau driver stepper yang berbeda, pastikan bahwa itu dapat menangani tegangan (V) dan bahwa Ampere (A) dari suplai setidaknya setinggi Amp puncak yang ditarik oleh motor. Soket colokan listrik wanita ($8) Inilah yang dicolokkan ke catu daya. Anda harus menyolder ini ke beberapa kabel untuk ditempelkan ke papan tempat memotong roti Anda. Paket besar jumper ($ 9) sehingga saya dapat meletakkan kontrol di mana pun saya inginkan di dalam ruangan.

Tombol ($8) untuk on/off, dll

Sebuah mikrofon amp ($11) Oh, kalian tidak tahu ini suara diaktifkan juga?

Beberapa roda katrol kecil ($ 8) Saya akhirnya menggunakan ini, tetapi mungkin ada alternatif yang lebih baik. Lebih lanjut tentang itu nanti. Anda juga pasti membutuhkan besi solder dan apa pun yang ingin Anda gunakan untuk memasang motor. Saya pribadi baru saja membuat kotak kasar dari 4 potongan kayu yang disekrup, dan kemudian disekrupkan ke potongan kayu lain yang kira-kira selebar kaki dudukan saya. Untuk saat ini saya hanya menjepitnya karena saya tidak tahu apakah saya ingin merusak buaian paman saya.

Langkah 1: Biasakan Diri Anda Dengan Pinout Driver Stepper Anda

Hubungkan Arduino 5V/GND ke Breadboard Anda
Hubungkan Arduino 5V/GND ke Breadboard Anda

Program pemodelan yang saya gunakan tidak memiliki papan driver yang tepat ini, jadi Anda harus merujuk gambar ini. Saya telah mengatur semuanya dalam orientasi yang sama dengan gambar ini.

Langkah 2: Hubungkan Arduino 5V/GND ke Breadboard Anda

Hubungkan kabel dari Arduino 5V ke rel "+" di satu sisi papan tempat memotong roti AndaHubungkan kabel dari salah satu GND Arduino ke rel "-" di sisi yang sama dari papan tempat memotong roti

(abaikan

Langkah 3: Hubungkan +/- Rel ke VIO/GND

Hubungkan +/- Rel ke VIO/GND
Hubungkan +/- Rel ke VIO/GND

Hubungkan kabel dari rel "-" ke GND di kiri bawah papan driver stepper. Hubungkan kabel dari rel "+" ke VIO

Langkah 4: Hubungkan DIR/LANGKAH ke Pin Digital di Arduino

Hubungkan DIR/LANGKAH ke Pin Digital di Arduino
Hubungkan DIR/LANGKAH ke Pin Digital di Arduino

Hubungkan pin DIR dan STEP dari papan driver stepper ke dua pin digital pada Arduino. Saya menggunakan pin 2 & 3, masing-masing, tetapi tidak masalah selama Anda mengatur pin dalam kode Anda nanti.

Langkah 5: Ayo Maju dan Tambahkan Kapasitor Itu…

Ayo Maju dan Tambahkan Kapasitor Itu…
Ayo Maju dan Tambahkan Kapasitor Itu…

Saya membakar 2 papan driver stepper karena saya tidak memiliki kapasitor, jadi mari kita lanjutkan dan tambahkan kapasitor 47uF 50V ke pin VM/GND di papan driver. Pastikan pin "-" pada kapasitor berada pada pin GND pada papan tempat memotong roti (akan ada "-" pada sisi kapasitor yang sesuai)

Langkah 6: Dan Lanjutkan dan Hubungkan GND itu

Dan Lanjutkan dan Hubungkan GND itu
Dan Lanjutkan dan Hubungkan GND itu

Pada GND yang baru saja Anda tambahkan kapasitor, lanjutkan dan sambungkan ke rel "-" yang sama dengan GND lainnya.

Langkah 7: Hubungkan Motor ke Driver

Hubungkan Motor ke Driver
Hubungkan Motor ke Driver

Pin mana yang akan digunakan tergantung pada motor yang Anda beli, tetapi pin yang saya daftarkan memiliki diagram pengkabelan pada daftar amazon.

Untuk motor saya -

Hubungkan Hijau & Hitam ke M2B & M2A

Hubungkan Merah & Biru ke M1A & M1BCatatan: Jika karena alasan apa pun motor Anda tidak memiliki diagram, Anda dapat dengan mudah mengetahui kabel mana yang membentuk rangkaian jika Anda memiliki multimeter. Atur multimeter Anda ke pengaturan amp rendah dan lepaskan motor Anda. Sentuh salah satu kabel multimeter ke salah satu kabel motor, lalu coba masing-masing kabel lainnya dengan kabel lainnya. Jika Anda mendapatkan pembacaan resistansi, maka kedua kabel itu membentuk 1 sirkuit, dan dua lainnya membentuk yang lain.

Langkah 8: Hubungkan EN, MS1, dan MS2 ke "-"

Hubungkan EN, MS1, dan MS2 ke
Hubungkan EN, MS1, dan MS2 ke

Saya tidak sepenuhnya yakin bahwa ini perlu, tetapi saya percaya bahwa ini mengatur motor ke pengaturan microstep yang lebih kecil pada driver TMC2209. Anda dapat menghubungkannya ke rel "-" yang paling dekat dengannya, karena nanti kita akan menghubungkannya ke sisi lain.

Langkah 9: Solder Konektor Daya Wanita ke Dua Kabel

Solder Konektor Daya Wanita ke Dua Kabel
Solder Konektor Daya Wanita ke Dua Kabel

Saya bukan yang terbaik di dunia dalam menyolder, jadi Anda harus mencari di tempat lain untuk itu, tetapi saya melakukannya seperti itu. Saya membengkokkan ujung kabel sehingga menempel rata pada kabel konektor, lalu menyolder kabel ke kabel. Saya tidak punya barang heat shrink kabel jadi saya hanya membungkusnya dengan pita listrik.

Langkah 10: Hubungkan Konektor Wanita Anda yang Baru Disolder

Hubungkan Konektor Wanita Anda yang Baru Disolder
Hubungkan Konektor Wanita Anda yang Baru Disolder

Harap jangan mencolokkan catu daya Anda yang sebenarnya. Kabel merah ke "+", hitam ke "-"

Langkah 11: Hubungkan Mereka ke VM/GND

Hubungkan Mereka ke VM/GND
Hubungkan Mereka ke VM/GND

Hubungkan rel "+" dan "-" itu ke VM dan GND di sebelahnya. Yang dengan kapasitor di atasnya.

Langkah 12: Kagumi Hasil Karya Anda

Kagumi Hasil Karya Anda
Kagumi Hasil Karya Anda

Baiklah, Anda sekarang telah mengatur motor dan driver sepenuhnya! Mulai sekarang kita hanya akan melakukan kontrol. Omong-omong, ke depan:

  • Jika Anda memutuskan driver Anda karena alasan apa pun, jangan coba menghubungkannya saat daya 36V Anda terhubung. Saya mematikan papan driver ke-3 saya seperti itu.
  • Colokkan daya 36V sebelum mencolokkan daya Arduino. Saya pribadi tidak menggoreng Arduino, tetapi di sepanjang jalan saya melihat banyak peringatan tentang ini.

Langkah 13: Opsional - Periksa VREF Anda

TMC2209 memiliki potensiometer yang mengontrol arus ke motor. Jika Anda mendapatkan driver yang sama dengan yang saya miliki, Anda dapat membacanya di sini. Jika Anda ingin menyesuaikan pengaturan:

  • Lepaskan semua daya dan lepaskan kabel motor dari driver.
  • Cabut kabel ke pin EN (enable) pada driver. Ini adalah pin di sudut kiri atas.
  • Colokkan catu daya motor Anda (yang 36V)
  • Menggunakan multimeter yang diatur pada 20V, sentuh satu ujung ke sumber GND (saya menggunakan kabel yang terhubung ke rel "-" saya) dan sentuh ujung lainnya ke pin VREF. Tolong jangan menyentuh timah untuk hal lain, Anda BISA menyingkat pengemudi Anda jika Anda melakukannya.
  • Gunakan obeng kecil untuk menyesuaikan sekrup potensiometer dengan lembut. Untuk papan saya, berlawanan arah jarum jam = lebih banyak daya. VREF saya secara pribadi membaca ~ 0.6V.

Langkah 14: Tombol

Tombol!
Tombol!

Selanjutnya, hubungkan tombol Anda seperti itu. Mereka tidak membutuhkan kekuatan.

  • Hubungkan rel "-" papan tempat memotong roti tombol Anda ke salah satu GND Arduino. Anda juga dapat mengikatnya dari rel "-" papan tempat memotong roti lainnya jika Anda mau.
  • Hubungkan satu pin dari setiap tombol ke rel "-"
  • Hubungkan pin lain dari setiap tombol ke pin digital pada Arduino.

Saya menggunakan 4 tombol: Motor hidup/mati

Motor lanjutkan

Mikrofon aktif

Mikrofon mati

Lebih lanjut tentang ini ketika kita sampai ke kode, tetapi saya menggunakan tombol mikrofon yang berbeda hanya karena saya tidak memiliki LED untuk memberi tahu saya apakah mikrofon itu hidup atau mati, jadi memiliki tombol on/off yang berbeda membuatnya sangat mudah.

Langkah 15: Tambahkan Papan Mikrofon

Tambahkan Papan Mikrofon
Tambahkan Papan Mikrofon

Yang ini sederhana, dan Adafruit memiliki instruksi yang bagus (dan dasar-dasar menyolder!) di sini.

  • Hubungkan "-" ke GND
  • Hubungkan GND di papan mic ke "-" (Anda bisa langsung menghubungkan GND ke GND dan lewati langkah sebelumnya, sungguh)
  • Hubungkan VCC ke daya 3.3V pada Arduino. Ini penting karena catu daya ini kurang "berisik" dibandingkan 5V, sehingga menghasilkan pembacaan mikrofon yang lebih baik
  • Hubungkan OUT ke pin ANALOG IN di Arduino. Saya menggunakan A0.

Langkah 16: Ini Seharusnya Hasil Akhir

Ini Seharusnya Hasil Akhir!
Ini Seharusnya Hasil Akhir!
Ini Seharusnya Hasil Akhir!
Ini Seharusnya Hasil Akhir!

Semuanya harus siap sekarang. Inilah gambar diagram terakhir dan tumpukan kabel saya dalam kenyataan. Mari kita lihat beberapa kode!

Langkah 17: Kode

Ok mari kita lihat kodenya! Ini bukan pekerjaan saya yang paling bersih, tetapi ini menyelesaikan pekerjaan. Saya telah menambahkan komentar untuk menjelaskan semuanya di sini, tetapi bersabarlah. Saya menggunakan Arduino IDE untuk semua ini (tersedia di Windows dan Mac gratis) Intinya adalah ini: Atur kecepatan motor dan jarak untuk berbelok.

Atur sejumlah batu (ayunan) untuk dilakukan.

Putar jarak yang ditentukan untuk 1 ayunan. Ayunkan beberapa kali.

Di antara semua itu, perhatikan penekanan tombol atau dengarkan mikrofon untuk melihat apakah motor harus menyala. Anda perlu menyesuaikan kecepatan, jarak, dan nilai sensitivitas mikrofon. Kecepatan motor akan memengaruhi volume dan torsi. Semakin cepat motor berjalan, semakin keras dan semakin sedikit torsi yang Anda dapatkan. Milik saya saat ini hampir senyap, jadi dimungkinkan untuk menjalankannya tanpa mengeluarkan banyak suara.

#include // perpustakaan motor stepper "standar"

//#define DEBUG 1 // batalkan komentar ini ketika Anda ingin menyesuaikan level mikrofon // Pengaturan tombol - ini sesuai dengan tempat pin digital yang Anda sambungkan ke tombol const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Pengaturan mikrofon - A0 di sini adalah analog untuk mikrofon. Contoh jendela dalam milis const int micPin = A0; const int sampleWindow = 1000; sampel int yang tidak ditandatangani; bool micEnabled = salah; mic gandaSensitivitas = 0,53; // Anda mungkin perlu mengubah ini // Bagi saya, sekitar.5 sudah cukup baik untuk tidak menembakkan suara kecil // tetapi akan menyala untuk teriakan kecil int stepsPerRevolution = 3200; // ubah ini agar sesuai dengan jumlah langkah per putaran untuk motor Anda // Motor saya 200 langkah/putaran // Tapi saya setel driver ke 1/16 mikro langkah // jadi 200*16 = 3200… jujur tidak tahu apakah ini adalah cara yang tepat // untuk melakukan ini Stepper myStepper(stepsPerRevolution, 2, 3); // 2 & 3 adalah pin DIR & STEP int stepCount = 0; int kecepatan motor = 95; // Anda harus menyesuaikan ini dengan cradle & berat badan bayi Anda int numSteps = 90; // Jarak yang akan ditempuh motor. // Anda harus menyesuaikan ini berdasarkan radius roda yang Anda pasang // ke motor Anda. Ini dan kecepatan kemungkinan akan trial and error. // Catatan - kecepatan lebih tinggi pada motor stepper = torsi efektif lebih rendah // Jika Anda tidak memiliki torsi yang cukup, motor Anda akan melewatkan langkah (tidak bergerak) ke oldmotorButtonValue = HIGH; bool diaktifkan = salah; // motor diaktifkan? int loopStartValue = 0; int maxRocks = 100; // berapa kali Anda ingin menggoyang sebelum mematikan int rockCount = 0; void setup() { #ifdef DEBUG Serial.begin(9600); // untuk debug logging #endif pinMode(motorEnablePin, INPUT_PULLUP); // Ini adalah pengaturan tombol untuk bekerja tanpa power pinMode(continuePin, INPUT_PULLUP); pinMode(micEnablePin, INPUT_PULLUP); pinMode(micDisablePin, INPUT_PULLUP); myStepper.setSpeed(kecepatan motor); // setel kecepatan motor ke apa yang Anda tentukan sebelumnya } void loop() { int motorButtonValue = digitalRead(motorEnablePin); // digitalRead hanya membaca nilai tombol int continueValue = digitalRead(continuePin); // Ini mendeteksi penekanan tombol motor dan mencegahnya menembak lebih dari sekali per klik if (motorButtonValue == HIGH && oldmotorButtonValue == LOW) { diaktifkan = !enabled; } micCheck(); // Jika motor mati, dan mikrofon hidup, dengarkan tangisan bayi if(!enabled && micEnabled) { if(getMicReading() >= micSensitivity) enabled = true; } if (diaktifkan) { langkahPerRevolusi = langkahPerRevolusi * -1; //membalikkan arah // Dengan pengaturan saya, lebih efektif untuk membalikkan // ayunan pertama. Anda dapat meletakkan ini setelah loop // jika itu bukan kasus Anda //spin motor jarak yang ditentukan di atas for(int i = loopStartValue; i < numSteps; i++){ //periksa matikan int tempmotorButtonValue = digitalRead(motorEnablePin); if(tempmotorButtonValue != motorButtonValue) { rockCount = 0; // Dua baris berikut ini "menyimpan" posisi motor, sehingga lain kali Anda menyalakannya // motor akan terus berjalan seolah-olah Anda belum mematikannya. Ini mencegah membuang // jarak gerakan Anda loopStartValue = i; // simpan posisi langkahPerRevolusi = langkahPerRevolusi * -1; // pertahankan arah oldmotorButtonValue = tempmotorButtonValue; merusak; } checkContinue(continueValue); // periksa apakah tombol lanjutkan ditekan micCheck(); myStepper.step(stepsPerRevolution / 50); // berapa banyak langkah yang harus diambil per loop, // Anda mungkin perlu menyesuaikan ini // pastikan kami melanjutkan jarak loop penuh jika loop selesai // ini mulai berlaku jika Anda mematikan motor sendiri dan "menyimpan" posisi if(i == numSteps - 1) { loopStartValue = 0; } } } penundaan(100); // jeda 100 mili sebelum melakukan pukulan berikutnya. Anda harus menyesuaikan ini. if (diaktifkan) checkComplete(); oldmotorButtonValue = motorButtonValue; // ini digunakan untuk mencegah klik ganda } // Kode ini langsung dari Adafruit. double getMicReading() { unsigned long startMillis = millis(); unsigned int peakToPeak = 0; // level puncak ke puncak unsigned int signalMax = 0; unsigned int signalMin = 1024; while (millis() - startMillis < sampleWindow) { micCheck(); if (digitalRead(motorEnablePin) == LOW) diaktifkan = true; sampel = analogRead(micPin); if (contoh signalMax) { signalMax = contoh; // simpan hanya level maksimal } else if (contoh = maxRocks) { diaktifkan = salah; rockCount = 0; // kembali ke posisi tengah

for(int i = loopStartValue; i < numSteps/2; i++){

myStepper.step(stepsPerRevolution * -1 / 50); // langkah 1/100 revolusi:

}

} }

Langkah 18: Pemasangan & Pengaturan Roda

Pemasangan & Pengaturan Roda
Pemasangan & Pengaturan Roda

Ini masih WIP untuk saya, karena seperti yang saya katakan, saya belum yakin ingin memasang sekrup ke dudukan saya. Cara saya memasang sekrup adalah sebagai berikut:

  • Pasang penjepit untuk bertindak sebagai lengan yang terlepas dari dudukan sehingga roda saya dapat ditarik dalam garis lurus
  • Sekrup bersama-sama kotak mentah untuk memasukkan motor, dan kencangkan itu ke pelat dasar, yang saya klem ke kaki dudukan
  • Membuat roda katrol kayu khusus dengan lubang agar sesuai dengan roda katrol stepper kecil di dalamnya. Saya membuat lubang tengah sangat ketat dan hanya dipalu di roda katrol stepper. Saya mengebor lubang melalui roda ke tengah sehingga saya dapat mengakses sekrup pada roda katrol logam untuk mengencangkannya ke motor stepper.
  • Jalankan seutas tali dari "lengan" dudukan ke roda. Saya mengamankan tali dengan memasukkannya melalui lubang yang telah saya bor dan hanya menempelkannya di tempatnya.

Solusi yang lebih baik untuk langkah ke-3 adalah dengan membeli roda katrol berdiameter lebih besar terlebih dahulu. Milik saya sedikit di bawah 3 dengan diameter di dalam alur dan bekerja sangat baik untuk dudukan khusus saya.

Versi pertama saya menggunakan lengan, bukan roda. Itu hampir tidak bekerja dengan baik karena gaya tidak diterapkan dalam arah yang konsisten, dan juga sangat rentan untuk terlempar jika posisi awal tidak benar. Menggunakan roda memecahkan masalah itu. Saya juga terhibur menggunakan sistem katrol kecil, tetapi akhirnya tidak perlu karena roda saya memberi saya torsi yang cukup.

Langkah 19: Pengaturan Akhir

Pengaturan Akhir
Pengaturan Akhir

Pasang mikrofon di dekat anak Anda, tetapi di tempat yang tidak akan terkena kabel apa pun. Letakkan tombol di mana pun Anda mau, selama Anda memiliki cukup kabel untuk mencapai tujuan akhir. Anda juga bisa mengganti tombol dengan pengaturan wifi di arduino, tapi saya belum masuk terlalu dalam. Semoga berhasil di luar sana!

Direkomendasikan: