Robô Pick n Place computadorizado

Robot computarizado Pick n Place

El robot Pick and Place completo es una combinación de tres subsecciones

1. Mecanismo robótico

2. Circuito controlador de hardware

3. Control de software en VC++

Obviamente, la parte principal será el mecanismo que realmente forma el cuerpo del robot , es decir, un brazo robótico móvil que recoge o coloca cualquier objeto .

La función del circuito controlador de hardware es accionar los tres motores y controlar todos los movimientos del robot.

El software de control también es una parte importante de este robot porque se encargará de todas las acciones de control. Las principales funciones de esta sección son

Gire la mano a un ángulo específico desde donde se va a recoger o colocar el objeto.

  • Mueva la mano hacia arriba o hacia abajo para levantar o colocar el objeto.
  • Abrir o cerrar el puño según el tamaño del objeto.

Primero, comencemos con la mecánica.

Mecanismo robótico: –

La siguiente figura muestra la vista 3-D del mecanismo.

Robot computarizado Pick n Place

Todo el mecanismo está fabricado con láminas de madera, sólo los mangos son de acero. Hay tantas partes, así que entendamoslas una por una.

Base fija: – La base fija proporciona alojamiento completo para el circuito de accionamiento, el motor de CA (ACM1) y todas las conexiones. Proporciona la plataforma para mover y rotar la mano.

Rueda giratoria: – Proporciona alojamiento para movimiento manual y motorreductor DC (DCM1). Es una plataforma que gira libremente y que gira la mano en un círculo completo de 360 ​​grados. Está acoplado directamente al eje ACM1.

Mano móvil: – Está acoplada al DCM1 con una plataforma provista sobre una rueda giratoria. Se permite moverse hacia arriba y hacia abajo libremente hasta un máximo de 90 grados. En el extremo frontal de la mano hay dos empuñaduras, una fija (inferior) y la otra deslizante (superior). La manija deslizante puede deslizarse hacia adelante y hacia atrás usando el segundo motor de engranajes de CC (DCM2). El extremo posterior de la mano proporciona alojamiento para el DCM2, que está directamente acoplado a la empuñadura deslizante. Aquí, el impulso angular (circular) del motor se convierte en movimiento lineal del mango deslizante grabando ranuras en el mango deslizante de madera que coinciden exactamente con los dientes del engranaje.

Motor de CA (ACM1): – La función de este motor es girar todo el plato giratorio hasta un ángulo específico. Este motor tiene una velocidad exactamente calibrada de 2 RPM (revoluciones por minuto) con un voltaje aplicado de 230 VAC y una frecuencia de 50 Hz. Por lo tanto, podemos calibrar el ángulo de rotación muy fácilmente.

2 revoluciones = 2×360 grados = 720 grados,

Esto significa que en un minuto el motor girará 720 grados. Ahora, en 1 minuto = 60 segundos, el motor gira 720 grados, así que calculemos cuánto girará en 1 segundo.

Segundo grado de rotación

60 720

1 720/60 = 12 grados

Por lo tanto, en 1 segundo, el motor girará exactamente 12 grados. Esto significa que si suministra energía durante 1 segundo, el motor girará solo 12 grados. Para que pueda seleccionar fácilmente los pasos para girar el motor, como 30 grados (30, 60, 90,…) 45 grados (45, 90, 135,…)

Motor de engranajes CC (DCM1): – Se utiliza para mover la mano hacia arriba y hacia abajo dentro del límite de un ángulo de 90 grados. Los engranajes incorporados reducen la velocidad del motor a aproximadamente 5 RPM a 12 VCC. Entonces, calculando el ángulo de rotación en 1 segundo.

Segundo grado de rotación

60 5×360 o = 1800 o

1 1800/60 = 30º

Significa que si suministra energía durante 1 segundo, el motor solo girará 30 grados. Puedes ajustar un máximo de 3 pasos de 30, 60 y 90 grados.

Motorreductor DC (DCM2): – Se utiliza para abrir o cerrar la manija para recoger el objeto. Puede aumentar o disminuir la apertura del asa según el tamaño del objeto. La relación de rotación del engranaje incorporada proporciona una velocidad de aproximadamente 10 RPM. Calculemos nuevamente el ángulo de rotación durante 1 segundo.

Segundo grado de rotación

60 10×360 o = 3600 o

1 3600/60 = 60 °

Aquí el motor girará 60 grados si se suministra energía durante 1 segundo. Las ranuras están grabadas de tal manera que cuando el motor gira 60 grados el mango se mueve unos 1-2 cm. Así, finalmente podrás abrir o cerrar el tirador en pasos de 1 cm (1, 2, 3…), 2 cm (2, 4, 6…).

Circuito del controlador de hardware

Circuito del controlador de hardware

La figura de la pestaña del circuito 1 muestra el esquema del circuito del controlador. Es un circuito de un solo chip y IC UNL2003A es su componente principal. Otros componentes son un conector hembra tipo D de 25 pines, un relé C/O simple (RL1, RL2, RL3, RL5) y un relé C/O doble (RL4, RL6).

Conexiones: – Las salidas del conector D0 al D6 se conectan directamente a las entradas del UNL2003A y las salidas del chip se alimentan a uno de los terminales de bobina de cada relé. El otro terminal de bobina de cada relé está conectado directamente al suministro de 12 V CC. El 'terminal común' (C) de RL1 está conectado a 230 VCA y el terminal 'Normalmente abierto' (N/A) está conectado al terminal 'C' de RL2. Ambos terminales de RL2 (N/C, N/O) están conectados a ACM1. Para ambos relés RL4 y RL6, los terminales alternativos N/C y N/O están en cortocircuito. Uno de estos pares está conectado a tierra y el otro par recibe un suministro de CC de 12 V y 5 V a través de RL3 y RL5, respectivamente.

Operación: – El chip UNL2003A consta de 7 pares Darlington y cada vez que recibe una lógica alta en su entrada, proporcionará una lógica baja en su salida respectiva. Entonces, siempre que aplique lógica alta a través de la PC al chip, obtendrá una salida baja correspondiente. A medida que las salidas están conectadas a los terminales de la bobina del relé, los relés se energizarán debido a la corriente que pasa a través de la bobina. Cuando el relé se energiza, su conexión cambia de N/C a N/O y realizará alguna tarea específica. La siguiente tabla muestra la función de cada relé en el circuito.

Retransmisión

Su función en el circuito.

RL1

Para iniciar o detener la rotación del ACM1

RL2

Para cambiar la dirección del ACM1

RL3

Para iniciar o detener la rotación del DCM1

RL4

Para cambiar la dirección de DCM1

RL5

Para iniciar o detener la rotación del DCM2

RL6

Para cambiar la dirección del DCM2

Programas VC++

Programa de software en VC++

Robot computarizado Pick n Place

El software está escrito en el lenguaje de programación VC++. Aquí estoy considerando que está muy familiarizado con VC++. Por lo tanto, no estoy discutiendo aquí cómo se crea y diseña la aplicación en VC++. Aquí está la aplicación.

Tiene 14 objetos diferentes.

{C}{C}{C}{C}{C}{C} · {C}{C}{C}{C}{C}{C} 7 botones

{C}{C}{C}{C}{C}{C} · {C}{C}{C}{C}{C}{C} 6 botones de opción

{C}{C}{C}{C}{C}{C} · {C}{C}{C}{C}{C}{C} 1 cuadro de grupo.

Las funciones y propiedades de cada objeto se explican en la siguiente tabla:.

Sr. no.

Objeto

propiedades

Función

1

cuadro de grupo

ID: -IDC_Angle

Proporcionar agrupación para todos los botones de radio

Leyenda: – Seleccione un ángulo de rotación

dos

Botón de opción 1

ID: IDC_RADIO1

Selecciona el ángulo de rotación del motor de CA dentro de los 30 grados.

Leyenda: 30 grados.

Opción de grupo: marcada

3

Botón de opción 2

ID: IDC_RADIO2

Selecciona el ángulo de rotación del motor de CA a 60 grados.

Leyenda: 60 grados.

4

Botón de opción 3

ID: IDC_RADIO3

Selecciona el ángulo de rotación del motor de CA a 90 grados.

Leyenda: 90 grados.

5

Botón de opción 4

ID: IDC_RADIO4

Selecciona el ángulo de rotación del motor de CA entre 120 grados.

Leyenda: 120 grados.

6

Botón de opción 5

ID: IDC_RADIO5

Selecciona el ángulo de rotación del motor de CA entre 150 grados.

Leyenda: 150 grados.

7

Botón de opción 6

ID: IDC_RADIO7

Selecciona el ángulo de rotación del motor de CA entre 180 grados.

Leyenda: 180 grados.

8

Botón 1

Código: IDC_CL

Gire el motor de CA en el sentido de las agujas del reloj

Leyenda: Girar en el sentido de las agujas del reloj

9

Botón 2

ID: IDC_ACLK

Gire el motor de CA en sentido antihorario

Leyenda: Girar en sentido antihorario

10

Botón 3

Código: IDC_UP

Mueve la mano del robot hacia arriba

Leyenda: Mueva la mano hacia arriba

11

Botón 4

ID: IDC_DWN

Mueva la mano del robot hacia abajo

Leyenda: Mueva la mano hacia abajo

12

Botón 5

ID: IDC_OPN

Empuñadura abierta

Subtítulo: Puño abierto

13

Botón 6

Código: IDC_CLOS

Cerrar apretón de manos

Título: Agarre cerrado

14

Botón 7

ID:IDC_XIT

Salir de la aplicación

Título: Salir del programa

Después de repasar el diseño, pasemos al funcionamiento del programa.

Operación: – Todos los botones de opción seleccionan diferentes ángulos de rotación (de 30 a 180 ° ) para el motor de CA (ACM1). Como sabemos, si suministramos energía al ACM1 durante 1 segundo, girará 12o . Así, para rotar en pasos de 30 tenemos que suministrar suministro en múltiplos de 2,5 segundos. Entonces, en efecto, todos estos botones de opción seleccionarán el retraso deseado (2,5 segundos o 5 segundos, 7,5 segundos... de la misma manera) durante el cual el ACM1 recibirá alimentación de CA.

El botón Girar en sentido horario/antihorario girará el ACM1 en sentido horario/antihorario.

{C}{C}{C}{C}{C}{C} · {C}{C}{C}{C}{C}{C} El botón en el sentido de las agujas del reloj activará el relé RL1 durante el tiempo de retardo seleccionado por los botones de opción.

{C}{C}{C}{C}{C}{C} · {C}{C}{C}{C}{C}{C} El botón en sentido antihorario activará dos relés RL1 y RL2 a la vez, de modo que ACM1 gire en la otra dirección.

Los botones del puntero arriba/abajo activarán RL3 o RL3 y RL4 juntos durante 0,5 segundos para hacer que el DCM1 gire en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj y mueva el puntero hacia arriba o hacia abajo.

Los botones de apertura/cierre de la manija girarán RL5 o RL5 y RL6 juntos durante 0,5 segundos para que el DCM2 gire en sentido horario o antihorario o mueva la manija deslizante hacia adelante o hacia atrás para abrir o cerrar la manija.

Se agrega una funcionalidad más: si alguien quiere rotar el ACM1 en cualquier ángulo diferente, como 45 grados, puede hacerlo moviendo el mouse manteniendo presionado el botón izquierdo/derecho del mouse. El motor girará hasta que el ratón se mueva.

Código fuente del proyecto

Código fuente del proyecto

###


CMyroboDlg vacío::OnClk
{
// TODO: agregue aquí el código del controlador de notificaciones de control
Actualizar datos (VERDADERO);
cambiar (m_angle)
{
caso 0:
{
retraso = 2500;
romper;
}
caso 1:
{
retraso = 5000;
romper;
}
caso 2:
{
retraso = 7500;
romper;
}
caso 3:

{
retraso = 10000;
romper;
}
caso 4:
{
retraso = 12500;
romper;
}
caso 5:
{
retraso = 15.000;
romper;
}
}
Actualizar datos (FALSO);
_outp(0x0378,0x01);
Dormir(suavemente);
_outp(0x0378,0x00);
}
CMyroboDlg vacío::OnAclk
{
// TODO: agregue aquí el código del controlador de notificaciones de control
Actualizar datos (VERDADERO);

cambiar (m_angle)
{
caso 0:
{
retraso = 2500;
romper;

}
caso 1:
{
retraso = 5000;

romper;
}
caso 2:
{
retraso = 7500;
romper;
}
caso 3:
{
retraso = 10000;
romper;
}
caso 4:
{
retraso = 12500;
romper;
}
caso 5:
{
retraso = 15.000;
romper;
}
}
Actualizar datos (FALSO);
_outp(0x0378,0x03);
Dormir(suavemente);
_outp(0x0378,0x00);

}
CMyroboDlg vacío::OnUp
{
// TODO: agregue aquí el código del controlador de notificaciones de control
_outp(0x0378,0x08);
Dormir(500);
_outp(0x0378,0x00);
}
CMyroboDlg vacío::OnDwn
{

// TODO: agregue aquí el código del controlador de notificaciones de control
_outp(0x0378,0x18);
Dormir(500);
_outp(0x0378,0x00);
}
CMyroboDlg vacío::OnOpn
{
// TODO: agregue aquí el código del controlador de notificaciones de control
_outp(0x0378,0x10);
Dormir(500);
_outp(0x0378,0x00);
}
CMyroboDlg vacío::OnClos
{
// TODO: agregue aquí el código del controlador de notificaciones de control
_outp(0x0378,0x30);
Dormir(500);
_outp(0x0378,0x00);
}
CMyroboDlg vacío::OnXit
{
// TODO: agregue aquí el código del controlador de notificaciones de control
En OK;
}
void CMyroboDlg::OnMouseMove(UINT nFlags, punto CPoint)
{
// TODO: agregue aquí el código de su controlador de mensajes y/o llame a default
if((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
_outp(0x0378,0x02);
Dormir(250);
_outp(0x0378,0x00);
}
de lo contrario si ((nFlags & MK_RBUTTON) == MK_RBUTTON)
{
_outp(0x0378,0x06);
Dormir(250);
_outp(0x0378,0x00);
}
CDialog::OnMouseMove(nFlags, punto);
}

###

Diagramas de circuito

u02

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.