Isi kandungan:

[WIP] Membuat Drawbot Dikendalikan oleh Myo Armband: 11 Langkah
[WIP] Membuat Drawbot Dikendalikan oleh Myo Armband: 11 Langkah

Video: [WIP] Membuat Drawbot Dikendalikan oleh Myo Armband: 11 Langkah

Video: [WIP] Membuat Drawbot Dikendalikan oleh Myo Armband: 11 Langkah
Video: Custom Center Console 2024, Julai
Anonim
[WIP] Membuat Drawbot yang Dikendalikan oleh Myo Armband
[WIP] Membuat Drawbot yang Dikendalikan oleh Myo Armband

Helo semua!

Beberapa bulan yang lalu, kami memutuskan untuk mencuba dan menyelesaikan idea membina drawbot bingkai terbuka yang hanya menggunakan band Myo untuk mengendalikannya. Semasa pertama kali memulakan projek, kami tahu bahawa ia perlu dipecah menjadi beberapa fasa yang berbeza. Fasa utama pertama kami adalah mencuba dan membungkus kepala dengan reka bentuk bingkai terbuka untuk bot undian kami. Ini adalah persediaan yang tidak standard, dan kami ingin melihat apa kelebihan reka bentuk ini.

Kedua, kita tahu bahawa membina prototaip ini hanya akan berguna untuk diri kita sendiri. Reka bentuk dan rancangan kami adalah untuk memindahkan bingkai terakhir kami ke dalam logam, dan menggunakan arduino, menerima kedudukan kami dari pecutan dan giroskop yang dibangun ke dalam band Myo. Maklumat itu kemudian akan dihantar ke motor, dan akan meniru gerakan pengguna. Kami tahu bahawa ini akan menjadikan fasa kedua kami terbahagi kepada tiga aspek utama:

  1. pengaturcaraan dari Myo ke motor, melalui Arduino
  2. reka bentuk elektrik untuk menterjemahkan data kami menjadi bergerak
  3. reka bentuk mekanikal untuk membuat bingkai bersaiz cukup yang akan memudahkan pergerakan kita

Setiap anggota pasukan kami merasa paling selesa dengan bahagian unik dari proses reka bentuk kami, jadi kami memutuskan untuk memutuskan kerja di antara setiap orang. Kami juga menyimpan blog sepanjang proses reka bentuk kami untuk mengesan pemikiran kami dari hari ke hari, berbanding dengan penampilan yang lebih global.

Langkah 1: Apa yang Kami Rancangkan

Image
Image

Matlamat kami adalah untuk menggabungkan kedua-dua produk ini dengan cara yang belum pernah kami lihat sebelumnya. Kami merancang untuk membuat relay langsung antara gelang tangan Myo dan versi reka bentuk kami sendiri yang diilhamkan oleh Evil Mad Scientist's AxiDraw.

Langkah 2: Senarai Bahan Prototaip

2 2 x 4 papan kayu 1 Tali pinggang atau rantai berukuran> = 65 "4 Kuku kayu 3 Gigi dengan gigi yang sesuai dengan tali pinggang atau rantai 4 Plat berlubang 3 x 8 vex 30" Rubber spacers 8 1 "diameter pencuci 1 1" diameter kayu dowel 1 '8 screw Vex 1 "8 ½" Vex screw 8 2 "Vex screw 8 ¼" Spacer getah 48 Vex mur 1 Tali zip kecil

Langkah 3: [Prototaip] Membuat Kayu Dalam Senjata dan Interior Kereta Kami

[Prototaip] Kerja Kayu Interior Senjata dan Kereta Kita
[Prototaip] Kerja Kayu Interior Senjata dan Kereta Kita

Kami meraih dua 2x4 dan memotongnya dengan panjang yang sama (33 ¼ )

Dengan menggunakan gergaji meja, kami membuat lekukan di sepanjang bahagian papan yang sempit deep "dalam dan ⅛" lebar di tengah

Potong dowel menjadi potongan 2 2 "dan gerudi lubang di tengah dowel dengan diameter ¼" dengan menggunakan gerudi

Langkah 4: [Prototaip] Membuat Kereta Kita

[Prototaip] Membuat Kereta Kita
[Prototaip] Membuat Kereta Kita
[Prototaip] Membuat Kereta Kita
[Prototaip] Membuat Kereta Kita
[Prototaip] Membuat Kereta Kita
[Prototaip] Membuat Kereta Kita

Sebaiknya kami menggunakan dua keluli berlubang vex 7x7 tetapi yang kami ada hanyalah jalur 2x7 jadi kami mengikatnya bersama dalam konfigurasi "X"

Tumpukan 5 spacer getah ⅜”dan selamatkan sudut-sudut plat vex antara satu sama lain

Pasangkan dowel kayu dengan longgar seperti yang ditunjukkan pada gambar 1 sehingga berputar dengan bebas dengan jarak sekitar 2 di antara mereka menggunakan gambar untuk melihat di mana roda gigi harus diletakkan pada saat ini kita menggunakan mesin basuh tetapi kemudian mendapati bahawa roda gigi vex plastik kecil berfungsi lebih baik.

Dengan menggunakan "skru vex," spacer getah ¼ "dan mesin basuh diameter 1" mengamankan mesin basuh dalam kedudukan tinggi seperti yang ditunjukkan pada gambar 1 (kami menggunakan roda gigi plastik hijau kerana kami tidak dapat mencari mesin basuh yang betul) pastikan mesin basuh dapat berpusing dengan mudah dan masuk ke lekukan papan.

Langkah 5: [Prototaip] Menggabungkan Semuanya

[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya
[Prototaip] Menggabungkan Semuanya

Letakkan papan di permukaan dan geser kereta ke tengah sehingga mesin basuh memegang kereta di atas papan dan di kedua sisi papan paku gear ke bawah sehingga mereka berputar dengan bebas. Pakailah roda gigi ke satu hujung papan kedua, pastikan ia berada di tengah dan luncurkannya ke kereta yang tegak lurus ke papan pertama.

Sekarang tali pinggang mesti dililitkan melalui sistem seperti yang ditunjukkan, perhatikan bagaimana dowel berada di bahagian luar tali pinggang dan bagaimana tidak ada apa-apa di tengah-tengah casis yang dapat menghalang tali pinggang semasa bergerak.

Kini tali pinggang perlu diikat di sisi papan yang tidak mempunyai gear. Kami menggunakan kuku dan tali leher tambahan untuk mengikat tali. Tetapi kaedah yang digunakan tidak menjadi masalah selagi tali pinggang berlabuh di tempat itu

Langkah 6: [Prototaip] Selesai dan Bergerak

Image
Image

Sepatutnya, tarik tali pinggang dalam kombinasi yang berbeza dan lihat kesan yang berbeza pada lengan!

Langkah 7: Menerjemahkan Model Kami ke dalam Reka Bentuk Selesai Kami

Menterjemahkan Model Kami ke dalam Reka Bentuk Selesai Kami
Menterjemahkan Model Kami ke dalam Reka Bentuk Selesai Kami
Menterjemahkan Model Kami ke Reka Bentuk Selesai Kami
Menterjemahkan Model Kami ke Reka Bentuk Selesai Kami

Sebaik sahaja kami menyelesaikan prototaip, kami sangat gembira. Tidak ada antara kita yang yakin bagaimana sistem ini berfungsi sebelum pemasangan. Tetapi, setelah bahagian kami bergabung, kami dengan cepat menemui apa yang kami sukai dan bagaimana kami akan memperbaikinya ketika membuat reka bentuk akhir. Aduan utama kami dengan sistem yang harus diselesaikan adalah:

  1. Skala
    1. Prototaip kami sangat besar dan tidak berat sebelah, yang menjadikannya cenderung tergelincir di tepi lengan kami
    2. Kereta itu jauh lebih besar daripada yang diperlukan, dan mempunyai banyak ruang terbuang
    3. Tali pinggang kami (tapak tangki vex) jauh lebih besar daripada yang diperlukan, yang memperkenalkan lebihan ruang antara lengan
  2. Geseran

    1. Tapak kekacauan kami tidak melewati penggelek dowel kayu dengan mudah di semua sudut
    2. Plastik di atas kayu menjadikan kereta tidak mahu bergerak dalam banyak keadaan
  3. Bermotor

    Kita perlu menjadikan sistem ini berkuasa

Dengan mempertimbangkan perkara-perkara ini, kami membuat rancangan untuk reka bentuk akhir. Kami mahu drawbot dikendalikan dengan Myo melalui arduino, dan kami ingin membuat bingkai aluminium dan lebih kecil.

Untuk melakukan ini, kami mengambil peratusan prototaip asal kami, dan berangkat dari ukuran itu. Dengan menggunakan logam lembaran yang akan dimesin untuk memiliki saluran yang cukup lebar untuk melewati bantalan terlindung, kita akan mempunyai reka bentuk yang ringan namun kuat yang akan mempunyai toleransi penggunaan yang lebih tinggi.

Prototaip kami juga membolehkan kami, hanya dalam beberapa minit, untuk menentukan bagaimana putaran motor mempengaruhi kepala drawbot kami. Ini mendorong kita untuk memahami bahawa reka bentuk kawalan kita akan lebih mudah daripada yang kita jangkakan. Setelah diperiksa dengan lebih teliti, kami dapat mengetahui bahawa pergerakan motor adalah tambahan! Ini bermaksud bahawa setiap motor mempunyai kesan yang diingini secara bebas terhadap pergerakan kita, tetapi apabila kita menggabungkannya bersama-sama, mereka mula membatalkannya.

Sebagai contoh, jika dianggap seperti satah koordinat, motor yang terletak di hujung x negatif akan selalu cenderung menarik laci kita ke kuadran kedua dan keempat. Sebaliknya, motor yang terletak di hujung x positif akan selalu menjadikan laci masuk ke kuadran pertama dan ketiga. Sekiranya kita menggabungkan gerakan motor kita, ia akan membatalkan bahagian mengarahkan konflik itu, dan akan memperkuat bahagian yang setuju.

Langkah 8: Pengekodan

Walaupun saya bekerja dengan cukup luas di C beberapa tahun yang lalu, saya tidak mempunyai pengalaman dengan lua atau C ++, dan ini bermakna saya perlu menghabiskan banyak masa untuk melihat dokumentasi. Saya tahu bahawa tugas umum yang akan saya coba laksanakan adalah mendapatkan kedudukan pengguna dalam selang waktu dan kemudian menyerahkannya ke motor. Saya memutuskan untuk menyelesaikan tugas saya untuk mencerna bahagian yang saya perlukan dengan lebih baik.

1. Dapatkan Data dari Myo (lua)

Saya tahu bahawa saya perlu mencari cara untuk mengumpulkan maklumat dari Myo. Ini adalah bahagian pertama dari cabaran yang ingin saya hadapi. Untuk melakukan ini, saya ingin pengguna mengkalibrasi ukuran kanvas mereka sebelum mula melukis. Ini akan membolehkan saya mempunyai batasan untuk bekerja. Saya kemudian dapat menormalkan program antara pengguna yang berlainan dengan hanya mengambil peratusan kanvas maksimum sebagai data saya lulus. Saya memutuskan untuk mengadakan acara skrip yang akan melakukan pemeriksaan getOrientation setiap setengah saat, kerana ia membolehkan pemeriksaan tidak pernah melakukan lompatan liar yang perlu anda teka (misalnya, jika pengguna berayun kembali dan sebagainya).

Ini membuat sekatan pertama yang saya capai. Saya menemui batasan lua yang sangat besar, dan itu tidak membenarkan saya menunggu sebelum meneruskan skrip. Satu-satunya cara untuk melakukan tindakan ini adalah dengan menjeda CPU (yang akan menghentikannya secara global, bahkan menahan jam sistem), atau menggunakan perintah khusus OS. Dalam kod contoh saya, saya meninggalkan pemeriksaan OS asal yang saya lakukan (memberi komen). Ini setelah melakukan sejumlah besar penelitian dalam dokumentasi lua, dan dilakukan dengan memeriksa pemformatan jalur sistem. Ini ketika saya memutuskan saya perlu melihat dokumentasi untuk projek yang telah diterbitkan sebelumnya. Saya segera menyedari berapa banyak masa yang saya sia-siakan, dan segera menuju ke pemboleh ubah platform. Dengan itu, saya dapat melaksanakan perintah menunggu khusus OS dengan segera, berbanding hari-hari yang saya perlukan untuk menyusun penyelesaian sebelumnya.

Pada sekitar masa ini reka bentuk bermula dari aspek elektrikal, dan saya menangguhkan kerja pada aspek kod ini. Tujuannya adalah untuk mengetahui bagaimana motor kita berinteraksi dengan arduino.

2. Bekerja Di Sekitar Arduino (C ++)

Ketika kerja dengan papan roti kami menjadi semakin kompleks, saya belajar bahawa arduino tidak mampu melakukan multithreading. Ini adalah kunci yang besar dalam reka bentuk kod asal saya, dan setelah membaca lebih lanjut mengenai batasan yang dikemukakan dengan pengawal kami, saya mendapati bahawa saya perlu memprogram bagaimana arduino akan beralih di antara keduanya. Ini menjadi tumpuan usaha saya ketika tarikh akhir kami semakin hampir. Saya terpaksa membuang sebahagian besar skrip asal saya kerana ia dirancang untuk menulis data ke fail secara serentak dengan pengawal motor membaca fail tersebut. Ini untuk membolehkan fungsi antrian memastikan bahawa walaupun pengguna berada di depan laci kami, ia tidak akan merosakkan projek.

Saya memutuskan bahawa fungsi beratur harus disimpan, jika tidak dilaksanakan dengan cara yang sama seperti sebelumnya. Untuk melakukan ini, saya membuat vektor tatasusunan. Ini membolehkan saya tidak hanya menjaga semangat reka bentuk saya sebelumnya yang masih utuh, ia juga bermaksud saya tidak perlu menjejaki tempat saya dalam fail untuk membaca atau menulis. Sebagai gantinya, sekarang yang perlu saya buat hanyalah menambahkan nilai baru ke dalam vektor saya sekiranya pengguna bergerak (ujian awal kurang dari 1% perbezaan ukuran kanvas pada kedua x dan y dari kedudukan terakhir yang dirakam menyebabkan tidak ada rakaman data). Saya kemudian dapat mengambil nilai tertua dalam vektor saya dan dalam satu pertukaran, hantar ke kawalan motor, tuliskan ke fail kami, dan kemudian keluarkan dari vektor saya. Ini membersihkan banyak kebimbangan saya mengenai aliran IO yang berterusan.

Langkah 9: Elektrik

Image
Image
Elektrik
Elektrik

Walaupun saya pernah mengikuti kelas elektronik pada masa lalu, dan bekerja dengan baik dengan arduino. Saya belum pernah membuat arduino menerima maklumat dari sumber luar (myo), saya hanya mempunyai pengalaman mengeluarkan maklumat melalui arduino. Walau bagaimanapun, saya perlu memasang kabel motor di drawbot kami, dan mengusahakan kod agar mereka dapat bekerja dengan kod myo.

Bahan yang saya gunakan:

2 x motor Stepper

1 x Papan Roti

1 x Arduino (Uno)

2 x IC Pemandu L293DE

40 x wayar pelompat

2 x Peminat

1. Sambungkan Motor Stepper dan Kipas ke Papan Roti

Mengikuti rajah litar, kita dapat menyambungkan motor satu stepper kepada pemandu di papan roti. Kemudian, dengan gambarajah yang sama berlaku pada pemandu dan motor kedua, wayar jumper harus dipasang ke set pin yang berbeza di arduino (kerana motor pertama menempati ruang 4 yang lain).

Amaran / Petua:

Pemacu sangat kecil dan pin sangat berdekatan. Adalah lebih bijak untuk melepaskan kedua-dua pemandu supaya wayar tidak membingungkan.

Seterusnya adalah dengan memasang kipas. Ini cukup mudah, kipas yang saya ada adalah peminat pemproses komputer asas, yang positif dan kuat. Pasang kedua-duanya ke pin +/- masing-masing di papan roti, dan sudut masing-masing ke arah setiap pemandu. (Kami mendapati bahawa kerana motor stepper menerima banyak maklumat dan arahan dalam jangka masa yang panjang, pemandu cenderung terlalu panas dan berbau. Menambah kipas untuk menyejukkannya memperbaiki masalah ini).

2. Kod Arduino

Ini adalah bahagian yang mudah!

Buka Arduino IDE pergi ke tab "File" kemudian turun ke tab "contoh" yang akan turun lebih jauh dan menunjukkan tab "stepper" Kemudian anda ingin membuka "Stepper_OneStepAtATime"

Ini akan memuatkan kod contoh yang hampir dipasang dan dimainkan ke pendawaian arduino / motor. Kita mesti membuat penyesuaian kecil kerana kita akan menggunakan dua motor, yang akan saya paparkan di bawah. Anda mungkin juga harus membuat penyesuaian kecil bergantung pada pin mana yang telah Anda putuskan untuk digunakan, kerana Arduino IDE lalai ke pin 8-11.

Kod yang telah saya gunakan untuk membuat dua motor bergerak dalam "sync" adalah di bawah:

// # sertakan

const int stepsPerRevolution = 200;

Stepper myStepper1 (stepPerRevolution, 9, 10, 11, 12);

Stepper myStepper2 (stepPerRevolution, 4, 5, 6, 7);

int stepCount = 0;

batal persediaan () {// memulakan port bersiri: Serial.begin (9600); }

gelung kosong () {

myStepper1.step (1);

Serial.print ("langkah:");

Serial.println (stepCount);

stepCount ++;

kelewatan (0.5);

myStepper2.step (1); kelewatan (0.5); }

3. Kemungkinan Masalah

Masalah yang saya hadapi semasa proses ini tidak menggunakan contoh kod yang betul, menggunakan wayar jumper yang buruk, menggunakan IC pemacu yang salah.

Pastikan pemandu yang anda gunakan mampu mengawal motor

Periksa nombor siri dan periksa spesifikasinya

Saya mengalami masalah dengan wayar jumper mati, yang menyebabkan motor saya berpusing dengan pelik

Saya terpaksa menggunakan multimeter untuk memeriksa setiap wayar

Dan selalu periksa semula kod anda untuk kesilapan kecil seperti kehilangan ";" arahan

Langkah 10: Mekanikal

Mekanikal
Mekanikal
Mekanikal
Mekanikal
Mekanikal
Mekanikal
Mekanikal
Mekanikal

1. Bahan

Untuk model pengeluaran lengan sepenuhnya, disarankan agar mereka diperbuat daripada bahan yang kuat namun ringan, kami merasakan bahawa aluminium sangat sesuai.

Kami menggunakan kepingan aluminium berukuran 032 yang dipotong hingga 9.125 "x 17.5" dan mengesan corak dari gambar yang ditunjukkan pada langkah sebelumnya.

2. Fabrikasi

Dengan menggunakan hemmer (mesin biru) kami menambahkan permata yang menghadap ke arah yang berlawanan sehingga apabila potongan itu dilanggar dan dilipat, kedua-dua hems tersebut akan saling menyatu membentuk satu bahagian yang lengkap.

Untuk selekoh besar kami menggunakan tennismith, kerana ketepatannya tinggi.

Sekarang untuk selekoh yang lebih kecil, anda akan mahu menggunakan mesin dengan kaki yang lebih kecil, di sinilah mesin seperti roto-die masuk. Kerana kaki yang lebih kecil, ia memungkinkan untuk membuat rehat yang lebih kecil, sayangnya, roto-die yang kami gunakan masih terlalu besar untuk rel kami dan ia cacat.

** Sebagai alternatif, jika anda tidak memiliki akses ke peralatan atau alat yang sesuai, maka pengganti dapat dibuat. **

Dalam kes kami, kami memotong lengan kami dari rel panel surya aluminium menggunakan pemotong plasma dan mengisar hujungnya dengan lancar kemudian mengikatnya ke belakang untuk membuat sistem rel dua sisi. Sebaik-baiknya, kami ingin mengimpal rel bersama, namun, tanpa akses ke stesen kimpalan, kami sebaliknya mengepit rel dan menggerudi kemudian mengikatnya bersama. Tetapi jika laluan ini diambil, maka perlu dilakukan perhatian khusus untuk menggunakan kunci pengunci dan mesin cuci untuk memastikan bahawa sekepingnya sedikit mungkin melenturkan.

3. Tali Pinggang

Untuk tali pinggang kami menggunakan beberapa tali pinggang pencetak 3D lama yang dapat kami selamatkan.

Tali pinggang tidak cukup lama pada mulanya jadi dengan menggunakan tiub penyusutan haba, kami menggabungkan dua keping untuk membuat satu yang panjangnya cukup panjang.

Gear hijau dan dowel kayu digantikan oleh bantalan cakera dengan mesin basuh ekstra lebar yang digunakan untuk mengelakkan tali pinggang tergelincir dari tempatnya.

4. Kereta

Dan akhirnya kereta itu terbuat dari lembaran aluminium 032 berukuran 5 "x 5", dengan gerudi lubang ditekan di mana skru dan pencuci yang sesuai dimaksudkan untuk pergi. Jaraknya akan berbeza-beza bergantung pada seberapa lebar rel anda dan berapa banyak ruang yang ada pada mesin basuh anda.

Langkah 11: Refleksi

Malangnya, setiap bahagian projek kami mengalami sekatan masa yang besar, dan kami tidak dapat menyelesaikan reka bentuk kami mengikut tarikh sasaran kami. Setiap ahli pasukan kami akhirnya berkolaborasi dalam setiap aspek lain dari reka bentuk kami hingga ke tahap tertentu, menyebabkan beberapa keluk pembelajaran merosot. Ini, ditambah dengan keinginan untuk merancang produk dengan sumber daya sekecil mungkin (kerana kita semua ingin membuat bahagian masing-masing dari awal), menghasilkan banyak roda yang diciptakan semula.

Setiap orang yang mengusahakan projek ini mengetahui lebih banyak mengenai aspek projek yang lain. Membuat perisian melakukan tindakan tertentu adalah satu perkara, maka membuat perisian berfungsi bersama dengan perkakasan adalah perkara lain. Saya ingin mengatakan bahawa adalah mustahak bagi sesiapa yang mengusahakan aspek pengekodan projek ini, sama seperti pengekod projek kami.

Secara keseluruhan, kami tidak dapat mencapai apa yang kami mahukan. Namun, saya merasakan bahawa kita berada di landasan yang betul dan kita semua menemui dan mempelajari konsep baru yang akan dapat kita terapkan pada projek-projek yang akan datang.

Disyorkan: