Librería sensor ultrasónico HC-SR04

Librería sensor ultrasónico

Librería que controla a un sensor ultrasónico HC-SR04, genera la señal Trigger y procesa la señal Echo para devolver la distancia en centímetros.

Los puertos que la componen son los siguientes:

FPGA_CLK: Puerto genérico donde se especifica la frecuencia del reloj en Hertz.

CLK: Reloj del FPGA.

ECO: Puerto conectado al pin Eco del sensor HC-SR04.

TRIGGER: Puerto conectado al pin Trigger del sensor HC-SR04.

DATO_LISTO: Puerto de un bit que indica cuándo ya está listo el valor de la distancia. El bit dura activo ‘1’ un ciclo de reloj.

DISTANCIA_CM: Puerto de 9 bits con el valor de la distancia en centímetros.

La librería cuenta con un algoritmo que realiza la división para el cálculo de distancia mediante aproximaciones sucesivas, de esta forma se vuelve completamente genérica ya que no utiliza recursos adicionales como LUTs permitiendo una mejor optimización de recursos.

Funcionamiento.

Control del sensor.

La librería manda un pulso de trigger al HC-SR04 con un tiempo en alto de 10 microsegundos y un periodo de 62.5 milisegundos, el sensor responde con un pulso en Eco y el tiempo de duración en ‘1’ se adquiere para después utilizarlo en una fórmula matemática para obtener la distancia entre el sensor y el objeto. Cuando el cálculo de la distancia se ha realizado, el resultado aparecerá en el puerto “DISTANCIA_CM” y se activará la bandera “DATO_LISTO” que dura un ciclo de reloj.

El diagrama de tiempo de la librería es el siguiente:

Calculo de distancia.

Para obtener el tiempo de duración del Eco se hace un muestreo de la señal  a la frecuencia de reloj del FPGA obteniendo N número de flancos (N CLK) el cual se divide entre una constante llamada “VAL_1US”, el valor de esta constante varía dependiendo de la frecuencia del reloj del FPGA y se utiliza para obtener el tiempo de duración de Eco en microsegundos.

Tiempo_Eco_microsegundos = N_CLK / VAL_1US

Por último se divide ese tiempo entre 58 para obtener la distancia en centímetros.

Distancia_centímetros = Tiempo_Eco_microsegundos / 58

IMPORTANTE: Añadir los archivos INTESC_LIB_ULTRASONICO_RevC y DIVISION_ULTRASONICO_RevA correspondientes a la librería.

Menú