Está en la página 1de 37

Arquitectura del Computador

Unidad 2
Fundamentos de Arduino

Semana 9 – Sesiones 1-2


Sensores

Edgard Oporto
2020 - I
Índice

Logros de la sesión
Utilidad del tema

Sensores
- Sensor ultrasónico HC-SR04
- Detector de movimientos (sensor PIR)
- Sensor de luz (LDR)
- Sensor de inclinación (TILT switch)
- Sensor IR
- Sensor y mando IR
- Sensor de gas
- Sensor de temperatura (LM-35)
Logros de la sesión

El alumno será capaz de explicar el funcionamiento


de los distintos sensores estudiados.

También, de emplearlos en circuitos básicos de


aplicación simulados en Tinkercad.
Utilidad del tema
¿POR QUE ESTUDIAR SENSORES EN ARDUINO?

Los sensores son dispositivos muy importantes en el


mundo real. A través de ellos se puede conocer el estado
de un sistema para realizar su control o monitoreo.
Sensores
Sensor Ultrasónico HC-SR04
Permite dos cosas:

a) Detectar si existe
algún objeto en frente, Detección de obstáculos u objetos
algún obstáculo.

b) Medir a qué distancia


se encuentra dicho Medición de distancias
obstáculo.
Sensores
Sensor Ultrasónico HC-SR04
¿Cómo se logra?
Emite un pulso ultrasónico por uno de sus
transductores.
Este pulso impacta con el obstáculo y rebota.

El pulso reflejado (eco) es captado por el segundo


transductor.
Se mide el tiempo entre el envío del pulso y la
recepción de su eco.

Conociendo la velocidad del sonido, se puede


determinar la distancia del obstáculo.
Sensores
Sensor Ultrasónico HC-SR04

Trigger
Sensores
Sensor Ultrasónico HC-SR04
CONEXIÓN AL ARDUINO
- Trigger del sensor al pin 2 del arduino
- Echo del sensor al pin 3 del arduino
Sensores
Sensor Ultrasónico HC-SR04
Primero configuramos los pines y la comunicación serial a 9600
baudios
const int Trigger = 2; //Pin digital 2 para el Trigger del sensor
const int Echo = 3; //Pin digital 3 para el echo del sensor

void setup()
{
Serial.begin(9600); //inicializamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW); //Inicializamos el pin con 0
}

Ahora en el bucle void loop() empezamos enviando un pulso de 10us al Trigger


del sensor
void loop()
{
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
}
Sensores
Sensor Ultrasónico HC-SR04
Seguidamente recibimos el pulso de respuesta del sensor por el pin Echo, para
medir el pulso usamos la función pulseIn(pin, value)

t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso

La variable t, tiene el tiempo que dura en llegar el eco del ultrasonido, el siguiente
paso es calcular la distancia entre el sensor ultrasónico y el objeto

Partimos de la siguiente formula:

Donde Velocidad es la velocidad del sonido 340m/s


Sensores
Sensor Ultrasónico HC-SR04
Finalmente enviamos serialmente el valor de la distancia y terminamos
poniendo una pausa de 100ms
d = t/59; //Escalamos el tiempo a una distancia en cm

Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
delay(100); //Hacemos una pausa de 100ms
Sensores
Sensor Ultrasónico HC-SR04
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)

Los sensores infrarrojos pasivos (PIR) son


dispositivos para la detección de movimiento.

Son baratos, pequeños, de baja potencia, y fáciles


de usar.

Por esta razón son frecuentemente usados en


juguetes, aplicaciones domóticas o sistemas de
seguridad.
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)

Todos los cuerpos (vivos o no) emiten


energía IR, aumenta con la temperatura.

Los sensores PIR se basan en la detección


de esa radiación infrarroja (IR).

Cada instante, el sensor realiza dos


mediciones, en dos áreas o zonas.
Si ambas son iguales, significa que
no hay detección de movimiento.

Si son distintas, se genera una señal


digital de aviso.
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
Optica del sensor
Es una cúpula de plástico formada
por lentes de Fresnel.

Esta divide el espacio en zonas,


enfoca la radiación IR en esas zonas.

Así, de cada zona se capta un


promedio de radiación IR.

Si un objeto entra en el rango del


sensor, alguna de las zonas captará
distinta radiación IR que la otra,
disparando la alarma.
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)

const int LEDPin= 13; Programa 1


const int PIRPin= 2; El código necesario para realizar la
void loop() lectura es simple.
void setup()
{
{ Se lee la salida del PIR.
int value= digitalRead(PIRPin);
pinMode(LEDPin, OUTPUT);
if (value == HIGH)
pinMode(PIRPin, INPUT);
{ Si es ALTA, se hace
}
digitalWrite(LEDPin, HIGH); encender/parpadear un LED o se
delay(50); activa un zumbador
digitalWrite(LEDPin, LOW);
delay(50);
}
else
{
digitalWrite(LEDPin, LOW);
}
}
Sensores
DETECTOR DE MOVIMIENTO (SENSOR PIR)
const int LEDPin = 13; // Pin para el LED Programa 2
const int PIRPin = 2; // Pin de entrada (para sensor PIR
Una sola acción en cada
void loop() estado del sensor
int pirState = LOW; // Estado del sensor
{
int val = 0; // Estado del pin
val = digitalRead(PIRPin);
if (val == HIGH) //si está activado
{
void setup()
digitalWrite(LEDPin, HIGH); //LED ON
{
if (pirState == LOW) //si previamente estaba apagado
pinMode(LEDPin, OUTPUT);
{
pinMode(PIRPin, INPUT);
Serial.println("Sensor activado");
Serial.begin(9600);
pirState = HIGH;
}
}
}
else //si esta desactivado
{
digitalWrite(LEDPin, LOW); // LED OFF
if (pirState == HIGH) //si previamente estaba encendido
{
Serial.println("Sensor parado");
pirState = LOW;
}
}
}
Sensores
SENSOR DE LUZ (LDR)
Una fotorresistencia o LDR (Light Depending
Resistor, o resistencia dependiente de la luz)
es un componente foto electrónico cuya
resistencia varía en función de la luz que
incide en él.

Esta resistencia es muy baja, de unos pocos


Ωs con una luz intensa y va creciendo
fuertemente a medida que esa luz decrece.
Sensores
SENSOR DE LUZ (LDR)
const int pinBuzzer = 13 ;

void setup()
{
pinMode (pinBuzzer, OUTPUT) ;
}

void loop()
{
int p = analogRead(A0) ;
int n = map (p, 0, 1024, 20, 5000) ;
tone (pinBuzzer, n) ;
}
Sensores
SENSOR DE INCLINACION (Tilt switch)
KY-017
De unos pocos milímetros de
longitud.

Llevan en su interior una o dos


pequeñas bolas conductoras,
capaces de cerrar el circuito con
los pines metálicos inferiores
del cilindro.
Sensores ESQUEMA DE CONEXIÓN

SENSOR DE INCLINACION (Tilt switch)


Sensores
SENSOR DE INCLINACION (Tilt switch)
int led_pin = 13; // Define the LED interface
int switch_pin = 3; // Definition of mercury tilt switch sensor
interface
int val; // Defines a numeric variable
void setup()
{
pinMode(led_pin, OUTPUT);
pinMode(switch_pin, INPUT);
}
Encendido del LED en pin 13
void loop() cuando el sensor es
{ inclinado
val = digitalRead(switch_pin); // check mercury switch state

if(val == HIGH)
{
digitalWrite(led_pin, HIGH);
}

else
{
digitalWrite(led_pin, LOW);
}
}
Sensores
SENSOR DE INCLINACION
Sensores
SENSOR DE INCLINACION (Tilt switch)
int inPin = 2;
int outPin = 13;
int lectura;
int previo = LOW;

long time = 0; // Para guardar la hora de la inversión de valor


long debounce = 50; // Tiempo de rebote
void setup() Muestra en un LED el estado
{ del sensor, evita los rebotes.
pinMode(inPin, INPUT_PULLUP);
pinMode(outPin, OUTPUT);
}
void loop()
{
lectura = digitalRead(inPin);
if (lectura != previo) // Si hay cambio en la lectura
time = millis();
if ((millis() - time) > debounce)
digitalWrite(outPin, lectura);

previo = lectura ;
}
Sensores Se enciende el LED con una
SENSOR IR intensidad proporcional a la
intensidad captada por el
sensor IR
Sensores
SENSOR Y MANDO IR
Al presionar las teclas del
control, este envía un código
de 6 dígitos hexadecimales.
Sensores
SENSOR Y MANDO IR

Al presionar las teclas del


control, este envía un código
de 6 dígitos hexadecimales.

El Arduino verifica el valor


recibido.

TAREA
Indicar los códigos para cada
tecla del control remoto.

Más información
https://naylampmechatronics.com/blog/36_Tutorial-Arduino-y-control-remoto-Infrarrojo.html
Sensores
SENSOR DE GAS
int sensor = A0;
int val = 0;
int limit = 47;

void setup()
{
Serial.begin(9600);
}

void loop()
{
val = analogRead(sensor);
Serial.println(val);

val = map(val, 306, 750, 0, 100);

if (val > limit)


{
tone(8, 1650);
}

delay(300);
noTone(8);
}
Sensores LM35

SENSOR DE TEMPERATURA
Sensores
RETO EN CLASE
Realice un sistema de alarma en donde detecte :

• Intrusión en dos puertas


• Humo en la sala de estudio

Se debe activar una señal luminosa y otra sonora.

La desactivación de alarmas es mediante mando


IR.
Resumen y conclusiones
- Describa los distintos sensores estudiados en clase.
- Indique, además, si tiene salida digital o analógica.
Bibliografía
TORRENTE, OSCAR
Arduino, curso práctico de formación

BANZI, MASSIMO
Introducción a Arduino

TOJEIRO, GERMAN
Taller de Arduino

También podría gustarte