reporte pract1 embebidos

16
Materia: Sistemas Embebidos. Practica 1: Control de un Servomotor Futaba 3030 utilizando VHDL e implementado en un FPGA Spartan 3E. Catedrático: Rodrigo Lucio Maya Ramírez Alumnos: Esquina Arenas Lucero González Escalante Jared

Upload: fedexin40

Post on 05-Aug-2015

55 views

Category:

Documents


22 download

TRANSCRIPT

Page 1: Reporte Pract1 Embebidos

Materia:

Sistemas Embebidos.

Practica 1:

Control de un Servomotor Futaba 3030 utilizando VHDL e implementado en un FPGA Spartan 3E.

Catedrático:

Rodrigo Lucio Maya Ramírez

Alumnos:

Esquina Arenas Lucero

González Escalante Jared

Carmona Corona Roberto

Cruz Lozano Federico

Tecuapacho Zecua Jerónimo

Page 2: Reporte Pract1 Embebidos

Objetivo general de la práctica:

Diseñar e implementar un sistema digital basado en FPGA para controlar la posición de un servomotor.

Objetivo específico de la práctica:

a. Implementar la modulación 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 comunicación entre el usuario y el FPGA.

Page 3: Reporte Pract1 Embebidos

Controlador PS2 para un teclado que sirva como medio de comunicación entre el usuario y

el FPGA.

Para el control del teclado primero observamos que salida muestra con el analizador de estados

lógicos, para lo cual se construye un pequeño programa en spartan. Se conecta el teclado a la

tarjeta spartan y luego al analizador , los resulados obtenidos son los siguientes.

Para el número 0 se obtuvo

Para el número 1 se obtuvo

Page 4: Reporte Pract1 Embebidos

Para el número 2 se obtuvo

Para el número 3 se obtuvo

Page 5: Reporte Pract1 Embebidos

Para el número 4 se obtuvo

Para el número 5 se obtuvo

Page 6: Reporte Pract1 Embebidos

Para el número 6 se obtuvo

Para el número 7 se obtuvo

Page 7: Reporte Pract1 Embebidos

Para el número 8 se obtuvo

Page 8: Reporte Pract1 Embebidos

Para el número 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, además debe ser enviado un comando de

borrar pantalla una vez inicializado (aunque esto no esta documentado en la mayoría de las hojas

de datos de los displays) para poder utilizarlo sin inconvenientes.

Según 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.

Page 9: Reporte Pract1 Embebidos
Page 10: Reporte Pract1 Embebidos

 

Secuencia inicialización 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 inicialización, a partir de allí todo envío debe ser realizado enviando primero el nibble

alto y luego el nibble bajo de cada byte que estemos enviando. Esto también incluye a los

comandos de inicialización 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 línea R/W, por lo cual se pone esta línea 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 utilización de la línea R/W conectada al

controlador, cada vez que se escribe sobre el display, antes de enviar un nuevo comando, se

pasan las líneas 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 tontería, en aplicaciones complejas, donde los tiempos valen oro, es muy importante no

desperdiciarlo, por lo tanto utilizando la línea R/W se puede optimizar mucho el aprovechamiento

de los mismos.

Page 11: Reporte Pract1 Embebidos

Imaginen además 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 línea de

código.

Page 12: Reporte Pract1 Embebidos

Implementar la modulación por ancho de pulso (PWM) utilizando VHDL, para el control de un servomotor

El servo es un pequeño pero potente dispositivo que dispone en su interior de un pequeño motor con un reductor de velocidad y multiplicador de fuerza, también dispone de un pequeño circuito que gobierna el sistema. El recorrido del eje de salida es de 180º en la mayoría de ellos, pero puede ser fácilmente modificado para tener un recorrido libre de 360º y actuar así como un motor.

El control de posición lo efectúa el servo internamente mediante un potenciómetro que va conectado mecánicamente 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 posición del eje de salida hasta que los valores se igualen y el servo pare en la posición indicada, en esta posición el motor del servo deja de consumir corriente y tan solo circula una pequeña 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 envía la corriente necesaria al motor para corregir la posición.

Para controlar un servo tendremos que aplicar un pulso de duración y frecuencia específicos. todos los servos disponen de tres cables dos para alimentación Vcc y Gnd y otro cable para aplicar el tren de pulsos de control que harán que el circuito de control diferencial interno ponga el servo en la posición indicada por la anchura del pulso.

En la siguiente tabla están indicados los valores de control y disposición de cables de varias marcas que comercializan servos.

Duración pulso (ms)disposición de cables

Fabricante

min.

neutral.

máx..

Hz

+ bat

t-batt pwm.

Futaba 0.9 1.5 2.150

rojo

negro blanco

Hitech 0.9 1.5 2.150

rojo

negroamarill

oGraupner

/Jr0.8 1.5 2.2

50

rojo

marrón

naranja

Multiplex1.05

1.6 2.1540

rojo

negroamarill

o

Robbe0.65

1.3 1.9550

rojo

negro blanco

Simprop 1.2 1.7 2.250

rojo

azul negro

Page 13: Reporte Pract1 Embebidos

RESULTADOS

A continuación 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º).

Page 14: Reporte Pract1 Embebidos

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

Page 15: Reporte Pract1 Embebidos