Daftar Isi:
- Langkah 1: Apa yang Kami Rencanakan
- Langkah 2: Daftar Bahan Prototipe
- Langkah 3: [Prototipe] Woodworking Arms and Carriage Interior Kami
- Langkah 4: [Prototipe] Membuat Kereta Kami
- Langkah 5: [Prototipe] Menyatukan Semuanya
- Langkah 6: [Prototipe] Selesai dan Bergerak
- Langkah 7: Menerjemahkan Model Kami Ke Dalam Desain Selesai Kami
- Langkah 8: Pengkodean
- Langkah 9: Listrik
- Langkah 10: Mekanik
- Langkah 11: Refleksi
Video: [WIP] Membuat Drawbot yang Dikendalikan oleh Myo Armband: 11 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Halo semua!
Beberapa bulan yang lalu, kami memutuskan untuk mencoba dan menangani gagasan membangun drawbot kerangka terbuka yang hanya menggunakan pita Myo untuk mengendalikannya. Ketika kami pertama kali memulai proyek, kami tahu bahwa itu perlu dipecah menjadi beberapa fase yang berbeda. Fase utama pertama kami adalah mencoba dan membungkus kepala kami di sekitar desain bingkai terbuka untuk bot gambar kami. Ini adalah pengaturan yang tidak standar, dan kami ingin melihat apa manfaat dari desain ini.
Kedua, kami tahu bahwa membangun prototipe ini hanya akan berguna bagi diri kami sendiri. Desain dan rencana kami adalah memindahkan bingkai terakhir kami ke dalam logam, dan menggunakan arduino, menerima posisi kami dari akselerometer dan giroskop yang terpasang pada pita Myo. Informasi itu kemudian akan dikirim ke motor, dan akan meniru gerakan pengguna. Kami tahu bahwa ini akan membuat fase kedua kami pecah menjadi tiga aspek utama:
- pemrograman dari Myo ke motor, melalui Arduino
- desain listrik untuk menerjemahkan data kami menjadi gerakan
- desain mekanis untuk membuat bingkai berukuran cukup yang akan memfasilitasi gerakan kami
Setiap anggota tim kami merasa paling nyaman dengan bagian unik dari proses desain kami, jadi kami memutuskan untuk membagi pekerjaan kami di antara setiap orang. Kami juga membuat blog selama seluruh proses desain kami untuk melacak pemikiran kami dari hari ke hari, yang bertentangan dengan tampilan yang lebih global.
Langkah 1: Apa yang Kami Rencanakan
Tujuan kami adalah menggabungkan kedua produk ini dengan cara yang belum pernah kami lihat sebelumnya. Kami berangkat untuk membuat siaran langsung antara ban lengan Myo kami dan versi desain kami sendiri yang terinspirasi oleh AxiDraw dari Evil Mad Scientist.
Langkah 2: Daftar Bahan Prototipe
2 2 x 4 papan kayu 1 Sabuk atau rantai berukuran >= 65” 4 Paku kayu 3 Roda gigi dengan gigi yang sesuai dengan sabuk atau rantai 4 3 x 8 pelat berlubang vex 30” Karet spacer 8 1 ring diameter 1” kayu diameter 1” paku kayu panjang 1' 8 Sekrup Vex 1”8” Sekrup Vex 8 2” Sekrup Vex 8” Spacer karet 48 Kacang vex 1 Ikat ritsleting kecil
Langkah 3: [Prototipe] Woodworking Arms and Carriage Interior Kami
Kami mengambil dua 2x4 dan memotongnya menjadi panjang yang sama (33”)
Menggunakan gergaji meja, kami membuat takik di sepanjang sisi bagian sempit papan” dalam dan” lebar di tengah
Potong dowel menjadi 4 bagian 2” dan bor lubang di tengah dowel dengan diameter sekitar” menggunakan bor tekan
Langkah 4: [Prototipe] Membuat Kereta Kami
Idealnya kami akan menggunakan dua potong 7x7 baja berlubang vex tetapi yang kami miliki hanyalah strip 2x7 jadi kami menguncinya bersama-sama dalam konfigurasi "X"
Tumpuk 5 spacer karet” dan kencangkan sudut pelat vex satu sama lain
Kencangkan pasak kayu seperti yang ditunjukkan pada gambar 1 sehingga mereka berputar bebas dengan jarak sekitar 2 di antara mereka. Gunakan gambar untuk melihat di mana roda gigi harus diposisikan pada titik ini kami menggunakan mesin cuci tetapi kemudian menemukan bahwa roda gigi plastik kecil bekerja lebih baik.
Menggunakan “vex screws,” rubber spacer dan ring berdiameter 1” mengamankan ring pada posisi yang lebih tinggi seperti yang ditunjukkan pada gambar 1 (kami menggunakan roda gigi plastik hijau karena kami tidak dapat menemukan ring yang tepat) pastikan ring dapat digunakan berputar dengan mudah dan masuk ke dalam takik papan.
Langkah 5: [Prototipe] Menyatukan Semuanya
Letakkan papan di atas permukaan dan geser kereta ke tengah sehingga ring menahan kereta di atas papan dan di kedua sisi papan, paku roda gigi ke bawah sehingga berputar bebas. Paku roda gigi ke salah satu ujung papan kedua untuk memastikannya berada di tengah dan geser ke kereta tegak lurus ke papan pertama.
Sekarang sabuk harus dilingkarkan melalui sistem seperti yang ditunjukkan, perhatikan dengan cermat bagaimana pasak berada di bagian luar sabuk dan bagaimana tidak ada apa pun di tengah sasis yang dapat menghalangi sabuk saat sedang bergerak.
Sekarang sabuk perlu diikat di sisi papan yang tidak memiliki roda gigi. Kami menggunakan paku ekstra dan dasi ritsleting untuk mengikat milik kami. Tetapi metode yang digunakan tidak masalah selama sabuk itu berlabuh di tempat itu
Langkah 6: [Prototipe] Selesai dan Bergerak
Seharusnya begitu, tarik sabuk dalam kombinasi yang berbeda dan lihat efek berbeda yang dimilikinya pada lengan!
Langkah 7: Menerjemahkan Model Kami Ke Dalam Desain Selesai Kami
Setelah kami menyelesaikan prototipe kami, kami sangat gembira. Tak satu pun dari kami yakin bagaimana sistem bekerja sebelum perakitan. Namun, begitu bagian kami menyatu, kami dengan cepat menemukan apa yang kami sukai dan bagaimana kami akan meningkatkannya saat membuat desain akhir. Keluhan utama kami dengan sistem yang harus diselesaikan adalah:
- Skala
- Prototipe kami sangat besar dan berat, yang membuatnya rentan terbalik di ujung lengan kami
- Kereta itu jauh lebih besar dari yang diperlukan, dan memiliki banyak ruang yang terbuang
- Sabuk kami (tapak tangki vex) jauh lebih besar dari yang diperlukan, yang memberikan ruang berlebih di antara lengan
-
Gesekan
- Tapak vex kami tidak melewati rol dowel kayu dengan mudah di semua titik
- Plastik di atas kayu membuat kereta tidak mau bergerak dalam banyak kasus
-
Motorisasi
Kami perlu membuat sistem mampu daya
Dengan mengingat hal-hal ini, kami menggambar rencana kami untuk desain akhir. Kami ingin drawbot dikontrol dengan Myo melalui arduino, dan kami ingin membuat bingkai aluminium dan lebih kecil.
Untuk melakukan ini, kami mengambil persentase dari prototipe asli kami, dan mulai bekerja dari ukuran itu. Dengan menggunakan lembaran logam yang akan dikerjakan agar memiliki saluran yang cukup lebar untuk dilewati bantalan berpelindung, kami akan memiliki desain yang ringan namun kuat yang akan memiliki toleransi penggunaan yang lebih tinggi.
Prototipe kami juga memungkinkan kami, hanya dalam beberapa menit, untuk menentukan bagaimana putaran motor memengaruhi kepala drawbot kami. Ini membawa kita untuk memahami bahwa desain kontrol kita akan lebih sederhana daripada yang kita perkirakan. Setelah diperiksa lebih dekat, kami menemukan bahwa gerakan motor bersifat aditif! Ini berarti bahwa setiap motor memiliki efek independen yang diinginkan pada gerakan kita, tetapi ketika kita menggabungkannya bersama-sama, mereka mulai meniadakan.
Misalnya, jika dianggap seperti bidang koordinat, motor yang terletak di ekstremitas x negatif akan selalu cenderung menarik laci kita ke kuadran kedua dan keempat. Sebaliknya, motor yang diletakkan pada ekstremitas x positif akan selalu mendorong laci ke kuadran pertama dan ketiga. Jika kita menggabungkan gerak motor kita, itu akan membatalkan bagian-bagian yang mengarahkan konflik itu, dan akan memperkuat bagian-bagian yang setuju.
Langkah 8: Pengkodean
Sementara saya bekerja cukup ekstensif di C beberapa tahun yang lalu, saya tidak memiliki pengalaman dengan lua atau C++, dan ini berarti saya perlu menghabiskan banyak waktu untuk melihat-lihat dokumentasi. Saya tahu bahwa tugas umum yang akan saya coba selesaikan adalah mendapatkan posisi pengguna dalam interval waktu dan kemudian meneruskannya ke motor. Saya memutuskan untuk memecah tugas untuk diri saya sendiri untuk mencerna bagian-bagian yang saya perlukan dengan lebih baik.
1. Dapatkan Data dari Myo (lua)
Saya tahu bahwa saya perlu mencari cara untuk mengumpulkan informasi dari Myo. Ini adalah bagian pertama dari tantangan yang ingin saya dekati. Untuk melakukan ini, saya ingin pengguna mengkalibrasi ukuran kanvas mereka sebelum mulai menggambar. Ini akan memungkinkan saya untuk memiliki batas untuk bekerja. Saya kemudian dapat menormalkan program antara pengguna yang berbeda hanya dengan mengambil persentase dari kanvas maksimum sebagai titik data saya untuk lulus. Saya memutuskan untuk memiliki acara skrip yang akan melakukan pemeriksaan getOrientation setiap setengah detik, karena itu akan memungkinkan pemeriksaan untuk tidak pernah melakukan lompatan liar yang perlu Anda tebak (misalnya, jika pengguna berayun dengan liar ke belakang dan sebagainya).
Hal ini membuat penghalang jalan pertama saya memukul. Saya menemukan batasan lua yang sangat besar, dan itu tidak memungkinkan saya untuk menunggu sebelum melanjutkan skrip. Satu-satunya cara untuk melakukan tindakan ini adalah dengan menjeda CPU (yang akan menjedanya secara global, bahkan menahan jam sistem), atau menggunakan perintah khusus OS. Dalam kode contoh saya, saya meninggalkan pemeriksaan OS asli yang saya lakukan (berkomentar). Ini setelah melakukan sejumlah besar penelitian dalam dokumentasi lua, dan dilakukan dengan memeriksa pemformatan jalur sistem. Saat itulah saya memutuskan saya perlu melihat dokumentasi untuk proyek-proyek yang telah diterbitkan sebelumnya. Saya segera menyadari berapa banyak waktu yang saya buang, dan segera mengarah ke variabel platform. Dengan itu, saya dapat segera mengimplementasikan perintah tunggu khusus OS, berbeda dengan hari-hari yang saya perlukan untuk menyelesaikan solusi saya sebelumnya.
Sekitar waktu inilah desain yang bekerja pada aspek kelistrikan dimulai, dan saya menangguhkan pekerjaan pada aspek kode ini. Tujuannya adalah untuk mempelajari bagaimana motor kita terhubung dengan arduino.
2. Bekerja di Sekitar Arduino (C++)
Ketika bekerja dengan papan tempat memotong roti kami menjadi semakin kompleks, saya mengetahui bahwa arduino tidak mampu multithreading. Ini adalah kunci pas besar dalam desain kode asli saya, dan setelah membaca lebih lanjut tentang batasan yang disajikan dengan pengontrol kami, saya menemukan bahwa saya perlu memprogram bagaimana arduino akan beralih di antara keduanya. Ini menjadi fokus upaya saya ketika tenggat waktu kami semakin dekat. Saya harus menghapus sebagian besar skrip asli saya karena mereka dirancang untuk menulis data ke file secara sinkron dengan pengontrol motor yang membaca file. Ini untuk memungkinkan fungsi antrian untuk memastikan bahwa meskipun pengguna berada di depan laci kami, itu tidak akan merusak proyek.
Saya memutuskan bahwa fungsi antrian harus disimpan, jika tidak diimplementasikan dengan cara yang sama seperti sebelumnya. Untuk melakukan ini, saya membuat vektor array. Ini memungkinkan saya untuk tidak hanya menjaga semangat desain saya sebelumnya relatif utuh, itu juga berarti saya tidak perlu melacak tempat saya di file baik untuk membaca atau menulis. Sebagai gantinya, sekarang yang perlu saya lakukan hanyalah menambahkan nilai baru ke dalam vektor saya jika pengguna sedang bergerak (pengujian awal kurang dari 1% perbedaan ukuran kanvas di x dan y dari posisi terakhir yang direkam menghasilkan tidak ada perekaman data). Saya kemudian dapat mengambil nilai tertua dalam vektor saya dan dalam satu gerakan, mengirimkannya ke kontrol motor, menulisnya ke file kami, dan kemudian menghapusnya dari vektor saya. Ini membersihkan banyak kekhawatiran saya tentang menjalankan aliran IO yang konstan.
Langkah 9: Listrik
Sementara saya telah mengambil kelas elektronik di masa lalu, dan bekerja cukup banyak dengan arduino. Saya tidak pernah terjun jauh ke dalam membuat arduino menerima informasi dari sumber luar (myo), saya hanya memiliki pengalaman mengeluarkan informasi melalui arduino. Namun, saya menggunakan kabel motor pada drawbot kami, dan mengerjakan kode agar mereka dapat bekerja dengan kode myo.
Bahan yang saya gunakan:
2 x motor stepper
1 x papan tempat memotong roti
1 x Arduino (Uno)
2 x Driver IC L293DE
40 x Kabel jumper
2 x Penggemar
1. Menghubungkan Motor Stepper dan Kipas ke Breadboard
Mengikuti diagram sirkuit, kita dapat menghubungkan satu motor stepper ke driver di papan tempat memotong roti. Kemudian, mengikuti diagram yang sama berlaku untuk driver dan motor kedua, namun kabel jumper harus dicolokkan ke set pin yang berbeda di arduino (karena motor pertama menempati ruang 4 lainnya).
Peringatan/Kiat:
Drivernya sangat kecil dan pinnya sangat berdekatan. Akan lebih bijaksana untuk memisahkan kedua driver sehingga kabel tidak membingungkan.
Selanjutnya adalah memasang kipas. Ini cukup sederhana, kipas yang saya miliki adalah kipas prosesor komputer dasar, yang memiliki ground positif dan ground. Tancapkan keduanya ke masing-masing pin +/- di papan tempat memotong roti, dan miringkan masing-masing ke arah masing-masing driver. (Kami menemukan bahwa karena motor stepper menerima semburan informasi dan perintah dalam jangka waktu yang lama, driver cenderung terlalu panas dan bau. Menambahkan kipas untuk mendinginkannya memperbaiki masalah ini).
2. Kode Arduino
Ini adalah bagian yang mudah!
Buka Arduino IDE pergi ke tab "File" lalu turun ke tab "contoh" yang akan turun lebih jauh dan menunjukkan kepada Anda tab "stepper" Kemudian Anda ingin membuka "Stepper_OneStepAtATime"
Ini akan memuat kode contoh yang hampir plug-and-play ke kabel arduino/motor. Kami harus melakukan sedikit penyesuaian karena kami akan menjalankan dua motor, yang akan saya tunjukkan di bawah. Anda mungkin juga harus melakukan sedikit penyesuaian tergantung pada pin mana yang telah Anda putuskan untuk digunakan, karena Arduino IDE default ke pin 8-11.
Kode yang saya gunakan untuk membuat kedua motor bergerak "sinkron" di bawah ini:
//#termasuk
const int langkahPerRevolusi = 200;
Stepper myStepper1(stepsPerRevolution, 9, 10, 11, 12);
Stepper myStepper2(stepsPerRevolution, 4, 5, 6, 7);
int jumlah langkah = 0;
void setup() { // menginisialisasi port serial: Serial.begin(9600); }
lingkaran kosong() {
langkahku1.langkah(1);
Serial.print("langkah-langkahnya:");
Serial.println(Jumlah langkah);
jumlah langkah++;
penundaan(0.5);
langkahku2.langkah(1); penundaan(0.5); }
3. Kemungkinan Masalah
Masalah yang saya alami selama proses ini adalah tidak menggunakan contoh kode yang benar, menggunakan kabel jumper yang buruk, menggunakan IC driver yang salah.
Pastikan driver yang Anda gunakan mampu mengendalikan motor
Periksa nomor seri dan periksa spesifikasinya
Saya mengalami masalah kabel jumper mati, yang menyebabkan motor saya berputar aneh
Saya harus menggunakan multimeter untuk memeriksa setiap kabel
Dan selalu periksa ulang kode Anda untuk kesalahan kecil seperti kehilangan akhir “;” memerintah
Langkah 10: Mekanik
1. Bahan
Untuk model produksi penuh lengan, disarankan agar terbuat dari bahan yang kuat namun ringan, kami merasa bahwa aluminium sangat cocok.
Kami menggunakan lembaran aluminium pengukur 032 yang dipotong menjadi 9,125" x 17,5" dan menelusuri pola dari gambar yang ditunjukkan pada langkah sebelumnya.
2. Fabrikasi
Dengan menggunakan hemmer (mesin biru) kami menambahkan keliman yang menghadap ke arah yang berlawanan sehingga ketika potongan dipecah dan dilipat, kedua keliman akan saling mengunci membentuk satu bagian utuh.
Untuk tikungan besar kami menggunakan ahli tenis, karena presisinya tinggi.
Sekarang untuk tikungan yang lebih kecil, Anda akan ingin menggunakan mesin dengan kaki yang lebih kecil, di sinilah mesin seperti roto-die masuk. Karena kakinya yang lebih kecil, ini memungkinkan untuk membuat jeda yang lebih kecil, sayangnya, roto-die yang kami miliki masih terlalu besar untuk rel kami dan telah berubah bentuk.
**Atau, jika Anda tidak memiliki akses ke peralatan atau alat yang tepat, maka pengganti dapat dibuat.**
Dalam kasus kami, kami memotong lengan kami dari rel panel surya aluminium menggunakan pemotong plasma dan menggiling ujungnya dengan halus kemudian menguncinya kembali ke belakang untuk membuat sistem rel dua sisi. Idealnya, kami ingin mengelas rel bersama-sama, namun, tanpa akses ke stasiun las, kami malah menjepit rel dan mengebor lalu menguncinya bersama-sama. Tetapi jika rute ini diambil, maka perawatan khusus harus dilakukan untuk menggunakan mur pengunci dan washer untuk memastikan bahwa potongan memiliki kelenturan sesedikit mungkin.
3. Sabuk
Untuk sabuk kami menggunakan beberapa sabuk printer 3D lama yang dapat kami selamatkan.
Sabuk awalnya tidak cukup panjang sehingga menggunakan beberapa tabung panas menyusut kami menggabungkan dua bagian untuk membuat satu yang cukup panjang.
Roda gigi hijau dan pasak kayu diganti dengan bantalan cakram dengan ring ekstra lebar yang digunakan untuk menjaga sabuk agar tidak tergelincir dari tempatnya.
4. Kereta
Dan akhirnya kereta itu dibuat dari lembaran aluminium 032 5" x 5", dengan lubang bor ditekan di mana sekrup dan ring yang sesuai dimaksudkan untuk pergi. Jaraknya akan bervariasi tergantung pada seberapa lebar rel Anda dan seberapa banyak jarak bebas yang Anda miliki pada mesin cuci Anda.
Langkah 11: Refleksi
Sayangnya, setiap sisi proyek kami mengalami hambatan waktu yang besar, dan kami tidak dapat menyelesaikan desain kami pada tanggal target kami. Setiap anggota tim kami akhirnya berkolaborasi dalam setiap aspek lain dari desain kami setidaknya sampai batas tertentu, yang mengarah pada penurunan waktu kurva pembelajaran. Ini, ditambah dengan keinginan untuk merancang produk dengan sumber daya luar sesedikit mungkin (karena kita semua ingin membuat bagian masing-masing dari awal), menghasilkan banyak roda yang diciptakan kembali.
Setiap orang yang mengerjakan proyek belajar lebih banyak tentang aspek-aspek lain dari proyek tersebut. Membuat perangkat lunak melakukan tindakan tertentu adalah satu hal, kemudian membuat perangkat lunak bekerja sama dengan perangkat keras adalah hal lain. Saya akan mengatakan bahwa penting bahwa siapa pun yang mengerjakan aspek pengkodean proyek ini, harus akrab dengan pembuat kode proyek kami.
Secara keseluruhan, kami tidak dapat mencapai apa yang kami inginkan. Namun, saya merasa bahwa kami berada di jalur yang benar dan kami semua menemukan dan mempelajari konsep-konsep baru yang dapat kami terapkan pada proyek-proyek masa depan.
Direkomendasikan:
Tampilan Ferrofluid yang Memukau: Diam-diam Dikendalikan oleh Elektromagnet: 10 Langkah (dengan Gambar)
Tampilan Ferrofluid yang Memukau: Diam-diam Dikendalikan oleh Elektromagnet: Penafian: Instruksi ini tidak akan memberikan cara langsung untuk membangun tampilan ferrofluid besar seperti "Ambil" kami. Proyek itu begitu besar dan mahal sehingga siapa pun yang ingin membangun sesuatu yang serupa hampir pasti akan memiliki
Cara Membuat Smart Pot Dengan NodeMCU yang Dikendalikan oleh Aplikasi: 8 Langkah
Cara Membuat Smart Pot Dengan NodeMCU yang Dikendalikan oleh Aplikasi: Dalam panduan ini kami akan membuat Smart Pot yang dikendalikan oleh ESP32 dan Aplikasi untuk smartphone (iOS dan Android). Kami akan menggunakan NodeMCU (ESP32) untuk konektivitas dan Blynk Library untuk cloud IoT dan Aplikasi di smartphone.Akhirnya kita
Lampu LED Cerdas yang dikendalikan oleh Smartphone Bluetooth: 7 Langkah
Lampu LED Cerdas yang dikendalikan oleh Smartphone Bluetooth: Saya selalu bermimpi untuk mengontrol peralatan pencahayaan saya. Kemudian seseorang membuat lampu LED warna-warni yang luar biasa. Saya baru-baru ini menemukan Lampu LED oleh Joseph Casha di Youtube. Terinspirasi olehnya, saya memutuskan untuk menambahkan beberapa fungsi sambil
Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: 5 Langkah
Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: "Lampu Latihan Pernapasan" dijelaskan di sini adalah cahaya berdenyut sederhana dan relatif murah yang dapat mendukung Anda dalam latihan pernapasan Anda dan membantu Anda untuk menjaga ritme pernapasan yang konstan. Mungkin juga digunakan mis. sebagai penenang n
Menggambar Lengan yang Dikendalikan oleh Suara - Arduino School Project: 4 Langkah (dengan Gambar)
Menggambar Lengan yang Dikendalikan oleh Suara - Proyek Sekolah Arduino: Ini adalah pertama kalinya saya bekerja dengan Arduino, dan bekerja dengan sesuatu seperti ini, jadi maaf jika saya membuat kesalahan! Saya mendapat ide ini ketika saya memikirkan hobi saya, yaitu menggambar dan musik. Jadi saya mencoba menggabungkan keduanya menjadi ini! Sebuah sel