You are on page 1of 8

1

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

Informe Mini-proyecto
Control de
posicin angular de un motor
Andrs Serrano 2092021
Erika Zrate 2092017
Presentado a: PhD(c) Sergio Alberto Abreo Carrillo
INTRODUCCIN
Debido a las diferentes herramientas que se tiene se quiere
presentar el desarrollo del control de posicin del ngulo de un
motor, para esto se trabajar con Picoblaze y con ISE. Estas
dos herramientas me permiten la descripcin de hardware y de
software, lo que posibilita hacer en detalle el circuito que
conecta los diferentes bloques como: los perifricos de entrada
y de salida, el procesador, los anti-rebotes, ADC (conversor
anlogo a digital), etc. Esto se puede realizar a travs de la
herramienta ISE mientras en Picoblaze mediante el lenguaje
assembler se realiza el control de la planta (motor), all se
puede observar cada uno de los nombres asignados a los
registros, los saltos, las operaciones que se realizan para que el
motor realice el comportamiento deseado.
CONVERTIDOR ADC
El convertidor ADC viene incorporado en la placa de la FPGA
cuya referencia es LTC1407A.
Es un ADC de dos canales, cuenta con una resolucin de 14
bits, con voltaje de referencia de 1.65 voltios por canal y una
frecuencia de muestreo segn el datasheet de hasta 1.5MHZ si
se le incorpora un reloj de 100MHZ, por lo que, segn el
teorema de muestreo de Shanon-Nyquist, puede soportar
seales de frecuencia de hasta 700KHZ. Cada canal del ADC
soporta entradas entre 0.4V y 2.5 voltios, motivo por el cual es
necesario que en su entrada se adecue el voltaje de la seal
mediante algn circuito sujetador o retenedor.
Las muestras digitales de la seal de entrada de acuerdo a la
conversin que realiza el ADC corresponden a un valor entre
-8192 y 8192 contenido en 14 bits en representacin de
complemento a dos que se entregan de manera serial en una
misma seal del ADC para ambos canales.
El primer problema al que nos enfrentamos fue la adecuacin
de este convertidor, hubo necesidad de entender el protocolo y
cada una de las seales que intervenan en el proceso

Figura 1 Circuito de control de seales anlogas


Como se observa en la figura 1 el ADC viene acompaado de
un preamplificador programable de ganancia variable que se
muestra a continuacin con los respectivos rangos de cada
ganancia

Tabla 1
Las seales analgicas se conectan a los pines VinA o VinB
del conector J7, con un voltaje de referencia Vref=1.65V. El
1.65V de referencia se genera mediante un divisor de tensin
de los 3,3 v de la tensin de alimentacin. Como se observa en
la tabla 1 todas las ganancias estn invertidas.
La ganancia de cada amplificador se enva como una palabra
de 8 bits de comando, que consta de dos campos de 4 bits. El
bit ms significativo, B3, se enva primero.

2
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

El resultado del circuito de captura (para uno de los canales)


corresponde a un valor en complemento 2 de 14 bits, que en
valor decimal se explica de acuerdo a la siguiente frmula:

Figura 2 Configuracin de la ganancia


La salida AMP_DOUT del amplificador contiene la
informacin de la ganancia.
Estos valores pueden ser ignorados por la mayora de las
aplicaciones. La transaccin de bus SPI se inicia cuando la
FPGA coloca en bajo la seal AMP_CS. El amplificador
captura datos en serie de SPI_MOSI en el franco de subida de
la seal de reloj SPI_SCK. El amplificador presenta los datos
en serie AMP_DOUT en el flanco de bajada del a seal
SPI_SCK.

La ganancia es la configuracin cargado en el preamplificador


programable. Las diversas configuraciones permitidas para
ganancia y tensiones admisibles aplicadas a las entradas de
VINA y VINB aparecen en la tabla 1. La tensin de referencia
para el amplificador y el ADC es 1.65V, generados a travs de
un divisor de tensin que se muestra en la figura 1. En
consecuencia, 1.65V se resta del voltaje de entrada en VINA o
VINB. El mximo rango de la ADC es 1.25V, centrada
alrededor de la tensin de referencia, 1.65V. Por lo tanto,
1.25V aparece en el denominador para escalar la entrada
analgica.

Figura 5 Mximo y mnimo numero arrojado por el conversor


en binario
Figura 3 Diferentes seales que intervienen en la
configuracin de ganancia

En la tabla se muestra el valor mnimo y mximo de muestras


en complemento a dos del convertidor.

La configuracin se enva serialmente por el bus SPI_MOSI


(Master Out Slave In) partiendo por el bit B3 y terminando por
el bit A0. El registro de configuracin actualiza sus valores a
medida que les van llegando en los flancos de subida del reloj
SCK mientras la seal AMP_CS (chip select del amplificador)
se encuentra en 0 lgico, y la configuracin se termina cuando
se sube la seal AMP_CS (situacin en la cual ya se puede
utilizar el ADC).

Los pines a conectar en la FPGA los proporciona el PDF de la


Spartan 3AN.
IMPLEMENTACIN DEL CONVERTIDOR ADC

Figura 6 Interfaz SPI

Figura 4 Esquema de las ganancias de los puertos de entrada


AyB

Lo primero que se creo fue la interfaz de control del SPI cuyo


funcionamiento debe ser como el mostrado en la figura 6,
cuando AD_CONV se hace cero inicia la toma de datos de
ambos canales VIN_A y VIN_B independientemente de si se
estn usando o no ambos a la vez, hubo que ser cuidadoso con
la cantidad de ciclos de reloj entre los pulsos AD_CONV, los
tiempos mnimos estn estipulados en el PDF de la Spartan.

3
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

Este bloque genera la seal de reloj SPI_SCK la cual es


utilizada en todo el proceso.

Figura 8 Esquema general


Figura 7 Pre amplificacin
La etapa de pre amplificacin debe hacer lo mostrado en la
figura 7, cuando AMP_CS se hace cero debe iniciar la captura
de la asignacin de los bits de ganancia, en total 8 bits que se
cuadraron en este caso 00000001 para generar una ganancia
de pre amplificacin de -1

Luego, AMP_CS se vuelve a hacer 1 y este bus no vuelve a


ser usado ms y de este modo queda configurada la ganancia,
este proceso debe hacerse al principio del programa, y la
ganancia es configurada una sola vez.
Otro bloque utilizado fue el convertidor serie-paralelo pues los
datos que arrojaba el convertidor eran en serie, tambin se
adicion un divisor de frecuencia dado que mientras estaba en
ejecucin el mdulo de ganancia, este deba procesarse a una
frecuencia mxima de 10 MHz, pero para evitar trabajar todo
el proceso con esta frecuencia se adicion un multiplexor que
enviaba al pin SPI_SCK la seal del divisor de tensin para
cuando este activa la etapa de pre amplificacin o el SPI_SCK
generado por la interfaz SPI para la toma de datos.
Finalmente, para controlar algunas seales hubo necesidad de
crear una mquina de estados.
El resultado de la simulacin final se muestra en el anexo 1,
donde se observan primero la configuracin de ganancia y
posteriormente la adquisicin de datos acorde con el pdf de la
Spartan.
Esquema general de funcionamiento
En la figura se muestra el esquema general de funcionamiento
de todo el proceso

Figura 9 Planta y etapa de potencia


La parte de potencia mostrada anteriormente se dej tal cual
pues era necesario para la corriente exigida por el motor,
previa a esta entrada se necesitaba colocar un comparador que
recibiera si haba un alto o un bajo, es decir si la Spartan
arrojaba 3.3 v o 0 v. El problema es que ese comparador al
probarlo nunca se mantuvo en cero, pues el comparador
oscilaba entre Vcc y Vcc, y se necesitaba que a la salida del
mismo en algunos instantes este se colocara en cero. Para ello
se cambi el enfoque y se utiliz un restador, de esta manera
se poda obtener a la salida 3.3v -3.3v para que el motor girase
a la izquierda o a la derecha o 0v para que mantuviera su
posicin.
En la figura 8 la planta representa el potencimetro y el motor,
y realimenta la salida del mismo en forma de tensin, este
voltaje de realimentacin va para el conversor ADC cuyo
funcionamiento se explico anteriormente, estos datos ahora
digitales pasan por un proceso de control programado en
lenguaje assembler y transformados a lenguaje de mquina
para ser procesados; la salida de este proceso que es
controlado de manera externa por pulsadores y switches de a
Spartan va a un puerto de salida de esta misma, se utilizaron
los ltimos dos bits de relevancia del out_port y estos van a la
entrada de la planta, mas especificamente al circuito inversor

4
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

al inicio de esta que va conectado en cascada con el circuito de


la figura 9, y este proceso se realimenta una y otra vez.
Fuentes VHD
Durante todo el proceso se utilizaron diferentes fuentes VHD,
a continuacin se explicar el funcionamiento de cada una de
ellas:

Perifrico requerido para la entrada de datos en el Picoblaze,


en total se utilizaron 4 entradas, el read_strobe y port_id para
el circuito decodificador y cuya salida es el in_port
KCPSM3

Debounce

Se utilizaron 3 anti rebotes para cada uno de los pulsadores


utilizados durante el proceso de control de la planta.
Motor

VHD dado en clase.


Convertidor

Nombre dado a la compilacin del programa realizado en


assembler
Perifrico de entrada
Convertidor de serie a paralelo dado que los datos que arroja
el conversor son en serie.
Angulo

5
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

VHD que permite hacer las divisiones de los ngulos cuando


el usuario oprime tantas veces el pulsador como grados quiere
que se mueva el motor.

Perifrico que fue necesario para recibir la seal del out_port y


cuya nica salida(los dos bits menos significativos) van a
realizar el control de la planta.

Divisor

Pre amplificacin

Divisor de reloj que est activo mientras se configura la


ganancia del ADC.
Mquina de estados

Interfaz SPI y mux de reloj

Fue necesaria para controlar algunas seales dentro del


datapath.
Perifrico de salida

Interfaz para la conversin ADC y multiplexacin de las


seales de reloj actuantes.
Control de Posicin
El programa que se realiz en assembler se muestra en el
anexo 2. Lo que se hizo inicialmente fue declarar unos
registros y unas constantes de entrada para usar en el port_id,
se compara el valor del registro orden con la salida de datos
del conversor, luego estos datos son cargados segn
corresponda para que el motor gire hacia la derecha o hacia la

6
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

izquierda, se da la orden output segn sea el giro del motor


izquierda o derecha y si la salida es 00 se da la orden de
detener este; luego, el proceso vuelve a comenzar. Se realiz
la respectiva simulacin en Pblaze y efectivamente el
programa hacia lo que se peda que hiciese.
Puesta en marcha
El funcionamiento del esquema es el siguiente, primero se
activa un pulsador de la Spartan para que inicie la toma de
datos en el conversor ADC, posteriormente se cuadra con
otros dos pulsadores el sentido de giro y la cantidad de ngulo
a girar determinada por las veces que se pulse
respectivamente, luego de esto otro pulsador dar inicio a la
ejecucin del control, y apenas el motor llegue a la posicin
deseada se parar automticamente, para realizar nuevamente
la escogencia del sentido de giro y la cantidad de ngulo.
Hubo problemas a la hora de la integracin de la etapa de
potencia por lo que finalmente se decidi no integrar esta parte
con la parte digital para no poner en peligro la integridad de la
tarjeta Spartan, debido a la inestabilidad que en ocasiones
presentaba los TIP 41C y TIP 42C que podran resultar en
daos para esta tarjeta, pues pruebas hechas a slo esta etapa
probaron que en ocasiones arrojaban altos picos de corriente
que llegaran a ser potencialmente peligrosos. Se deja para
posteriores prcticas realizar algn tipo de circuito que proteja
la Spartan de estas corrientes pico.
URL videos sobre el proyecto
Para explicar mejor el funcionamiento del proyecto se
realizaron unos videos sobre el funcionamiento del mismo:
https://www.youtube.com/watch?v=rECDlqojPL4
https://www.youtube.com/watch?v=URcFgwjyphI
https://www.youtube.com/watch?v=108rhn2UfPY
https://www.youtube.com/watch?v=2s9DwgC30u8

Referencias
[1] PONG P. Chu., FPGA PROTOTYPING BY VHDL
EXAMPLES, 3rd Ed., 2008.
[2] Spartan-3A/3AN FPGA Starter Kit Board User Guide

7
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

ANEXOS

Programa
Simulacin interfaz ADC

Assembler
NAMEREG s0, angulo
NAMEREG s1, pos

8
UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA DE INGENIERAS ELCTRICA, ELECTRNICA Y DE TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

NAMEREG s2, new_pos


NAMEREG s3, orden ; inicio
NAMEREG s5, sentido
CONSTANT dato1, 00
CONSTANT dato2, 01
CONSTANT dato3, 02
CONSTANT dato4, 03
CONSTANT result, 00
;--------------------------------------------------------------------start:
input orden, dato3
compare orden, dato2
jump nz, start
carga:
input angulo, dato1
input pos, dato2
input sentido, dato4
compare sentido, dato2
jump nz, carga_l
carga_r:
load new_pos, 00
add new_pos, pos
add new_pos, angulo
load s8, new_pos
jump testi
carga_l:
load new_pos, 00
add new_pos, pos

sub new_pos, angulo


load s8, new_pos
jump testi
testi:
input pos, dato2
compare pos, s8
jump z, stop
jump nc, sal_l
sal_r:
load s4, 01
output s4, result
jump testi
sal_l:
load s4, 02
output s4, result
jump testi
stop:
load s4, 00
output s4, result
jump start

You might also like