Isi kandungan:

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, Julai
Anonim
Image
Image

Maaf, saya tidak dapat menahan muzik kuat yang disarankan oleh penyuntingan video saya.

Saya baru-baru ini mempunyai anak pertama saya dan sudah mempunyai buaian kayu yang dibuat oleh bapa saudara saya (yang merupakan pekerja kayu yang hebat) untuk anak saudara saya. Anak saudara saya sudah lama membesarnya, jadi saya senang mengambilnya dan mengelakkan menghabiskan SEMUA WANG untuk buaian / keranjang apa sahaja yang dibuat oleh blogger mommy saya. Buaian adalah reka bentuk yang cukup sederhana, pada dasarnya dua bongkahan dengan bolt melaluinya yang menyokong badan buaian. Terdapat pasak yang boleh ditanggalkan untuk menguncinya di tempat.

Dalam beberapa minggu, kami mendapati bahawa kami sering dapat mengatasi kegelisahan ringan dengan menggegarkan buaian sedikit sehingga anak lelaki kami tenang. Pada malam kami mengetahui ini, saya menghabiskan beberapa minit 10 malam dengan lengan saya mencapai dari bawah selimut, sambil menggegarkannya dengan lena, gembira kerana saya telah menemui cara untuk menenangkannya tanpa bangun dari tidur sendiri. pagi saya memasang tali dan karabiner kecil supaya saya dapat menggegarkan buaian tanpa perlu meregangkan lengan saya.

Pagi selepas itu, saya mula melakukan brainstorming dengan cara menggunakan robot untuk kanak-kanak ini. Masukkan Arduino…

Bekalan

Ok, ini adalah projek Arduino pertama saya, jadi saya melakukan percubaan dan percubaan dan ralat, dan saya yakin ada ruang untuk memperbaiki reka bentuk saya, tetapi inilah senarai bahagian saya: Arduino Uno ($ 13) untuk mengendalikan semuanya kit ($ 10) untuk menyambungkan wayar

Motor stepper ($ 14) Ini adalah bahagian yang paling menyeronokkan, kerana ia adalah perkara yang membuat semua kerja. Saya bermula dengan pemacu tork yang sedikit lebih rendah, tetapi kemudian mendapatkannya dan ia berfungsi dengan baik. Jangan ragu untuk mendapatkan yang lebih berkuasa. Pemacu motor yang lebih laju ($ 10-30) Ini terletak di antara Arduino dan motor. Yang khusus ini nampaknya dapat menggerakkan motor dengan lebih senyap daripada yang lain, jadi saya meneruskannya kerana motor akan berada beberapa kaki dari kepala (dan anak saya) semasa kami tidur. Pada asalnya saya hanya membeli satu pemacu TMC2209 dengan harga ~ $ 10, tetapi akhirnya membeli sebungkus 4 kerana pada mulanya saya menghadapi kesukaran dan ingin memastikan saya tidak menggoreng papan pada suatu ketika. Saya akhirnya membunuh 3 papan, yang membawa saya ke item seterusnya … Kapasitor! ($ 10) Anda benar-benar hanya memerlukan kapasitor 1 47 uF 50V, jadi kotak 240 ini terlalu banyak. Bekalan kuasa 36V ($ 17) Pada asalnya saya membeli bekalan 12V yang lemah, kemudian mengetahui bahawa itulah punca semua masalah saya dan mendapat yang lebih dekat dengan voltan maksimum yang dapat dikendalikan oleh motor stepper saya. Sekiranya anda menggunakan pemacu motor atau stepper yang lain, pastikan ia dapat mengendalikan voltan (V) dan Amperage (A) bekalan sekurang-kurangnya setinggi puncak Amps yang ditarik oleh motor. Soket soket kuasa wanita ($ 8) Ini adalah bekalan elektrik. Anda perlu memasangkannya ke beberapa wayar untuk melekat pada papan roti anda. Sebungkus besar jumper ($ 9) supaya saya dapat meletakkan kawalan di mana sahaja yang saya mahukan di dalam bilik.

Butang ($ 8) untuk hidup / mati, dll

Penguat mikrofon ($ 11) Oh, anda tidak tahu bahawa suara ini juga diaktifkan?

Beberapa roda roda kecil ($ 8) saya akhirnya menggunakan ini, tetapi mungkin ada alternatif yang lebih baik. Lebih lanjut mengenai itu kemudian. Anda juga pasti memerlukan besi pematerian dan apa sahaja yang anda mahu gunakan untuk memasang motor. Saya secara peribadi membuat kotak kasar dari 4 kepingan kayu yang disatukan, dan kemudian memasukkannya ke bahagian kayu yang selebar kaki buaian saya. Buat masa ini saya hanya mengenakannya kerana saya tidak tahu sama ada saya mahu menipu buaian bapa saudara saya.

Langkah 1: Biasakan diri anda dengan Pinout Pemandu Stepper Anda

Kawat Arduino 5V / GND ke Papan Roti Anda
Kawat Arduino 5V / GND ke Papan Roti Anda

Program pemodelan yang saya gunakan tidak mempunyai papan pemacu yang tepat ini, jadi anda harus merujuk gambar ini. Saya telah mengatur semuanya dalam orientasi yang sama seperti gambar ini.

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

Sambungkan wayar dari Arduino 5V ke rel "+" di satu sisi papan roti anda Sambungkan wayar dari salah satu Arduino GND ke rel "-" di bahagian yang sama dengan papan roti

(abaikan

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

Sambungkan Rel +/- ke VIO / GND
Sambungkan Rel +/- ke VIO / GND

Sambungkan wayar dari rel "-" ke GND di kiri bawah papan pemacu stepper. Sambungkan wayar dari rel "+" ke VIO

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

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

Sambungkan pin DIR dan STEP dari papan pemacu stepper ke dua pin digital di Arduino. Saya menggunakan pin 2 & 3, masing-masing, tetapi tidak menjadi masalah selagi anda menetapkan pin dalam kod anda di kemudian hari.

Langkah 5: Mari Pergi ke Depan dan Tambah Kapasitor Itu …

Mari Pergi ke Depan dan Tambah Kapasitor Itu …
Mari Pergi ke Depan dan Tambah Kapasitor Itu …

Saya membakar 2 papan pemacu stepper kerana saya tidak mempunyai kapasitor, jadi mari kita teruskan dan tambahkan kapasitor 47uF 50V ke pin VM / GND pada papan pemacu. Pastikan pin "-" pada kapasitor berada di pin GND di papan roti (akan ada tanda "-" di sisi kapasitor yang sesuai)

Langkah 6: Dan Pergi ke Depan dan Sambungkan GND Itu

Dan Pergi ke Depan dan Sambungkan GND Itu
Dan Pergi ke Depan dan Sambungkan GND Itu

Pada GND yang baru anda tambahkan kapasitor, teruskan dan sambungkannya ke rel "-" yang sama dengan GND yang lain.

Langkah 7: Sambungkan Motor ke Pemandu

Sambungkan Motor ke Pemandu
Sambungkan Motor ke Pemandu

Pin mana yang akan pergi bergantung pada motor yang anda beli, tetapi pin yang saya senaraikan mempunyai gambarajah pendawaian pada senarai amazon.

Untuk motor saya -

Sambungkan Hijau & Hitam ke M2B & M2A

Sambungkan Merah & Biru ke M1A & M1B Catatan: Sekiranya atas sebab apa pun motor anda tidak mempunyai gambarajah, anda dapat dengan mudah mengetahui wayar yang membentuk litar jika anda mempunyai multimeter. Tetapkan multimeter anda ke tetapan amp rendah dan putuskan motor anda. Sentuh salah satu wayar multimeter ke salah satu wayar motor, dan kemudian cuba setiap wayar yang lain dengan plumbum yang lain. Sekiranya anda mendapat bacaan rintangan, kedua-dua wayar membentuk litar 1, dan dua yang lain membentuk yang lain.

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

Sambungkan EN, MS1, dan MS2 ke
Sambungkan EN, MS1, dan MS2 ke

Saya tidak pasti bahawa ini perlu, tetapi saya percaya bahawa ia menetapkan motor ke tetapan mikrostep yang lebih kecil pada pemacu TMC2209. Anda boleh menghubungkannya ke rel "-" rel yang paling dekat dengan mereka, kerana kami akan menghubungkannya ke bahagian lain di kemudian hari.

Langkah 9: Pateri Penyambung Daya Wanita ke Dua Wayar

Pateri Penyambung Daya Wanita ke Dua Wayar
Pateri Penyambung Daya Wanita ke Dua Wayar

Saya bukan yang terbaik di dunia untuk menyolder, jadi anda perlu mencari di tempat lain untuk itu, tetapi saya memang seperti itu. Saya membengkokkan hujung wayar sehingga mereka meletak rata pada penyambung penyambung, kemudian memateri wayar ke plag. Saya tidak mempunyai barang penyusut haba kord jadi saya hanya membalutnya dengan pita elektrik.

Langkah 10: Sambungkan Penyambung Wanita Anda yang Baru Bersolder

Sambungkan Penyambung Wanita Anda yang Baru Bersolek
Sambungkan Penyambung Wanita Anda yang Baru Bersolek

Jangan pasangkan bekalan kuasa sebenar anda. Kawat merah ke "+", hitam ke "-"

Langkah 11: Sambungkan mereka ke VM / GND

Sambungkan Mereka ke VM / GND
Sambungkan Mereka ke VM / GND

Sambungkan rel "+" dan "-" ke VM dan GND di sebelahnya. Yang mempunyai kapasitor di atasnya.

Langkah 12: Kagumi Hasil Kerja Tangan Anda

Kagumi Hasil Kerja Anda
Kagumi Hasil Kerja Anda

Baiklah, kini motor dan pemandu anda sudah siap sepenuhnya! Mulai sekarang kita akan melakukan kawalan. Ngomong-ngomong, terus maju:

  • Sekiranya anda memutuskan sambungan pemacu anda dengan alasan apa pun, jangan cuba menyambungkannya semasa kuasa 36V anda dipasang. Saya membunuh papan pemacu ke-3 saya seperti itu.
  • Pasang kuasa 36V sebelum memasang kuasa Arduino. Saya sendiri tidak menggoreng Arduino, tetapi sepanjang perjalanan saya melihat banyak amaran mengenai perkara ini.

Langkah 13: Pilihan - Periksa VREF Anda

TMC2209 mempunyai potensiometer yang mengawal arus ke motor. Sekiranya anda mempunyai pemandu yang sama seperti yang saya lakukan, anda boleh membacanya di sini. Sekiranya anda mahu menyesuaikan tetapan:

  • Putuskan semua kuasa dan putuskan wayar motor dari pemandu.
  • Putuskan wayar ke pin EN (aktifkan) pada pemacu. Ini adalah pin di sudut kiri atas.
  • Pasangkan bekalan kuasa motor anda (yang 36V)
  • Menggunakan set multimeter pada 20V, sentuh satu plumbum ke sumber GND (saya menggunakan wayar menyambung ke rel "-" saya) dan sentuh plumbum yang lain ke pin VREF. Jangan menyentuh perkara lain, anda BOLEH memendekkan pemandu jika anda melakukannya.
  • Gunakan pemutar skru kecil untuk menyesuaikan skru potensiometer dengan lembut. Untuk papan saya, berlawanan arah jam = lebih banyak kuasa. VREF saya secara peribadi membaca ~ 0.6V.

Langkah 14: Butang

Butang!
Butang!

Seterusnya, sambungkan butang anda seperti itu. Mereka tidak memerlukan kuasa.

  • Sambungkan rel "-" papan roti butang anda ke salah satu GND Arduino. Anda juga boleh melepaskannya dari rel papan roti "-" yang lain jika anda mahu.
  • Sambungkan satu pin setiap butang ke rel "-"
  • Sambungkan pin lain dari setiap butang ke pin digital di Arduino.

Saya menggunakan 4 butang: Motor hidup / mati

Motor terus

Mikrofon dihidupkan

Mikrofon mati

Lebih banyak mengenai perkara ini semasa kita mendapatkan kod, tetapi saya menggunakan butang mikrofon yang berbeza hanya kerana saya tidak mempunyai LED untuk memberitahu saya jika mikrofon dihidupkan atau dimatikan, jadi mempunyai butang hidup / mati yang berbeza menjadikannya sangat mudah.

Langkah 15: Tambahkan Papan Mikrofon

Tambahkan Papan Mikrofon
Tambahkan Papan Mikrofon

Yang ini mudah, dan Adafruit mempunyai arahan yang baik (dan asas pematerian!) Di sini.

  • Sambungkan "-" ke GND
  • Sambungkan GND di papan mikrofon ke "-" (anda boleh terus menghubungkan GND ke GND dan melangkau langkah sebelumnya, betul-betul)
  • Sambungkan VCC ke kuasa 3.3V di Arduino. Ini penting kerana bekalan kuasa ini kurang "bising" daripada 5V, menghasilkan pembacaan mikrofon yang lebih baik
  • Sambungkan OUT ke pin ANALOG IN di Arduino. Saya menggunakan A0.

Langkah 16: Ini Keputusan Akhir

Ini Sepatutnya Hasil Akhir!
Ini Sepatutnya Hasil Akhir!
Ini Sepatutnya Hasil Akhir!
Ini Sepatutnya Hasil Akhir!

Segala-galanya harus siap sekarang. Berikut adalah gambar rajah akhir dan wayar saya yang sebenarnya. Mari lihat beberapa kod!

Langkah 17: Kod

Ok mari lihat kod! Ini bukan kerja saya yang paling bersih, tetapi ia dapat menyelesaikannya. Saya telah menambah komen untuk menjelaskan semua perkara di sini, tetapi tahan dengan saya. Saya menggunakan Arduino IDE untuk semua ini (tersedia di Windows dan Mac secara percuma) Jist adalah ini: Tetapkan kelajuan motor dan jarak untuk membelok.

Tetapkan sebilangan batu (ayunan) yang perlu dilakukan.

Putar jarak yang ditetapkan untuk 1 ayunan. Ayunkan sebilangan kali.

Di antara semua itu, perhatikan penekanan butang atau dengarkan mikrofon untuk melihat apakah motor harus dihidupkan. Anda perlu menyesuaikan nilai kepantasan, jarak, dan kepekaan mikrofon. Kelajuan motor akan mempengaruhi kelantangan dan tork. Semakin cepat motor berjalan, semakin kuat dan semakin sedikit daya kilas yang anda dapat. Tambang saya hampir senyap, jadi boleh dijalankan tanpa mengeluarkan banyak suara.

#masuk // perpustakaan motor stepper "standard"

// # definisikan DEBUG 1 // unmentasikan ini apabila anda ingin menyesuaikan tahap mikrofon // Penyediaan butang - ini sesuai dengan tempat pin digital yang anda sambungkan ke butang const int motorEnablePin = 10; const int terusPin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Penyediaan mikrofon - A0 berikut adalah analog untuk mikrofon. Tetingkap sampel adalah dalam milis const int micPin = A0; const int sampleWindow = 1000; sampel int yang tidak ditandatangani; bool micEnabled = salah; kepek ganda dua kali ganda = 0.53; // anda mungkin perlu mengubah ini // Bagi saya, sekitar.5 cukup baik untuk tidak menyalakan cooing kecil // tetapi akan menyala untuk tangisan kecil int langkahPerRevolution = 3200; // ubah ini agar sesuai dengan jumlah langkah per revolusi untuk motor anda // Motor saya 200 langkah / revolusi // Tetapi saya menetapkan pemacu ke 1/16 mikrostep // jadi 200 * 16 = 3200 … jujur tidak tahu jika ini adalah cara yang betul // untuk melakukan Stepper myStepper ini (stepPerRevolution, 2, 3); // 2 & 3 adalah pin DIR & STEP int stepCount = 0; int motorSpeed = 95; // anda perlu menyesuaikannya mengikut buaian & berat bayi anda int numSteps = 90; // Jarak motor akan bergerak. // Anda perlu menyesuaikannya berdasarkan jari-jari roda yang anda pasangkan // ke motor anda. Ini dan kelajuan kemungkinan akan menjadi percubaan dan kesilapan. // Catatan - kelajuan lebih tinggi pada motor stepper = tork berkesan lebih rendah // Sekiranya anda tidak mempunyai tork yang mencukupi, motor anda akan melangkau langkah (tidak bergerak) int oldmotorButtonValue = TINGGI; bool diaktifkan = false; // motor diaktifkan? int loopStartValue = 0; int maxRocks = 100; // berapa kali anda mahu bergoyang sebelum mematikan int rockCount = 0; batal persediaan () {#ifdef DEBUG Serial.begin (9600); // untuk logging debug #endif pinMode (motorEnablePin, INPUT_PULLUP); // Ini adalah tetapan agar butang berfungsi tanpa power pinMode (ContinuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // menetapkan kelajuan motor kepada apa yang anda nyatakan sebelumnya} gelung void () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead hanya membaca nilai butang int terusValue = digitalRead (terusPin); // Ini mengesan tekan butang motor dan menghalangnya menyala lebih dari sekali per klik jika (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Sekiranya motor mati, dan mikrofon hidup, dengarkan tangisan bayi jika (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) diaktifkan = benar; } jika (diaktifkan) {stepPerRevolution = stepsPerRevolution * -1; // arah terbalik // Dengan penyediaan saya lebih berkesan untuk membalikkan // ayunan pertama. Anda boleh meletakkannya selepas gelung // jika itu tidak berlaku untuk motor putar anda // jarak yang dinyatakan di atas untuk (int i = loopStartValue; i <numSteps; i ++) {// periksa untuk mematikan int tempmotorButtonValue = digitalRead (motorEnablePin); jika (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Dua baris seterusnya ini "simpan" kedudukan motor, sehingga pada saat anda menghidupkannya // ia akan terus bergerak seolah-olah anda tidak mematikannya. Ini menghalang melancarkan // pergerakan anda menjauhkan loopStartValue = i; // simpan langkah kedudukanPerRevolution = stepPerRevolution * -1; // mengekalkan arah oldmotorButtonValue = tempmotorButtonValue; rehat; } checkContinue (terusValue); // periksa apakah butang terus ditekan micCheck (); myStepper.step (stepPerRevolution / 50); // berapa banyak langkah yang perlu diambil untuk setiap gelung, // anda mungkin perlu menyesuaikan ini // pastikan kita meneruskan jarak gelung penuh jika gelung selesai // ini dimainkan jika anda mematikan motor sendiri dan ia "menyelamatkan" kedudukan jika (i == numSteps - 1) {loopStartValue = 0; }}} kelewatan (100); // jeda 100 milis sebelum melakukan batu seterusnya. Anda perlu menyesuaikannya. jika (diaktifkan) checkComplete (); oldmotorButtonValue = motorButtonValue; // ini digunakan untuk mencegah klik dua kali} // Kod ini langsung dari Adafruit. double getMicReading () {permulaan panjang yang tidak ditandatanganiMillis = millis (); int puncakToPeak yang tidak ditandatangani = 0; // tahap puncak ke puncak isyarat int yang tidak ditandatanganiMax = 0; isyarat int tidak bertandaMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) diaktifkan = benar; contoh = analogRead (micPin); jika (contoh signalMax) {signalMax = sampel; // simpan hanya tahap maksimum} yang lain jika (contoh = maxRocks) {diaktifkan = salah; rockCount = 0; // kembali ke positio tengah

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

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

}

} }

Langkah 18: Pemasangan & Pemasangan Roda

Pemasangan & Pemasangan Roda
Pemasangan & Pemasangan Roda

Ini masih merupakan WIP untuk saya, kerana seperti yang saya katakan, saya tidak pasti saya mahu memasukkan skru ke dalam buaian saya. Cara saya memasang tambang adalah seperti berikut:

  • Pasang penjepit untuk bertindak sebagai lengan yang keluar dari buaian sehingga roda saya dapat menarik garis lurus
  • Menggulung kotak kasar untuk memasukkan motor ke dalamnya, dan memasukkannya ke plat asas, yang saya pasangkan ke kaki buaian
  • Membuat roda takal kayu khas dengan lubang agar sesuai dengan roda katrol stepper kecil di dalamnya. Saya membuat lubang tengahnya sangat ketat dan hanya melekat di roda takal stepper. Saya menggerudi lubang melalui roda ke tengah sehingga saya dapat mengakses skru pada roda takal logam untuk mengetatkannya ke motor stepper.
  • Jalankan tali dari "lengan" buaian ke roda. Saya mengikat tali dengan menjalankannya melalui lubang yang telah saya gerudi dan hanya mengetuknya di tempat.

Penyelesaian yang lebih baik untuk langkah ke-3 adalah dengan membeli roda takal berdiameter lebih besar. Tambang berdiameter kurang dari 3 di dalam alur dan berfungsi dengan baik untuk buaian saya.

Versi pertama saya menggunakan lengan dan bukannya roda. Itu tidak berfungsi dengan baik kerana kekuatannya tidak diterapkan ke arah yang konsisten, dan juga sangat rentan untuk dibuang jika posisi awal tidak betul. Menggunakan roda menyelesaikan masalah tersebut. Saya juga berhibur menggunakan sistem takal kecil, tetapi akhirnya tidak perlu kerana roda saya memberi saya tork yang cukup.

Langkah 19: Persediaan Akhir

Persediaan Akhir
Persediaan Akhir

Pasang mikrofon dekat dengan anak anda, tetapi di tempat di mana mereka tidak akan memukul wayar. Masukkan butang di mana sahaja anda mahu, selagi anda mempunyai kabel yang mencukupi untuk berjalan ke tujuan akhir. Anda juga boleh mengganti butang dengan penyediaan wifi di arduino, tetapi saya masih belum mendalam. Semoga berjaya di luar sana!

Disyorkan: