Está en la página 1de 20

UNIVERSIDAD AUTÓNOMA TOMÁS FRÍAS

FACULTAD DE INGENIERIA TECNOLÓGICA


CARRERA DE INGENIERÍA ELECTRÓNICA

Laboratorio 2
Sensores Ultrasonico

UNIVERSITARIO: CRISTIASN GUNAR ROMANO CANDI MTN

MATERIA: SENSORES Y ACTUADORES DE SEÑAL Y LAB ETN 704

DOCENTE: M.Sc. ING. EDUARDO GUNAR RODRÍGUEZ MENDOZA

FECHA: P-8/12/2023

SENSOR ULTRASONICO
1. OBJETIVOS:

 Hacer el montaje del circuito para que pueda medir distancias para hallar la
exactitud del sensor ultrasónico y realizar las respectivas curvas de
calibración.

2. HERRAMIENTAS Y NOMENCLATURA
Arduino uno caracteristicas
Microcontrolador: ATmega328
Voltaje de operación: 5V
Voltaje de entrada (recomendado): 7-12V
Voltaje de entrada (limites): 6-20Vv
Pines de E/S digitales: 14 (de los cuales 6 proporcionan salida PWM)
Pines de entrada analógica: 6
Corriente DC por pin de E/S: 40 mA
Corriente DC para 3.3V Pin: 50 mA
Memoria Flash: 32 KB de los cuales 0,5 KB utilizados por el bootloader
SRAM: 2 KB (ATmega328)
EEPROM: 1 KB (ATmega328)
Velocidad de reloj: 16 MHz

PANTALLA LCD 16X2

• Pantalla – 16 caracteres por línea, 2 líneas.


Alimentación - 5v

• Consumo - 125mA con retroiluminación de pantalla encendida Comunicaciones - 12C


o serie 9600bps |3D

• Teclado - Escaneo automático de teclado matricial 3x4


• Caracteres personalizados - hasta 8 caracteres personalizados fácilmente definidos
Debido a que el ARDUINO tiene su propio lenguaje de programación se debe conocer
cada uno de los comandos básicos que son requeridos para su funcionamiento, de
igual manera que en el PIC se tiene 2 partes una que corresponde al código básico
que es l que contiene todas las especificaciones básicas que son requeridas para el
funcionamiento del ARDUINO. void setup() { } En este comando va en su interior
todos los aspectos básicos de nuestro programa y las especificaciones de los puertos
como a de funcionar.
pinMode(13,OUTPUT); Con el comando podemos determinar que será nuestro puerto si
será un puerto de entrada o de salida, denotando que primero se menciona el puerto
después sigue una como y se determina si es salida o entrada para determinar que sea una
salida se coloca OUTPUT configurando al puerto como salida.
Código Central Y De Ejecución:
En la base central del programa estarán los comandos de ejecución que realizarán las
acciones
requeridas o deseadas según lo que se quiera hacer o llegar a conseguir.
Void loop () { } En este comando van en su interior todas aquellos comando centrales o de
ejecución que llevemos en nuestro programa a diferencia del PIC este comando es cíclico ya
que va repitiendo lo q este en su interior indefinidamente.
digitalWrite(13,LOW); digitalWrite(13,HIGH); Con este comando escribimos en un puerto
que se quiere hacer, primero se determina el puerto y luego se determina la acción que
realizara que es poner el puerto en estado alto o estado bajo o en otras palabra encender o
apagar el puerto.
Delay(500); con este comando se dará un tiempo de espera determinado por el valor
numérico dentro del paréntesis que está en milisegundos INSTRUMENTOS: laptop o pc,
tester o multímetro.
COMPONENTES: Protoboard, Arduino Uno, Ultrasónico HC-SR04
HERRAMIENTAS: Fuente de alimentación DC 5v, programas Compilador Arduino, Proteus.
3. FUNDAMENTO TEORICO:

Una ARDUINO es una placa pre diseñada que consta con su propio software y su propio
lenguaje de programación y debido a su configuración y sus diversos módulos de adición su
armado y su implementación sea más fácil y conveniente.

En la imagen se puede apreciar los tipos de entradas, funciones especiales interrupciones,


comunicación, y entradas de energía con la que cuenta el ARDUINO UNO.
Los puertos ah usar serán los puertos digitales que están de color celeste estos puertos
pueden ser empleados tanto como salida como de entra de datos.
La alimentación del ARDUINO será vía conexión directa del ARDUINO con la computadora o
también introduciendo la energía eléctrica a los pines de conexión del ARDUINO demarcados
como power conectando la energía eléctrica a 5v y GND.
El propio ARDUINO tiene integrado ya en la placa un botón para reiniciar el ARDUINO
evitando así que se tenga que implementar esta configuración en el mismo como es en el
caso del PIC. También debido a que es una placa pre diseñada ya lleva un sistema de reloj
oscilador haciendo que ya no sea necesario conectar un cristal de cuarzo en su configuración
con condensadores para esto.
Siendo un sistema que tiene su propio software de programación esta placa ARDUINO ya
lleva incorporado su sistema de quemado siendo que solo se debe conectar el ARDUINO a la
computadora para quemarlo con el propio software con el que se compila.

¿Qué es un sensor ultrasónico?


Como su nombre lo indica, los sensores ultrasónicos miden la distancia mediante el uso de
ondas ultrasónicas. El cabezal emite una onda ultrasónica y recibe la onda reflejada que
retorna desde el objeto. Los sensores ultrasónicos miden la distancia al objeto contando el
tiempo entre la emisión y la recepción.

Un sensor óptico tiene un transmisor y receptor, mientras que un sensor ultrasónico utiliza
un elemento ultrasónico único, tanto para la emisión como la recepción. En un sensor
ultrasónico de modelo reflectivo, un solo oscilador emite y recibe las ondas ultrasónicas,
alternativamente. Esto permite la miniaturización del cabezal del sensor.
Cálculo de la distancia
La distancia se puede calcular con la siguiente fórmula:
Distancia L = 1/2 × T × C
Donde: L es la distancia, T es el tiempo entre la emisión y la recepción, y C es la velocidad del
sonido. (El valor se multiplica por 1/2 ya que T es el tiempo de recorrido de ida y vuelta).

Características
La siguiente lista muestra las características típicas habilitadas por el sistema de detección.
Objeto transparente detectable
Dado que las ondas ultrasónicas pueden reflejarse en una superficie de vidrio o líquido, y
retornar al cabezal, incluso los objetos transparentes pueden ser detectados.
Resistente a niebla y suciedad
La detección no se ve afectada por la acumulación de polvo o suciedad.
Objetos de forma compleja detectables
La detección de presencia es estable, incluso para objetos tales como bandejas de malla o
resortes.

4. FUNCIONAMIENTO Y TAREA:
Para poder programar en ARDUINO se debe usar su software que es ARDUINO, pero para
poder simular nuestros programas de ARDUINO en PROTEUS se debe usar librerías que
permitan esto y también se debe saber extraer el. HEX de nuestra compilación de ARDUINO.
Todo cambio que hagamos en nuestro programa y luego sea compilado será guardado en la
carpeta que le dimos nombre al inicio en un archivo. ino.
SIMULACION: Debido a que necesitamos el archivo. HEX para realizar la simulación este será
tomado de la carpeta temporal que se crea al momento de compilar el programa la manera
de encontrar esta carpeta es obteniendo la dirección directamente del software de
ARDUINO que nos lo otorgara en la parte baja del programa.
De esta carpeta copiamos el archivo dd.ino.hex que será el archivo que necesitamos para la
simulación, el nombre del archivo dependerá del nombre con el que se halla guardado el
proyecto, este archivo debe ser copia a la carpeta donde se halla guardado el proyecto
debido a que así será más fácil encontrarlo para la simulación y además la carpeta que
contenía el archivo se borrará cuando se cierre el software de ARDUINO.
Ya en el programa PROTEUS y armado nuestro circuito daremos doble click en la imagen que
representa al ARDUINO como se hacía en el PIC esto nos abrirá una venta con las opciones.
En la opción de Clock Frequence está ya predefinido la velocidad en la que se simulara el
ARDUINO, está ya vie definida por defecto pero debido a que muchas veces con programas
con diversos tiempo o diversos ciclos de tratamiento de datos muchas veces nos dará error
de velocidad de simulación este error de PROTEUS nos indicara que la velocidad de
simulación ha superado a la velocidad que puede registrar nuestra computadora por lo que
es recomendable bajar la velocidad de 16MHZ a 8MHZ o también a 4MHZ esto ocasionara
que el programa valla más lento pero no tendrá problemas de simulación.
Los cambios que se vallan ah hacer en la simulación no ha de afectar a la placa de ARDUINO
ya que estos cambios son únicamente para la simulación y la placa de ARDUINO ya viene su
configuración de reloj inalterable.
MANEJO DE DISPLAY LCD (pantalla de cristal líquido) con ARDUINO
Debido a la morfología con la que cuenta el LCD puede ser usado de diversas maneras tal que nos
permite su uso con ARDUINO así también el uso de la pantalla lcd con el módulo i2c y que la
comunicación se ah más práctica y más simple.

Como se muestra en la imagen podemos observar los pines requeridos para el funcionamiento de
nuestro LCD donde el pin 1,2,3 son de alimentación y control de la nitidez de los caracteres del LCD.
Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd
o VO en algunos display LCD como el 1602A
Los pines de 4, 5, 6 son pines de control que irán conectados a nuestro PIC, RW puede conectarse
directamente a tierra o al PIC si se tiene un pin destinado a este.
RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir
el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el
bus pertenece a un registro de control/instrucción. y cuando RS es 1 el dato presente en el bus de
datos pertenece a un registro de datos o un carácter.
RW: Corresponde al pin de Escritura (0) o de Lectura (1). Nos permite escribir un dato en la pantalla o
leer un dato desde la pantalla.
E: Corresponde al pin Entable o de habilitación. Si E(0) esto quiere decir que el LCD no está activado
para recibir datos, pero si E(1) se encuentra activo y podemos escribir o leer desde el LCD.
Los pines del 7 al 14 son pines de dato estos pines de dato darán la información que a de ser
mostrada en el LCD así como también darán la posición y movimiento solo son necesarios los pines
D4 hasta el D7 para mostrar los datos pero de igual manera pueden conectarse los pines D0 a D3 si es
necesario.
El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el
LCD podemos hacerlo utilizando los 8 bits del bus de datos (D0 a D7) o empleando los 4 bits más
significativos del bus de datos(D4 a D7).
Los pines 15 y 16 son pines de alimentación que encenderán el led de luz para el brillo del LCD.

En la figura podemos observar que el módulo i2c va conectado a todos los pines del LCD para luego
sacar 4 pines que serán toda la comunicación con el arduino que son gnd (tierra) vcc (alimentación)
SDA y SCL que serán los pines de control como de datos.
También en este capítulo se aprenderá el uso de un puerto como entrada de datos analógica.

CODIGO NECESARIO.-Como en este dispositivo se envían datos de manera multiplexada y también se


habilita un puerto como un puerto de ingreso de datos analógicos se darán todos lo comandos de
configuración requeridos y necesarios.
#include <LiquidCrystal.h> con este comando incluimos la librería de control del LCD.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); con este comando defines los pines que han de salir al LCD el
primer digito define el pin del RS, el segundo digito define el E, el tercer digito define el D4, el cuarto
digito define el D5, el quinto digito define el D6 y el sexto digito define el D7.
#define COLS 16 // con este comando definimos una variable a un valor en el caso definimos COLS
al valor 16 como esta variable ya ah sido definida el valor no podrá ser modificado dentro del
programa. int pinVOLT = 0; // Variable del pin de entrada del sensor (A0)
5 Codigo Arduino .ino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Dirección I2C de la pantalla LCD y dimensiones (16 columnas x 2 filas)
int presion;
void setup() {

lcd.init();

//Encender la luz de fondo.


lcd.backlight();
Serial.begin(9600);
lcd.begin(16, 2); // Inicializar la pantalla LCD

void loop() {
float D_cm=distancia(20); //lectura de distancia
float distancia = D_cm *10;

Serial.print("Presion: ");
Serial.print(presion);
Serial.print(" mmHg ");
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");

// Mostrar la distancia en la pantalla LCD


lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Dis: ");
lcd.print(distancia);
lcd.print(" mm");
lcd.setCursor(0, 1);
lcd.print("Pres: ");
lcd.print(presion);
lcd.print(" mmHg");
delay(1000);

}
float distancia(int n)
{
long suma=0;
for(int i=0;i<n;i++)
{
suma=suma+analogRead(A1);
}
float adc=suma/n;
float distancia_cm = 17569.7 * pow(adc, -1.2062);
return(distancia_cm);
}
SIMULACION

Distancia/Medida D1= 90mm D2= 80 mm D3= 75mm D4=70 mm D5 = 65mm


Medida 1 91 79 77 71 66
Medida 2 92 81 76 67 65
Medida 3 90 82 74 72 61
Medida 4 89 80 75 69 64
Medida 5 89 78 77 69 66
prom 90.8 81 76 69 64
Presión /Medida 0mmHG 50mmHg 130mmHg 220 mmHg 280mmHg
Medida 1 0 55 130 222 275
Medida 2 0 45 125 224 265
Medida 3 0 50 127 225 280
Medida 4 0 53 4.63 220 260
Medida 5 0 52 4.54 221 285
prom 0 52 4.588 223 264
7.

RECTA DE CALIBRACION 1 RECTA DE CALIBRACION 2


8 8

7 7,06 7 7,09
6,57 6,62
6 6,05 6 6,1
5,58 5,54
5 5,05 5 5,08
4,57 4,59
4,14 4 4,18
4
3,58
3,45
3 3

2 2

1 1

0 0
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
RECTA DE CALIBRACION 3 RECTA DE CALIBRACION 4
8 8

7 7,12 7 7,07
6,52 6,61
6 6,15 6 6,07
5,61 5,59
5 5,15 5 5,04
4,61 4,63
4,22 4,26
4 4
3,6 3,41
3 3

2 2

1 1

0 0
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

RECTA DE CALIBRACION 5
8

7 7,15
6,58
6 6,09
5,64
5 5,18
4,54
4 4,1
3,64
3

0
1 2 3 4 5 6 7 8
Histograma para 3.5cm Histograma para 4cm
3,7 4,3
3,64 4,26
3,65
3,6 4,25
3,6 3,58 4,22

3,55 4,2 4,18

3,5 4,14
3,45 4,15
3,45
3,41 4,1
3,4 4,1

3,35
4,05
3,3

3,25 4
1 2 3 4 5 1 2 3 4 5

Histograma para 4.5cm Histograma para 5 cm


4,64 4,63 5,2 5,18
4,62 4,61 5,15
5,15
4,6 4,59

4,58 4,57 5,1 5,08


4,56
4,54 5,05
5,05 5,04
4,54

4,52
5
4,5

4,48 4,95
1 2 3 4 5 1 2 3 4 5
Histograma para 5.5cm Histograma para 6 cm
5,66 6,16 6,15
5,64
5,64 6,14
5,62 5,61
6,12
5,6 5,59 6,1
5,58 6,1 6,09
5,58
6,08 6,07
5,56
5,54 6,06 6,05
5,54
5,52 6,04

5,5 6,02

5,48 6
1 2 3 4 5 1 2 3 4 5

Histograma para 6.5 cm Histograma para 7 cm


6,64 7,16 7,15
6,62
6,62 6,61
7,14
6,6 7,12
6,58 7,12
6,58 6,57
7,1 7,09
6,56
7,08 7,07
6,54
6,52 7,06
6,52 7,06

6,5 7,04
6,48 7,02
6,46 7
1 2 3 4 5 1 2 3 4 5
MEDIDA(cm) PROMEDIO(cm)
3.5 3.536
4 4.18
4.5 4.588
5 5.1
5.5 5.592
6 6.092
6.5 6.58
7 7.098
Tabla de valores de la medida de patrón y el promedio de mediciones
TABLA PARA HALLAR LA PRECISIÓN

# medida Valor verdadero Valor medio Error

X Y X2 X*Y Y2 Y´ e=y-y´ e2

1 3.5 1 3.5 12.25 3.536 0.036 0.001296

2 4 4 8 16 4.18 0.18 0.0324

3 4.5 9 13.5 20.25 4.588 0.088 0.007744

4 5 16 20 25 5.1 0.1 0.01

5 5.5 25 27.5 30.25 5.592 0.092 0.008464

6 6 36 36 36 6.092 0.092 0.008464

7 6.5 49 45.5 42.25 6.58 0.58 0.003364

8 7 64 56 49 7.098 0.098 0.009604

Sum 3 4 20 21 5 18.76 0.08133


6 2 4 0 1 8 6

1/5 sum 40.8 26.25 0.0162672

Prom 4.5 5.25 25.5

Varianza = 0.0162672
Precision= √𝒗𝒂𝒓𝒊𝒂𝒏𝒛𝒂 = √𝟎. 𝟎𝟏𝟔𝟐𝟔𝟕𝟐 = 𝟎. 𝟏𝟐𝟕𝟓

𝑎 = 𝑦 = 𝑏𝑥 = 5.25(0.1277 ∗ 4.5) = 3.02


CURVA REAL
8
7,1
7,098
7 6,58
7
6,14
6,092
5,68
5,592
6
55,18
,1
4,68
4,558
5
44,2
,18
4 3,536
3,52

0
1 2 3 4 5 6 7 8

8. CONCLUCIONES:

• Con la simulación del circuito en PROTEUS se pudo observar que el código si funciona de
acuerdo al laboratorio

• Después el Funcionamiento está correcto. Y se cumplió con los objetivos


• En el armado real de los circuitos en un Protoboard funciona de manera precisa solo se
debe calibrar según la distancia el sensor ultrasónico
• En L a simulación se buscó una librería de modulo y con el potenciómetro se simulo las
distancia para el sensor.
• La calibración de los infrarrojos no es perfecta
• Hay varianza en la real y la medida

También podría gustarte