Inhoudsopgave:

Prothetische arm werken met een myosensor - Ajarnpa
Prothetische arm werken met een myosensor - Ajarnpa

Video: Prothetische arm werken met een myosensor - Ajarnpa

Video: Prothetische arm werken met een myosensor - Ajarnpa
Video: Nadia is een van de eersten in Nederland met een 'robot-arm' 2024, November
Anonim
Image
Image

Dit project is de ontwikkeling van een armprothese voor geamputeerde mensen. Het doel van dit project is het creëren van een betaalbare armprothese voor mensen die zich geen professionele arm kunnen veroorloven.

Aangezien dit project zich nog in de prototypefase bevindt, kan het altijd beter, want voorlopig kan het alleen de handpalm openen en sluiten om dingen te kunnen pakken! Desalniettemin is het een doe-het-zelf prothetische arm die thuis of in een lokaal fablab kan worden gedaan.

Stap 1: Benodigde materialen, gereedschappen en machines

Machines:

  1. 3D-printer
  2. Lasersnijder
  3. Desktop CNC-machine

Gereedschap:

  1. Vislijn
  2. 3 mm filament
  3. Oefening
  4. Superlijm
  5. Gatentang
  6. Multimeter
  7. Soldeerstation
  8. Bewerkbare was
  9. Siliconen voor mallen

Materialen:

  1. Koperen plaat
  2. 1x ATMEGA328P-AU
  3. 1x 16MHz kristal
  4. 1x 10k weerstand
  5. 2x 22pF condensatoren
  6. 1x 10uF condensator
  7. 1x 1uF condensator
  8. 1x 0.1uF condensator
  9. 1x Myosensor
  10. 5x micro-servomotoren
  11. 1x Arduino UNO

Software:

  1. Arduino IDE
  2. Fusion360
  3. Cura
  4. Adelaar
  5. GIMP

Stap 2: 2D- en 3D-ontwerp

2D- en 3D-ontwerp
2D- en 3D-ontwerp
2D- en 3D-ontwerp
2D- en 3D-ontwerp
2D- en 3D-ontwerp
2D- en 3D-ontwerp

3D-ontwerp

De eerste stap was om de vingers, handpalm en onderarm van de prothetische arm te ontwerpen, rekening houdend met de elektronica die in de prothetische arm zou gaan. Om eerlijk te zijn heb ik als basis het open source inmoov project gebruikt en ben ik van daaruit begonnen.

De handpalm is een vrij moeilijk onderdeel om te ontwerpen, omdat de vingers verschillende verhoudingen tussen hen moeten hebben. Dus:

Fingers: Ik heb de vingers gedownload van het inmoov-project.

Palm:

  1. Ik heb eerst de lay-out van de palm geschetst en geëxtrudeerd.
  2. Vervolgens heb ik gaten gemaakt voor de verbindingen van de vinger en onderarm met behulp van schetsen, het snij-commando en het filet-commando.
  3. Daarna moest ik buizen maken om de vislijnen erin te kunnen halen, zodat ik de vingers via de motoren kan besturen.
  4. Ten slotte moesten er gaten in de handpalm worden gemaakt, zodat de handpalm gesloten kon worden wanneer aan de vislijn werd getrokken.

Onderarm:

  1. In verschillende vlakken heb ik twee schetsen gemaakt en de opdracht ellips gebruikt. Ik heb daarna het loft-commando gebruikt om de gewenste vorm te creëren.
  2. Daarna werd het shell-commando gebruikt om het hol te maken en het split-commando om het in tweeën te snijden, zodat ik erin kan ontwerpen en voor de beste toegankelijkheid voor wanneer ik mijn elektronica erin monteer.
  3. Er is ook een schets gemaakt in de buurt van de pols, geëxtrudeerd en verbonden met de hoofdonderarm, zodat deze verbinding kan maken met de handpalm.
  4. Met de zichtbaarheid om in de onderarm te ontwerpen, heb ik een schets gemaakt in de afmetingen van de vijf motoren die ik zou gebruiken, één voor elke vinger, en mijn PCB (printplaat) die ik zou gebruiken. Ik heb ze vervolgens geëxtrudeerd totdat ze de gewenste hoogte bereikten en de onnodige onderdelen achter in de cilinder verwijderd met behulp van backspace.
  5. Ten slotte zijn openingen voor bouten ontworpen, op een manier die niet zo zichtbaar is op het algehele ontwerp, zodat de onderarm kan worden gesloten met vergelijkbare commando's als hierboven.

Toen ik het ontwerp afmaakte, selecteerde ik elk lichaam en downloadde het als een.stl-bestand en ik heb ze afzonderlijk in 3D geprint.

2D-ontwerp

Omdat ik wilde dat mijn vislijnen gescheiden werden terwijl ze door de motoren worden bediend, besloot ik er geleidingssleuven voor te maken. Hiervoor hoefde ik niet echt iets nieuws te ontwerpen, maar de kleinere ellips te gebruiken voor wanneer ik het loft-commando gebruikte om de onderarm te maken.

Ik heb de schets geëxporteerd als een.dxf-bestand nadat ik de lasersnijder had gebruikt. Nadat ik mijn gewenste vorm had, boorde ik gaten van 0,8 mm in de gleuf die ik nodig vond.

Stap 3: 3D printen

3d printen
3d printen
3d printen
3d printen
3d printen
3d printen
3d printen
3d printen

Na het exporteren van elk stl-bestand, heb ik Cura gebruikt om de.g-code van de verschillende delen van de vingers, de handpalm en de onderarm te genereren. De gebruikte instellingen worden geïllustreerd op de afbeeldingen hierboven. Het materiaal van de 3D-geprinte onderdelen is PLA.

Stap 4: Vormen en gieten

Vormen en gieten
Vormen en gieten
Vormen en gieten
Vormen en gieten
Vormen en gieten
Vormen en gieten

Het doel van het gieten van de handpalm is dat de prothetische arm een sterkere grip heeft, omdat PLA glad kan zijn.

3D-ontwerp

  1. Met behulp van de reeds bestaande schets van de handpalm, probeerde ik onze handpalm na te bootsen door er een soort cirkels op te ontwerpen met behulp van het boogcommando.
  2. Daarna heb ik ze op verschillende hoogten geëxtrudeerd en het filet-commando gebruikt om de randen van de binnenste "cirkels" glad te maken.
  3. Vervolgens ontwierp ik een doos met dezelfde afmetingen als mijn bewerkbare was en ik plaatste het negatief van mijn ontwerp daar met behulp van de snede in het combineercommando.

CAM-proces

Nadat het ontwerp klaar was om te worden gefreesd met behulp van de desktop CNC-machine, moest ik daarvoor de gcode genereren. In mijn geval gebruikte ik de Roland MDX-40 CNC-machine!

  1. Eerst ging ik naar de CAM-omgeving van Fusion360.
  2. Vervolgens selecteerde ik een "nieuwe setup" in het setup-menu.
  3. Ik koos de juiste parameters (zie foto's) en drukte op ok.
  4. Vervolgens koos ik onder het 3D-menu voor adaptief wissen en selecteerde ik de juiste parameters na het invoegen van de tool die ik gebruikte, zoals weergegeven in de afbeeldingen.
  5. Ten slotte koos ik voor de adaptieve opruiming en klikte op het postproces. Ik zorgde ervoor dat het voor de roland machine mdx-40 was en klikte op ok om de gcode te krijgen.
  6. Daarna heb ik het blok was met de machine naar mijn ontwerp gefreesd.

Het silicium gieten

  1. Eerst heb ik de twee oplossingen van silicium zorgvuldig gemengd om geen luchtbellen te veroorzaken, volgens de datasheet (link te vinden op de materialen), rekening houdend met de mengverhouding, de potlife en de ontvormtijd.
  2. Daarna goot ik het vanaf het laagste punt in mijn mal en zorgde ervoor dat het contactpunt constant bleef en de diameter van de gegoten oplossing zo dun mogelijk was om luchtbellen te voorkomen.
  3. Nadat ik de siliconen in mijn mal had gegoten, moest ik ervoor zorgen dat er geen luchtbellen in zaten, dus ik trilde de mal met een boor met een schuine spijker.
  4. Ten slotte, omdat ik vergat het in mijn ontwerp te doen, sloeg ik gaten in mijn siliconen nadat het klaar was, met behulp van de gatentang, op een manier dat ze overeenkomen met de gaten op het oppervlak van de handpalm.

Stap 5: Ontwerp en productie van elektronica

Elektronica ontwerp en productie
Elektronica ontwerp en productie
Elektronica ontwerp en productie
Elektronica ontwerp en productie
Elektronica ontwerp en productie
Elektronica ontwerp en productie

Om mijn bord te ontwerpen en te begrijpen wat er in de pinnen van de microcontroller gebeurt, moest ik de datasheet ervan lezen. Als basis-PCB heb ik de micro satshakit gebruikt en deze vervolgens aangepast aan de behoeften van mijn systeem.

Aangezien satshakit een DIY op arduino gebaseerd bord is, zou ik het kunnen aanpassen aan mijn zoekopdrachten naar verbindingen van mijn onderdelen met de arduino. Dus de myosensor maakt verbinding met de Arduino met behulp van één GND-pin, één VCC-pin en één analoge pin. Terwijl één servomotor één GND-pin, één VCC-pin en één PWM-pin gebruikt. Dus ik moest in totaal zes GND- en VCC-pinnen blootleggen, rekening houdend met de voeding van het bord, één analoge en vijf PWM-pinnen. Ook moest ik rekening houden met het blootleggen van de pinnen voor het programmeren van het bord (die MISO, MOSI, SCK, RST, VCC en GND zijn).

De stappen die ik nam waren:

  1. Eerst heb ik de adelaarsbestanden van de micro-satshakit gedownload.
  2. Vervolgens heb ik de micro-satshakit aangepast aan mijn behoeften met behulp van Eagle. Een handleiding over het gebruik van Eagle vindt u hier en hier.
  3. Nadat ik mijn bord had geroot, heb ik het geëxporteerd als een png-bestand en het interne en externe pad ervan voorbereid met behulp van GIMP. Meer over hoe je dat doet, vind je hier.

Nadat ik de interne en externe paden van mijn bord als-p.webp

Ten slotte heb ik alles gesoldeerd wat ik nodig had volgens mijn adelaarsbord. De afbeelding van het schema en de gesoldeerde print vind je hierboven.

De reden om mijn eigen printplaat te maken in plaats van een Arduino UNO te gebruiken, is de ruimte die ik bespaar als ik mijn eigen bord gebruik.

Stap 6: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Dus, nadat de vingers waren afgedrukt:

  1. Ik moest de binnenste gaten boren met een boor met een diameter van 3,5 mm en de buitenste gaten met een boor met een diameter van 3 mm. Binnengaten betekent het deel dat wanneer de onderdelen zijn verbonden, het van de binnen- en buitenopening is, het deel dat wanneer het is verbonden van buitenaf is.
  2. Daarna moest ik de eerste met de tweede vinger superlijmen en de derde met de vierde.
  3. Daarna heb ik de delen 1+2 met 3+4 met 5 door de kleine gaatjes verbonden met een filament met een diameter van 3 mm.
  4. Ten slotte waren de vingers klaar om te worden gemonteerd met de handpalm en vervolgens met de onderarm.

Het was dus tijd om de vislijn door de vingers te halen.

De ene lijn ging van de achterkant van de vinger door de pijp op de vinger-palm connector en naar de onderarm en de andere lijn ging van de voorkant van de vinger naar het gat aan de binnenkant van de handpalm en naar de onderarm

Een speciale opmerking is om de vislijn door een stuk hout te halen dat een gat heeft met de diameter ervan en een knoop te maken. Anders kan de lijn bij het trekken langs de vinger naar beneden gaan, wat mij is overkomen, hoeveel knopen ik ook heb gemaakt.

  • Nadat de vislijn door de vingers is gegaan, moeten de handpalm en de onderarm worden verbonden door enkele 3D-geprinte botsbouten,
  • Ik haalde de lijnen opnieuw door de lasergesneden sleuf om ze te scheiden en verbond ze vervolgens met de servomotoren.
  • Het bevestigen van de vislijn aan de juiste positie van de servo is een beetje uitdagend. Maar wat ik deed was de uiterste posities van de vinger nemen en deze verbinden met de uiterste positie van de servo.
  • Nadat ik de juiste posities had gevonden, boorde ik gaten in de speciale sleuven voor de servo's en schroefde de servo's op de juiste plaatsen om ervoor te zorgen dat twee van de servo's iets hoger waren dan de andere, anders zouden ze tijdens hun werking met elkaar in botsing komen.

Stap 7: Programmeren

Programmeren
Programmeren

Voordat ik het programma schreef, moest ik de aangepaste micro-satshakit programmeerbaar maken. Om dat te doen, moest ik de onderstaande stappen volgen:

  1. Sluit de Arduino Uno aan op de pc.
  2. Selecteer de juiste poort en het Arduino Uno-bord onder tools.
  3. Zoek en open de schets "ArduinoISP" onder > Bestand > Voorbeelden.
  4. Upload de schets naar de Arduino.
  5. Koppel de Arduino los van de pc.
  6. Verbind het bord met de Arduino volgens het schema in de afbeelding.
  7. Sluit de Arduino aan op de pc.
  8. Selecteer het bord "Arduino/Genuino Uno" en de programmer "Arduino as ISP".
  9. Klik op >Extra >Bootloader branden.
  10. Nadat de bootloader met succes is voltooid, kunnen we ons programma schrijven:

// inclusief de bibliotheek die ik heb gebruikt voor de servomotoren

#include #include SoftwareSerial mySerial(7, 8); #define MYO_PIN A0 int sensorValue; vlotter spanning; // wijs een naam aan mijn servo VarSpeedServo servo1; VarSpeedServo-servo2; VarSpeedServo-servo3; VarSpeedServo-servo4; VarSpeedServo-servo5; #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 void setup(MIJN){_UTPINMode,); // de pin waarmee ik mijn motor servo1.attach (THUMB_PIN) heb bevestigd; servo2.attach (INDEX_PIN); servo3.attach (MIDDLE_PIN); servo4.attach (RINGFINGER_PIN); servo5.attach(PINKY_PIN); standaardpositie (DUIM, 40); standaardpositie (INDEX, 40); defaultPositie (MIDDELLIJKE, 40); defaultPositie (RINGVINGER, 40); standaardPositie (PINKY, 40); mijnSerial.begin(9600); mySerial.print("Initialiseren…"); } void loop(){ sensorValue = analogRead(A0); spanning = sensorwaarde * (5,0 / 1023,0); mySerial.println(spanning); vertraging (100); if (voltage > 1){ closePosition(PINKY, 60); closePositie(RINGVINGER, 60); closePositie (MIDDELLIJKE, 60); closePositie(INDEX, 60); closePositie(DUIM, 60); } else{ openPositie(PINKY, 60); openPositie(RINGFIGER, 60); openPositie(MIDDEL, 60); openPositie(INDEX, 60); openPositie(DUIM, 60); } } void defaultPosition(uint8_t finger, uint8_t _speed){ if(finger == PINKY) servo5.write(90, _speed, true); anders if(vinger == RINGVINGER) servo4.write(70, _speed, true); anders if (vinger == MIDDEN) servo3.write (20, _speed, true); anders if(vinger ==INDEX) servo2.write(20, _speed, true); anders if (vinger == DUIM) servo1.write (20, _speed, true); } void closePosition(uint8_t finger, uint8_t _speed){ if(finger == PINKY) servo5.write(180, _speed, true); anders if(vinger == RINGVINGER) servo4.write(180, _speed, true); anders if(vinger == MIDDEN) servo3.write(180, _speed, true); anders if(vinger == INDEX) servo2.write(180, _speed, true); anders if (vinger == THUMB) servo1.attach (180, _speed, true); } void openPosition (uint8_t vinger, uint8_t _speed) {if(vinger == PINKY) servo5.write(0, _speed, true); anders if(vinger == RINGVINGER) servo4.write(0, _speed, true); else if(vinger == MIDDEN) servo3.write(0, _speed, true); anders if(vinger == INDEX) servo2.write(0, _speed, true); anders if(vinger == DUIM) servo1.write(0, _speed, true); } //Na het schrijven van het programma uploaden we het naar het bord door >Sketch>Uploaden met Programmer //Nu kun je je micro satshakit loskoppelen van je Arduino en het via de powerbank aandrijven //En voila!! Je hebt een prothetische arm

Aanbevolen: