- Materiales necesarios:
- Diagrama de circuito:
- Cómo funciona realmente el módulo HC-SR04:
- Distancia de medición entre dos sensores ultrasónicos (HC-SR04):
- Programa para sensor transmisor:
- Programa para sensor receptor:
- Trabajando:
- Idea improvisada: calibrar el sensor utilizando una distancia conocida:
El sensor ultrasónico (HC-SR04) se usa comúnmente para encontrar la distancia de un objeto a un punto en particular. Ha sido bastante fácil hacer esto con Arduino y el código también es bastante simple. Pero en este artículo vamos a probar algo diferente con estos populares sensores HC-SR04. Intentaremos calcular la distancia entre dos sensores ultrasónicos es decir, haremos que un sensor actúe como transmisor y el otro sensor para que actúe como receptor. Al hacer esto, podemos rastrear la ubicación de un transmisor usando muchos receptores ultrasónicos. Este rastreo se llama triangulación y se puede usar para robots de acoplamiento automático, seguidores de equipaje y otras aplicaciones similares. Encontrar la distancia entre dos sensores de EE. UU. Puede parecer una tarea bastante simple, pero enfrenté algunos desafíos que se analizan en este proyecto.
La técnica discutida en este artículo no es bastante precisa y podría no ser útil en ningún sistema real sin modificaciones. Durante el tiempo de esta documentación, no encontré a nadie que obtuviera resultados tan cercanos como los míos, así que acabo de compartir mis puntos de vista sobre cómo lo hice funcionar para que las personas que están probando esto no necesiten reinventar la rueda.
Materiales necesarios:
- Arduino (2Nos) - Cualquier modelo
- Módulo HCSR04 (2Nos)
Diagrama de circuito:
Aunque vamos a hacer un sensor US (Ultrasónico) para que funcione como transmisor y el otro como receptor, es obligatorio conectar los cuatro pines de los sensores con el Arduino. ¿Por qué deberíamos? Más de eso se discutirá más adelante, pero por ahora el diagrama del circuito será el siguiente
Como puede ver, el diagrama del circuito tanto del transmisor como del receptor son idénticos. Verifique también: Interfaz del sensor ultrasónico Arduino
Cómo funciona realmente el módulo HC-SR04:
Antes de continuar, comprendamos cómo funciona el sensor HC-SR04. El siguiente diagrama de tiempo nos ayudará a comprender el funcionamiento.
El sensor tiene dos pines Trigger y Echo que se utilizan para medir la distancia como se muestra en el diagrama de tiempo. Primero, para iniciar la medición, debemos enviar una onda ultrasónica desde el transmisor, esto se puede hacer configurando el pin de disparo alto para 10uS. Tan pronto como se haga esto, el pin del transmisor enviará 8 ráfagas sónicas de ondas estadounidenses. Esta onda de EE. UU. Golpeará un objeto que rebote y será recibida por el receptor.
Aquí, el diagrama de tiempo muestra que una vez que el receptor recibe la onda, hará que el pin Echo suba por un período de tiempo que es igual al tiempo que tarda la onda en viajar desde el sensor de EE. UU. Y volver al sensor. Este diagrama de tiempos no parece ser cierto.
Cubrí la parte Tx (transmisor) de mi sensor y verifiqué si el pulso Echo subió, y sí, subió. Esto significa que el pulso Echo no espera a que reciba la onda estadounidense (ultrasónica). Una vez que transmite la onda estadounidense, sube y permanece alta hasta que la onda regresa. Entonces, el diagrama de tiempo correcto debería ser algo como esto que se muestra a continuación (lo siento por mis pobres habilidades de escritura)
Hacer que su HC-SR04 funcione solo como transmisor:
Es bastante sencillo hacer que un HC-SR04 funcione solo como transmisor. Como se muestra en el diagrama de tiempo, debe declarar el pin Trigger como pin de salida y mantenerlo alto durante 10 microsegundos. Esto iniciará el estallido de ondas ultrasónicas. Así que siempre que queramos transmitir la onda solo tenemos que controlar el pin de disparo del sensor Transmisor, para lo cual se da el código a continuación.
Hacer que su HC-SR04 funcione solo como receptor:
Como se muestra en el diagrama de tiempo, no podemos controlar la subida del pin Echo, ya que está relacionado con el pin de disparo. Así que no hay forma de que podamos hacer que el HC-SR04 funcione solo como receptor. Pero podemos usar un truco, simplemente cubriendo la parte del transmisor del sensor con cinta (como se muestra en la imagen a continuación) o tapando la onda estadounidense no puede escapar fuera de la carcasa del transmisor y el pin Echo no se verá afectado por esta onda estadounidense.
Ahora, para hacer que el pin de eco suba, solo tenemos que tirar de este pin de gatillo falso hacia arriba durante 10 microsegundos. Una vez que este sensor receptor recibe la onda de EE. UU. Transmitida por el sensor transmisor, el pin de eco bajará.
Distancia de medición entre dos sensores ultrasónicos (HC-SR04):
Hasta ahora hemos entendido cómo hacer que un sensor funcione como transmisor y el otro como receptor. Ahora, tenemos que transmitir la onda ultrasónica desde el sensor del transmisor y recibirla con el sensor del receptor y comprobar el tiempo que tarda la onda en viajar desde el transmisor al receptor suena fácil, ¿verdad? ¡Pero lamentablemente !, aquí tenemos un problema y esto no va a funcionar.
El módulo transmisor y el módulo receptor están muy separados y cuando el módulo receptor recibe la onda estadounidense del módulo transmisor, no sabrá cuándo envió el transmisor esta onda en particular. Sin conocer la hora de inicio no podemos calcular el tiempo necesario y, por tanto, la distancia. Para resolver este problema, se debe hacer que el pulso de eco del módulo receptor suba exactamente cuando el módulo transmisor ha transmitido la onda estadounidense. En otras palabras, el módulo transmisor y el módulo receptor deben activarse al mismo tiempo. Esto se puede lograr mediante el siguiente método.
En el diagrama anterior, Tx representa el sensor del transmisor y Rx representa el sensor del receptor. Como se muestra, el sensor del transmisor se hará para transmitir ondas estadounidenses con un retraso periódico conocido, esto es todo lo que tiene que hacer.
En el sensor del receptor, de alguna manera tenemos que hacer que el pin del disparador suba exactamente durante el momento en que el pin del transmisor sube. Entonces, inicialmente, hacemos que el disparador del receptor sea alto, lo que permanecerá alto hasta que el pin de eco baje. Este pin de eco bajará solo cuando reciba una onda estadounidense del transmisor. Entonces, tan pronto como baje, podemos asumir que el sensor del transmisor acaba de activarse. Ahora, con esta suposición, tan pronto como el eco sea bajo, podemos esperar el retardo conocido y luego disparar el receptor. Esto sincronizaría parcialmente el disparador tanto del transmisor como del receptor y, por lo tanto, puede leer la duración del pulso de eco inmediato usando pulseIn () y calcular la distancia.
Programa para sensor transmisor:
El programa completo para el módulo transmisor se puede encontrar en la parte inferior de la página. No hace nada más que activar el sensor del transmisor en un intervalo periódico.
digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, BAJO);
Para activar un sensor, tenemos que hacer que el pasador de activación permanezca alto durante 10uS. El código para hacer lo mismo se muestra arriba
Programa para sensor receptor:
En el sensor del receptor hemos tapado el ojo del transmisor del sensor para hacerlo ficticio como se discutió anteriormente. Ahora podemos usar la técnica mencionada anteriormente para medir la distancia entre dos sensores. El programa completo se encuentra al final de esta página. Algunas líneas importantes se explican a continuación.
Trigger_US (); while (digitalRead (echoPin) == HIGH); delayMicroseconds (10); Trigger_US (); duración = pulseIn (echoPin, HIGH);
Inicialmente activamos el sensor de EE. UU. Usando la función Trigger_US () y luego esperamos hasta que el pin de eco se mantenga alto usando un bucle while. Una vez que baja, esperamos la duración predeterminada, esta duración debe estar entre 10 y 30 microsegundos, lo que se puede determinar mediante prueba y error (o puede usar la idea improvisada que se indica a continuación). Después de esta demora, active el US de nuevo usando la misma función y luego use la función pulseIn () para calcular la duración de la onda.
Ahora, usando las mismas fórmulas antiguas, podemos calcular la distancia como se muestra a continuación
distancia = duración * 0.034;
Trabajando:
Realice las conexiones como se explica en el programa. Cubra la parte Tx del sensor del receptor como se muestra en la imagen. Luego cargue el código del transmisor y el código del receptor que se proporcionan a continuación al transmisor y al receptor Arduino respectivamente. Abra el monitor en serie del módulo receptor y debería notar la distancia entre dos módulos que se muestra como se muestra en el video a continuación.
Nota: Este método es solo una ideología y puede que no sea exacto o satisfactorio. Sin embargo, puede probar la idea improvisada a continuación para obtener mejores resultados.
Idea improvisada: calibrar el sensor utilizando una distancia conocida:
El método que se explicó hasta ahora extrañamente parece ser satisfactorio, pero fue suficiente para mi proyecto. Sin embargo, también me gustaría compartir los inconvenientes de este método y una forma de superarlos. Un inconveniente importante de este método es que asumimos que el pin de eco del receptor cae bajo inmediatamente después de que el sensor del transmisor ha transmitido la onda estadounidense, lo cual no es cierto ya que la onda tardará algún tiempo en viajar del transmisor al receptor. Por lo tanto, el disparador del transmisor y el disparador del receptor no estarán en perfecta sincronización.
Para superar esto, podemos calibrar el sensor usando una distancia conocida inicialmente. Si se conoce la distancia, sabremos el tiempo que tarda la onda estadounidense en llegar al receptor desde el transmisor. Tomemos este tiempo como Del (D) como se muestra a continuación.
Ahora sabremos exactamente después de cuánto tiempo debemos hacer que el pin Trigger del Receptor esté en alto para sincronizarlo con el disparador del Transmisor. Esta duración se puede calcular por Demora conocida (t) - Del (D). No pude probar esta idea debido a limitaciones de tiempo, por lo que no estoy seguro de qué tan precisa funcionaría. Entonces, si lo intenta, hágamelo saber los resultados a través de la sección de comentarios.