สารบัญ:

แขนเทียมที่ทำงานกับ Myosensor: 8 ขั้นตอน
แขนเทียมที่ทำงานกับ Myosensor: 8 ขั้นตอน

วีดีโอ: แขนเทียมที่ทำงานกับ Myosensor: 8 ขั้นตอน

วีดีโอ: แขนเทียมที่ทำงานกับ Myosensor: 8 ขั้นตอน
วีดีโอ: Myo Plus pattern recognition - Wolfgangs Story | Ottobock 2024, พฤศจิกายน
Anonim
Image
Image

โครงการนี้เป็นการพัฒนาแขนเทียมสำหรับผู้พิการทางสมอง เป้าหมายของโครงการนี้คือการสร้างแขนเทียมราคาไม่แพงสำหรับผู้ที่ไม่สามารถซื้อมืออาชีพได้

เนื่องจากโปรเจ็กต์นี้ยังอยู่ในขั้นตอนการสร้างต้นแบบ จะดีกว่าเสมอ เพราะตอนนี้ทำได้แค่เปิดปิดฝ่ามือเท่านั้นถึงคว้าของได้! อย่างไรก็ตาม มันคือแขนเทียม DIY ที่สามารถทำได้ที่บ้านหรือที่แล็บท้องถิ่น

ขั้นตอนที่ 1: วัสดุ เครื่องมือ และเครื่องจักรที่จำเป็น

เครื่องจักร:

  1. เครื่องพิมพ์ 3 มิติ
  2. เครื่องตัดเลเซอร์
  3. เครื่อง CNC ตั้งโต๊ะ

เครื่องมือ:

  1. สายการประมง
  2. เส้นใย 3mm
  3. เจาะ
  4. ซุปเปอร์กลู
  5. คีมเจาะรู
  6. มัลติมิเตอร์
  7. สถานีบัดกรี
  8. แว็กซ์แปรรูป
  9. แม่พิมพ์ซิลิโคน

วัสดุ:

  1. แผ่นทองแดง
  2. 1x ATMEGA328P-AU
  3. 1x 16MHz คริสตัล
  4. ตัวต้านทาน 1x 10k
  5. ตัวเก็บประจุ 2x 22pF
  6. ตัวเก็บประจุ 1x 10uF
  7. ตัวเก็บประจุ 1x 1uF
  8. ตัวเก็บประจุ 1x 0.1uF
  9. 1x Myosensor
  10. 5x ไมโครเซอร์โวมอเตอร์
  11. 1x Arduino UNO

ซอฟต์แวร์:

  1. Arduino IDE
  2. Fusion360
  3. คูรา
  4. อินทรี
  5. GIMP

ขั้นตอนที่ 2: การออกแบบ 2D และ 3D

การออกแบบ 2D และ 3D
การออกแบบ 2D และ 3D
การออกแบบ 2D และ 3D
การออกแบบ 2D และ 3D
การออกแบบ 2D และ 3D
การออกแบบ 2D และ 3D

การออกแบบ 3D

ขั้นตอนแรกคือการออกแบบนิ้ว ฝ่ามือ และปลายแขนของแขนเทียมโดยคำนึงถึงอุปกรณ์อิเล็กทรอนิกส์ที่จะนำไปใช้กับแขนเทียม พูดตามตรงฉันใช้เป็นฐานของโครงการโอเพ่นซอร์ส inmoov และฉันเริ่มต้นจากที่นั่น

ฝ่ามือเป็นส่วนที่ค่อนข้างยากต่อการออกแบบ เนื่องจากนิ้วควรมีอัตราส่วนต่างกัน ดังนั้น:

นิ้ว: ฉันดาวน์โหลดนิ้วจากโครงการ inmoov

ปาล์ม:

  1. ฉันร่างเค้าโครงของฝ่ามือก่อนแล้วรีดออก
  2. จากนั้นฉันก็ทำรูสำหรับเชื่อมต่อนิ้วและปลายแขนโดยใช้ภาพร่าง คำสั่งตัด และคำสั่งเนื้อ
  3. หลังจากนั้นฉันต้องทำท่อเพื่อให้สามารถผ่านสายเบ็ดเพื่อควบคุมนิ้วผ่านมอเตอร์ได้
  4. สุดท้ายต้องเพิ่มรูเข้าไปในฝ่ามือเพื่อให้สามารถปิดฝ่ามือได้เมื่อดึงสายเบ็ด

ปลายแขน:

  1. ในระนาบต่างๆ ฉันสร้างภาพสเก็ตช์สองภาพและใช้คำสั่งวงรี ฉันใช้คำสั่งห้องใต้หลังคาเพื่อสร้างรูปร่างที่ต้องการ
  2. หลังจากนั้น คำสั่งเชลล์ถูกใช้เพื่อทำให้กลวง และคำสั่ง split เพื่อตัดมันออกเป็นสองส่วน เพื่อให้ฉันสามารถออกแบบมันได้ และสำหรับการเข้าถึงที่ดีที่สุดสำหรับเวลาที่ฉันติดตั้งอุปกรณ์อิเล็กทรอนิกส์ภายใน
  3. มีการร่างภาพใกล้ข้อมือด้วย รีดและเชื่อมเข้ากับปลายแขนหลักเพื่อให้สามารถเชื่อมต่อกับฝ่ามือได้
  4. ด้วยความสามารถในการมองเห็นการออกแบบภายในปลายแขน ฉันจึงสร้างภาพร่างในขนาดของมอเตอร์ห้าตัวที่ฉันจะใช้ หนึ่งตัวต่อนิ้วแต่ละนิ้ว และ PCB (แผงวงจรพิมพ์) ที่ฉันจะใช้ จากนั้นฉันก็อัดมันออกมาจนได้ความสูงที่ต้องการและลบส่วนที่ไม่จำเป็นที่ด้านหลังของกระบอกสูบออกโดยใช้แบ็คสเปซ
  5. สุดท้าย ช่องสำหรับสลักได้รับการออกแบบในลักษณะที่มองไม่เห็นในการออกแบบโดยรวม เพื่อให้ปิดปลายแขนได้โดยใช้คำสั่งที่คล้ายคลึงกันด้านบน

เมื่อออกแบบเสร็จแล้ว ฉันเลือกแต่ละส่วนและดาวน์โหลดเป็นไฟล์.stl และพิมพ์ 3 มิติแยกกัน

การออกแบบ 2D

เนื่องจากฉันต้องการแยกสายการประมงออกจากกันในขณะที่กำลังขับเคลื่อนด้วยมอเตอร์ ฉันจึงตัดสินใจสร้างช่องนำทางสำหรับพวกมัน สำหรับสิ่งนี้ ฉันไม่ต้องออกแบบอะไรใหม่เลยจริงๆ แต่ใช้วงรีที่เล็กกว่าเมื่อฉันใช้คำสั่ง loft เพื่อสร้างปลายแขน

ฉันส่งออกภาพสเก็ตช์เป็นไฟล์.dxf หลังจากที่ฉันใช้เครื่องตัดเลเซอร์ หลังจากที่ได้รูปทรงที่ต้องการแล้ว ฉันก็เจาะรูขนาด 0.8 มม. ภายในช่องที่เห็นว่าจำเป็น

ขั้นตอนที่ 3: การพิมพ์ 3 มิติ

การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ

หลังจากส่งออกไฟล์ stl แต่ละไฟล์ ฉันใช้ Cura เพื่อสร้าง.gcode ของส่วนต่างๆ ของนิ้ว ฝ่ามือ และปลายแขน การตั้งค่าที่ใช้แสดงอยู่ในรูปภาพด้านบน วัสดุของชิ้นส่วนที่พิมพ์ 3 มิติคือ PLA

ขั้นตอนที่ 4: การขึ้นรูปและการหล่อ

การขึ้นรูปและการหล่อ
การขึ้นรูปและการหล่อ
การขึ้นรูปและการหล่อ
การขึ้นรูปและการหล่อ
การขึ้นรูปและการหล่อ
การขึ้นรูปและการหล่อ

จุดประสงค์ของการหล่อฝ่ามือคือเพื่อให้แขนเทียมมีด้ามจับที่แข็งแรงขึ้น เนื่องจาก PLA อาจลื่นได้

การออกแบบ 3D

  1. ฉันพยายามเลียนแบบฝ่ามือโดยใช้ภาพสเก็ตช์ที่มีอยู่แล้วของฝ่ามือโดยออกแบบวงกลมให้เป็นรูปวงกลมโดยใช้คำสั่งส่วนโค้ง
  2. หลังจากนั้น ฉันรีดมันที่ความสูงต่างกัน และใช้คำสั่ง fillet เพื่อทำให้ขอบของ "วงกลม" ด้านในเรียบขึ้น
  3. จากนั้น ฉันออกแบบกล่องที่มีขนาดเท่ากันกับแว็กซ์ที่แปรรูปได้ของฉัน และใส่ส่วนที่เป็นลบของการออกแบบของฉันที่นั่นโดยใช้การตัดในคำสั่งรวม

กระบวนการ CAM

หลังจากมีการออกแบบที่พร้อมสำหรับการกัดโดยใช้เครื่อง CNC บนเดสก์ท็อปแล้ว ฉันต้องสร้าง gcode สำหรับสิ่งนั้น ในกรณีของฉัน ฉันใช้เครื่อง CNC Roland MDX-40!

  1. อันดับแรก ฉันเข้าสู่สภาพแวดล้อม CAM ของ Fusion360
  2. จากนั้น ฉันเลือก "การตั้งค่าใหม่" ในเมนูการตั้งค่า
  3. ฉันเลือกพารามิเตอร์ที่ถูกต้อง (ดูรูป) แล้วกดตกลง
  4. ถัดไป ภายใต้เมนู 3 มิติ ฉันเลือกการปรับเคลียร์และเลือกพารามิเตอร์ที่เหมาะสมหลังจากใส่เครื่องมือที่ฉันใช้ตามที่แสดงในรูปภาพ
  5. สุดท้าย ฉันเลือกการหักบัญชีแบบปรับได้และคลิกที่กระบวนการโพสต์ ฉันแน่ใจว่ามันเป็นสำหรับเครื่องโรแลนด์ mdx-40 และคลิกตกลงเพื่อรับ gcode
  6. หลังจากนั้น ฉันโม่บล็อกขี้ผึ้งตามการออกแบบของฉันโดยใช้เครื่อง

การหล่อซิลิโคน

  1. ขั้นแรก ฉันผสมสารละลายซิลิกอนทั้งสองอย่างระมัดระวังเพื่อไม่ให้เกิดฟองอากาศ ตามเอกสารข้อมูล (ลิงก์ที่พบในวัสดุ) โดยคำนึงถึงอัตราส่วนการผสม อายุการใช้งานหม้อ และเวลาในการผลิต
  2. จากนั้น ฉันเทลงในแม่พิมพ์จากจุดต่ำสุด ตรวจสอบให้แน่ใจว่าจุดสัมผัสคงที่และเส้นผ่านศูนย์กลางของสารละลายที่เทบางที่สุดเท่าที่จะทำได้ เพื่อหลีกเลี่ยงการเกิดฟองอากาศ
  3. หลังจากหล่อซิลิกอนลงในแม่พิมพ์แล้ว ฉันต้องแน่ใจว่าไม่มีฟองอากาศอยู่ภายใน ดังนั้นฉันจึงเขย่าแม่พิมพ์โดยใช้สว่านที่มีตะปูเฉียง
  4. สุดท้าย เมื่อฉันลืมที่จะทำในการออกแบบของฉัน ฉันจึงเจาะรูลงในซิลิคอนหลังจากที่มันพร้อม โดยใช้คีมเจาะรูในลักษณะที่ตรงกับรูที่อยู่บนพื้นผิวของฝ่ามือ

ขั้นตอนที่ 5: การออกแบบและผลิตอุปกรณ์อิเล็กทรอนิกส์

การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์
การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์
การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์
การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์
การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์
การออกแบบและการผลิตอุปกรณ์อิเล็กทรอนิกส์

ในการออกแบบบอร์ดของฉันและทำความเข้าใจว่าเกิดอะไรขึ้นในหมุดของไมโครคอนโทรลเลอร์ ฉันต้องอ่านแผ่นข้อมูลของบอร์ด ในฐานะที่เป็น PCB พื้นฐาน ฉันใช้ micro satshakit จากนั้นจึงแก้ไขตามความต้องการของระบบ

เนื่องจาก satshakit เป็นบอร์ดที่ใช้ Arduino แบบ DIY ฉันสามารถแก้ไขได้ตามการค้นหาการเชื่อมต่อชิ้นส่วนของฉันกับ Arduino ดังนั้น myosensor เชื่อมต่อกับ Arduino โดยใช้พิน GND หนึ่งพิน VCC หนึ่งพินและพินอะนาล็อกหนึ่งอัน ในขณะที่เซอร์โวมอเตอร์หนึ่งตัวใช้หนึ่งพิน GND หนึ่งพิน VCC และหนึ่งพิน PWM ดังนั้น ฉันต้องเปิดเผยพิน GND และ VCC ทั้งหมดหกพิน โดยพิจารณาถึงกำลังของบอร์ด พินอะนาล็อกหนึ่งอัน และพิน PWM ห้าพิน นอกจากนี้ ฉันต้องนำมาพิจารณาเพื่อแสดงหมุดสำหรับการเขียนโปรแกรมของบอร์ด (ซึ่งได้แก่ MISO, MOSI, SCK, RST, VCC และ GND)

ขั้นตอนที่ฉันทำคือ:

  1. อันดับแรก ฉันดาวน์โหลดไฟล์อินทรีของ micro-satshakit
  2. ต่อไป ฉันแก้ไข micro-satshakit ตามความต้องการของฉันโดยใช้ Eagle คำแนะนำเกี่ยวกับวิธีการใช้ Eagle สามารถพบได้ที่นี่และที่นี่
  3. หลังจากรูทบอร์ดของฉันแล้ว ฉันส่งออกเป็นไฟล์-p.webp" />

หลังจากที่มีเส้นทางภายในและภายนอกของบอร์ดของฉันเป็น-p.webp

สุดท้ายนี้ ฉันบัดกรีทุกอย่างที่ต้องการตามกระดานอินทรีของฉัน ภาพของแผนผังและบอร์ดที่บัดกรีอยู่ด้านบน

เหตุผลในการสร้างบอร์ด PCB ของตัวเองแทนที่จะใช้ Arduino UNO คือพื้นที่ที่ผมประหยัดได้เมื่อใช้บอร์ดของตัวเอง

ขั้นตอนที่ 6: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

ดังนั้นหลังจากพิมพ์นิ้วมือแล้ว:

  1. ฉันต้องเจาะรูด้านในด้วยสว่านขนาดเส้นผ่านศูนย์กลาง 3.5 มม. และรูด้านนอกด้วยสว่านขนาดเส้นผ่านศูนย์กลาง 3 มม. รูใน หมายถึง ส่วนที่เมื่อต่อชิ้นส่วนแล้ว รูด้านในและรูด้านนอก ส่วนที่เมื่อต่อแล้วจะมาจากด้านนอก
  2. หลังจากนั้นฉันต้อง superglue ก่อนด้วยนิ้วที่สองและนิ้วที่สามกับนิ้วที่สี่
  3. หลังจากนั้น ฉันเชื่อมต่อชิ้นส่วน 1+2 กับ 3+4 กับ 5 ผ่านรูเล็กๆ โดยใช้เส้นใยที่มีเส้นผ่านศูนย์กลาง 3 มม.
  4. สุดท้ายนิ้วมือก็พร้อมที่จะประกอบกับฝ่ามือและปลายแขน

ดังนั้นถึงเวลาที่จะผ่านสายเบ็ดผ่านนิ้ว

เส้นหนึ่งลากจากด้านหลังของนิ้วผ่านท่อบนขั้วต่อฝ่ามือและถึงปลายแขน และอีกเส้นหนึ่งเดินจากด้านหน้าของนิ้วไปยังรูที่ด้านในของฝ่ามือและถึงปลายแขน

หมายเหตุพิเศษคือการส่งสายการประมงผ่านชิ้นไม้ที่มีรูที่มีเส้นผ่านศูนย์กลางของมันและทำเป็นปม มิฉะนั้นเมื่อดึงเส้นแล้วนิ้วก็อาจตกลงไปซึ่งเกิดขึ้นกับผมไม่ว่าจะทำกี่นอตก็ตาม

  • หลังจากที่สายเบ็ดผ่านนิ้วแล้ว ฝ่ามือและปลายแขนควรเชื่อมต่อกันด้วยสลักเกลียวของบอทที่พิมพ์ 3 มิติ
  • ฉันลากเส้นอีกครั้งผ่านช่องรูตัดด้วยเลเซอร์เพื่อแยกพวกมันออก จากนั้นจึงเชื่อมต่อเข้ากับเซอร์โวมอเตอร์
  • การติดสายเบ็ดเข้ากับตำแหน่งที่ถูกต้องของเซอร์โวนั้นค่อนข้างท้าทาย แต่สิ่งที่ฉันทำคือใช้ตำแหน่งสุดขีดของนิ้วและเชื่อมต่อกับตำแหน่งสุดขีดของเซอร์โว
  • หลังจากที่ฉันพบตำแหน่งที่ถูกต้องแล้ว ฉันเจาะรูเข้าไปในช่องพิเศษสำหรับเซอร์โวและขันเซอร์โวไปยังตำแหน่งที่ถูกต้องเพื่อให้แน่ใจว่าเซอร์โวสองตัวถูกยกขึ้นจากตำแหน่งอื่นเล็กน้อย ไม่เช่นนั้นจะชนกันระหว่างการทำงาน

ขั้นตอนที่ 7: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

ก่อนที่จะเขียนโปรแกรม ผมต้องทำให้ micro-satshakit ที่ดัดแปลงนั้นสามารถตั้งโปรแกรมได้ ในการทำเช่นนั้น ฉันต้องทำตามขั้นตอนด้านล่าง:

  1. เชื่อมต่อ Arduino Uno กับพีซี
  2. เลือกพอร์ตที่เหมาะสมและบอร์ด Arduino Uno ภายใต้เครื่องมือ
  3. ภายใต้ >ไฟล์ >ตัวอย่าง ค้นหาและเปิดแบบร่าง "ArduinoISP"
  4. อัปโหลดภาพร่างไปยัง Arduino
  5. ตัดการเชื่อมต่อ Arduino จากพีซี
  6. เชื่อมต่อบอร์ดกับ Arduino ตามแผนผังในภาพ
  7. เชื่อมต่อ Arduino กับพีซี
  8. เลือกบอร์ด "Arduino/Genuino Uno" และโปรแกรมเมอร์ "Arduino as ISP"
  9. คลิกเพื่อ >เครื่องมือ >เบิร์น Bootloader
  10. หลังจากที่ bootloader เสร็จเรียบร้อยแล้ว เราสามารถเขียนโปรแกรมของเราได้:

//รวมถึงห้องสมุดที่ฉันใช้สำหรับเซอร์โวมอเตอร์

#include #include ซอฟต์แวร์ซีเรียล mySerial(7, 8); #define MYO_PIN A0 int ค่าเซ็นเซอร์; แรงดันลอย; // ตั้งชื่อเซอร์โวของฉัน VarSpeedServo servo1; VarSpeedServo เซอร์โว2; VarSpeedServo เซอร์โว3; VarSpeedServo เซอร์โว4; VarSpeedServo เซอร์โว5; #define PINKY 5 #define PINKY_PIN 10 #define RINGFINGER 4 #define RINGFINGER_PIN 9 #define MIDDLE 3 #define MIDDLE_PIN 3 #define INDEX 2 #define INDEX_PIN 5 #define THUMB 1 #define THUMB_PIN 6 การตั้งค่าเป็นโมฆะ (){ pinMode (MYO_PIN, INPUT); //พินที่ฉันต่อมอเตอร์เซอร์โว1.attach(THUMB_PIN); servo2.attach (INDEX_PIN); servo3.attach (MIDDLE_PIN); servo4.attach (RINGFINGER_PIN); servo5.attach (PINKY_PIN); ตำแหน่งเริ่มต้น (THUMB, 40); ตำแหน่งเริ่มต้น (INDEX, 40); ตำแหน่งเริ่มต้น (MIDDLE, 40); ตำแหน่งเริ่มต้น (RINGFINGER, 40); ตำแหน่งเริ่มต้น (PINKY, 40); mySerial.begin(9600); mySerial.print("กำลังเริ่มต้น…"); } วงเป็นโมฆะ () { sensorValue = analogRead (A0); แรงดันไฟฟ้า = ค่าเซ็นเซอร์ * (5.0 / 1023.0); mySerial.println (แรงดันไฟฟ้า); ล่าช้า (100); ถ้า (แรงดันไฟฟ้า > 1) { closePosition (PINKY, 60); closePosition(นิ้วก้อย, 60); closePosition(กลาง, 60); closePosition(ดัชนี 60); ตำแหน่งปิด (THUMB, 60); } อื่น ๆ { openPosition (PINKY, 60); openPosition(ริงฟิเกอร์, 60); openPosition(กลาง, 60); openPosition(ดัชนี 60); ตำแหน่งเปิด (THUMB, 60); } } เป็นโมฆะ defaultPosition (uint8_t finger, uint8_t _speed) { if (finger == PINKY) servo5.write (90, _speed, true); อื่น if(finger == RINGFINGER) servo4.write(70, _speed, true); อื่น if(finger == MIDDLE) servo3.write(20, _speed, true); อื่น if(finger ==INDEX) servo2.write(20, _speed, true); อื่น if(finger == THUMB) servo1.write(20, _speed, true); } เป็นโมฆะ closePosition (uint8_t finger, uint8_t _speed) { if (finger == PINKY) servo5.write (180, _speed, true); อื่น if(finger == RINGFINGER) servo4.write(180, _speed, true); อื่น if(finger == MIDDLE) servo3.write (180, _speed, true); อื่น if(finger == INDEX) servo2.write(180, _speed, true); อื่น if(finger == THUMB) servo1.attach(180, _speed, true); } เป็นโมฆะ openPosition (uint8_t finger, uint8_t _speed) { if (finger == PINKY) servo5.write (0, _speed, true); อื่น if(finger == RINGFINGER) servo4.write(0, _speed, true); อื่น if(finger == MIDDLE) servo3.write(0, _speed, true); อื่น if(finger == INDEX) servo2.write(0, _speed, true); อื่น if(finger == THUMB) servo1.write(0, _speed, true); } //หลังจากเขียนโปรแกรม เราอัปโหลดไปยังบอร์ดโดย >Sketch>อัปโหลดโดยใช้โปรแกรมเมอร์ //ตอนนี้คุณสามารถถอด micro satshakit ออกจาก Arduino และจ่ายไฟผ่าน power bank // และ voila!! คุณมีแขนเทียม

แนะนำ: