Taula de continguts:

UCL: incrustat: lloc i selecció: 4 passos
UCL: incrustat: lloc i selecció: 4 passos

Vídeo: UCL: incrustat: lloc i selecció: 4 passos

Vídeo: UCL: incrustat: lloc i selecció: 4 passos
Vídeo: Дж. Уорнер Уоллес: Христианство, мормонизм и атеизм-что... 2024, Desembre
Anonim
UCL: incrustat: lloc i selecció
UCL: incrustat: lloc i selecció

Aquesta instrucció servirà de com es fa una unitat de selecció i col·locació 2D i com es codifica.

Pas 1: Compunets

Compunets
Compunets

1x Adrio Mega

2 motors pas a pas (hem utilitzat el motor pas a pas JLB, model 17H1352-P4130)

2x Mòdul de placa de controlador d'unitat de motor pas a pas L298N Dual H Bridge DC per Arduino

Servomotor 1x (no en tenim cap mena)

Resistències de 3x 10k ohm

2 xapes de niló

Alimentació 1x 12v

Una mica de fusta per al marc

Filferros

Pas 2: construcció

Construcció
Construcció
Construcció
Construcció
Construcció
Construcció

El primer que es va fer durant la cara de la construcció va ser decidir la mida i la forma de la màquina de selecció i col·locació

Primer construïm la forma bàsica de fusta. Hem creat el nostre marc de selecció i col·locació de 50cm per 25cm per 30cm. Tot, excepte el bastidor, el pont i el braç elevador, es va fabricar amb un punter.

Aquí hi ha un enllaç a tots els fitxers

Després vam voler fer el sistema de politges. Aquí vam anar amb dos anells de 50 mm i un anell de 20 mm. A continuació, posem un paracord al costat dels 20mm amb una mica de cola. Després vam apretar els dos anells de 50 mm a banda i banda de l’anell de 20 mm.

20 mm

50 mm

A continuació, hem de dissenyar una guia de lliscament al braç. Aquí hem fet dues cares i una placa posterior.

Que aleshores es va enganxar en forma d’U. Després ho vam connectar amb el pont.

Placa lateral

Plat posterior

Ara que s'han acabat les parts per moure el braç cap amunt i cap avall. L’hem de moure endavant i endarrere.

En dissenyar-ho, ens hem assegurat que les dents s’alineïn entre si. Per tant, tots dos elements es van crear al mateix lloc del projecte.

Pas 3: Codi

Codi
Codi
Codi
Codi
Codi
Codi

La programació és força senzilla i consta de 5 parts

  1. Inclusió de biblioteques i configuració de variables per a ús intern i d’IO
  2. Carregueu les entrades a Ram
  3. Sekvens, escollint el moviment que vulgueu.
  4. Control de posició pas a pas / servo
  5. Sortida al món

A grans trets, explicarem totes les parts, però recordeu que això és només una de les moltes solucions.

1: abans de la configuració del buit, vam incloure les 2 biblioteques que necessitem per a aquest projecte. Stepper i Servo. L’ús de les biblioteques incloses us estalvia aprendre tots els detalls sobre els motors pas a pas i els servomotors.

#incloure

#incloure

const int stepsPerRevolution = 200; // canvieu-ho perquè s'ajusti al nombre de passos per revolució del vostre motor

// inicialitzeu la biblioteca pas a pas dels pins 8 a 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stepsPerRevolution, 28, 29, 30, 31); Servo Griper; // crear un objecte servo per controlar un servo

el Gripper ha d’adjuntar-se a la configuració del buit

void setup () {// inicialitzar el port sèrie: Serial.begin (9600); Griper.attach (9); // fixa el servo al pin 9 a l'objecte servo

La resta d’aquesta secció és només configuració de la variable i la de Constant.

2: El primer del bucle buit és carregar totes les entrades utilitzades a una variable. Això es fa per dos motius. La primera raó és limitar les tasques pesades de la CPU de llegir una entrada. La segona raó, que és la més important i important, per assegurar-se que si s’utilitza una entrada més d’una vegada, tindrà el mateix valor durant tot l’escaneig. Això fa que l’escriptura de codi coherent sigui més fàcil. Aquesta és una pràctica molt comuna a la programació de PLC, però també s'aplica a la programació incrustada.

// ------------------------- Entrada a memòria RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);

3: A la part sekvens del codi, acabem de fer un sekvens amb les ordres Switch i case. La part sekvens només dóna senyals a la part de control de posició del codi. Aquesta part es pot personalitzar fàcilment a la vostra aplicació o utilitzar-la tal qual.

4: La posició del servo només està controlada pel servo liberi i una afirmació if per a la pinça oberta i tancada.

El control Stepper és una mica més complicat. La funció compara el setpoint (la posició a la qual voleu que vagi el braç) i la posició actual. Si la posició actual és amant, la funció s'afegeix a la posició i demana a la funció Stepper liberi que faci un pas positiu. El contrari és cert per a una posició hig. si la posició és la mateixa que el valor de consigna, hi ha un bit XinPos i el pas a pas s'atura.

// SP control X

if (XstepCountXsp i no Inici) {

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

5: Afegiu el final del codi que es controla els motors amb les funcions liberi.

// -------------------- Sortida ---------------------- // pas un pas: XStepper.step (Xstep); // pas un pas: YStepper.step (Ystep);

Griper.write (GripSp);

Pas 4: fet per

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Recomanat: