Sensor ultrassônico com NRF24LE1 (Parte 11/14)

Sensor ultrasónico con NRF24LE1 (Parte 11/14)

Hoy vamos a hacer una interfaz de sensor muy interesante con módulo NRF .

¿Alguna vez has oído a los murciélagos comunicarse entre sí? No podemos oírlos porque utilizan frecuencia ultrasónica para comunicarse. Los oídos humanos no pueden escuchar las frecuencias ultrasónicas. Los humanos sólo pueden oír el sonido entre 20 y 20 KHz, mientras que la frecuencia ultrasónica está por encima de 20 KHz y se expande hasta varios GHz.

Protótipo de interface NRF24LE1 com sensor ultrassônico

Fig. 1: Prototipo de interfaz NRF24LE1 con sensor ultrasónico

Las ondas ultrasónicas tienen diferentes velocidades de viaje en el aire, líquidos y gases. En el aire, generalmente viajan a 340 m/s. Tienen tendencia a reflejarse en una superficie sólida. Debido a esta funcionalidad, se utilizan para medir distancias. Si se conoce el tiempo entre la transmisión y la recepción, se puede calcular la distancia desde la superficie sólida del transmisor.

Usaremos el sensor ultrasónico HCSR04 que tiene un transmisor, receptor y circuito de control incorporados. Conectaremos este sensor con el NRF24LE1 usando pines de entrada/salida.

HCSR04 tiene 4 pines:

1. VCC – 5V

2. Trig – Pin de entrada del disparador

3. Eco – Pin de salida

4. Tierra – Tierra

Algunas especificaciones de este sensor son:

· Rango de medición de distancia de 2 cm a 400 cm

· Frecuencia de trabajo – 40Khz

· Utiliza un pulso de disparo de 10 uS (microsegundos).

· Transmite ocho pulsos de 40 kHz cuando se activa

· Recibe un eco y emite un pulso alto con un alcance proporcional a la distancia.

· Se debe dar un retraso de 60 mS entre el siguiente disparo.

Cálculo de distancia

Imagem da interface NRF24LE1 com sensor ultrassônico

Fig. 2: Imagen de la interfaz NRF24LE1 con sensor ultrasónico

Hay dos formas de medir la distancia:

1. Primero determine el tiempo entre la transmisión y la recepción del eco. Luego usa la fórmula = Tiempo * velocidad / 2. En el aire la velocidad es 340 m/s.

2. Calcule el tiempo que el pin de salida del sensor está alto. Luego use la fórmula predeterminada, distancia en cm = tiempo/58 o distancia en pulgadas = tiempo/148. El tiempo estará sobre nosotros.

Usaremos el segundo método para calcular la distancia.

Asegúrese de haber leído nuestros artículos anteriores sobre Temporizadores y NRF24LE1 .

El módulo NRF se utilizará para activar el sensor con un pulso de 10 us. Después de activarse, el sensor enviará una señal de 40 KHz y esperará el eco. Si se recibe el eco, emitirá un pulso fuerte. Este pulso alto tendrá un ancho de banda proporcional a la distancia.

En NRF, el pin0 del puerto0 o P00 se usa como pin de salida para controlar el sensor, mientras que el pin1 del puerto0 o P01 se usa como pin de entrada para recibir el pulso alto del sensor.

Estamos usando Timer0 para medir el período de tiempo durante el cual el pin de salida permanece alto. Timer0 se inicializa en Modo1, que es el modo de 16 bits. Esto significa que podemos medir el tiempo hasta (0,75 * 65536) = 49152 uS. Para calcular el tiempo medido por el temporizador0 usamos tiempo = (valor de registro del temporizador0 * 0,75) uS. Para calcular la distancia al objeto sólido podemos usar distancia en cm = tiempo/58.

Escribimos el código para que entiendas cómo funciona.

Código fuente del proyecto

###

 //Programa para
/* Copyright (c) 2009 Nordic Semiconductor. Todos los derechos reservados.
*
*La información contenida en este documento es propiedad confidencial de Nordic *ASA Semiconductor. Los términos y condiciones de uso se describen detalladamente. * en el CONTRATO DE LICENCIA DE SOFTWARE ESTÁNDAR DE NORDIC SEMICONDUCTORES. * * Se concede a los licenciatarios el uso gratuito e intransferible de la información. NO * Se proporciona GARANTÍA DE CUALQUIER TIPO. Este título NO debe eliminarse del * el archivo. * *$Última revisión modificada: 133$ */ #incluir //biblioteca de E/S estándar #include "nrf24le1.h" // Archivo de encabezado de E/S para NRF24LE1 #include "hal_uart.h" // biblioteca que contiene funciones de comunicación en serie #include "hal_clk.h" // biblioteca que contiene funciones de reloj #incluir //biblioteca estándar #incluir //biblioteca que contiene funciones de cadena #incluir //biblioteca que contiene funciones matemáticas #include "hal_delay.h" // archivo de encabezado que contiene funciones de retardo sfr16 DPTR = 0X82; //registro funcional para almacenar valor // Putchar se repite para imprimir una cadena cadena de puta vacía (char *s) { mientras(*s != 0) putchar(*s++); } //función para convertir un entero en una matriz de cadenas itoa vacía(int num,char* str) { int i = 0, contar = 0; temperatura interna = número; si(núm == 0) { cadena(i++) = '0'; cadena(i) = ''; volver; } mientras (temperatura!=0) { int rem = temp% 10; temperatura = temperatura/10; contar++; } str(cuenta --) = ''; mientras(núm!= 0) { int rem = número% 10; str(cuenta --) = (rem > 9)? (rem - 10) + '1' : rem + '0'; número = número/10; } volver; }

###

Diagramas de circuito

Diagrama de circuito-NRF24LE1-Interfaz-Sensor ultrasónico

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.