LABORATORIO N° 02-04 “Medición y Control de variables”
INSTRUMENTACIÓN DIGITAL
LABORATORIO N° 02-04
“Medición y Control de variables”
CAPACIDADES ESPECIFICAS DE LA SESIÓN
OBJETIVOS
- Aprender a Usar y programar el arduino Mega
- Realizar modificaciones usando sentencias diferentes.
- Medir variables, manipular actuadores y controlar variables con dispositivos IoT, mostrando la información en indicadores.
- Identificar los sensores,
actuadores y controlador de un sistema.
- Medir temperatura usando un sensor y mostrar el valor en un display.
- Controlar la temperatura de una cámara térmica, usando un sensor, un controlador, dos lámparas incandescentes, y un ventilador.
MARCO TEÓRICO
INTRODUCCIÓN TEÓRICA
A. VARIABLES FÍSICAS y SENSORES, TRANSDUCTOR
Variable física: es la magnitud que cambia en el tiempo, una variable física es la magnitud que puede define el estado de un sistema físico. Por ejemplo: temperatura, resistencia eléctrica, peso, velocidad, fuerza, presión, etc.
Sensor: es un dispositivo de medición que transforma las magnitudes de variables físicas o químicas en magnitudes de otras variables, por ejemplo: presión en longitud de deformación, nivel de un tanque de agua en desplazamiento angular.
Transductor: es un dispositivo de medición que transforma las magnitudes de variables físicas o químicas en magnitudes de variables eléctricas. Por ejemplo: temperatura en tensión eléctrica, presión en corriente eléctrica.
En la tarjeta usada para el laboratorio podemos encontrar los siguientes sensores.
Temperatura y
humedad: la tarjeta DHT11 (ver Figura 3) tiene un
sensor para medir temperatura (0 °C a 50 °C) y un sensor para medir la humedad
relativa del ambiente (20 % a 90 % RH). Esta tarjeta electrónica convierte la
salida de los dos sensores en una señal digital en serie de ceros y unos. Se
requiere el uso de la biblioteca DHT11.
Fotoresistor: (ver Figura 1) varía su resistencia en función de la intensidad de la
luz. Si está oscuro, el sensor presentará un valor resistivo de millones de
ohmios, pero a medida que la luz brilla cerca de él, su resistencia disminuye
hasta cientos de ohmios. El sensor requiere un circuito de acondicionamiento
implementado mediante un divisor de tensión para obtener una señal correcta.
Figura 2: Light Dependent Resistor (LDR).
Figura 3: Tarjeta con sensor LDR.
Barómetro, medidor de presión absoluta: el módulo BMP280
incluye un sensor de presión (30 kPa a 110 kPa; 0,296 atm a 1,085 atm) de alta
precisión, y un sensor de temperatura (0 °C a 65 °C). La tarjeta electrónica
convierte la salida de los sensores en una señal digital de ceros y unos, que
utiliza el protocolo (Inter-Integrated Circuit (I2C).
Figura 4: Tarjeta barómetro BMP280.
B. DISPOSITIVOS Y CIRCUITOS DE CONTROL.
Para el desarrollo del laboratorio, haremos uso de la plataforma de desarrollo ARDUINO, que incluye un microcontrolador ATmega 2560, con todas las interfaces para la entrada y salida de datos tanto analógicos como digitales. En la la Figura 5 vemos el detalle de sus terminales.
Figura 5: Arduino Mega 2560.
B. DISPOSITIVOS ACTUADORES.
Para el laboratorio los dispositivos actuadores a usar son:
Relé: dispositivo electromagnético que cierra o abre sus contactos al
recibir una tensión en la bobina, la bobina consume una corriente mucho menor
que la puede circular por sus contactos.
Figura 7: Módulo de 4 relés
Figura 8: Lámpara incandescente de 12 V.
Ventilador: usado como elemento
actuador para disminuir la temperatura.
Figura 9: Ventilador.
EQUIPOS Y MATERIALES
Tabla 1. Equipos y materiales.
|
Ítem |
Descripción |
Cantidad |
|
1 |
Módulo IoT |
1 |
|
2 |
PC con el software
Arduino IDE |
1 |
|
3 |
Cables de conexión
PC – Módulo IoT |
1 |
|
4 |
Fuente de 12 V
para Módulo IoT |
1 |
|
5 |
Jumper para
ventilador |
1 |
|
6 |
Jumper para lámpara |
1 |
|
7 |
Jumper para Barómetro |
1 |
|
8 |
Jumper para
Pulsador |
2 |
|
9 |
Jumper para relés |
5 |
RECOMENDACIONES
Para la ejecución de sus actividades tome en cuenta lo siguiente:
a) Tenga presente siempre las recomendaciones de seguridad durante su trabajo.
b) Realice primero las conexiones del circuito base, una vez culminado,
c) Desarrolle las actividades
programadas, anotando sus observaciones y conclusiones.
d) Al culminar su trabajo, apague sus instrumentos y equipos, ordénelos, ubique adecuadamente su silla y espere la orden para retirarse del ambiente de trabajo.
NOTA: Ante
cualquier duda, consulte al profesor encargado.
Desarrollar el laboratorio
VIDEO , CODIGO DE PROGRAMACION , ARDUINO
IMAGENES DE CODIGO DE PROGRAMACION
Demostración con leds
Realice los siguientes cambios en el programa:
- En lugar de controlar los leds, ahora controle los RELES con los pulsadores. Tenga en cuenta que estos se activan con nivel ALTO (HIGH).
Actualice el nombre de los accionadores, en lugar de decir RELE1, cambiar por VENTILADOR, igual con las lámparas.
El código arduino de temperatura
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp,humi;
#define pulsador1 9
#define pulsador2 10
#define pulsador3 11
#define pulsador4 12
#define pulsador5 13
#define RELE1 47
#define VENTILADOR 48
#define LAMPARA1 49
#define LAMPARA2 53
void setup ()
{
Serial.begin (9600);
pinMode (RELE1, OUTPUT);
pinMode (VENTILADOR, OUTPUT);
pinMode (LAMPARA1, OUTPUT);
pinMode (LAMPARA2, OUTPUT);
pinMode (pulsador1,INPUT);
pinMode (pulsador2,INPUT);
pinMode (pulsador3,INPUT);
pinMode (pulsador4,INPUT);
pinMode (pulsador5,INPUT);
digitalWrite (RELE1, HIGH);
digitalWrite (VENTILADOR, HIGH);
digitalWrite (LAMPARA1, HIGH);
digitalWrite (LAMPARA2, HIGH);
}
void loop ()
{
//CONTROL DE LEDS
if (digitalRead(pulsador1) == HIGH ) { digitalWrite (RELE1,LOW);}
if (digitalRead(pulsador2) == HIGH ) { digitalWrite (VENTILADOR,LOW);}
if (digitalRead(pulsador3) == HIGH ) { digitalWrite (LAMPARA1,LOW);}
if (digitalRead(pulsador4) == HIGH ) { digitalWrite (LAMPARA2,LOW);}
if (digitalRead(pulsador5) == HIGH )
{
digitalWrite (RELE1,HIGH);
digitalWrite (VENTILADOR,HIGH);
digitalWrite (LAMPARA1,HIGH);
digitalWrite (LAMPARA2,HIGH);
}
dht11.read (humi,temp );
Serial.print("temperatura :");
Serial.print (temp );
Serial.print (" Humedad:");
Serial.print (humi);
Serial.println ();
delay (2000);
}
El experimento de temperatura
VIDEO DE TODO : SEGUNDO ESPERIMENTO TEMPERATURA COMPLETO
TEMPERATURA PANTALLA LED
Añada a este código el código anterior (control de lámparas y ventilador y lectura de temperatura y humedad con DHT11) de tal manera que estos datos se muestren en la pantalla OLED y presionando los pulsadores podamos manipular dichos valores.Añada otra condición de tal manera que, si la temperatura disminuye por debajo de 39 grados, se apague el ventilador y enciendan las lámparas. Si conseguimos esto, habremos realizado un CONTROL ON-OFF.
El código Arduino de temperatura OLED
// Añamuro Panduro y Carrizales Vera
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define SSD1306_LCDHETGHT 32
int variable=43;
#define pulsador1 9
#define pulsador2 10
#define pulsador3 11
#define pulsador4 12
#define pulsador5 13
#define RELE1 47
#define VENTILADOR 48
#define LAMPARA1 49
#define LAMPARA2 53
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp,humi;
int temp2;
int humi2;
void setup ()
{
display.begin (SSD1306_SWITCHCAPVCC , 0X3C);
display.clearDisplay ();
display. display ();
display.setTextColor(WHITE);
Serial.begin (9600);
pinMode (pulsador1,INPUT);
pinMode (pulsador2,INPUT);
pinMode (pulsador3,INPUT);
pinMode (pulsador4,INPUT);
pinMode (pulsador5,INPUT);
pinMode (RELE1, OUTPUT);
pinMode (VENTILADOR, OUTPUT);
pinMode (LAMPARA1, OUTPUT);
pinMode (LAMPARA2, OUTPUT);
digitalWrite (RELE1, HIGH);
digitalWrite (VENTILADOR, HIGH);
digitalWrite (LAMPARA1, HIGH);
digitalWrite (LAMPARA2, HIGH);
}
void loop ()
{
dht11.read (humi,temp );
temp2=temp;
humi2=humi;
Serial.print("temperatura :");
Serial.print (temp2 );
Serial.print (" Humedad:");
Serial.print (humi2);
Serial.println ();
delay (2000);
display.setTextSize (1);
display.setTextColor(WHITE);
display.setCursor (0,0);
display.print ( "Temperatura y Humeda");
display.setTextSize (1);
display.setCursor (0,21);
display.print ( "Panduro y Carrizales");
display.setTextSize(2);
display.setTextColor (WHITE);
display.setCursor (0,7);
display.print (temp2);
display .print ("C -");
display.print (humi2);
display .print (" %");
display.display();
delay(2000);
display.clearDisplay ();
//CONTROL DE LEDS
if (digitalRead(pulsador1) == HIGH ) { digitalWrite (RELE1,LOW);}
if (digitalRead(pulsador2) == HIGH ) { digitalWrite (VENTILADOR,LOW);}
if (digitalRead(pulsador3) == HIGH ) { digitalWrite (LAMPARA1,LOW);}
if (digitalRead(pulsador4) == HIGH ) { digitalWrite (LAMPARA2,LOW);}
if (digitalRead(pulsador5) == HIGH )
{
digitalWrite (RELE1,HIGH);
digitalWrite (VENTILADOR,HIGH);
digitalWrite (LAMPARA1,HIGH);
digitalWrite (LAMPARA2,HIGH);
}
if( temp > 40.00 )
{
digitalWrite(VENTILADOR,LOW);
digitalWrite(LAMPARA1,HIGH);
digitalWrite(LAMPARA2,HIGH);
}
if( temp < 38.00 )
{
digitalWrite(VENTILADOR,HIGH);
digitalWrite(LAMPARA1,LOW);
digitalWrite(LAMPARA2,LOW);
}
}
}
.4
DESARROLLO DE LA EXPERIENCIA 4: LECTURA
DEL SENSOR DE GAS Y SENSOR PIR
En
esta siguiente experiencia usaremos los sensores de GAS y sensor PIR como
detectores de alarma y seguridad ante posibles accidentes y/o intrusos. La
activación de estos sensores deberán mostrarse en la pantalla OLED y activar
dos LEDS indicadores.
CÓDIGO FINAL DEL PROYECTO
// Añamuro Panduro y Carrizales Vera
const int LEDPin= 33;
const int PIRPin= 36;
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define SSD1306_LCDHETGHT 32
int variable=43;
#define pulsador1 9
#define pulsador2 10
#define pulsador3 11
#define pulsador4 12
#define pulsador5 13
#define RELE1 47
#define VENTILADOR 48
#define LAMPARA1 49
#define LAMPARA2 53
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp,humi;
int temp2;
int humi2;
void setup ()
{
display.begin (SSD1306_SWITCHCAPVCC , 0X3C);
display.clearDisplay ();
display. display ();
display.setTextColor(WHITE);
Serial.begin (9600);
pinMode (pulsador1,INPUT);
pinMode (pulsador2,INPUT);
pinMode (pulsador3,INPUT);
pinMode (pulsador4,INPUT);
pinMode (pulsador5,INPUT);
pinMode (RELE1, OUTPUT);
pinMode (VENTILADOR, OUTPUT);
pinMode (LAMPARA1, OUTPUT);
pinMode (LAMPARA2, OUTPUT);
digitalWrite (RELE1, HIGH);
digitalWrite (VENTILADOR, HIGH);
digitalWrite (LAMPARA1, HIGH);
digitalWrite (LAMPARA2, HIGH);
pinMode(LEDPin, OUTPUT);
pinMode(PIRPin, INPUT);
}
void loop ()
{
dht11.read (humi,temp );
temp2=temp;
humi2=humi;
Serial.print("temperatura :");
Serial.print (temp2 );
Serial.print (" Humedad:");
Serial.print (humi2);
Serial.println ();
delay (2000);
if (digitalRead(PIRPin)==HIGH)
{
display.clearDisplay();
display.setTextSize(1);//tamaño
display.setCursor(0,0);//posicion
display.print("Panduro y Carrizales");//texto
display.setTextSize(2);
display.setCursor(6,10);
display.print("DETECTADO");
display.display();
delay (500);
}
else
{
int adc_MQ = analogRead(A0); //Lemos la salida analógica del MQ
float voltaje = adc_MQ * (5.0 / 1023.0); //Convertimos la lectura en un valor de voltaje
display.clearDisplay ();
display.setTextSize (1);
display.setTextColor(WHITE);
display.setCursor (0,0);
display.print ( " Temp-Humi-adc-Vol");
display.setTextSize (1);
display.setCursor (0,21);
display.print ( "Panduro y Carrizales");
display.setTextSize(1);
display.setTextColor (WHITE);
display.setCursor (25,7);
display.print (temp2);
display .print ("C -");
display.print (humi2);
display .print (" %");
display.setCursor (14,14);
display.print("adc:");
display.print(adc_MQ);
display.print(" Vol:");
display.println(voltaje);
display.display();
delay(1000);
}
//CONTROL DE LEDS
if (digitalRead(pulsador1) == HIGH ) { digitalWrite (RELE1,LOW);}
if (digitalRead(pulsador2) == HIGH ) { digitalWrite (VENTILADOR,LOW);}
if (digitalRead(pulsador3) == HIGH ) { digitalWrite (LAMPARA1,LOW);}
if (digitalRead(pulsador4) == HIGH ) { digitalWrite (LAMPARA2,LOW);}
if (digitalRead(pulsador5) == HIGH )
{
digitalWrite (RELE1,HIGH);
digitalWrite (VENTILADOR,HIGH);
digitalWrite (LAMPARA1,HIGH);
digitalWrite (LAMPARA2,HIGH);
}
if( temp > 40.00 )
{
digitalWrite(VENTILADOR,LOW);
digitalWrite(LAMPARA1,HIGH);
digitalWrite(LAMPARA2,HIGH);
}
if( temp < 38.00 )
{
digitalWrite(VENTILADOR,HIGH);
digitalWrite(LAMPARA1,LOW);
digitalWrite(LAMPARA2,LOW);
}
}
Observaciones
- Al momento de configurar el programa Arduino debemos especificar las características como el tipo de arduino MEGA y el puerto
- El Arduino Mega se conecta con el cable USB y ala vez tiene un cable de alimentación de 12 V
- La programación en Arduino debe ser de declarada con librerías y asu vez debe ser especificados los pines
- El Arduino Mega lleva diferentes equipos electrónicos como un sensor de gas y pantalla led
Conclusiones
- Logramos realizar un código de programación donde se usen los focos incandescentes y ventilador para el sensor de temperatura
- Logramos mostrar las magnitudes medidas en la pantalla Led, además de mostrar textos fijos
- Agregamos interrupciones a las diferentes operaciones q se ejecutaban como la del sensor infrarrojo que muestre el texto DETECTADO cuando lectura algo
- Finalmente realizamos el video y mostramos todas las evidencias respectivas en el.blogg
|
Alumnos: |
|
||||||
|
Grupo |
: |
|
Profesor: Edgar Mamani Paco |
Nota: |
|||
|
Semestre |
: |
|
|||||
|
Fecha de entrega |
: |
|
|
|
|
|
|




















Comentarios
Publicar un comentario