Inhoudsopgave:

Robotarm bestuurd door Arduino en pc - Ajarnpa
Robotarm bestuurd door Arduino en pc - Ajarnpa

Video: Robotarm bestuurd door Arduino en pc - Ajarnpa

Video: Robotarm bestuurd door Arduino en pc - Ajarnpa
Video: REAL RACING 3 LEAD FOOT EDITION 2024, November
Anonim
Image
Image
Theorie achter project
Theorie achter project

Robotarmen worden veel gebruikt in de industrie. Of het nu gaat om montagewerkzaamheden, lassen of zelfs een wordt gebruikt voor het aanmeren op ISS (International Space Station), ze helpen mensen bij het werk of ze vervangen de mens volledig. De arm die ik heb gebouwd, is een kleinere weergave van de robotarm die zou moeten worden gebruikt voor bewegende objecten. Het wordt bestuurd door arduino pro mini die al een ingebouwde bibliotheek heeft voor het besturen van servo's. Servo's worden aangestuurd door PWM (Pulse Width Modulation), wat niet moeilijk te programmeren is, maar deze bibliotheek maakt het gemakkelijker. De gebruiker kan die servo's besturen met potentiometers die zijn ontworpen om als spanningsdelers te fungeren of vanuit een programma op pc dat 4 schuifregelaars gebruikt voor het besturen van servomotoren.

Voor dit project moest ik mijn aangepaste PCB ontwerpen en maken, 3D-modellen van de arm maken en code schrijven die alles bestuurt. Bovendien heb ik een extra programma in Python gecodeerd dat signalen naar Arduino stuurt, die erin slaagt dat signaal te decoderen en servo's te verplaatsen naar de positie die de gebruiker heeft ingesteld.

Stap 1: Theorie achter het project

Theorie achter project
Theorie achter project

Arduino is geweldig op die manier dat het een gratis bibliotheek biedt om mee te werken. Voor dit project heb ik bibliotheek Servo.h gebruikt die het besturen van servo's zoveel gemakkelijker maakt.

De servomotor wordt bestuurd door PWM -Pulse Width Modulation- wat betekent dat om de servo te besturen, je korte spanningspulsen moet maken. Servo kan de lengte van dit signaal decoderen en naar een bepaalde positie draaien. En dit is waar ik de al genoemde bibliotheek heb gebruikt. Ik hoefde de lengte van het signaal niet zelf te berekenen, maar ik gebruikte de functies van de bibliotheek waaraan ik de parameter gewoon in graden doorgeef en het signaal maakt.

Voor het aansturen van servo's heb ik potentiometers gebruikt die als spanningsdeler fungeren. Arduino-boards hebben verschillende analoog/digitaal-converters die ik voor het project heb gebruikt. In principe bewaakt arduino de spanning op de middelste pin op de potentiometer en als deze naar één kant draait, is de spanning 0 volt (waarde = 0) en aan de andere kant 5 volt (waarde = 1023). Deze waarde wordt vervolgens geschaald van 0 - 1023 tot 0 - 180 en wordt vervolgens doorgegeven aan de reeds genoemde functie.

Een ander onderwerp is seriële communicatie met Arduino dat ik kort zal behandelen. In principe stuurt een programma dat op pc is geschreven de door de gebruiker gekozen waarde, arduino kan het decoderen en de servo naar de gegeven positie verplaatsen

Stap 2: PCB ontwerpen

PCB ontwerpen
PCB ontwerpen
PCB ontwerpen
PCB ontwerpen
PCB ontwerpen
PCB ontwerpen

Ik ontwierp 2 PCB's - een voor hoofdbesturing waar arduino is en pinnen voor servo's en op de tweede zijn potentiometers. Reden voor 2 PCB's is dat ik de robotarm op veilige afstand wilde besturen. Beide circuits zijn verbonden door een kabel van bepaalde lengte - in mijn geval 80 cm.

Als stroombron koos ik voor een externe adapter omdat servo's die ik gebruikte veel meer stroom verbruiken dan arduino kan leveren. Zoals je kunt zien zijn er enkele condensatoren die ik nog niet heb genoemd. Het zijn condensatoren die worden gebruikt voor filtratie. Zoals u nu weet, wordt de servomotor aangestuurd door korte impulsen. Die impulsen kunnen ervoor zorgen dat de voedingsspanning daalt en potentiometers die voorheen een bereik van 0-5 volt hadden, hebben nu een kleiner bereik. Dat betekent dat de spanning op de middelste pin verandert en Arduino krijgt deze waarde en verandert de positie waarin de servomotor zich bevindt. Dit kan eeuwig doorgaan en het veroorzaakt ongewenste oscillatie die kan worden geëlimineerd door enkele condensatoren parallel aan de voeding.

Stap 3: PCB maken

PCB maken
PCB maken
PCB maken
PCB maken
PCB maken
PCB maken

Voor het maken van PCB's raad ik je aan dit te lezen.

Ik gebruikte de Iron on Glossy paper-methode en het werkte geweldig.

Daarna heb ik onderdelen op de print gesoldeerd. Je kunt zien dat ik een arduino-socket heb gebruikt voor het geval ik het in de toekomst nodig heb.

Stap 4: De arm ontwerpen

De arm ontwerpen
De arm ontwerpen
De arm ontwerpen
De arm ontwerpen
De arm ontwerpen
De arm ontwerpen

Dit was zeker niet het moeilijkste deel van het maken van dit project.

De hele opstelling bestaat uit 8 delen waarvan 4 niet bewegende delen - doos voor potentiometers en basis waar arduino zich bevindt - en andere vier zijn de arm zelf. Ik zal niet veel in detail treden, behalve dat het ontwerp behoorlijk intuïtief en op de een of andere manier eenvoudig is. Het is ontworpen om te passen op mijn aangepaste PCB en servo's die ik in de lijst met onderdelen zal opnemen.

Stap 5: De onderdelen afdrukken

De onderdelen afdrukken
De onderdelen afdrukken
De onderdelen afdrukken
De onderdelen afdrukken
De onderdelen afdrukken
De onderdelen afdrukken

Onderdelen werden afgedrukt op Prusa-printer. Sommige vlakken moesten een beetje worden geslepen en gaten geboord. Ook de steunpilaren moesten worden verwijderd.

Stap 6: Alles samenbrengen

Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten

In deze stap, zoals de titel al zegt, heb ik het allemaal samengebracht.

Eerst soldeerde ik draden op de potmeters en daarna die draden op PCB. Potentiometers passen mooi in de gaten en ik heb de printplaat warm gelijmd op de pilaren die op de bodem van de doos waren gedrukt. Je kunt gaten in het bord en in de doos boren, maar ik ontdekte dat lijmen meer dan voldoende is. Daarna sloot ik beide delen van de doos en zette ze op hun plaats met 4 schroeven die in de gaten pasten die ik had ontworpen.

Als volgende stap heb ik een platte lintkabel gemaakt om beide borden met elkaar te verbinden.

In de hoofddoos heb ik draden gesoldeerd van de VCC-pin van de connector naar de schakelaar en vervolgens naar de Vcc van het bord en van GND van het bord naar GND van de connector. Daarna heb ik de connector op zijn plaats gelijmd en op pilaren gezet. Connector past precies in het gat, dus er is geen hete lijm nodig.

Vervolgens heb ik met behulp van schroeven de onderste servo aan de onderkant van de doos bevestigd.

Daarna heb ik het bovenste deel van het kastje op het onderste deel gezet en hetzelfde als bij het potentiometerkastje heb ik het met 4 schroeven vastgezet.

Het volgende deel was een beetje lastig, maar ik slaagde erin om de rest van de arm samen te voegen met verschillende moeren en kussens en het was niet zo strak als ik had verwacht, omdat ik wat toleranties tussen de onderdelen had ontworpen, dus het is gemakkelijker om ermee te werken.

En als laatste stap heb ik wat tape op de onderkant van de dozen geplakt omdat ze anders zouden gaan schuiven.

Stap 7: Arduino programmeren

Arduino programmeren
Arduino programmeren
Arduino programmeren
Arduino programmeren
Arduino programmeren
Arduino programmeren

Ik heb al gezegd hoe het programma in theorie achter het project werkt, maar ik ga het nog meer opsplitsen.

Dus in het begin moeten we enkele variabelen definiëren. Meestal wordt het 4 keer gekopieerd omdat we 4 servo's hebben en naar mijn mening is het niet nodig om meer gecompliceerde logica te maken om het programma wat korter te maken.

Vervolgens is er een void setup waar pinnen van servo's worden gedefinieerd.

Dan is er de void loop - een deel van het programma dat oneindig doorloopt. In dit deelprogramma neemt de waarde van de potentiometer deze schaal en zet deze in op de output. Maar er is een probleem dat de waarde van de potentiometer behoorlijk springt, dus ik moest een filter toevoegen dat het gemiddelde van de laatste 5 waarden maakt en dan zet het op output. Dit voorkomt ongewenst wiebelen.

Het laatste deel van het programma leest gegevens van de seriële poort en beslist wat te doen op basis van verzonden gegevens.

Om de code volledig te begrijpen, raad ik je aan om officiële arduino-websites te bezoeken.

Stap 8: Programmeren in Python

Programmeren in Python
Programmeren in Python
Programmeren in Python
Programmeren in Python
Programmeren in Python
Programmeren in Python

Dit onderdeel van dit project is niet nodig maar ik denk dat het alleen maar meer waarde geeft aan dit project.

Python biedt talloze bibliotheken die gratis te gebruiken zijn, maar in dit project gebruik ik alleen tkinter en serieel. Tkinter wordt gebruikt voor GUI (Graphical User Interface) en serieel, zoals de naam al zegt, wordt gebruikt voor seriële communicatie.

Deze code creëert een GUI met 4 schuifregelaars met een minimale waarde van 0 en maximaal 180. Het kan voor u een hint zijn dat het in graden is en dat elke schuif is geprogrammeerd om één servo te besturen. Dit programma is vrij eenvoudig - het neemt de waarde en stuurt het naar Arduino. Maar de manier waarop het verzendt is interessant. Als u ervoor kiest om de waarde van de eerste servo te wijzigen in 123 graden, wordt deze naar de Arduino-waarde 1123 verzonden. Het eerste nummer van elk verzonden nummer geeft aan welke servo op het punt staat te worden bestuurd. Arduino heeft code die dit kan decoderen en de juiste servo kan verplaatsen.

Stap 9: Lijst met onderdelen

Lijst met onderdelen
Lijst met onderdelen
  • Arduino Pro Mini 1 stuk
  • Servo FS5106B 1 stuk
  • Servo Futaba S3003 2 stuks
  • Pin header 2x5 1 stuk
  • Pin header 1x3 6 stuks
  • Condensator 220uF 3 stuks
  • Micro Servo FS90 1 stuk
  • Aansluiting AWP-10 2 stuks
  • Connector FC681492 1 stuk
  • Schakelaar P-B100G1 1 stuk
  • Stekkerdoos 2x14 1 stuk
  • TTL-232R-5v - omvormer 1 stuk
  • Potentiometer B200K 4 stuks
  • en nog veel meer schroeven, pads en moeren

Stap 10: Laatste gedachten

Bedankt voor het lezen hiervan en ik hoop dat ik je in ieder geval heb gemotiveerd. Dit is mijn eerste grotere project dat ik helemaal alleen heb gemaakt zonder dingen van internet te kopiëren en de eerste instructables te posten. Ik weet dat de arm kan worden geüpgraded, maar ik ben er voorlopig tevreden mee. Alle onderdelen en broncodes zijn gratis, u bent van harte welkom om deze te gebruiken en te wijzigen op elke gewenste manier. Als je vragen hebt, stel ze dan gerust in de commentaarsectie. Je kunt ook naar de video's kijken, ze zijn niet van geweldige kwaliteit, maar ze laten de functionaliteit van het project zien.

Aanbevolen: