Sei sulla pagina 1di 6

Instrumentación Electrónica.

1
LIR- (Indicador Registrador de Nivel)

LIR-Indicador Registrador de Nivel


Daniel Iván González, 000089011. Jimy Antonio Galindo Diaz, 000334745

tamaño, bajo consumo energético, buena precisión y excelente


precio. El sensor HC-SR04 es el más utilizado dentro de los
Abstract— Registration instruments. In the practice of electrical sensores de tipo ultrasonido, principalmente por la cantidad de
measurements, especially during studies of different genders, it is información y proyectos disponibles en la web. De igual
often necessary to know not only the value of the variable magnitude forma es el más empleado en proyectos de robótica como
measured at a given time, but also the character of its variation over robots laberinto o sumo, y en proyectos de automatización
time. Such a need also arises during the control of different como sistemas de medición de nivel o distancia.
technological processes. For this purpose, special measuring
instruments called recorders are used.
La distancia se puede calcular utilizando la siguiente formula:
I. OBJETIVOS.
Distancia(m) =
1. Hacer uso de un sensor de distancia por ultrasonidos
{(𝐓𝐢𝐞𝐦𝐩𝐨 𝐝𝐞𝐥 𝐩𝐮𝐥𝐬𝐨 𝐄𝐂𝐎) ∗ (𝐕𝐞𝐥𝐨𝐜𝐢𝐝𝐚𝐝 𝐝𝐞𝐥 𝐬𝐨𝐧𝐢𝐝𝐨=𝟑𝟒𝟎𝐦/𝐬)}
HC-SR04 para medir el nivel de un tanque por medio
𝟐
de un microprocesador (ARDUINO UNO) para
mostrar las mediciones y registros de hasta 30
medidas en el tiempo en una gráfica visual en una PINES DE CONEXIÓN
pantalla TFT integrada en comunicación igualmente
con Arduino.  VCC (+5V DC)
2. Programar código para que el nivel medido del  TRIG (Disparo del ultrasonido)
tanque se vaya registrando en el costado derecho  ECHO (Recepción del ultrasonido)
como medida nueva (Tiempo=0) en la pantalla TFT y  GND (0V)
cada vez que efectué una nueva medición los valores
anteriores vayan desplazándose a medida que se ESPECIFICACIONES.
actualizan los datos.
3. Entender la importancia de los LIR’s en la  Voltaje de Operación: 5V DC
instrumentación electrónica en la industria.  Corriente de reposo: < 2mA
 Corriente de trabajo: 15mA
II. FUNDAMENTO TEORICO.  Rango de medición: 2cm a 450cm
 Precisión: +- 3mm
Sensor de distancia por ultrasonidos HC-SR04  Ángulo de apertura: 15°
 Frecuencia de ultrasonido: 40KHz
 Duración mínima del pulso de disparo TRIG (nivel
TTL): 10 μS
 Duración del pulso ECO de salida (nivel TTL): 100-
25000 μS
 Dimensiones: 45mm x 20mm x 15mm
 Tiempo mínimo de espera entre una medida y el
inicio de otra 20ms (recomendable 50ms)

ESQUEMATICO.

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
Instrumentación Electrónica. 2
LIR- (Indicador Registrador de Nivel)
ARDUINO UNO.

El Arduino Uno es una placa de microcontrolador de código


abierto basado en el microchip ATmega328P y desarrollado
por Arduino.cc.12 La placa está equipada con conjuntos de
pines de E/S digitales y analógicas que pueden conectarse a
varias placas de expansión y otros circuitos. La placa tiene 14
pines digitales, 6 pines analógicos y programables con el
Arduino IDE (Entorno de desarrollo integrado) a través de un
cable USB tipo B.3 Puede ser alimentado por el cable USB o
por una batería externa de 9 voltios, aunque acepta voltajes
entre 7 y 20 voltios.

PANTALLA TFT.

TFT-LCD (Thin Film Transistor-Liquid Crystal Display,


Pantalla de cristal líquido de transistores de película fina) es
una variante de pantalla de cristal líquido (LCD) que usa
tecnología de transistor de película delgada (TFT) para ESPECIFICACIONES.
mejorar su calidad. Las LCD de TFT son un tipo de LCD de
matriz activa, aunque esto es generalmente sinónimo de LCD
 Microcontrolador: ATmega328
 Voltaje Operativo: 5v
 Voltaje de Entrada (Recomendado): 7 – 12 v
 Pines de Entradas/Salidas Digital: 14 (De las cuales 6
son salidas PWM)
 Pines de Entradas Análogas: 6
 Memoria Flash: 32 KB (ATmega328) de los cuales 0,5
KB es usado por Bootloader.
 SRAM: 2 KB (ATmega328)
 EEPROM: 1 KB (ATmega328)
 Velocidad del Reloj: 16 MHZ.
ESPECIFICACIONES.

 Pantalla LCD TFT de 2,4”


 320×240 pixeles de resolución y 262.000 colores
 Panel táctil resistivo de 4 hilos
 Compatible con tensión de 5V ya que dispone de
regulador de tensión en placa
 Conexión Shield para Arduino UNO
 Tamaño: 71 x 52 x 7 mm (L x A x H)
Instrumentación Electrónica. 3
LIR- (Indicador Registrador de Nivel)
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR,
III. DISEÑO. LCD_RD, LCD_RESET); // Instancia del LCD

#define GREEN 0x07E0


#define WHITE 0xFFFF
#define BLUE 0x001F
#define CYAN 0x07FF
#define YELLOW 0xFFE0
#define MAGENTA 0xF81F

//variables para sensor ultrasónico

#define Pecho 12
#define Ptrig 13
long duracion, distancia;

//Variables para registrar medidas


int i;
char datos[30];
char memoria[30];
int x;
int k;
int n=1;

uint16_t identifier = 0x9325;

void setup(void)
{
tft.reset();
tft.begin(identifier);
tft.fillScreen(BLACK); // Colocamos el fondo del LCD en
Negro

pinMode(Pecho, INPUT); // define el pin 12 como


entrada (echo)
IV. CÁLCULOS pinMode(Ptrig, OUTPUT); // define el pin 13 como salida
(triger)
}
Distancia(m) =

{(Tiempo del pulso ECO) ∗ (Velocidad del sonido=340m/s)} void loop(void)


2
{
tft.setRotation(0); // Establecemos la posición de la
pantalla Vertical u Horizontal

V. CODIGO tft.setCursor(90, 5); // Situamos el cursor en la posicion


del LCD deseada,
#include <Adafruit_GFX.h> // Core graphics library // (X, Y) siendo X el ancho (240 px max.) e
#include <Adafruit_TFTLCD.h> // Hardware-specific Y el alto (320 px max.)
library
tft.setTextSize(2); // Definimos tamaño del texto.
// Pines de conexion del LCD (Probado tamaños del 1 al 10)
#define LCD_CS A3 // Chip Select - Pin analogico 3
#define LCD_CD A2 // Command/Data - Pin Analogico 2 tft.setTextColor(CYAN); // Definimos el color del texto
#define LCD_WR A1 // LCD Write - Pin Analogico 1
#define LCD_RD A0 // LCD Read - Pin Analogico 0 tft.println("L I R"); // Escribimos nuestro texto en el
#define LCD_RESET A4 // LCD Reset - Pin Analogico 4 LCD. Realizará un salto de linea
// automatico si el texto es mayor que el
tamaño del LCD
Instrumentación Electrónica. 4
LIR- (Indicador Registrador de Nivel)
tft.drawLine(70, 20, 170, 20, GREEN); // Dibujamos una tft.setCursor(2,275);
linea (Punto inicio X, Punto inicio Y, Punto final X, Punto tft.setTextSize(1);
final Y, Color) tft.setTextColor(WHITE);
tft.println("0%");
//Ejes X y Y: Tiempo (T) vs Temperatura(C)
tft.drawLine(25, 75, 25, 275, YELLOW); //Eje X
tft.drawLine(25, 275, 235, 275, YELLOW);
tft.setCursor(12,280);
//Eje Y tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(0,75); tft.println("-30");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(26,280);
tft.println("100%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,95); tft.println("-28");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(42,280);
tft.println("90%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,115); tft.println("-26");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(58,280);
tft.println("80%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,135); tft.println("-24");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(74,280);
tft.println("70%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,155); tft.println("-22");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(90,280);
tft.println("60%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,175); tft.println("-20");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(106,280);
tft.println("50%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,195); tft.println("-18");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(120,280);
tft.println("40%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,215); tft.println("-16");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(135,280);
tft.println("30%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,235); tft.println("-14");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(149,280);
tft.println("20%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
tft.setCursor(2,255); tft.println("-12");
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setCursor(163,280);
tft.println("10%"); tft.setTextSize(1);
tft.setTextColor(WHITE);
Instrumentación Electrónica. 5
LIR- (Indicador Registrador de Nivel)
tft.println("-10"); else {
tft.setCursor(30, 28); // Situamos el cursor en la
tft.setCursor(179,280); posicion del LCD deseada,
tft.setTextSize(1); // (X, Y) siendo X el ancho (240 px max.) e
tft.setTextColor(WHITE); Y el alto (320 px max.)
tft.println("-8");
tft.setTextSize(2); // Definimos tamaño del texto.
tft.setCursor(193,280); (Probado tamaños del 1 al 10)
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setTextColor(WHITE); // Definimos el color del
tft.println("-6"); texto

tft.setCursor(207,280);
tft.setTextSize(1); tft.println("Nivel Actual=");
tft.setTextColor(WHITE); tft.setCursor(75, 45); // Situamos el cursor en la
tft.println("-4"); posicion del LCD deseada,
// (X, Y) siendo X el ancho (240 px max.) e
tft.setCursor(221,280); Y el alto (320 px max.)
tft.setTextSize(1);
tft.setTextColor(WHITE); tft.setTextSize(2); // Definimos tamaño del texto.
tft.println("-2"); (Probado tamaños del 1 al 10)

tft.setCursor(235,280); tft.setTextColor(RED); // Definimos el color del


tft.setTextSize(1); texto
tft.setTextColor(WHITE);
tft.println("0");
tft.println(distancia);
for (int j=0; j<=29;j++) tft.setCursor(155, 45);
{datos[j]=0;
memoria[j]=0; tft.setTextSize(2);
}
i=0; tft.setTextColor(RED);
tft.println("Cm");
while(n=1){ }

//for (int n=0; n<=30;n++)


digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH); // genera el pulso de tft.fillCircle(235, 275-2*datos[0], 2, YELLOW);
triger por 10ms tft.fillCircle(228, 275-2*datos[1], 2, YELLOW);
delayMicroseconds(10); tft.fillCircle(221, 275-2*datos[2], 2, YELLOW);
digitalWrite(Ptrig, LOW); tft.fillCircle(214, 275-2*datos[3], 2, YELLOW);
tft.fillCircle(207, 275-2*datos[4], 2, YELLOW);
duracion = pulseIn(Pecho, HIGH); tft.fillCircle(200, 275-2*datos[5], 2, YELLOW);
distancia =(duracion*0.0343)/2; tft.fillCircle(193, 275-2*datos[6], 2, YELLOW);
memoria[i]=distancia; tft.fillCircle(186, 275-2*datos[7], 2, YELLOW);
if (distancia >= 500 || distancia <= 0){ // si la distancia es tft.fillCircle(179, 275-2*datos[8], 2, YELLOW);
mayor a 500cm o menor a 0cm tft.fillCircle(172, 275-2*datos[9], 2, YELLOW);
tft.fillCircle(165, 275-2*datos[10], 2, YELLOW);
tft.setCursor(30, 28); tft.fillCircle(158, 275-2*datos[11], 2, YELLOW);
tft.setTextSize(2); tft.fillCircle(151, 275-2*datos[12], 2, YELLOW);
tft.setTextColor(WHITE); tft.fillCircle(144, 275-2*datos[13], 2, YELLOW);
tft.println("-------"); tft.fillCircle(137, 275-2*datos[14], 2, YELLOW);
Serial.println("---"); // no mide nada tft.fillCircle(130, 275-2*datos[15], 2, YELLOW);
tft.fillCircle(123, 275-2*datos[16], 2, YELLOW);
} tft.fillCircle(116, 275-2*datos[17], 2, YELLOW);
tft.fillCircle(109, 275-2*datos[18], 2, YELLOW);
tft.fillCircle(102, 275-2*datos[19], 2, YELLOW);
tft.fillCircle(95, 275-2*datos[20], 2, YELLOW);
tft.fillCircle(88, 275-2*datos[21], 2, YELLOW);
Instrumentación Electrónica. 6
LIR- (Indicador Registrador de Nivel)
tft.fillCircle(81, 275-2*datos[22], 2, YELLOW); VI. BIBLIOGRAFIA
tft.fillCircle(74, 275-2*datos[23], 2, YELLOW);
tft.fillCircle(67, 275-2*datos[24], 2, YELLOW); [1]"Arduino Uno: Especificaciones y características",
tft.fillCircle(60, 275-2*datos[25], 2, YELLOW); PlusElectric, 2020. [Online]. Available:
tft.fillCircle(53, 275-2*datos[26], 2, YELLOW); https://pluselectric.wordpress.com/2014/09/21/arduino-
tft.fillCircle(46, 275-2*datos[27], 2, YELLOW); uno-especificaciones-y-caracteristicas/. [Accessed: 28-
tft.fillCircle(39, 275-2*datos[28], 2, YELLOW); Feb- 2020].
tft.fillCircle(32, 275-2*datos[29], 2, YELLOW);
[2] S. HC-SR04, "Sensor Ultrasonido HC-SR04 -
Naylamp Mechatronics - Perú", Naylamp Mechatronics
datos[i-29]=memoria[29]; - Perú, 2020. [Online]. Available:
datos[i-28]=memoria[28]; https://naylampmechatronics.com/sensores-
datos[i-27]=memoria[27]; proximidad/10-sensor-ultrasonido-hc-sr04.html.
datos[i-26]=memoria[26]; [Consultado: 06- Mar- 2020].
datos[i-25]=memoria[25];
datos[i-24]=memoria[24]; [3] Elecfreaks.com, 2020. [Online]. Available:
datos[i-23]=memoria[23]; http://www.elecfreaks.com/store/download/produc
datos[i-22]=memoria[22]; t/Sensor/HC-SR04/HC-
datos[i-21]=memoria[21]; SR04_Ultrasonic_Module_User_Guide.pdf.
datos[i-20]=memoria[20];
[Accessed: 06- Mar- 2020].
datos[i-19]=memoria[19];
datos[i-18]=memoria[18];
datos[i-17]=memoria[17]; [4]"Conectar Arduino a una pantalla TFT de 1.4"
datos[i-16]=memoria[16]; a 3.2"", Luis Llamas, 2020. [Online]. Available:
datos[i-15]=memoria[15]; https://www.luisllamas.es/conectar-arduino-a-una-
datos[i-14]=memoria[14]; pantalla-tft/. [Accessed: 06- Mar- 2020].
datos[i-13]=memoria[13];
datos[i-12]=memoria[12];
datos[i-11]=memoria[11]; VII. CONCLUSIONES
datos[i-10]=memoria[10];
datos[i-9]=memoria[9];
datos[i-8]=memoria[8];
datos[i-7]=memoria[7];
datos[i-6]=memoria[6];
datos[i-5]=memoria[5];
datos[i-4]=memoria[4];
datos[i-3]=memoria[3];
datos[i-2]=memoria[2];
datos[i-1]=memoria[1];
datos[i]=memoria[0];
i=i+1;
if(i>29){i=0;
n=0;}

delay(1000);
tft.fillRect(26, 28, 215, 247, BLACK);

}
}

Potrebbero piacerti anche