f Proyecto: Diseño y Contruccion de brazo robotico ~ Ingenieria a nivel industrial

Visita mi canal de youtube

domingo, 16 de julio de 2017

Proyecto: Diseño y Contruccion de brazo robotico


No sería increíble

.... si pudiéramos controlar un brazo robótico a través de un microcontrolador?

.... si pudiéramos regular la velocidad y la dirección de cada motor?

.... si el microcontrolador podría ser utilizado para mover las articulaciones de varios brazos a ángulos precisos?

.... si pudiéramos extender el control del brazo a una interfaz gráfica de usuario 3D?

.... si la GUI permitió la capacidad de manipular el brazo a cualquier posición y luego enviar posiciones a discreción del usuario?

.... si la interfaz gráfica de usuario además proporcionó la capacidad de programar una serie de posiciones de brazo, para borrar, actualizar, cargar o guardar programas como se desee, y luego enviar un programa al microcontrolador para ejecutar?

.... si pudiéramos añadir código de reconocimiento de objetos para escanear un dispositivo Quickcam para objetos de forma simple y enviar cualquier dato a la GUI y al microcontrolador?

¡SÍ LO HARÍA!

Bueno, eso es lo que estábamos pensando cuando nos volvimos locos con nuestro proyecto final para EE476. Ambos siempre estuvimos interesados ​​en cómo interactuar con dispositivos de tipo Quickcam. Ambos encontramos un gusto por la programación en Java3D. Ambos siempre quisimos trabajar con robótica. Solución simple: hacer todo lo posible para que podamos aprovechar un poco de todo.

Jeff Vogel y Robin Glinton

Materiales y cosas usadas

Atmel AT90S8535 Microcontrolador con interfaz de puerto paralelo
Panel LCD
Teclado de 16 teclas
Ordenador portátil con procesador Pentium III
Brazo robótico con 5 grados de libertad
Interfaz Quickcam w / Parallel Port
Cable RS-232 para la comunicación entre PC y Atmel
Fuente de alimentación de 6V
Trimpots (3)
Clicker switch
H-puente - BJTs (2/2), diodos (4), 300ohm R (4)
Relés de láminas de 5 V (7)
NAND / Circuito lógico inversor

Buscamos todo el lugar para kits de brazo robótico que no eran demasiado caros, pero permitió una buena gama de movimiento y varias articulaciones diferentes. Finalmente decidimos sobre el Robotic Arm Trainer 007 de OWI Incorporated. Este kit de brazo fue relativamente fácil de montar (~ 3 horas) y fue bastante divertido de construir! Esto es lo que parecía antes de empezar:





El brazo tiene cinco grados de libertad y cinco motores de 6V para cada pieza: la base, el hombro, el codo, la muñeca y la pinza.
El kit de brazo vino con una caja de control el-cheapo, pero necesitábamos un circuito más flexible para poder controlar los motores a través del microcontrolador. Así que decidimos construir un circuito de puente h con un disparador de modulación de ancho de pulso y una señal de dirección para controlar la dirección de avance / retroceso de un solo motor, y luego creamos un tren de relés para seleccionar / deseleccionar qué motores mover.




Inicialmente pensábamos que la mejor manera de controlar los motores del microcontrolador era utilizando un puente h y un circuito lógico de puertas e inversores de tipo n, de manera que habría 7 señales en total para el microcontrolador: Modulación de ancho de pulso (la amplitud ), La dirección del motor seleccionado y 5 señales para los 5 motores diferentes a controlar.

       Esto resultó difícil de trabajar, y muchos de los problemas que encontramos (mucho) más tarde fueron causados por la baja corriente en portB (arg!) Que no podía conducir los relés correctamente. Así que algunos de los controles del motor tenían que "compartir" clavijas con el teclado en portC. Más alfileres habría sido agradable, pero nos las arreglamos el mejor que pudimos con lo que teníamos.

      A continuación se muestra el esquema de nuestro primer circuito de control del motor. Cuando PWM y Direction son ambos altos, el motor seleccionado gira en sentido horario. Cuando PWM es alto y la dirección es baja, el motor seleccionado gira en sentido contrario a las agujas del reloj. Cuando PWM es baja (amplitud = 0), no se moverán motores.


Modificamos el circuito de control a sólo un largo tren de relés, y las cosas comenzaron a funcionar mucho mejor! Era una pena que perdáramos mucho tiempo con el puente h, porque probablemente no era lo mejor para trabajar en nuestro caso. Aquí estaba nuestro nuevo circuito:



Conexiones

PORT A - Convertidor A / D

    Pin 0 - Potenciómetro de la articulación de la base (rango ~ 180 grados)

    Pin 1 - Potenciómetro de la articulación del hombro (rango ~ 120 grados)

    Pin 2 - Potenciómetro de la articulación del codo (rango ~ 135 grados)

PORT B ​​- Control del motor

    Pin 0 - Salida de base hacia adelante

    Pin 1 - Salida delantera del hombro

    Pin 2 - Salida de codo hacia adelante

    Pin 3 - Salida de la pinza delantera

    Pin 4 - Entrada del sensor de clavija de pinza

PORT C - híbrido de control de teclado / motor

    Pines 0,1,2,3 - Teclado

    Pin 4 - Salida de base inversa, Teclado

    Pin 5 - Salida de hombro hacia atrás, teclado

    Pin 6 - Salida de codo inverso, Teclado

    Pin 7 - Salida de pinza inversa, Teclado

PORT D - LCD



Programa

     El principal papel del microcontrolador es el control de los diferentes motores del brazo robótico, y es el elemento central que conecta el mundo del software (Java3D Interface) con el mundo físico (el brazo).

     Hay 2 modos implementados que el programa del microcontrolador puede ejecutar en:

     Modo 1) Control Local / Manual - el teclado / LCD puede ser usado para seleccionar la articulación apropiada para mover, la velocidad del movimiento y el ángulo con el cual moverlo. Las articulaciones se moverán según lo indicado y se detendrán aproximadamente en el ángulo indicado. El ADC lee en los trimpots de la articulación que se está moviendo si es una articulación determinada por ángulo (base, hombro o codo) y el PIN B4 lee en el interruptor de la pinza si la pinza está seleccionada para ser cerrada Ser capaz de sujetar objetos).

     Modo 2) Control GUI - el usuario manipula el brazo en Java3D y establece el brazo en una posición deseada (en términos de ángulos y estado de las cinco articulaciones), y luego puede transmitir la información al microcontrolador para su procesamiento. El microcontrolador debe estar configurado en modo GUI para recibir controles de posición entrante desde el ordenador.

     Hay algunos otros modos que se trabajó en pero nunca se completó debido a una falta de tiempo y una subestimación de la dificultad en algunas áreas. Estos son:

     Modo 3) Modo de programación: el usuario crea, actualiza y guarda programas en el controlador GUI, que consisten básicamente en un conjunto de posiciones para que el brazo se mueva. El microcontrolador recibe el programa y realiza el conjunto de movimientos en el orden especificado .

     Modo 4) Modo de Reconocimiento de Objeto - una vez que se coloca un objeto en forma simple (bola) en la vista de la Quickcam, el código de reconocimiento de objeto señala la GUI que incorpora el objeto en la visualización gráfica. El usuario puede entonces manipular el brazo para agarrar el objeto y así sucesivamente. La GUI podría entonces señalar al microcontrolador del objeto en vista.

     ¡Las posibilidades con este tipo de cosas son infinitas!
t h e   G U I



La GUI para el control del brazo robótico fue escrita en Java3D porque como un applet Java puede ser incorporado en una página web para su uso con navegadores web, y la estructura de Java3D facilita el trabajo con objetos en 3 dimensiones. El programa consta de tres vistas diferentes del brazo, representando los tres sectores básicos que pueden ser manipulados. La pantalla superior izquierda controla las articulaciones del hombro y del codo del brazo, donde cualquiera de las articulaciones puede ser agarrada y girada entre sus ángulos extremos, y se puede ver la actualización de los ángulos antes de usted. La pantalla del medio superior se ocupa de la articulación de la base, donde se puede girar la base como se desee. La pantalla superior derecha se ocupa de la muñeca y la pinza. El botón izquierdo gira la muñeca, y el botón derecho hace clic en la pinza. El panel de control inferior derecho trata de crear nuevos programas (conjuntos de posiciones), actualizarlos (añadir una nueva posición al conjunto), guardarlos como archivos .ARM, enlace quickcam al código de reconocimiento de objetos (no se ha implementado completamente) y enviar De posiciones o archivos .ARM al microcontrolador Atmel.

Nota: para ejecutar este software, los paquetes Java3D y JavaComm deben estar en el sistema por el que lo ejecuta.
R e s u l t s


Bien....

Probablemente fijamos nuestras vistas demasiado altas cuando decidimos bucear en esta plétora de proyectos. Comenzamos trabajando mucho en el código de nivel superior como rutinas Java3D y C ++ para reconocer objetos a través de Quickcam, que eran muy interesantes de trabajar, pero subestimamos lo difícil que sería controlar los motores y realizar una detección precisa de la posición. Una gran parte de nuestro programa se construyó alrededor del hecho de que el kit de robótica que pedimos no llegó hasta 2 semanas antes del proyecto era debido, así que tuvimos que conseguir otras cosas hecho antes. En el momento en que el kit llegó, teníamos un buen código de trabajo en el lado del software de las cosas, y el reconocimiento de objetos y el programa Java3D funcionaron bien individualmente.

Pero nuestro problema principal tenía que ver con el control de los varios motores al brazo y otras cuestiones relacionadas con la mecánica. Primero, creamos un puente h y un circuito lógico para seleccionar PWM, dirección y motor para moverse. Esto nos dio infinitos problemas. Por alguna razón la corriente que salía del puente h era demasiado baja para alimentar cualquiera de nuestros relés, excepto relés de láminas de 5V, y los relés de láminas de 5V NO son PLENTIFUL en Ithaca !! Estos relés fueron los únicos que encontramos que eran confiables, pero por desgracia sólo encontramos lo suficiente para poder controlar 4 de los 5 motores.

Trabajando con los 4 motores, todo fue genial! Fuimos capaces de manipular el brazo de 4 maneras diferentes en la interfaz Java3D en el ordenador y enviar las posiciones al microcontrolador, y luego el microcontrolador ejecutado los movimientos necesarios de las articulaciones para llegar a esa posición específica. Encontramos que la velocidad del motor era también un poco demasiado rápida, así que la ralentizamos usando un control PID fabricado en casa.

En otra nota, era muy difícil instalar físicamente los sensores de posición (trimpots) en el propio brazo. Intentamos soldar, pegar y todo tipo de cosas. Finalmente tuvimos un par trabajando, pero nos topamos con problemas con trimpots no siendo completamente confiable - todo esto agregó algo de confiabilidad en lo que el brazo realmente hizo cuando "le dije" qué hacer. No todas las señales enviadas al microcontrolador funcionaban exactamente, pero definitivamente era una vista para ver cuando programas la GUI y luego el brazo ejecuta exactamente lo que especificaste. ¡Guay!









0 comentarios:

Publicar un comentario