Innehållsförteckning:

Robotarm som styrs av Arduino och PC: 10 steg
Robotarm som styrs av Arduino och PC: 10 steg

Video: Robotarm som styrs av Arduino och PC: 10 steg

Video: Robotarm som styrs av Arduino och PC: 10 steg
Video: Вебинар Роботы без заборов 2024, Juli
Anonim
Image
Image
Teori bakom projektet
Teori bakom projektet

Robotarmar används flitigt i industrin. Oavsett om det är för montering, svetsning eller ens en används för dockning på ISS (International Space Station), de hjälper människor i arbetet eller de ersätter människan totalt. Arm som jag har byggt är en mindre representation av robotarm som ska användas för att flytta föremål. Den styrs av arduino pro mini som redan har inbyggt bibliotek för styrning av servon. Servos styrs av PWM (Pulse Width Modulation) som inte är svårt att programmera men det här biblioteket gör det enklare. Användaren kan styra servon med potentiometrar som är utformade för att fungera som spänningsdelare eller från program på PC som använder fyra reglage för att styra servomotorer.

För detta projekt var jag tvungen att designa min anpassade PCB och göra det, skapa 3D -modeller av armen och skriva kod som styr allt. Ovanpå det kodade jag ytterligare program i python som skickar signaler till arduino som lyckas avkoda den signalen och flytta servon till position som användaren har ställt in.

Steg 1: Teori bakom projektet

Teori bakom projektet
Teori bakom projektet

Arduino är bra på det sättet att det erbjuder gratis bibliotek att arbeta med. För detta projekt använde jag biblioteket Servo.h som gör det lättare att styra servon.

Servomotorn styrs av PWM -Pulse Width Modulation- vilket innebär att för att styra servon måste du göra kortspänningspulser. Servo kan avkoda längden på denna signal och rotera till given position. Och det är här jag använde redan nämnt bibliotek. Jag behövde inte beräkna längden på signalen på egen hand men jag använde bibliotekets funktioner som jag bara skickar parametern till i grader och det ger signal.

För styrning av servon använde jag potentiometrar som fungerar som spänningsdelare. Arduino -kort har flera analoga/digitala omvandlare som jag använde för projektet. I grund och botten övervakar arduino spänningen på mittstiftet på potentiometern och om den roterar till ena sidospänningen är den 0 volt (värde = 0) och på den andra sidan är den 5 volt (värde = 1023). Detta värde skalas sedan från intervallet 0 - 1023 till 0 - 180 och sedan överförs det till funktion som redan nämnts.

Ett annat ämne är seriekommunikation med arduino som jag bara kommer att ta upp kort. I grund och botten skickar programmet skrivet på PC värde som valts av användaren, arduino kan avkoda det och flytta servo till en given position

Steg 2: Designa PCB

Design av kretskort
Design av kretskort
Design av kretskort
Design av kretskort
Design av kretskort
Design av kretskort

Jag konstruerade 2 kretskort - en för huvudkontroll där är arduino och stift för servon och på andra är potentiometrar. Anledningen till 2 PCB är att jag ville styra robotarmen från säkert avstånd. Båda kretsarna är anslutna med kabel av given längd - i mitt fall 80 cm.

För strömkälla valde jag en extern adapter eftersom servon som jag använde förbrukar mycket mer ström än arduino kan leverera. Som du kan se finns det några kondensatorer som jag inte har nämnt än. De är kondensatorer som används för filtrering. Som du vet nu styrs servomotorn av korta impulser. Dessa impulser kan göra att matningsspänningsfall och potentiometrar som tidigare hade intervall 0-5 volt nu har mindre intervall. Det betyder att spänningen på mittstift ändras och arduino får detta värde och ändrar positionen som servomotorn är i. Detta kan pågå för alltid och det orsakar oönskad svängning som kan elimineras av några kondensatorer parallellt med matningen.

Steg 3: Gör PCB

Gör PCB
Gör PCB
Gör PCB
Gör PCB
Gör PCB
Gör PCB

För att göra PCB föreslår jag att du läser detta.

Jag använde Iron on Glossy paper -metoden och det gick jättebra.

Sedan lödde jag delar på kretskortet. Du kan se att jag använde arduino -uttag ifall jag kommer att behöva det i framtiden.

Steg 4: Designa armen

Designa armen
Designa armen
Designa armen
Designa armen
Designa armen
Designa armen

Detta var absolut inte den svåraste delen av att göra detta projekt.

Hela installationen är gjord av 8 delar där 4 inte är rörliga delar - låda för potentiometrar och bas där arduino ligger - och andra fyra är själva armen. Jag kommer inte att gå in på någon detalj förutom att designen är ganska intuitiv och på något sätt enkel. Den är utformad för att passa mina anpassade kretskort och servon som jag kommer att inkludera i listan över delar.

Steg 5: Skriva ut delarna

Skriva ut delarna
Skriva ut delarna
Skriva ut delarna
Skriva ut delarna
Skriva ut delarna
Skriva ut delarna

Delar trycktes på Prusa -skrivare. Vissa ansikten behövde slipas lite och borrades i hål. Även stödpelarna behövde tas bort.

Steg 6: Sätta ihop allt

Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats

I det här steget som titeln säger lägger jag ihop allt.

Först lödde jag trådar på potentiometrarna och sedan trådarna på kretskort. Potentiometrar passar fint till hål och jag varmlimmade kretskortet på pelarna som var tryckta på lådans botten. Du kan borra hål i brädan och i lådan men jag fick reda på att limning är mer än tillräckligt. Sedan stängde jag båda delarna av lådan och säkrade dem på plats med 4 skruvar som passar in i hål som jag designade.

Som ett nästa steg gjorde jag en platt bandkabel för att ansluta båda korten.

I huvudboxen lödde jag ledningar från VCC -kontakten för att växla och sedan till Vcc -kortet och från GND -kortet till GND -kontakten. Sedan varmlimmade jag kontakten på plats och ombord på pelare. Anslutningen passar rakt in i hålet så inget varmt lim behövs.

Sedan skruvade jag fast den nedre servon på lådans botten med hjälp av skruvar.

Efter det satte jag den övre delen av lådan på den nedre delen och samma som med potentiometerlådan säkrade jag den med 4 skruvar.

Nästa del var lite knepig men jag lyckades sätta ihop resten av armen med olika muttrar och dynor och det var inte så tätt som jag förväntade mig eftersom jag konstruerade vissa toleranser mellan delarna, så det är lättare att arbeta med dem.

Och som det sista steget satte jag lite tejp på botten av lådorna för annars skulle de glida.

Steg 7: Programmering av Arduino

Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino
Programmering av Arduino

Jag har redan nämnt hur programmet fungerar i teorin bakom projektet, men jag kommer att bryta upp det ännu mer.

Så i början måste vi definiera några variabler. Mestadels kopieras det 4 gånger eftersom vi har 4 servon och enligt min mening är det onödigt att göra mer komplicerad logik bara för att göra programmet lite kortare.

Därefter är det tomrumsinställning där stift på servon definieras.

Sedan finns det void loop - en del av programmet som loopar oändligt. I denna del tar programmet värdet från potentiometern som skalar det och sätter på utsignalen. Men det är ett problem att värdet från potentiometern hoppar ganska mycket så jag behövde lägga till filter som gör genomsnittet av de senaste 5 värdena och sedan sätter det på utmatning. Detta förhindrar oönskad vingling.

Den sista delen av programmet läser data från serieporten och bestämmer vad de ska göra baserat på data som skickas.

För att förstå koden fullt ut föreslår jag att du besöker officiella arduino -webbplatser.

Steg 8: Programmering i Python

Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python
Programmering i Python

Den här delen av detta projekt är inte nödvändig men jag tror att det bara ger mer värde åt detta projekt.

Python erbjuder massor av bibliotek som är gratis att använda, men i det här projektet använder jag bara tkinter och serie. Tkinter används för GUI (grafiskt användargränssnitt) och seriellt som namnet säger används för seriell kommunikation.

Denna kod skapar GUI med 4 reglage som har minimivärde 0 och max 180. Det kan vara en antydan för dig att det är i grader och varje reglage är programmerat för att styra en servo. Detta program är ganska enkelt - det tar värdet och skickar det till arduino. Men sättet det skickar är intressant. Om du väljer att ändra värdet på första servo till 123 grader skickas det till arduino -värde 1123. Första siffran för varje sänd tal talar om vilken servo som ska kontrolleras. Arduino har kod som kan avkoda detta och flytta rätt servo.

Steg 9: Lista över delar

Lista över delar
Lista över delar
  • Arduino Pro Mini 1 st
  • Servo FS5106B 1 st
  • Servo Futaba S3003 2 st
  • Pin header 2x5 1 bit
  • Pin header 1x3 6 bitar
  • Kondensator 220uF 3 st
  • Micro Servo FS90 1 st
  • Kontaktdon AWP-10 2 delar
  • Anslutning FC681492 1 st
  • Brytare P-B100G1 1 st
  • Hylsa 2x14 1 st
  • TTL-232R-5v-omvandlare 1 st
  • Potentiometer B200K 4 st
  • och många fler skruvar, dynor och muttrar

Steg 10: Slutliga tankar

Tack för att du läste detta och jag hoppas att jag åtminstone har motiverat dig. Detta är mitt första större projekt som jag gjorde helt själv utan att kopiera saker från internet och första instruktiva inlägg. Jag vet att armen kan uppgraderas men jag är nöjd med den för tillfället. Alla delar och källkoder är gratis, du är välkommen att använda den och ändra den på vilket sätt du vill. Om du har några frågor är du välkommen att ställa dem i kommentarsfältet. Du kan också titta på videorna, de har inte bra kvalitet men de visar projektets funktionalitet.

Rekommenderad: