Sei sulla pagina 1di 5

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO

FACULTA DE INGENIERIA

CONTROL 1
MICROCONTROLADORES

1/5

PRÁCTICA 3

OPERACIÓN DE UN MICROCONTROLADOR ARDUINO UNO Y UN SENSOR


ULTRASÓNICO HC-SR04.

El sensor de ultrasonidos se enmarca dentro de los sensores para medir distancias o superar obstáculos,
entre otras posibles funciones. En este caso vamos a utilizarlo para la medición de distancias. Esto lo
consigue enviando un ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno
de la pareja de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote
sobre un objeto y vuelva, retorno captado por el otro cilindro. Este sensor en concreto tiene un rango de
distancias sensible entre 3cm y 3m con una precisión
de 3mm.

¿Qué recibimos en el sensor? El tiempo que transcurre entre el envío y la recepción del ultrasonido.

¿Cómo vamos a traducir dicho tiempo en distancia?


Aprovechando que la velocidad de dicho ultrasonido en el aire es de valor 340 m/s, o 0,034 cm/microseg
(ya que trabajaremos con centímetros y microsegundos). Para calcular la distancia, recordaremos que
v=d/t (definición de velocidad: distancia recorrida en un determinado tiempo).

De la fórmula anterior despejamos d, obteniendo d=v·t, siendo v la constante anteriormente citada y t el


valor devuelto por el sensor a la placa Arduino. También habrá que dividir el resultado entre 2 dado que
el tiempo recibido es el tiempo de ida y vuelta.

Material
 Sensor ultrasónico HC-SR04  3 LED (Rojo. Amarillo y Verde)
 Placa Arduino UNO  3 resistencias de 330Ω
 Cables (jumpers M-M)  Protoboard
 Cable USB

Circuito
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTA DE INGENIERIA

CONTROL 1
MICROCONTROLADORES

2/5
Procedimiento

1. Preparar la conexión
En primer lugar, conectamos nuestra placa Arduino mediante un cable USB A-B, del tipo
que se emplean habitualmente para conectar impresoras. De momento no hace falta la
conexión de alimentación o cable adicional, para realizar la programación es suficiente
únicamente con el USB.

2. A continuación abrimos el entorno IDE de Arduino.

3. Seleccionamos el modelo de placa que estemos empleando.


UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTA DE INGENIERIA

CONTROL 1
MICROCONTROLADORES

3/5
4. Seleccionamos el puerto de comunicación al que está conectado.

 En Windows será algo tipo COM1, COM3…


 En Linux será del estilo /dev/ttyACM0

Ya tenemos la conexión configurada y lista para realizar la carga de nuestro primer programa.

5. Carga del programa de programa


En el IDE de Arduino estandard los programas tienen siempre la siguiente estructura

//Zona DECLARACIONES

void setup() {
// Zona funcion SETUP
}

void loop() {
// Zona funcion LOOP
}

Donde cada parte tiene la siguiente función:


 Zona declaraciones: En esta parte se declaran variables, funciones, objetos, y
estructuras.
 Funcion setup: Esta función se ejecuta cada vez que se enciende la placa de Arduino, o
se pulsa la tecla Reset. Realiza funciones de inicialización de periféricos, comunicaciones,
variables, etc.
 Funcion loop: Esta función se ejecuta contínuamente. Realiza el grueso de tareas del
autómata.

El código del programa de la práctica es el siguiente:


UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTA DE INGENIERIA

CONTROL 1
MICROCONTROLADORES

4/5
CODIGO DE PROGRAMACION
/***********************************************************************************/
long distancia;
long tiempo;
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
pinMode(13, OUTPUT);/*activación del pin 13 como salida: salida LED Rojo*/
pinMode(12, OUTPUT);/*activación del pin 12 como salida: salida LED Amarillo*/
pinMode(7, OUTPUT);/*activación del pin 7 como salida: salida LED Verde*/
}

void loop(){
digitalWrite(13,LOW); /* Inicializar LED*/
digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el
envío del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que
el pin 12 empieza a recibir el rebote, HIGH, hasta que deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/

/*Respuesta seg[un la distancia medida en cm*/


if (distancia<10){
digitalWrite(13, HIGH); /*Encender el LED Rojo*/
digitalWrite(12, LOW); /*Apagarr el LED Amarillo*/
digitalWrite(7, LOW); /*Apagar el LED Verde*/
delay(100);
}

if ((distancia>10)&&(distancia<50)){
digitalWrite(13, LOW); /*Apagar el LED Rojo*/
digitalWrite(12, HIGH); /*Encender el LED Amarillo*/
digitalWrite(7, LOW); /*Apagar el LED Verde*/
delay(100);
}

if (distancia>50){
digitalWrite(13, LOW); /*Apagarr el LED Rojo*/
digitalWrite(12, LOW); /*Apagar el LED Amarillo*/
digitalWrite(7, HIGH); /*Encender el LED Verde*/
delay(100);
}

/*Monitorización en centímetros por el monitor serial*/


Serial.println("Distancia ");
Serial.println(distancia);
Serial.println(" cm");
delay(1000);
}
/****************************************************************************************/
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTA DE INGENIERIA

CONTROL 1
MICROCONTROLADORES

5/5
Finalmente, pulsamos en el botón remarcado para compilar y enviar la programación a
nuestra placa Arduino. Tras unos segundos, el IDE compilará el programa y lo subirá a la
placa.

Tras unos parpadeos, la placa empezará a ejecutar el programa, indicando la distancia y


encendiendo el LED correspondiente a la distancia programada.

Potrebbero piacerti anche