Está en la página 1de 8

1

Implementacion proyecto en FPGA


Técnicas de integración

I. O BJETIVOS En la figura 1 se puede observar la alimentación del encoder


I-A. Objetivo general y su salida ası́ como la alimentación del motor. Después de
diseñado el soporte, se busca la hoja de datos del Motor para
Implementar un sistema que monitoree 4 módulos princi- conocer el rango de operación y su valor nominal.
pales de un automóvil generando una alerta cuando cierto
parámetro se salga del rango asignado de operación y
pueda ser visualizado en una pantalla celular.

I-B. Objetivos especı́ficos


Implementación de cada periférico bajo una tarjeta FPGA
Nexys 4
Unificación de módulos dentro de un modulo superior
para una comunicación serial a un dispositivo móvil

II. V ELOCIDAD Figura 2. Especificación del fabricante - Motor RF310TA

Caracterización del modulo velocidad.


Para caracterizar el modulo de velocidad se dispuso de una
base en la cual el encoder se encuentra sobre-puesto entre el En la figura 2 se pueden resaltar 3 valores importantes
eje del motor y el circulo de referencia del encoder anclado para la caracterización del encoder, el primero es el rango
al eje. La distancia entre los detectores y la circunferencia se de operación del motor que va desde 1 voltio hasta 6
diseño de tal forma que fuera la mı́nima posible, en este caso voltios, en seguida el valor del voltaje nominal en el que
3 milı́metros en cada lado. Esto para tener la menor variación se realizaron las pruebas y por último las revoluciones
de la circunferencia. Además se asignó un angulo de 90 grados por minuto de 2800. Partiendo de dicha información se
respecto al eje del motor, ya que las ranuras dispuestas en esta desplegaron 2 series de pruebas en las que se pretendı́a medir
circunferencia son de tamaño menor a 5 milı́metros por lo que la velocidad del motor mediante el encoder. Por otro lado un
una desviación generarı́a el no conteo de este espacio. tacómetro, esto con el fin de caracterizar el encoder y, de ser
requerido, realizar ajustes al soporte para mayor precisión.
V Motor Tacometro hz Tacometro (RPM) Osciloscopio HZ
1v 16hz 1030 348hz
2v 36hz 2215 745hz
2.5v 45.8hz 2730 925hz
3v 56hz 3392 1.15khz
4v 70hz 4574 1.52khz
5v 94hz 5724 1.89khz
6v 113hz 7282 2.28khz

En II se evidencia las mediciones realizadas para el motor


en Hertz y revoluciones por minuto (rpm).
Se puede apreciar que los resultados fueron óptimos. Al
multiplicar el valor suministrado por el tacómetro se debe mul-
tiplicar por 20 debido a los orificios que tiene la circunferencia
y es el dato generado por el encoder.

Diseño digital del sistema

Después de tener la certeza de lo que se espera medir, con el


sensor, se realizo el modelo digital, representado por medio de
diagrama de bloques. Esto se puede observar en la siguiente
Figura 1. Base de encoder y motor modulo de velocidad figura.
2

la polarización de los diodos que conforman a los segmentos,


se tiene una configuración de 8 ánodos que corresponde a los
ánodos de cada grupo de siete segmentos, y de donde se parte
a realizar el control junto con señales digitales para cada uno
de los leds para la representación de un sı́mbolo, o en nuestro
caso números. Claramente la composición del display se indica
en la figura 5. Para el proyecto solo se usaron 4 grupo de
segmentos, puesto que la cantidad máxima de rpms del motor
no excede a un numero de 4 dı́gitos.

Figura 3. Diagrama de caja negra del módulo encoder

Se compone de tres señales, la primera llamada Clk, repre-


Figura 5. Conexión de ánados y cátodos[2]
senta el reloj de la tarjeta programable FPGA. Para nuestro
caso es de 100 MHz; la segunda señal el reset, corresponde al
control que nos ofrecerá las condiciones iniciales de nuestro
medidor; y la ultima señal llamada En, representa la señal
digital otorgada por el dispositivo óptico.

Figura 6. Diagrama de tiempos para encendido de los ánodos[2]

Por último se tiene el diagrama de flujo, para el reconoci-


miento de la señal y el calculo de velocidad señalada en el
display, Figura 7

Figura 4. Diagrama de bloques

En la figura 4 se puede evidenciar con más detalle, el


funcionamiento del sistema. Comenzando principalmente por
un bloque llamado contadores cuya funcionalidad corresponde
el de generar un divisor de frecuencia llamado out, el cual se
dirigirá al siete segmentos de la FPGA. que actuara como
un reloj de refresco para cada uno de los segmentos para
la visualización de la velocidad del motor. Para el bloque
display de siete segmentos, se recibió el dato y se realizo
un encendido y apagado de cada grupo de segmentos, a
una frecuencia de 4kHz, el comportamiento corresponde al
diagrama de tiempos de la figura 6. Generando la sensación
de encendidos continuo ante la visión humana. Para el caso de Figura 7. Diagrama de flujo
3

Caracterización modulo de nivel

III. P RUEBA Y FUNCIONAMIENTO DE TODO EL SISTEMA


III-A. Simulaciones
Al sistema se le realizaron pruebas con una señal de 312
Hz, la cual pasa a comportarse como la señal del encoder.
Se procedió a realizar el conteo de la señal durante el tiempo
de encendido para después pasarla a frecuencia. Al obtener
este valor se realizo la conversión a revoluciones por minuto y
posteriormente a multiplicar el número de ranuras del encoder;
y ası́ llegar al valor total de los rpms. Figura8

Figura 10. Montaje en FPGA 2

Figura 8. Simulación en gtkwave ‘ t i m e s c a l e 1 ns / 1 ps

module L e v e l ( b , c , d , e , f , g , h , i , j , k , l ,
IV. T EMPERATURA m, n , o , p , c l k i n ) ;
La figura 9 y en 10 muestran la implementacion del modulo input b ;
de temperatura. Lo que hace el codigo en Verilog es tomar un input c ;
valor de tension analoga del sensor de temperatura, lo pasa a input d ;
valores binarios, y en base a ellos se hace el calculo de grados input e ;
centı́grados. A partir de la lectura obtenida por el sensor de input f ;
temperatura se generan unos rangos con 5 grados centı́grados input g ;
de error en la medición. input h ;
output reg i ;
output reg j ;
output reg k ;
output reg l ;
o u t p u t r e g m;
output reg n ;
output reg o ;
output reg p ;
input clkin ;
reg [ 0 : 6 ] dat ;
reg [ 0 : 7 ] data temp ;

always@ ( p o s e d g e c l k i n ) b e g i n

dat [6]= h ;
dat [5]= g ;
dat [4]= f ;
dat [3]= e ;
Figura 9. Montaje en FPGA dat [2]= d ;
dat [1]= c ;
El código en verilog mostrado a continuación muestran los dat [0]= b ;
registros y conexiones a LEDs para el funcionamiento del
modulo de temperatura. En el se pueden encontrar los rangos / / t e m p n o r m a l =8 ’ b01110111 ; / / d e c i m a l 1 1 9 ; t e m p e r a t u
de temperatura arrojados por el sensor, y los valores en binario
de salida la cual será la señal de entrada para el multiplexor / / i f ( d a t <t e m p n o r m a l )
y el módulo bluetooth. // d a t a t e m p =8 ’ b01000110 ;
4

/ / end conductividad, se acerca mas a la de la gasolina. A partir de


esto, se obtuvo la tabla de la figura 11
i f ( d a t <7’ b0111011 ) b e g i n
d a t a t e m p =8 ’ b01000110 ;
end e l s e i f ( ( d a t >7’ b0111011 )
&& ( d a t <=7’ b1000100 ) )
begin
d a t a t e m p =8 ’ b0100101 ;
end e l s e i f ( ( d a t >7’ b1000100 )
&& ( d a t <=7’ b1001100 ) )
begin Figura 11. Medida modulo de nivel
d a t a t e m p =8 ’ b0101010 ;
end e l s e i f ( ( d a t >7’ b1001100 ) Y se obtiene la grafica de la figura 12
&& ( d a t <=7’ b1010101 ) )
begin
d a t a t e m p =8 ’ b01011111 ;
end e l s e i f ( ( d a t >7’ b1010101 )
&& ( d a t <=7’ b1011101 ) )
begin
d a t a t e m p =8 ’ b01101001 ;
end e l s e i f ( ( d a t >7’ b1011101 )
&& ( d a t <=7’ b1100110 ) )
begin
d a t a t e m p =8 ’ b01110011 ; Figura 12. Caracterización modulo de nivel
end e l s e i f ( ( d a t >7’ b1100110 )
&& ( d a t <=7’ b1101110 ) ) Digitalizacion modulo de nivel
begin Para la caracterización de este modulo, se utilizo el adc0804,
data temp =8 ’01111101; el cual entrega 8 salidas digitales, a través del circuito de la
end e l s e b e g i n figura 13
d a t a t e m p =8 ’ b11111111 ;
end

i =data temp [0];


j =data temp [1];
k= d a t a temp [2];
l =data temp [3];
m= d a t a temp [4];
n= d a t a temp [5];
o= d a t a temp [6];
p= d a t a temp [7];

end
Figura 13. Circuito ADC
endmodule
Posteriormente, la salidas de DB1 hasta DB8, entran a la
Nexys, y se realiza un tratamiento de los datos, para obtener
V. N IVEL solo 3 salidas, que representaran el nivel en el que se encuentra
Caracterización modulo de Nivel el tanque. Hay que tener en cuenta que el primer nivel de
la caracterización tendrá una salida digital de 0000011, el
Para la caracterización de este modulo, se realizo la medición
segundo, 0010010, el tercero 0011010 y el cuarto 0101100.
de nivel a diferentes valores de cm2 , y se caracterizo para
El código para esta transformación, es
obtener la medida en 5 niveles diferentes de gasolina. hay
que aclarar que para realizar la medida, se utilizo agua ‘ t i m e s c a l e 1 ns / 1 ps
destilada, debido a que la medida del sensor era sensible a
la conductividad del liquido, y el agua destilada al tener poca module L e v e l ( b , c , d , e , f , g , h , i , j , k , c l k i n ) ;
5

input b ; end
input c ;
input d ;
input e ;
input f ;
input g ;
input h ; end
output reg i ;
output reg j ;
output reg k ;
input clkin ; endmodule
reg [ 6 : 0 ] dat ;

always@ ( p o s e d g e c l k i n ) b e g i n Y se prueba a través del encendido de los leds de la fpga.


dat [6]= h ; Esta prueba se presenta en las figuras 14 y 15
dat [5]= g ;
dat [4]= f ;
dat [3]= e ;
dat [2]= d ;
dat [1]= c ;
dat [0]= b ;

i f ( d a t < 7 ’ b0000011 ) begin

i =0;
j =0;
k =1;
Figura 14. Salida nivel mı́nimo

end e l s e i f ( d a t < 7 ’ b0010010 ) begin

i =0;
j =1;
k =0;

end e l s e i f ( d a t < 7 ’ b0011010 ) b e g i n

i =0;
j =1;
k =1;

Figura 15. Salida nivel máximo


end e l s e i f ( d a t < 7 ’ b0101100 ) b e g i n

i =1;
j =0;
k =0;

VI. G PS
end e l s e b e g i n

i =1; A través del modulo L80, se empiezan a obtener los valores


j =0; de la ubicación en tiempo real del gps. Esto se realiza gracias
k =1; a través de una programación, inicia, interna del modulo, y la
utilización del circuito de la figura 16
6

Para evitar el sobrelapamiento de la señal del pulso y el


clk de la FPGA, se colocará el flanco negativo del clk en
la sensitive list del código del contador. A continuación se
muestra el diagrama de bloques, la maquina de estado y la
respectiva simulación.

Figura 16. Circuito gps

Y se obtienen los datos de la figura 17, los cuales, se Figura 18. Diagrama de flujo del Baud rate generator.
entregan con 8 bits, un baud rate de 9600, y en comunicación
UART

Figura 17. Datos gps

Figura 19. Maquina de estado del Baud rate generator.


VII. B LUETOOTH
La comunicación del dispositivo Bluetooth con la FPGA
es tipo UART, por ende, este módulo consiste en hacer el
protocolo UART. Se colocará un multiplexor para enviar
tramas de 8 bits de los diferentes sensores del proyecto. El
multiplexor será controlado por una señal “sel”que aumentará
de valor al enviar la trama completa de 8 bits del sensor que
este conectado.
Figura 20. Simulación del contador.

El modelo del UART consistirá en un generador de pulsos


que me indicará el momento que se debe enviar cada bit, este
pulso (tick) tendrá una frecuencia de 9600 Hz, esto con el fin Ya teniendo nuestro “Baud rate generator”, vamos a hacer
de obtener un Baud Rate de 9600 bits/s. Se implemento este el protocolo del UART para transmitir información. El
por medio de un contador, donde: protocolo consiste en que la señal se mantenga en 1 lógico
cuando no este enviando nada, cuando vaya a comenzar a
enviar pasa a 0 lógico, seguido envı́a la trama de 8 bits uno
fF P GA por uno y vuelve a colocar la señal en 1 lógico para informar
count = (1)
fdesired que ya envı́o la información. Esto se hará cada vez que el
Baud rate generator me lo indique a través del pulso. A
continuación se muestra el diagrama de flujo y la maquina de
estado diseñada.
count = 10417
7

Figura 23. Simulación del UART con multiplexor.

El RTL se muestra en la siguiente figura, observe que hay


6 entradas en el multiplexor, cuya señal de control sale del
modulo UART ya que esta varia cuando confirma que ya envió
el dato.

Figura 21. Diagrama de flujo del UART tx.

Figura 24. RTL del UART y el multiplexor.

El módulo bluetooth no se ha comprobado con el código


realizado en la FPGA, sin embargo, este ya fue configurado
(asignación de función, BaudRate, nombre, clave), por medio
de los comandos AT y una placa de arduino.

Figura 22. Maquina de estado del UART tx.

Para la simulación final se escogieron 6 tramas de 8 bits


de manera aleatoria, intentando simular la información de los
sensores, y se observo la señal de salida (tx, señal azul)
y como variaba la señal controladora del multiplexor (sel)
al terminar de enviar cada trama. Se observo que, como
se deseaba, este aumentaba al terminar de enviar la trama,
también se observa que cada bit se transmite cada 104190 ns,
esto equivale a 9597,85 Hz, que es bastante cercano al Baud-
rate deseado (9600 Hz). La simulación del sistema completo Figura 25. Montaje usado para la configuración del HC05 por medio de
se muestra a continuación. comandos AT.
8

R EFERENCIAS
[1] Imagen sensor.Arduino y el encoder óptico. Disponible [Online] http://
www.mactronica.com.co/sensor-contador-optoacoplador-84846143xJM
Consultado: 3/09/2017
[2] Digilent Beyond Theory, Nexys 4 reference manual, Display 7 segmen-
tos, Consultado:3/09/2017
[3] Imagen sensor.Arduino y GPS. Disponible [On-
line] http://www.naylampmechatronics.com/blog/18
Tutorial-MC3B3dulo-GPS-con-Arduino.html
[4] Imagen sensor.Arduino y GPS. Disponible [On-
line] http://www.naylampmechatronics.com/blog/18
Tutorial-MC3B3dulo-GPS-con-Arduino.html
[5] Imagen sensor conexiones modulo de nivel. Disponible [Online] http:
//mikitronic.blogspot.com.co/2013/05/sensor-de-temperatura.html

También podría gustarte