Você está na página 1de 15

Materia: Sistemas Embebidos. Practica 1: Control de un Servomotor Futaba 3030 utilizando VHDL e implementado en un FPGA Spartan 3E.

Catedrtico: Rodrigo Lucio Maya Ramrez

Alumnos: Esquina Arenas Lucero Gonzlez Escalante Jared Carmona Corona Roberto Cruz Lozano Federico Tecuapacho Zecua Jernimo

Objetivo general de la prctica: Disear e implementar un sistema digital basado en FPGA para controlar la posicin de un servomotor. Objetivo especfico de la prctica: a. Implementar la modulacin por ancho de pulso (PWM) utilizando VHDL, para el control de un servomotor.

b. Controlar el LCD de la tarjeta de desarrollo Digilent Spartan 3E, utilizando VHDL.

c. Realizar el controlador PS2 para un teclado que sirva como medio de comunicacin entre el usuario y el FPGA.

Controlador PS2 para un teclado que sirva como medio de comunicacin entre el usuario y el FPGA. Para el control del teclado primero observamos que salida muestra con el analizador de estados lgicos, para lo cual se construye un pequeo programa en spartan. Se conecta el teclado a la tarjeta spartan y luego al analizador , los resulados obtenidos son los siguientes. Para el nmero 0 se obtuvo

Para el nmero 1 se obtuvo

Para el nmero 2 se obtuvo

Para el nmero 3 se obtuvo

Para el nmero 4 se obtuvo

Para el nmero 5 se obtuvo

Para el nmero 6 se obtuvo

Para el nmero 7 se obtuvo

Para el nmero 8 se obtuvo

Para el nmero 9 se obtuvo

Con estos valores se realiza el programa para poder reconocer los datos tecleados para el control del LCD.

Controlar el LCD de la tarjeta de desarrollo Digilent Spartan 3E, utilizando VHDL El display debe ser inicializado para poder ser utilizado, adems debe ser enviado un comando de borrar pantalla una vez inicializado (aunque esto no esta documentado en la mayora de las hojas de datos de los displays) para poder utilizarlo sin inconvenientes. Segn la interface que vaya a utilizarse, si es una interface a 4 u 8 bits esta secuencia es diferente. Vemos en las figuras siguientes los pasos a seguir para inicializar el display para cada una de las interfaces.

Secuencia inicializacin para interfase a 4 y 8 bits . Vemos que lo nico que cambia en la interfase a 4 bits es que una vez que esta enviado el comando de inicializacin, a partir de all todo envo debe ser realizado enviando primero el nibble alto y luego el nibble bajo de cada byte que estemos enviando. Esto tambin incluye a los comandos de inicializacin restantes luego de definir la interfase. Como corolario cabe acotar que en la mayor parte de los proyectos que se realizan no es necesario utilizar la lnea R/W, por lo cual se pone esta lnea a nivel bajo (conectada a GND) y se respetan los tiempos necesarios y casi la totalidad de los displays LCD funcionan correctamente de este modo. Sin embargo, los fabricantes de displays LCD aconsejan la utilizacin de la lnea R/W conectada al controlador, cada vez que se escribe sobre el display, antes de enviar un nuevo comando, se pasan las lneas de datos a entradas y se lee el estado del BIT 7 del byte entregado por el display, de este modo sabremos cuando el display est listo para recibir un nuevo comando. Si bien parece una tontera, en aplicaciones complejas, donde los tiempos valen oro, es muy importante no desperdiciarlo, por lo tanto utilizando la lnea R/W se puede optimizar mucho el aprovechamiento de los mismos.

Imaginen adems la ventaja de adaptarse sin problemas a distintas marcas y modelos de displays, funcionando a distintas condiciones de temperaturas y humedades, sin cambiar una sola lnea de cdigo.

Implementar la modulacin por ancho de pulso (PWM) utilizando VHDL, para el control de un servomotor El servo es un pequeo pero potente dispositivo que dispone en su interior de un pequeo motor con un reductor de velocidad y multiplicador de fuerza, tambin dispone de un pequeo circuito que gobierna el sistema. El recorrido del eje de salida es de 180 en la mayora de ellos, pero puede ser fcilmente modificado para tener un recorrido libre de 360 y actuar as como un motor. El control de posicin lo efecta el servo internamente mediante un potencimetro que va conectado mecnicamente al eje de salida y controla un pwm (modulador de anchura de pulsos) interno para as compararlo con la entrada pwm externa del servo, mediante un sistema diferencial, y as modificar la posicin del eje de salida hasta que los valores se igualen y el servo pare en la posicin indicada, en esta posicin el motor del servo deja de consumir corriente y tan solo circula una pequea corriente hasta el circuito interno, si forzamos el servo (moviendo el eje de salida con la mano) en este momento el control diferencial interno lo detecta y enva la corriente necesaria al motor para corregir la posicin. Para controlar un servo tendremos que aplicar un pulso de duracin y frecuencia especficos. todos los servos disponen de tres cables dos para alimentacin Vcc y Gnd y otro cable para aplicar el tren de pulsos de control que harn que el circuito de control diferencial interno ponga el servo en la posicin indicada por la anchura del pulso. En la siguiente tabla estn indicados los valores de control y disposicin de cables de varias marcas que comercializan servos. disposicin de cables + -batt batt pwm.

Duracin pulso (ms)

Fabricante min. neutral. mx.. Hz Futaba Hitech Multiplex Robbe Simprop 0.9 0.9 1.05 0.65 1.2 1.5 1.5 1.5 1.6 1.3 1.7

2.1 50 rojo negro blanco 2.1 50 rojo negro amarillo 2.2 50 rojo marrn naranja 2.15 40 rojo negro amarillo 1.95 50 rojo negro blanco 2.2 50 rojo azul negro

Graupner/Jr 0.8

RESULTADOS A continuacin se muestran los resultados obtenidos durante la descarga del programa en la FPGA.

. Muestra el servomotor en un sistema de referencia correspondiente a los grados a mover (0, 45, 90, 180).

Muestra la captura en el display a 45 y el movimiento correspondiente del servo.

Você também pode gostar