Tabla de contenido:

UCL - Embedded - Pick and Place: 4 pasos
UCL - Embedded - Pick and Place: 4 pasos

Video: UCL - Embedded - Pick and Place: 4 pasos

Video: UCL - Embedded - Pick and Place: 4 pasos
Video: Cranking-on a Wrist Fracture #shorts 2024, Mes de julio
Anonim
UCL - Embebido - Pick and Place
UCL - Embebido - Pick and Place

Este instructivo explicará cómo se hace una unidad de selección y colocación 2D y cómo codificarla.

Paso 1: Compunets

Compunets
Compunets

1x Adrio Mega

2x motores paso a paso (utilizamos el motor paso a paso JLB, modelo 17H1352-P4130)

2x Módulo de placa controladora de accionamiento de motor paso a paso L298N Puente H dual DC para Arduino

1x servomotor (no tenemos la mota en este)

3 resistencias de 10k ohmios

2x habones de nailon

1x fuente de alimentación de 12v

Un poco de madera para el marco.

Alambres

Paso 2: construcción

Construcción
Construcción
Construcción
Construcción
Construcción
Construcción

Lo primero durante la fase de Construcción fue decidir el tamaño y la forma del pico y colocar la mashine.

Primero construimos la madera de forma básica. Construimos nuestro marco de selección y colocación de 50 cm por 25 cm por 30 cm. Todo, excepto el marco, el puente y el brazo de elevación, se fabricó con un cortador láser.

Aquí hay un enlace a todos los archivos

Entonces queríamos el sistema de poleas. Aquí fuimos con dos anillos de 50 mm y un anillo de 20 mm. Luego colocamos un paracord junto al de 20mm con un poco de pegamento. Después de lo cual apretamos los dos anillos de 50 mm a cada lado del anillo de 20 mm.

20 mm

50 mm

Entonces necesitamos diseñar una guía deslizante para el brazo. Aquí hicimos dos lados y una placa trasera.

Que luego se pegó en forma de U. Luego lo conectamos al puente.

Plato lateral

Placa trasera

Ahora que las partes para mover el brazo hacia arriba y hacia abajo están listas. Necesitamos moverlo hacia adelante y hacia atrás.

Al diseñar esto, nos aseguramos de que los dientes se alinearan entre sí. Entonces, ambos elementos se crearon en el mismo lugar del proyecto.

Paso 3: Código

Código
Código
Código
Código
Código
Código

La programación es bastante simple y consta de 5 partes

  1. Inclusión de Bibliotecas y Configuración de variables para uso interno y IO
  2. Cargar entradas a Ram
  3. Sekvens, eligiendo el movimiento que quieras.
  4. Control de posición paso a paso / servo
  5. Salida al mundo

Explicaremos a grandes rasgos cada parte, pero recuerde que esta es solo una de las muchas soluciones.

1: Antes de la configuración vacía, incluimos las 2 bibliotecas que necesitamos para este proyecto. Stepper y Servo. El uso de las bibliotecas incluidas le evita tener que aprender todos los detalles sobre motores paso a paso y servomotores.

#incluir

#incluir

const int stepsPerRevolution = 200; // cambie esto para que se ajuste al número de pasos por revolución de su motor

// inicializa la biblioteca paso a paso en los pines 8 a 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stepsPerRevolution, 28, 29, 30, 31); Servo Griper; // crea un objeto servo para controlar un servo

la pinza debe conectarse en la configuración del vacío

void setup () {// inicializar el puerto serie: Serial.begin (9600); Griper.attach (9); // conecta el servo en el pin 9 al objeto servo

El resto de esta sección es solo la configuración de Variables y Constantes.

2: Lo primero en Void Loop es cargar todas las entradas utilizadas en una variable. Esto está hecho por dos razones. La primera razón es limitar las tareas pesadas de la CPU de leer una entrada. La segunda razón, que es la más importante, es asegurarse de que si una entrada se usa más de una vez, tendrá el mismo valor durante todo el escaneo. Esto facilita la escritura de código coherente. Esta es una práctica muy común en la programación de PLC, pero también se aplica a la programación integrada.

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

3: En la parte sekvens del código, acabamos de hacer un sekvens con los comandos Switch y case. La parte de sekvens solo da señales a la parte de control de posición del código. Esta pieza puede personalizarse fácilmente para su aplicación o usarse tal cual.

4: La posición del servo solo se controla mediante el servo liberi y una declaración if para pinzas abiertas y cerradas.

El control paso a paso es un poco más complicado. La función compara el punto de ajuste (la posición a la que desea que vaya el brazo) y la posición actual. Si la posición actual es amante, la función se suma a la posición y solicita a la función Stepper liberi que dé un paso positivo. Lo contrario es cierto para una posición alta. si la posición es la misma que el Setpoint, un bit XinPos se mantiene alto y el paso a paso se detiene.

// SP controal X

if (XstepCountXsp y no Home) {

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

5: Agregue el final del código, los motores se controlan con las funciones liberi.

// -------------------- Salida ---------------------- // paso un paso: XStepper.step (Xstep); // paso un paso: YStepper.step (Ystep);

Griper.write (GripSp);

Paso 4: Hecho por

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Recomendado: