Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Geautomatiseerde robotarm voor solderen

Componenten en benodigdheden

Stappenmotor 28BYJ-48 met drivermodule ULN2003
× 1
Arduino UNO
× 1
Servomotor TowerPro MG955
× 1
I2C SERILE LCD 1602 MODULE
× 1
Stepdown-module
× 1
OpenBuilds NEMA 17 stappenmotor
× 1

Benodigde gereedschappen en machines

Lasersnijder (algemeen)
Set met roterende snijbits voor Dremel

Apps en online services

Arduino IDE
Microsoft Visual Studio 2015

Over dit project

Inleiding

Het idee van dit project kwam per ongeluk in me op toen ik op zoek was naar de verschillende mogelijkheden van robotarmen, en toen ontdekte ik dat er een paar zijn die dit gebruiksgebied bestrijken (robotarm voor geautomatiseerd lassen en solderen).

Eigenlijk had ik al eerder ervaring met het bouwen van soortgelijke projecten, maar deze keer was het project erg nuttig en effectief.

Voordat ik de vorm ervan besloot, zag ik veel toepassingen en andere projecten, vooral op het gebied van de industrie. Open source-projecten hebben me veel geholpen om de juiste en geschikte vorm te vinden.

Dat komt door de wetenschap achter de visuele voeding voor onze hersenen.

Stap 1:Ontwerp

In het begin zag ik veel professionele projecten die niet konden worden uitgevoerd vanwege de complexiteit ervan.

Toen besloot ik om mijn eigen product te maken, geïnspireerd door de andere projecten, dus ik gebruikte Google Sketch up 2017 pro. Elk onderdeel is ontworpen om naast elkaar te monteren in een specifieke volgorde, zoals weergegeven in de volgende afbeelding.

En voordat ik het in elkaar zette, moest ik de onderdelen testen en de geschikte soldeerbout kiezen, dit gebeurde door een virtueel afwerkingsproject te tekenen als richtlijn voor mij.

Deze tekeningen tonen de werkelijke afwerking op ware grootte en de juiste afmetingen van elk onderdeel om de juiste soldeerbout te kiezen.

Stap 2:Bediening en installatie

Tijdens het werk kwam ik een aantal obstakels tegen die we hierover moeten aankondigen.

1. De armen waren te zwaar om te worden vastgehouden door de kleine stappenmotoren, en dit hebben we opgelost in de volgende versie of lasergesneden print.

2. Omdat het model van plastic was gemaakt, was de wrijving van de roterende basis hoog en verliepen de bewegingen niet soepel.

De eerste oplossing was om een ​​grotere stappenmotor te kopen die het gewicht en de wrijving kan dragen, en we hebben de basis opnieuw ontworpen om op een grotere stappenmotor te passen.

Eigenlijk losten de probleemstillers en de grotere motor het niet op, en dat was omdat de wrijving tussen twee plastic oppervlakken ernaast we de pot niet met procent kunnen aanpassen. De maximale rotatiepositie is niet de maximale stroom die de bestuurder kan leveren. Je moet de door de fabrikant getoonde techniek gebruiken, waarbij je de spanning meet terwijl je aan de pot draait.

Toen nam ik mijn toevlucht tot het volledig veranderen van het basisontwerp en plaatste ik een servomotor met een metalen tandwiel in plaats van een tandwielmechanisme.

3. spanning

Het Arduino-bord kan van stroom worden voorzien via de DC-voedingsaansluiting (7 - 12V), de USB-connector (5V) of de VIN-pin van het bord (7-12V). Het leveren van spanning via de 5V- of 3,3V-pinnen omzeilt de regelaar en we besloten een speciale USB-kabel te kopen die 5 volt ondersteunt van de pc of een andere voeding.

dus de stappenmotoren en de andere componenten werken goed met slechts 5 volt en om de onderdelen te beveiligen tegen elk probleem, repareren we de step down-module.

De step-down-module is een buck-converter (step-down-converter) is een DC-naar-DC-stroomomvormer die de spanning verlaagt (terwijl de stroom wordt verhoogd) van de ingang (toevoer) naar de uitgang (belasting) en ook de stabiliteit behoudt of de spanning.

Stap 3:Wijzigingen

Na enkele aanpassingen hebben we het ontwerp van het model gewijzigd door de afmetingen van de armen te verkleinen en een geschikt gat te maken voor de servomotoraandrijving, zoals afgebeeld.

En tijdens het testen slaagde de servomotor erin om het gewicht 180 graden correct te draaien, omdat het hoge koppel ervoor zorgt dat een mechanisme zwaardere lasten aankan. Hoeveel draaikracht een servomechanisme kan leveren, hangt af van ontwerpfactoren:voedingsspanning, assnelheid, enz.

Ook het gebruik van I2c was leuk omdat het maar twee pinnen gebruikt en je meerdere i2c-apparaten op dezelfde twee pinnen kunt plaatsen. U kunt bijvoorbeeld maximaal 8 LCD-rugzakken + LCD's hebben, allemaal op twee pinnen! Het slechte nieuws is dat je de 'hardware' i2c-pin moet gebruiken.

Stap 4:Soldeerbouthouder of grijper

De grijper werd vastgezet met behulp van een servomotor met metalen tandwielen om het gewicht van de soldeerbout te dragen.

servo.attach(9, 1000, 2000);servo.write (constrain (hoek, 10, 160)); 

In het begin hadden we een obstakel dat motor schudde en trilde totdat we een lastige code vonden die engelen beperkt.

Omdat niet alle servo's een volledige rotatie van 180 graden hebben. Velen niet.

Dus schreven we een test om te bepalen waar de mechanische limieten liggen. Gebruik servo.write Microseconds in plaats van servo.write Ik vind dit beter omdat je 1000-2000 als basisbereik kunt gebruiken. En veel servo's ondersteunen buiten dat bereik, van 600 tot 2400.

We hebben dus verschillende waarden geprobeerd en kijken waar je de buzz krijgt die aangeeft dat je de limiet hebt bereikt. Blijf dan alleen binnen die grenzen als je schrijft. U kunt deze limieten instellen wanneer u servo.attach(pin, min, max)

. gebruikt

Vind het ware bewegingsbereik en zorg ervoor dat de code het niet voorbij de eindstops probeert te duwen, de constrain () Arduino-functie is hiervoor handig.

Stap 5:Coderen

De Arduino-omgeving met bibliotheken kan worden uitgebreid door het gebruik van bibliotheken, net als de meeste programmeerplatforms. Bibliotheken bieden extra functionaliteit voor gebruik in schetsen, b.v. met hardware werken of gegevens manipuleren. Een bibliotheek in een schets gebruiken.

#include AccelStepper.h#include MultiStepper.h#include Servo.h#include Wire.h #include LiquidCrystal_I2C.h 

Code

  • Stappen X Y Z-code
Stappen X Y Z-codeArduino
#include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX (1, ​​2, 3); // 1 =Easy Driver interface // UNO Pin 2 aangesloten op STEP pin van Easy Driver // UNO Pin 3 aangesloten op DIR pin van Easy Driver AccelStepper stepperZ (1, 5, 6); // 1 =Easy Driver interface // UNO Pin 5 aangesloten op STEP pin van Easy Driver // UNO Pin 6 aangesloten op DIR pin van Easy Driver AccelStepper stepperY (7, 8, 9); // 1 =Easy Driver interface // UNO Pin 5 aangesloten op STEP pin van Easy Driver // UNO Pin 6 aangesloten op DIR pin van Easy Driver // Stepper Travel Variableslong TravelX; // Gebruikt om de X-waarde op te slaan die is ingevoerd in de Serial Monitorlong TravelZ; // Wordt gebruikt om de Z-waarde op te slaan die is ingevoerd in de Serial Monitorlong TravelY; // Gebruikt om de Y-waarde op te slaan die is ingevoerd in de Serial Monitorint move_finished =1; // Wordt gebruikt om te controleren of de verplaatsing is voltooidvoid setup() { Serial.begin(9600); // Start de seriële monitor met een snelheid van 9600 Bauds // Druk de instructies af op de seriële monitor bij Start Serial.println ("Voer de reisafstand in gescheiden door een komma:X,Z "); Serial.print ("Voer nu de verplaatsingswaarden in:");// Stel de maximale snelheid en versnelling van elke stepper stepperX.setMaxSpeed ​​(500.0) in; // Stel de maximale snelheid van de X-as stepperX.setAcceleration (500.0) in; // Versnelling van X-as stepperZ.setMaxSpeed ​​(250.0); // Stel de maximale snelheid van de Z-as langzamer in voor rotatie stepperZ.setAcceleration (250.0); // Versnelling van de Z-as stepperY.setMaxSpeed ​​(250,0); // Stel de maximale snelheid van de Y-as langzamer in voor rotatie stepperY.setAcceleration (250,0); // Versnelling van de Y-as}void loop() {while (Serial.available()>0) { // Controleer of er waarden beschikbaar zijn in de seriële buffer move_finished=0; // Stel variabele in voor het controleren van de verplaatsing van de Steppers TravelX=Serial.parseInt(); // Zet de eerste numerieke waarde uit de buffer in de TravelX-variabele Serial.print (TravelX); Serial.print(" X Reizen , "); TravelZ=Serial.parseInt(); // Zet de tweede numerieke waarde uit de buffer in de TravelZ-variabele Serial.print (TravelZ); Serial.print("Z Travel, "); TravelY=Serial.parseInt(); // Zet de tweede numerieke waarde van de buffer in de TravelY-variabele Serial.print(TravelY); Serial.println ("Y Travel "); stepperX.moveTo(ReizenX); // Stel een nieuwe verplaatsingspositie in voor X Stepper stepperZ.moveTo (TravelZ); // Stel een nieuwe verplaatsingspositie in voor Z Stepper stepperY.moveTo(TravelY); // Stel nieuwe verplaatsingspositie in voor Z Stepper delay (1000); // Wacht 1 seconden voordat u de Steppers Serial.print ("Stappen in positie verplaatsen..."); }// Controleer of de Steppers de gewenste positie hebben bereikt if ((stepperX.distanceToGo() !=0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() !=0)) { stepperX .loop(); // Verplaats Stepper X naar de positie stepperZ.run(); // Verplaats Stepper Z naar de positie stepperY.run(); // Verplaats Stepper y naar positie }// Als de verplaatsing is voltooid, wordt het bericht op de seriële monitor weergegeven als ((move_finished ==0) &&(stepperX.distanceToGo() ==0) &&(stepperZ.distanceToGo() ==0) &&(stepperY.distanceToGo() ==0)) { Serial.println("VOLTOOID!"); Serieel.println(""); Serial.println("Voer de volgende verplaatsingswaarden in (0,0,0 voor reset):"); // Maak je klaar voor nieuwe seriële monitorwaarden move_finished=1; // Reset move variabele }}

Schema's


Productieproces

  1. Makerarm:een mega-coole robotarm voor makers
  2. Motorbesturingen ontwerpen voor robotsystemen
  3. Motorcontroller integreert Arm Cortex-M0 core
  4. Referentieontwerp vereenvoudigt industriële robotmotorbesturing
  5. Robotische arm:hoe wordt het gemaakt?
  6. Roboticawapens in productie en hun voordelen
  7. Servomotor voor robotarm:wat er gaat gebeuren?
  8. Ioed gebruiken om een ​​robotarm op afstand te bedienen
  9. Robotische cellen maken automatisch onderhoud van onderdelen mogelijk
  10. Robotische armmarkt groeit tot US$ 14,78 miljard in 2026
  11. De industriële robotarm - een productieboom