Innehållsförteckning:

UCL - Inbäddad - Välj och plats: 4 steg
UCL - Inbäddad - Välj och plats: 4 steg

Video: UCL - Inbäddad - Välj och plats: 4 steg

Video: UCL - Inbäddad - Välj och plats: 4 steg
Video: LÖGRYGGSMÄRTA OCH METABOLISKT SYNDROM Dag 3 2024, Juli
Anonim
UCL - Inbäddad - Välj och plats
UCL - Inbäddad - Välj och plats

Denna instruerbara kommer att gå hur en 2D plocka och placera enhet är gjord och hur man kodar den.

Steg 1: Datorer

Datorer
Datorer

1x Adrio Mega

2x stegmotorer (vi använde JLB Stepper Motor, modell 17H1352-P4130)

2x Stepper Motor Drive Controller Board Module L298N Dual H Bridge DC För Arduino

1x servomotor (vi har inte fläcken på den här)

3x 10k ohm motstånd

2x nylonflis

1x 12V strömförsörjning

Lite trä till ramen

Trådar

Steg 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Det första under konstruktionsytan var att bestämma storleken och formen på plock- och placeringsmaskinen

Först bygger vi grundformen trä. Vi byggde vår pick and place -ram 50 cm x 25 cm x 30 cm. Allt utom ramen, bryggan och lyftarmen tillverkades med en laserskärare.

Här är en länk till alla filerna

Sedan ville vi till remskivsystemet. Här gick vi med två 50 mm ringar och en 20 mm ring. Sedan lägger vi ett parakord bredvid 20 mm med lite lim. Därefter klämde vi ihop de två 50 mm ringarna på vardera sidan av 20 mm ringen.

20 mm

50 mm

Sedan måste vi utforma en glidguide till armen. Här gjorde vi två sidor och en bakplatta.

Som sedan limmades i en U -form. Sedan kopplade vi det till bron.

Sidoplatta

Bakplatta

Nu när delarna för att flytta armen upp och ner är klara. Vi måste flytta den fram och tillbaka.

När vi designade detta såg vi till att tänderna ligger i linje med varandra. Så båda artiklarna skapades på samma projektplats.

Steg 3: Kod

Koda
Koda
Koda
Koda
Koda
Koda

Programmeringen är ganska enkel och består av 5 delar

  1. Inkludering av bibliotek och installation av variabler för intern och IO -användning
  2. Ladda ingångar till Ram
  3. Sekvens, välj den rörelse du vill ha.
  4. Stepper/servopositionskontroll
  5. Output till världen

Vi kommer i stora drag att förklara varje del, men kom ihåg att detta bara är en av många lösningar.

1: Innan den tomma installationen inkluderade vi de två bibliotek vi behöver för detta projekt. Stepper och servo. Genom att använda de medföljande biblioteken, sparar du från att lära dig varje detalj om steg- och servomotorer.

#omfatta

#omfatta

const int stepsPerRevolution = 200; // ändra detta för att passa antalet steg per varv för din motor

// initiera stegbiblioteket på stift 8 till 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stepsPerRevolution, 28, 29, 30, 31); Servo Griper; // skapa servoobjekt för att styra ett servo

gripern måste få fäst i tomrumsinställningen

void setup () {// initiera serieporten: Serial.begin (9600); Griper. Fäst (9); // fäster servon på stift 9 på servoobjektet

Resten av det här avsnittet är bara installation av variabler och konstant.

2: Det första i Void Loop är att ladda alla använda ingångar till en variabel. Detta görs av två skäl. Den första anledningen är att begränsa CPU -tunga uppgifter för att läsa en ingång. Den andra anledningen, som är den viktigaste, för att se till att om en ingång används mer än en gång kommer den att ha samma värde under hela genomsökningen. Detta gör det enklare att skriva konsekvent kod. Detta är en mycket vanlig metod i PLC -programmering, men det gäller också för inbäddad programmering.

// ------------------------- Mata in RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);

3: I sekvensdelen av koden gjorde vi precis en sekvens med switch och fallkommandon. Sekvensdelen ger bara signaler till kodens positionskontrolldel. Denna del kan enkelt anpassas till din applikation eller användas som den är.

4: Servos position styrs precis av servo liberi och ett if -uttalande för griparen öppen och stängd.

Stepper Control är lite mer knepigt. Funktionen jämför börvärdet (positionen du vill att armen ska gå till) och den aktuella positionen. Om den nuvarande positionen är älskare, lägger funktionen till positionen och ber Stepper liberi -funktionen att ta ett positivt steg. Motsatsen gäller för en hög position. om positionen är densamma som börvärdet är en XinPos -bit satt hög och steget stannar.

// SP controal X

if (XstepCountXsp och inte hem) {

XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }

5: Lägg till slutet av koden som motorerna styrs med liberi -funktionerna.

// -------------------- Output ---------------------- // steg ett steg: XStepper.step (Xstep); // steg ett steg: YStepper.step (Ystep);

Griper.write (GripSp);

Steg 4: Made By

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Rekommenderad: