Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

Técnicas Digitales 4

Encoder con Lazo cerrado


Profesores​:
· Ing.​ Cayuela Pablo

· Ing.​ Olmedo Sergio


Curso:​ 6R1
Fecha de entrega:​ 16/05/2020
Alumno​:
·​ CAMOLETTO, Ivan Leg. nº:68500

·​ COLLY, Matias. Leg. nº:70564


·​ VARGAS, Leonel Leg. nº:67639



Índice

1. Introducción---------------------------------------------------3

2. Especificaciones---------------------------------------------3

3. Solución Propuesta-----------------------------------------4

4. Componentes------------------------------------------------4
a. Detector de
Flancos---------------------------------------------------4
b. Contador 11 bits---------------------------------------6
c. Mux-4-Automático-------------------------------------7
d. Decodificador-Hex-7Seg----------------------------9
e. Contador-4-bit----------------------------------------10
f. Generador-Barrido----------------------------------11

5. Top: Encoder Lazo cerrado-----------------------------15

6. Diagrama en bloques del sistema---------------------16

7. Simulaciones finales--------------------------------------19

8. Test Bench-------------------------------------------------23

9. Conclusiones-----------------------------------------------24

2
Introducción
Un encoder se compone básicamente de un disco conectado a un eje giratorio. El disco está
hecho de vidrio o plástico y se encuentra “codificado” con unas partes transparentes y otras
opacas que bloquean el paso de la luz emitida por la fuente de luz (típicamente emisores
infrarrojos). En la mayoría de los casos, estas áreas bloqueadas (codificadas) están arregladas
en forma radial.
A medida que el eje rota, el emisor infrarrojo emite luz que es recibida por el sensor óptico
(o foto-transistor) generando los pulsos digitales a medida que la luz cruza a través del disco
o es bloqueada en diferentes secciones de este. Esto produce una secuencia que puede ser
usada para controlar el radio de giro, la dirección del movimiento e incluso la velocidad.
Como su nombre lo indica, es un encoder que determina el ángulo de posición por medio de
realizar cuentas incrementales. Esto quiere decir que el encoder incremental provee una
posición estratégica desde donde siempre comenzará la cuenta. La posición actual del
encoder es incremental cuando es comparada con la última posición registrada por el sensor.
Los encoders incrementales son un tipo de encoder óptico y este en este tipo de encoder cada
posición es completamente única.
Dentro de los encoders incrementales, se encuentran los encoders de cuadratura
corresponden a un tipo de encoder incremental que utiliza dos sensores ópticos posicionados
con un desplazamiento de 1⁄4 de ranura el uno del otro, generando dos señales de pulsos
digitales desfasada en 90º o en cuadratura. A estas señales de salida, se les llama comúnmente
A y B. Mediante ellas es posible suministrar los datos de posición, velocidad y dirección de
rotación del eje. Usualmente, si la señal A adelanta a la señal B (la señal A toma valor lógico
“1” antes que la señal B, por ejemplo), se establece el convenio de que el eje está rotando en
sentido horario, mientras que si B adelanta a A, el sentido será antihorario.
En este informe se utilizará un encoder incremental de cuadratura, con la salvedad que se
controlará por lazo cerrado con el fin de posicionar al encoder en un punto de interés, para el
usuario y con una precisión aceptable.

Especificaciones

● Realizar la descripción de un decodificador de encoder incremental visualizando en


un display los pulsos en n contador Up Down.
● Con la cuenta, se debe controlar una señal PWM. Esta señal, el ciclo de trabajo debe
variar entre 5% al 95%. La frecuencia debe ser de 400HZ.
● El ciclo de trabajo al 50% del PWM, debe suceder cuando la comparación de la
cuenta de contador Up Down es igual a la entrada de referencia.
● La entrada de referencia, nos dice en qué lugar se quiere posicionar el motor, dentro
de una revolución indicada por la cuenta desde 0 a 1999 pulsos de encoder.
● La entrada debe ser de 11 bit, como también el contador Up Down.

3
● La señal de PWM debe ser máxima para una diferencia +- de 100 entre la cuenta de
los pulso (contador Up Down) y la de referencia.
● Se debe simular variaciones de posición del motor en forma aceleración y
desaceleración en el punto de referencia para demostrar el funcionamiento del PWM.

Solución Propuesta
Se propone realizar una descripción de VHDL en el simulador de Xilinx, el Ise 12.1, con el
fin de describir este PWM modificado. Se procederá a explicar cada componente por
separado hasta llegar al módulo VHDL principal siendo este el TOP del programa.
Componentes
Detector de Flancos

4
Este componente detecta los flancos y el sentido de giro del encoder. La secuencia que ve en
sentido horario el detector es 10-11-01-00, cuando se modifica la señal A, la salida auxiliar
sOutA se vuelve un 1 lógico y si la señal A no presenta cambios, sOutA sera un 0 lógico, esto
permite obtener un pulso de un ciclo de reloj y no una señal continua, cuando se detecta un
flanco.
La particularidad ocurre que cuando se detecta el flanco, podremos saber el sentido de giro
del encoder si la señal A es distinta a la señal B, si no ocurre esto, el encoder se mueve en
sentido antihorario y pSentido será igual a 0.
sOutB es análogo a sOutA en funcionamiento
Por último se tiene 2 salidas, pFlancos que serán todos los pulsos detectados en sentido
horario y antihorario. Para diferenciarlos se encuentra la otra salida pSentido.

Simulación 1 : Detector de flancos

5
Contador 11 bits

El contador de 11 bits presenta un reset sincrónico. Icuenta e Isentido son entradas


provenientes del detector de flancos. oDig es la salida de 11 bits del contador.
La descripción trata de un contador de 11 bits típico con arreglos determinados para obtener
un contador Up Down, en el cual cuente a 1999 y desborde. Análogamente si está

6
disminuyendo, debe pasar de 0 a 1999. sLoadUp y sLoadDown son señales que valdrán un 1
lógico, en los casos de desbordamiento del contador análogamente.
sLoad es una señal que se usa para determinar una condición, si es '1' se encuentra el
contador en los puntos límites y se iniciara la lógica de control. Si no, seguirá contando ya
sea en sentido Up o Down.

Simulación 2: Contador 11 bits


Mux-4-Automatico

​Este código (pág.7) permite multiplexar a cada display 7 segmentos un número hexadecimal.
Ps0/1/2/3, le corresponden vectores de 4 bits que son los números hexadecimales siendo Ps0
el menos significativo. Como se observará en el código del Top se obtienen estos valores del
contador de 11bits. Continuando con la descripción de la entidad se presentan 2 salidas, la
propia del multiplexor ¨pOut¨ y otra salida para controlar los displays pSel.
Como se observa por ciclo de reloj se muestra uno de los displays, comenzando con el
menos significativo y barriendo. En cuanto a la descripción se utiliza una plantilla de
multiplexor usando Case/When.

7
La simulación se la adjunta con el componente siguiente, el decodificador de hexadecimal a
7 segmentos.

8
Decodificador-Hex-7Seg

Un decodificador que brinda la información a los display, se anexa su funcionamiento a


continuación. ​Simulación 3 : Deco Hex_7Segementos

9
Contador-4-bit

Se agrega un contador de 4 bits para transformar el clk de 15Khz rápido en uno más lento
para los displays, en este caso de 1khz. Cabe destacar que en la implementación se puede
elegir hasta 3 clks externos, se puede implementar 2 clks de 15 Mhz y otro de 15 Khz.
Entonces con este contador de 4 bits obtener un clk de 1 Khz para los displays.

10
Generador-barrido

El propósito de este bloque es generar una salida PWM, proporcional a la diferencia que hay
entre la posición actual y la ingresada.
Para este bloque se ingresa 2 señales de 11 bits: La señal de carga ingresada por el usuario
(iValFijo) y la señal del contador de 11 bits(iValActual) que varía a medida que rote el
motor.

11
El primer paso es restar estas señales para saber cuál alejado se encuentra iValActual del
valor deseado. Para ello se realizará una resta donde la salida sea el módulo (sDif) y el signo
se encontrará en la señal (sSentido).
Para la generación del PWM se utiliza el método del contador, donde se genera una señal en
diente de sierra y se le asigna la diferencia de las señales en el medio, dado que cuando son
iguales, el ciclo de trabajo es al 50%.

En nuestro caso el rango de trabajo es de 200 y la referencia se encuentra en 100. Para llevar
la señal a ésta escala, a sDif se le sumará 110 en caso de que la señal esté por debajo o se le
restará a 110.
Se pueden apreciar dos detalles en lo dicho anteriormente:
- Se utiliza 110 en lugar de 100, para generar 10 cuentas donde el valor inferior sea si o si '0'
y así generar el margen inferior del 5%.
- Se toma los números como enteros sin signo, por lo que la resta 110 - sDif podría desbordar
hacia abajo. Para evitar esto, cuando solo ocurra este caso, si sDif es mayor a 100, se fija el
valor en 100. Con esta implementación se evita crear complejidad trabajando con números
negativos y el resultado obtenido es el mismo ya que la salida para una diferencia mayor a
100 es siempre la misma.
En sPWM se almacena esta señal generada por la comparación del contador, pero todavía
falta el margen superior. Para ello cuando el contador supera los 210, se genera un PWM que
con 5% de ciclo de trabajo, y se combina con una compuerta OR para generar la señal final
que excursiona entre 5% y el 95%.
Esto se determina, para no trabajar con duty cycles de 0 y 100% que son contraproducentes,
para la vida útil del encoder.

12
Simulación 4 : Duty Cycle al 50%

Simulación 5 : Duty Cycle al 95%

13
Simulación 6 : Duty Cycle al 5%

TOP: Encoder-Lazo-Cerrado
​ or último se presenta el Top del programa, cabe aclarar que las simulaciones del anterior
P
componente (Generador_Barrido), son en realidad las simulaciones del sistema completo solo
que enfocado en el análisis del PWM, en este Top se agrega la decodificación a 7 segmentos
y la instanciación de todos los componentes. Entonces se procederá a mostrar el código del
programa y las simulaciones del programa con la presentación del display. Si analizamos a la
descripción total como una caja negra, obtendremos 5 entradas. Estas son las señales de
cuadratura A y B del encoder, un clk de 15Mhz, un reset sincrónico y iLoad que será la
posición que busque el usuario del encoder desde 0 a 1999 pulsos presentado en binario
(11bits). En cuanto a las salidas se encuentran, la salida PWM (oPWM), el vector de
seleccion para los displays (oSelector) y el vector de salida para los 7 segmentos (oDisplay).

14
Se anexa a continuación el diagrama en bloques del TOP

Se procede con el código y por último se muestran las simulaciones POST FIT finales

15
16
17
Simulación 7 : Simu del Encoder muestra de los 7 segmentos
En la simulación 10 se muestra el correcto funcionamiento del display, mientras los display
0,2 y 3 presentan un 0, el display 1 presenta un 4. Formano un 0040 en hexa equivalente a 64
en decimal observado en la simulación.

Simulación 8 : Duty cycle forzado al 5%

18
Simulación 9 : Duty Cycle forzado al 95%
En las anteriores simulaciones se comprueba una vez más el buen funcionamiento, del
generador_barrido que nos brinda la salida del PWM, como se explicó anteriormente cuando
el valor requerido por el usuario se encuentra por encima de los +/-100 pulsos, se obtendrá
automáticamente un duty Cycle del 5% si el valor actual del contador es mucho más grande
que el pedido y viceversa.

Simulación 10 : Barrido primera parte

19
Simulación 11 : Barrido segunda parte

Simulación 12 : Barrido tercera parte

​ n las simulaciones 10, 11 y 12 se realizó un barrido para apreciar al control del encoder
E
oscilando entre el 5% al 95%

20
Test Bench

21
22
En cuanto al test bench usado, es un loop para simular la señal en cuadratura del encoder, se
resetea al sistema y luego se procede a colocar como valor requerido por el usuario
(iValorFijo) igual a 192.

Conclusiones

El proyecto fue simulado en Ise 12.1 con la placa Spartan 3A XC3S200A. Cabe remarcar
que la convención del uso del sentido del PWM, se puede modificar con un inversor a la
salida del sistema. Así el 95% le corresponderá al control del encoder para su movimiento en
sentido horario del encoder y el 5% al sentido antihorario.
Toma relevancia el control de lazo cerrado, en esta clase de dispositivos debido a la
necesidad de la precisión, aun haciendo un control simple de PWM se obtiene muy buenos
resultados.

23

También podría gustarte