Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Dit instructable zal echter gaan hoe een 2D pick-and-place-eenheid wordt gemaakt en hoe deze te coderen.
Stap 1: Computers
1x Adrio Mega
2x stappenmotoren (we gebruikten JLB stappenmotor, model 17H1352-P4130)
2x Stappenmotor Drive Controller Board Module L298N Dual H Bridge DC Voor Arduino
1x servomotor (We hebben hier geen vlek op)
3x 10k ohm weerstanden
2x Nylon striemen
1x 12v voeding
Wat hout voor het frame
Draden
Stap 2: constructie
Het eerste wat tijdens het constructievlak was om de grootte en vorm van de pick-and-place-machine te bepalen
Eerst bouwen we de basisvorm hout. We hebben ons pick-and-place-frame van 50 cm bij 25 cm bij 30 cm gebouwd. Alles, behalve het frame, de brug en de hefarm, is gemaakt met een lasercutter.
Hier is een link naar alle bestanden
Toen wilden we het katrolsysteem. Hier gingen we met twee ringen van 50 mm en een ring van 20 mm. Daarna zetten we met wat lijm een paracord naast de 20mm. Waarna we de twee 50 mm-ringen aan weerszijden van de 20 mm-ring hebben geperst.
20 mm
50 mm
Dan moeten we een schuifgeleider voor de arm ontwerpen. Hier hebben we twee zijkanten en een achterplaat gemaakt.
Die vervolgens in een U-vorm werd gelijmd. Die hebben we toen aangesloten op de brug.
Zijplaat
Achterplaat
Nu de onderdelen voor het op en neer bewegen van de arm klaar zijn. We moeten het heen en weer bewegen.
Bij het ontwerpen hiervan hebben we ervoor gezorgd dat de tanden op elkaar aansluiten. Dus beide items zijn gemaakt op dezelfde projectplaats.
Stap 3: Coderen
De programmering is vrij eenvoudig en bestaat uit 5 delen
- Opname van bibliotheken en instelling van variabelen voor intern en IO-gebruik
- Ingangen laden naar Ram
- Sekvens, de beweging kiezen die je wilt.
- Stepper/servo positieregeling
- Uitvoer naar de wereld
We zullen in grote lijnen elk onderdeel uitleggen, maar onthoud dat dit slechts een van de vele oplossingen is.
1: Voor de void setup hebben we de 2 bibliotheken toegevoegd die we nodig hebben voor dit project. Stepper en servo. Door de meegeleverde bibliotheken te gebruiken, hoeft u niet elk detail over stappen- en servomotoren te leren.
#erbij betrekken
#erbij betrekken
const int stepsPerRevolution = 200; // verander dit zodat het past bij het aantal stappen per omwenteling voor uw motor
// initialiseer de stepper-bibliotheek op pinnen 8 tot en met 11:
Stepper XStepper(stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stappenPerRevolution, 28, 29, 30, 31); Servogrijper; // maak een servo-object om een servo te besturen
de grijper moet worden bevestigd in de lege setup
void setup () {// initialiseer de seriële poort: Serial.begin (9600); Griper.attach(9); // bevestigt de servo op pin 9 aan het servo-object
De rest van deze sectie is slechts het instellen van variabelen en constanten.
2: Het eerste in de Void Loop is om alle gebruikte inputs naar een variabele te laden. Dit wordt gedaan om twee redenen. De eerste reden is om de zware CPU-taken van het lezen van een invoer te beperken. De tweede reden, die het belangrijkst is, is om ervoor te zorgen dat als een ingang meer dan één keer wordt gebruikt, deze gedurende de hele scan dezelfde waarde zal hebben. Dit maakt het schrijven van consistente code een stuk eenvoudiger. Dit is een veel voorkomende praktijk bij PLC-programmering, maar het is ook van toepassing op embedded programmering.
//------------------------- Invoer naar RAM-------------------- Xend = digitaal lezen(34); Yend = digitalRead (35); Ena = digitalRead(36);
3: In het sekvens-gedeelte van de code hebben we zojuist een sekvens gemaakt met de Switch- en case-opdrachten. Het sekvens-gedeelte geeft alleen signalen aan het Positiecontrole-gedeelte van de code. Dit onderdeel kan eenvoudig worden aangepast aan uw toepassing of worden gebruikt zoals het is.
4: De positie van de servo wordt alleen gecontroleerd door de servo liberi, en een if-statement voor open en gesloten grijper.
De Stepper Control is wat lastiger. De functie vergelijkt het instelpunt (de positie waar u de arm naartoe wilt laten gaan) en de huidige positie. Als de huidige positie minnaar de is, wordt de functie toegevoegd aan de positie en wordt de Stepper liberi-functie gevraagd om een positieve stap te zetten. Het tegenovergestelde geldt voor een te hoge positie. als de positie hetzelfde is als het Setpoint, wordt een XinPos-bit hoog gezet en stopt de stepper.
// SP controle X
if (XstepCountXsp en niet Home){
XstepCount=XstepCount-1; Xstap=-1; XinPos = 0; } if (XstepCount==Xsp){ Xstep=0; XinPos = 1; }
5: Voeg het einde van de code toe dat de motoren worden bestuurd met de liberi-functies.
//--------------------Uitvoer---------------------- // stap een stap: XStepper.step(Xstep); // stap één stap: YStepper.step (Ystep);
Griper.write(GripSp);
Stap 4: Gemaakt door
casp6099 - Casper Hartung Christensen
rasm616d - Rasmus Hansen