Programar fácil con Arduino

Programar fácil con Arduino, entiende cómo funciona el mundo.

  • Blog
  • ¿Quién soy?
  • Podcast
  • Curso Arduino [GRATIS]
  • Curso Domótica [GRATIS]
  • Acceder
Usted está aquí: Inicio / Tutoriales / Fragmentos / Arduino / Sensor de ultrasonidos con Arduino

Sensor de ultrasonidos con Arduino

Luis del Valle Hernández

En este fragmento de código vamos a tratar un tema muy curioso, vamos a ver como leer y entender un sensor de ultrasonidos con Arduino. Como ya os hemos dicho en más de un fragmento de código y en el capítulo 48. Sensor de temperatura en Arduino, antes de empezar con un sensor debemos de mirar la ficha técnica del dispositivo. Este dispositivo tiene la referencia HC-SR04. Hacemos un resumen de las características técnicas más importantes:

  • Voltaje de trabajo 5 V
  • Corriente de trabajo 15 mA
  • Rango de precisión entre 3 cm y 400 cm
  • La precisión puede llegar a 3 mm en su máximo valor
  • Angulo de medición 15º

Además de las características técnicas nos facilitan el conexionado que os lo pongo a continuación.

  • ultrasonic-arduino

Es importante fijarse en las patillas que tiene el sensor. Por un lado las típicas GND (tierra) y Vcc (alimentación 5 V) y por otro lado tiene dos patillas que son el Trigger (disparo) y Echo (eco). Estas dos patillas son las importantes. Estas las tenemos que conectar a las entradas/salidas digitales. Por un lado Trigger va a funcionar en modo salida y por otro lado Echo va a funcionar en modo entrada.

Antes de continuar aclarar como funciona un sonar, más concreto el HC-SR04. El Trigger manda un pulso de ultrasonidos y el Echo se encarga en recibirlo. Por lo tanto tenemos el tiempo que tarda en recibirlo y la velocidad, la del sonido, así de fácil. Como hemos tenido que ir hasta el objeto y volver lo estamos calculando por dos así que hay que dividir por dos. Esta fórmula la tenemos también en la ficha técnica.

Distancia = (Tiempo en estado HIGH * Velocidad del sonido) / 2

En el caso de este sensor, hay que iniciar la comunicación entre el Trigger y el Echo para ello debemos mandar un pulso de 10 ms (milisegundos).

Veamos entonces el código que vamos a necesitar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
  Creado: Luis del Valle (ldelvalleh@programarfacil.com)
  https://programarfacil.com
*/
 
// Configuramos los pines del sensor Trigger y Echo
const int PinTrig = 2;
const int PinEcho = 3;
 
// Constante velocidad sonido en cm/s
const float VelSon = 34000.0;
 
float distancia;
 
void setup()
{
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
  // Ponemos el pin Trig en modo salida
  pinMode(PinTrig, OUTPUT);
  // Ponemos el pin Echo en modo entrada
  pinMode(PinEcho, INPUT);
}
void loop()
{
  iniciarTrigger();
  
  // La función pulseIn obtiene el tiempo que tarda en cambiar entre estados, en este caso a HIGH
  unsigned long tiempo = pulseIn(PinEcho, HIGH);
  
  // Obtenemos la distancia en cm, hay que convertir el tiempo en segudos ya que está en microsegundos
  // por eso se multiplica por 0.000001
  distancia = tiempo * 0.000001 * VelSon / 2.0;
  Serial.print(distancia);
  Serial.print("cm");
  Serial.println();
  delay(1000);
}
 
// Método que inicia la secuencia del Trigger para comenzar a medir
void iniciarTrigger()
{
  // Ponemos el Triiger en estado bajo y esperamos 2 ms
  digitalWrite(PinTrig, LOW);
  delayMicroseconds(2);
  
  // Ponemos el pin Trigger a estado alto y esperamos 10 ms
  digitalWrite(PinTrig, HIGH);
  delayMicroseconds(10);
  
  // Comenzamos poniendo el pin Trigger en estado bajo
  digitalWrite(PinTrig, LOW);
}

Como compruebas en el código, hay que hacer unos ajustes con las unidades. Por un lado la velocidad del sonido pasar de m/s a cm/s. Por otro lado la función pulseIn que se encarga de medir el tiempo que tarda un pin en cambiar de estado devuelve microsegundos y hay que pasarlo a segundos multiplicando por 0.000001. Con esto ya tenemos nuestro sonar totalmente operativo.

integraciones de Home Assistant

Integraciones de Home Assistant

En este tutorial voy a hablar de las integraciones de Home Assistant pero antes déjame contarte la historia de Jack, un norteamericano de bien, de los … [+ info...]

dispositivos inteligentes para el hogar

Tipos de dispositivos inteligentes para el hogar

En este artículo voy a hablar de los dispositivos domóticos o dispositivos inteligentes para el hogar que pueden ser integrados dentro de Home … [+ info...]

osciloscopios

Osciloscopio para proyectos con Arduino

Una imagen vale más que mil palabras. Seguro has escuchado esta frase alguna vez y es probable que en la mayoría de las ocasiones lo que dice sea … [+ info...]

Copyright © 2023 · Programar Fácil · Aviso legal

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso.Aceptar Política de privacidad y cookies
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR