Sommario:

UCL - Incorporato - Scegli e posiziona: 4 passaggi
UCL - Incorporato - Scegli e posiziona: 4 passaggi

Video: UCL - Incorporato - Scegli e posiziona: 4 passaggi

Video: UCL - Incorporato - Scegli e posiziona: 4 passaggi
Video: Andare sotto la Curva Sud del Milan con la maglia dell’Inter 😬😱 #shorts 2024, Novembre
Anonim
UCL - Incorporato - Scegli e posiziona
UCL - Incorporato - Scegli e posiziona

Questo tutorial spiegherà come viene realizzata un'unità pick and place 2D e come codificarla.

Passaggio 1: computer

computer
computer

1x Adrio Mega

2x motori passo-passo (abbiamo usato il motore passo-passo JLB, modello 17H1352-P4130)

2x modulo scheda controller per motore passo-passo L298N Dual H Bridge DC per Arduino

1x servomotore (non abbiamo lo speck su questo)

3 resistenze da 10k ohm

2x pomfi di nylon

1x alimentatore da 12 V

Un po' di legno per il telaio

fili

Fase 2: Costruzione

Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione

La prima cosa durante la fase di costruzione è stata quella di decidere la dimensione e la forma del pick and place mashine

Per prima cosa costruiamo la forma base in legno. Abbiamo costruito il nostro telaio pick and place di 50 cm per 25 cm per 30 cm. Tutto tranne il telaio, il ponte e il braccio di sollevamento, è stato prodotto con un lasercutter.

Ecco un link a tutti i file

Poi abbiamo voluto il sistema di pulegge. Qui siamo andati con due anelli da 50 mm e un anello da 20 mm. Poi mettiamo un paracord vicino al 20mm con un po' di colla. Dopodiché abbiamo schiacciato i due anelli da 50 mm su entrambi i lati dell'anello da 20 mm.

20mm

50mm

Quindi dobbiamo progettare una guida di scorrimento per il braccio. Qui abbiamo realizzato due lati e una piastra posteriore.

Che poi è stato incollato a forma di U. Quindi l'abbiamo collegato al ponte.

Piatto di contorno

Piastra posteriore

Ora che le parti per muovere il braccio su e giù sono finite. Dobbiamo spostarlo avanti e indietro.

Durante la progettazione ci siamo assicurati che i denti fossero allineati tra loro. Quindi entrambi gli elementi sono stati creati nello stesso luogo del progetto.

Passaggio 3: codice

Codice
Codice
Codice
Codice
Codice
Codice

La programmazione è piuttosto semplice e consiste di 5 parti

  1. Inclusione di librerie e impostazione di variabili per uso interno e IO
  2. Carica gli ingressi su Ram
  3. Sekvens, scegliendo il movimento che desideri.
  4. Controllo posizione stepper/servo
  5. Uscita nel mondo

Spiegheremo a grandi linee ogni parte, ma ricorda che questa è solo una delle tante soluzioni.

1: Prima della configurazione del vuoto abbiamo incluso le 2 librerie di cui abbiamo bisogno per questo progetto. Stepper e servo. L'utilizzo delle librerie incluse ti evita di apprendere ogni dettaglio sui motori passo-passo e servomotori.

#includere

#includere

const int stepsPerRevolution = 200; // cambialo per adattarlo al numero di passi per giro del tuo motore

// inizializza la libreria stepper sui pin da 8 a 11:

Stepper XStepper(stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper(stepsPerRevolution, 28, 29, 30, 31); Servo pinza; // crea un oggetto servo per controllare un servo

la pinza deve essere attaccata nella configurazione del vuoto

void setup() { // inizializza la porta seriale: Serial.begin(9600); Griper.attach(9); // collega il servo sul pin 9 all'oggetto servo

Il resto di questa sezione è solo l'impostazione delle variabili e delle costanti.

2: La prima cosa nel Void Loop è caricare tutti gli ingressi utilizzati in una variabile. Questo viene fatto per due motivi. Il primo motivo è limitare le attività pesanti della CPU di leggere un input. Il secondo motivo, che è il più importante, è assicurarsi che se un Input viene utilizzato più di una volta, avrà lo stesso valore durante l'intera scansione. Questo rende la scrittura di codice coerente molto più semplice. Questa è una pratica molto comune nella programmazione PLC, ma si applica anche alla programmazione embedded.

//-------------------------Input alla RAM------ Xend = digitalRead(34); Yend = digitalRead(35); Ena = digitalRead(36);

3: Nella parte sekvens del codice, abbiamo appena creato un sekvens con i comandi Switch e case. La parte sekvens fornisce solo segnali alla parte di controllo della posizione del codice. Questa parte può essere facilmente personalizzata per la tua applicazione o utilizzata così com'è.

4: La posizione del servo è controllata solo dal servo liberi e un'istruzione if per pinza aperta e chiusa.

Lo Stepper Control è un po' più complicato. La funzione confronta il Setpoint (la posizione in cui si desidera che il braccio vada) e la posizione attuale. Se la posizione attuale è lover the, la funzione si aggiunge alla posizione e chiede alla funzione Stepper liberi di fare un passo positivo. È vero il contrario per una posizione alta. se la posizione è la stessa del Setpoint, un bit XinPos è alto e lo stepper si ferma.

// Controllo SP X

if (XstepCountXsp e non Home){

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

5: Aggiungere la fine del codice si comandano i motori con le funzioni liberi.

//--------------------Uscita-------- // passo uno passo: XStepper.step(Xstep); // passo un passo: YStepper.step(Ystep);

Griper.write(GripSp);

Fase 4: Fatto da

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Consigliato: