Está en la página 1de 16

INSTITUTO TECNOLOGICO

SUPERIOR DE ZACAPOAXTLA

Ingeniería Informática

Nombre del proyecto:

Sensor nivel de agua Arduino

Asignatura:

Internet de las cosas

Docente:

Luis Alberto Espejo Ponce

Integrantes del Equipo:

Ilse García López

Isabel Guadalupe Landero Downham

Semestre: 8º

1
Índice
INTRODUCCIÓN .............................................................................................................................. 3
DIAGRAMA DE CONEXIÓN .......................................................................................................... 3
MATERIALES ................................................................................................................................... 4
PASOS CIRCUITO ELECTRÓNICO ............................................................................................ 5
PASOS CODIGO ............................................................................................................................. 6
PREGUNTAS .................................................................................................................................. 15
IMÁGENES DE APOYO ............................................................................................................... 15
RESULTADO .................................................................................................................................. 16

2
INTRODUCCIÓN
El sensor HC-SR04 es un sensor de distancia de bajo costo que utiliza ultrasonido
para determinar la distancia de un objeto en un rango de 2 a 450 cm. Destaca por
su pequeño tamaño, bajo consumo energético, buena precisión y excelente precio.
El sensor HC-SR04 es el más utilizado dentro de los sensores de tipo ultrasonido,
principalmente por la cantidad de información.

El LCD (Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo


empleado para la visualización de contenidos o información de una forma gráfica,
mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. Está
gobernado por un microcontrolador el cual dirige todo su funcionamiento.

Con esta práctica se pretende mostrar como el sensor ultrasónico mide el nivel de
agua en un recipiente, y como los resultados son mostrados en la pantalla LCD.

DIAGRAMA DE CONEXIÓN

Ilustración 1: Diagrama de conexión circuito

3
MATERIALES
 Arduino Genuino UNO
 1 sensor ultrasónico Arduino (HC-SR04)
 Potenciometro
 Pantalla LCD 16×2
 Protoboard
 Cables para hacer las conexiones (Jumper macho-macho, macho-
hembra)
 1 resistencia de 220 Ω

Ilustración 2: Materiales a emplear

4
PASOS CIRCUITO ELECTRÓNICO
Paso 1: Recolectar los materiales a emplear para la realización del circuito
electrónico.

Paso 2: Conectar el sensor ultrasónico a los pines digitales de la placa Arduino


y a la protoboard. Las conexiones Echo y Trigger van a los pines -6 y 7
respectivamente, al igual que voltaje y GND, estos se conectan en la protoboard.

Paso 3: Conectar la pantalla LCD hacia los pines digitales 12, 11, 5, 4, 3 y 2 de
la placa Arduino.

Paso 4: También deberá conectar un potenciómetro para poder modular la


intensidad, junto con una resistencia de 220 ohms.

Los pasos anteriores son ilustrados en la siguiente imagen.

Ilustración 3: Diagrama de conexión del circuito electrico

5
PASOS CODIGO
Plataforma arduino

A continuación, trabajará con la plataforma de arduino en el cual codificara las funciones


correspondientes al sensor ultrasónico.

Paso 1: Descargar IDE Arduino:

Descargue desde su navegador el IDE de Arduino e instálelo para llevar a cabo la


programación del sensor. (Página oficial de arduino:
https://www.arduino.cs/en/Main/Software#)

Paso 2: Crear un proyecto nuevo

Una vez realizado el paso 1 habrá el IDE del Arduino para comenzar a realizar el código.
Al abrir el programa verá una vista similar a la siguiente:

Ilustración 4: Pantalla de Inicio de la Plataforma Arduino

6
Paso 3: Definir las variables, constantes y pines correspondientes para el funcionamiento
del sistema electronico.

El codigo siguiente consiste en que el sensor de ultrasonidos medida cuanta distancia hay
hasta el líquido. Las medidas que se obtengan nos indicaran el espacio vacío que hay en
el recipiente.

// Configuramos los pines del sensor Trigger y Echo

const int PinTrig = 7;

const int PinEcho = 6;

// Constante velocidad sonido en cm/s

const float VelSon = 34000.0;

// Número de muestras

const int numLecturas = 100;

// Distancia a los 100 ml y vacío

const float distancia100 = 2.15;

const float distanciaVacio = 11.41;

float lecturas[numLecturas]; // Array para almacenar lecturas

int lecturaActual = 0; // Lectura por la que vamos

float total = 0; // Total de las que llevamos

float media = 0; // Media de las medidas

bool primeraMedia = false; // Para saber que ya hemos calculado por lo menos una

void setup()

// Iniciamos el monitor serie para mostrar el resultado

Serial.begin(9600);

7
// Ponemos el pin Trig en modo salida

pinMode(PinTrig, OUTPUT);

// Ponemos el pin Echo en modo entrada

pinMode(PinEcho, INPUT);

// Inicializamos el array

for (int i = 0; i < numLecturas; i++)

lecturas[i] = 0;

void loop()

// Eliminamos la última medida

total = total - lecturas[lecturaActual];

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

float distancia = tiempo * 0.000001 * VelSon / 2.0;

// Almacenamos la distancia en el array

lecturas[lecturaActual] = distancia;

8
// Añadimos la lectura al total

total = total + lecturas[lecturaActual];

// Avanzamos a la siguiente posición del array

lecturaActual = lecturaActual + 1;

// Comprobamos si hemos llegado al final del array

if (lecturaActual >= numLecturas)

primeraMedia = true;

lecturaActual = 0;

// Calculamos la media

media = total / numLecturas;

// Solo mostramos si hemos calculado por lo menos una media

if (primeraMedia)

float distanciaLleno = distanciaVacio - media;

float cantidadLiquido = distanciaLleno * 100 / distancia100;

Serial.print(media);

Serial.println(" cm");

Serial.print(cantidadLiquido);

Serial.println(" ml");

delay(500);

9
}

// Método que inicia la secuencia del Trigger para comenzar a medir

void iniciarTrigger()

// Ponemos el Trigger 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);

La información que vamos a mostrar es la cantidad de líquido en ml y el porcentaje de


llenado. Estos datos son fundamentales en el sensor de nivel de agua con Arduino.

El siguiente código es mezclado el código anterior y lo único que hace obtiene la cantidad
de líquido y el código con el que hemos probado el LCD.

// Incluímos la libreria externa para poder #define ROWS 2 // Filas del LCD
utilizarla
// Configuramos los pines del sensor Trigger y
#include <LiquidCrystal.h>
Echo
// Lo primero es inicializar la librería indicando
const int PinTrig = 7;
los pins de la interfaz
const int PinEcho = 6;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Constante velocidad sonido en cm/s
// Definimos las constantes
const float VelSon = 34000.0;
#define COLS 16 // Columnas del LCD

10
// Número de muestras {

const int numLecturas = 100; lecturas[i] = 0;

// Distancia a los 100 ml y vacío }

const float distancia100 = 2.15; // Configuramos las filas y las columnas del
LCD en este caso 16 columnas y 2 filas
const float distanciaVacio = 11.41;
lcd.begin(COLS, ROWS);
float lecturas[numLecturas]; // Array para
almacenar lecturas }

int lecturaActual = 0; // Lectura por la que void loop()


vamos
{
float total = 0; // Total de las que llevamos
// Eliminamos la última medida
float media = 0; // Media de las medidas
total = total - lecturas[lecturaActual];
bool primeraMedia = false; // Para saber que
iniciarTrigger();
ya hemos calculado por lo menos una
// La función pulseIn obtiene el tiempo que
void setup()
tarda en cambiar entre estados, en este caso
{ a HIGH

// Iniciamos el monitor serie para mostrar el unsigned long tiempo = pulseIn(PinEcho,


resultado HIGH);

Serial.begin(9600); // Obtenemos la distancia en cm, hay que


convertir el tiempo en segudos ya que está en
// Ponemos el pin Trig en modo salida
microsegundos
pinMode(PinTrig, OUTPUT);
// por eso se multiplica por 0.000001
// Ponemos el pin Echo en modo entrada
float distancia = tiempo * 0.000001 * VelSon
pinMode(PinEcho, INPUT); / 2.0;

// Inicializamos el array // Almacenamos la distancia en el array

for (int i = 0; i < numLecturas; i++) lecturas[lecturaActual] = distancia;

11
// Añadimos la lectura al total lcd.clear();

total = total + lecturas[lecturaActual]; // Cantidad de líquido

// Avanzamos a la siguiente posición del lcd.setCursor(0, 0);


array
lcd.print(String(cantidadLiquido) + " ml");
lecturaActual = lecturaActual + 1;
// Porcentaje
// Comprobamos si hemos llegado al final del
lcd.setCursor(0, 1);
array
lcd.print(String(porcentaje) + " %");
if (lecturaActual >= numLecturas)
Serial.print(media);
{
Serial.println(" cm");
primeraMedia = true;
Serial.print(cantidadLiquido);
lecturaActual = 0;
Serial.println(" ml");
}
}
// Calculamos la media
else
media = total / numLecturas;
{
// Solo mostramos si hemos calculado por lo
menos una media lcd.setCursor(0, 0);

if (primeraMedia) lcd.print("Calculando: " +


String(lecturaActual));
{
}
float distanciaLleno = distanciaVacio -
media; delay(500);

float cantidadLiquido = distanciaLleno * 100 }

/ distancia100; // Método que inicia la secuencia del Trigger

int porcentaje = (int) (distanciaLleno * 100 / para comenzar a medir

distanciaVacio); void iniciarTrigger()

// Mostramos en la pantalla LCD {

12
// Ponemos el Trigger en estado bajo y digitalWrite(PinTrig, HIGH);
esperamos 2 ms
delayMicroseconds(10);
digitalWrite(PinTrig, LOW);
// Comenzamos poniendo el pin Trigger en
delayMicroseconds(2); estado bajo

// Ponemos el pin Trigger a estado alto y digitalWrite(PinTrig, LOW);


esperamos 10 ms
}

Paso 4: Configurar arduino

Después de realizar el código continuo con la configuración de arduino para poder compilar
el código.

Diríjase a la barra de menú superior de arduino, asegúrese que este seleccionado


arduino/Genuino UNO. Seleccione herramientas/placa:”arduino/Genuino UNO”

En la misma opción herramientas asegúrese que este seleccionado el puerto serial con el
cual viajaran los datos de intercambio, normalmente la computadora el puerto COM7, sin
embargo, puede que aparezca otro puerto diferente, pero este funciona sin ningún
problema. Seleccioné herramientas/puerto COM7 (o el puerto que identifiqué su
máquina), si en algún caso no apárese ningún puerto verifiqué la conexión del conector de
la placa arduino si persiste el problema verifiqué la placa que este en buen estado.

13
Paso 5: compilar el código.

Si no le genera ningún error en el paso anterior podrá compilar el código es decir verificar
que no existan errores en la sintaxis si todo está bien este estará traducido a código
máquina y estará listo para utilizar. Seleccione el circulo que tiene una palomita que dice
verificar.

Paso 6: subir código.

Una vez que se ejecutó la compilación sin ningún error podrá subir el código a la placa
arduino.

Junto al botón de compilar se encuentra un botón con una flecha dirigida a la derecha el
cual indica subir, oprímala y comenzará el montaje del código compilado a la placa arduino.

14
PREGUNTAS
1. ¿Dónde emplear el sistema a nivel industria?
2. ¿Qué podría prevenir el sistema?
3. ¿Qué importancia tiene la medición de líquidos?

IMÁGENES DE APOYO

Ilustración 3 Ilustración 4

Ilustración 5 Ilustración 6

15
RESULTADO
Al termino de haber realizado las conexiones correspondientes para el
sistema y la elaboracion del codigo; se verifico que el codigo no contubiera
errores de compilacion, y se subio a la placa Arduino, para su posterior
ejecucion en el sistema. Al haber realizado lo anterior surgio un problema ya
que los resultados no se mostraron en la pantalla LCD, sin embargo, los
resultados son mostrados en la pantalla de Monitor Serie en la plataforma
Arduino demostrando que el sensor esta realizando su funcionamiento.

Ilustración 7: Resultados Final

16

También podría gustarte