Está en la página 1de 137

Robótica Industrial

Dr. Elías Neftalí Escobar Gómez


Tópicos Avanzados Robótica Industrial
1. Estructura de programación
Robótica Industrial

Arduino
Es una plataforma de hardware libre basada en
una placa con un micro controlador de la familia ATMEL
(ATmega2560) y un entorno de desarrollo, diseñada para
facilitar el uso de la electrónica en proyectos
multidisciplinares
Robótica Industrial

Arduino
Robótica Industrial

Arduino
Robótica Industrial
Robótica Industrial

Entorno de Desarrollo Arduino


Robótica Industrial
Compilador

Verify: Compila y verifica el código en busca de errores.


Upload to I/O board: Compila y descarga tu código a la placa Arduino.
New: Crea una nueva ventana para escribir un nuevo programa.
Open: Muestra un menú con todas los programas escritos anteriormente
(sketchbook).

Save: Guarda tus programas.


Serial Monitor: Muestra datos serie enviados desde la placa Arduino (placa
serie o USB). Para enviar datos a la placa, introduce el texto y haz click
en el botón Send o presiona Enter.
Robótica Industrial
Estructura del sketch
La estructura básica del lenguaje de programación de Arduino es
bastante simple y se compone de tres partes. En la primera se
declaran variables que se utilizarán en el programa. Las
siguientes dos funciones son necesarias, encierran bloques que
contienen declaraciones o instrucciones.

void setup()
{
/ / inicializar los modos de trabajo de los pines, o el
puerto serie;
}
void loop()
{
/ / programa que se ejecutará cíclicamente;
}
Robótica Industrial
Estructura del sketch
Robótica Industrial
Tipo de variables

byte (0 a 255)
int ( -32,768 a 32,767)
long ( -2,147,483,648 a 2,147,483,647)

#define es un componente útil de C ++ que permite al


programador dar un nombre a un valor constante antes de
compilar el programa.
2. Entradas y salidas digitales
Configuración de los pines

pinMode: Configura el modo de trabajo de una


terminal digital como entrada ( INPUT ) o como
salida ( OUTPUT ).

pinMode(pin, OUTPUT); // configura ‘pin’ como salida

pinMode(pin, INPUT); // configura el ‘pin’ como entrada

Terminales configurables como salida/entrada digital: 0-53


Modificando terminal digital

Se envía al pin el valor de HIGH (1) o LOW (0). HIGH


correspondería a una salida de 5 volts, mientras que
LOW seria una salida de 0 volts.

digitalWrite(pin, value);

Ejemplo: Colocar la terminal 10 a un valor lógico alto

digitalWrite(10,HIGH);
Leyendo terminal digital

Lee el valor de un pin (definido como digital)


dando un resultado HIGH (alto) o LOW (bajo).

digitalRead(Pin);
Demorar o retrasar (delay)

Pausa el programa por la cantidad de tiempo (en


milisegundos) especificada como parámetro.

delay(ms);
Práctica 1:
“HOLA MUNDO”
Instrucciones:

Encender un Led por 2 segundos, posteriormente,


apagar el Led durante 2 segundos.
Material

1 Placa Arduino UNO o MEGA 2560


1 Cable USB
1 Protoboard
1 Led
1 Resistencia de 220 Ohmios
2 Cables Dupont macho-macho
Placas de prueba, Protoboard o
Breadboard
Conexiones
Conexiones
Código

void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13, LOW);
delay(2000);
}
Código
#define Led 13

void setup()
{
pinMode(Led, OUTPUT);
}
void loop()
{
digitalWrite(Led, HIGH);
delay(2000);
digitalWrite(Led, LOW);
delay(2000);
}
Código
const byte Led=13;

void setup()
{
pinMode(Led, OUTPUT);
}
void loop()
{
digitalWrite(Led, HIGH);
delay(2000);
digitalWrite(Led, LOW);
delay(2000);
}
Práctica 2:
“Control de 2 led’s”
Instrucciones:

Encender dos Led’s de forma alternada; es decir, que


se encienda el primer Led por dos segundos, luego
apagarlo durante dos segundos; posteriormente
encender el segundo Led por dos segundos y luego
apagarlo durante dos segundos.
Práctica 3:
“Control de 3 led’s”
Instrucciones:

Encender tres Led’s de forma alternada; es decir, que


se encienda el primer Led por cinco segundos, luego
apagarlo e inmediatamente encender el segundo led
por cinco segundos, después apagarlo, e
inmediatamente encender el tercer led por cinco
segundos y posteriormente apagarlo.
Práctica 4:
“Control de semáforo”
Instrucciones:

Encender el Led verde por 5 segundos, hacer


parpadear el Led verde por 2 segundos (considerar
tiempos de parpadeo de 250 ms), apagar el Led
verde, encender el Led ámbar por 2 segundos,
apagar el Led ámbar, encender el Led rojo por 5
segundos y apagar el Led rojo.
Material

1 Placa Arduino UNO o MEGA 2560


1 Cable USB
1 Protoboard
3 Leds
3 Resistencias de 220 Ohmios
4 Cables Dupont macho-macho
Conexiones
Práctica 5:
“Encendido secuencial de cinco
LED’s”
Instrucciones:

Encender el primer Led, después de 200 ms


encender el segundo Led, después de 200 ms
encender el tercer Led, después de 200 ms encender
el cuarto Led y después de 200 ms encender el
quinto Led; mantener encendido los cinco Leds
durante 500 ms.
Posteriormente, apagar el quinto Led, después de
200 ms apagar el cuarto Led, después de 200 ms
apagar el tercer Led, después de 200 ms apagar el
segundo Led, después de 200 ms apagar el primer
Led y esperar 500 ms.
Robótica Industrial
Declaración de arreglos

Un arreglo es una colección de variables que son accesadas con


un índice.

int miEnts[6];
int miPins[] = {2, 4, 8, 3, 6};
int miVals[5] = {2, 4, -8, 3, 2};
char mensaje[6] = "hello";

0 1 2 3 4
Robótica Industrial
Aritmética

Los operadores aritméticos que se incluyen en el


entorno de programación son suma, resta,
multiplicación y división. Estos devuelven la suma,
diferencia, producto, o cociente (respectivamente) de
dos operandos:
w = w + 10;
x = x - 15;
y = y * 5;
z = z / 20;
Robótica Industrial
Asignaciones compuestas

Las asignaciones compuestas combinan una operación


aritmética con una variable asignada. Estas son comúnmente
utilizadas en los bucles. Estas asignaciones compuestas pueden
ser:

x ++ // igual que x = x + 1, o incrementar x en + 1


x -- // igual que x = x - 1, o decremento x en -1
x += y // igual que x = x + y, o incrementar x en y
x -= y // igual que x = x - y, o decrementar x en y
x *= y // igual que x = x * y, o multiplicar x por y
x /= y // igual que x = x / y, o dividir x por y
Estructura FOR

La declaración for se usa para repetir un bloque de sentencias


encerradas entre llaves un número determinado de veces. Cada vez
que se ejecutan las instrucciones del bucle se vuelve a verificar la
condición.

for (inicialización; condición; expresión)


{
código;
}
Práctica 6:
“Encendido secuencial de cinco
LED’s utilizando arreglos y
estructura FOR”
Instrucciones:

Utilizando arreglos y la estructura “FOR” encender el


primer Led, después de 200 ms encender el segundo
Led, después de 200 ms encender el tercer Led,
después de 200 ms encender el cuarto Led y
después de 200 ms encender el quinto Led;
mantener encendido los cinco Leds durante 500 ms.
Posteriormente, apagar el quinto Led, después de
200 ms apagar el cuarto Led, después de 200 ms
apagar el tercer Led, después de 200 ms apagar el
segundo Led, después de 200 ms apagar el primer
Led. Esperar 500 ms para repetir el ciclo.
Estructura FOR
for (byte x = 0; x < 5; x++) {
byte Led[ ] = {13,12,11,10,9};
pinMode(Led[x], OUTPUT);
}
pinMode(Led[0], OUTPUT);
pinMode(Led[1], OUTPUT);
pinMode(Led[2], OUTPUT); 13 12 11 10 9
pinMode(Led[3], OUTPUT);
pinMode(Led[4], OUTPUT); 0 1 2 3 4

Led[0]  13
Led[1]  12
Led[2]  11
Led[3]  10
Led[4]  9
Estructura FOR
x = 0:
pinMode(Led[0], OUTPUT);

x = 1:
pinMode(Led[1], OUTPUT);
for (byte x = 0; x < 5; x++) {
x = 2: pinMode(Led[x], OUTPUT);
pinMode(Led[2], OUTPUT); }

x = 3:
pinMode(Led[3], OUTPUT);

x = 4:
pinMode(Led[4], OUTPUT);

x = 5: (NO CUMPLE)
Estructura FOR

pinMode(13, OUTPUT);
pinMode(12, OUTPUT); for (byte x = 13; x > 8; x--)
pinMode(11, OUTPUT); {
pinMode(10, OUTPUT); pinMode(x, OUTPUT);
pinMode(9, OUTPUT); }
Estructura FOR
x = 13:
pinMode(13, OUTPUT);

x = 12:
pinMode(12, OUTPUT);
for (byte x = 13; x > 8; x--)
x = 11: {
pinMode(11, OUTPUT); pinMode(x, OUTPUT);
}
x = 10:
pinMode(10, OUTPUT);

x = 9:
pinMode(9, OUTPUT);

x = 8: (NO CUMPLE)
Práctica 7:
“Control de Led´s simulando el
comportamiento del auto
fantástico ”
Instrucciones:

Utilizando arreglos y la estructura “for” realizar el


siguiente programa:
Encender el primer Led, después de 35 ms apagarlo
y encender el segundo Led, después de 35 ms
apagarlo y encender el tercer Led, continuar hasta
que se encienda y apague el noveno Led.
Posteriormente, encender el octavo Led, después de
35 ms apagarlo y encender el séptimo Led, después
de 35 ms apagarlo y encender el sexto Led,
continuar hasta que se encienda y apague el
segundo Led; repetir el ciclo.
Robótica Móvil Industrial
Estructura IF … ELSE …

Viene a ser un estructura que se ejecuta en respuesta a la


idea "si la condición se cumple haz esto de lo contrario haz
esto otro". Por ejemplo, si se desea probar una entrada
digital, y hacer una cosa si la entrada fue alto y hacer otra
cosa si la entrada es baja, se escribe que de esta manera:
if (inputPin == HIGH)
{
instruccionesA;
}
else
{
instruccionesB;
}
Robótica Móvil Industrial
Estructura IF … ELSE …

else puede ir precedido de otra condición de manera que


se pueden establecer varias estructuras condicionales de
tipo unas dentro de las otras (anidamiento) de forma que
sean mutuamente excluyentes pudiéndose ejecutar a la
vez. Es incluso posible tener un número ilimitado de estos
condicionales. Recuerde sin embargo qué sólo un conjunto
de declaraciones se llevará a cabo dependiendo de la
condición probada:
if (inputPin < 500) { instruccionesA; }
else if (inputPin >= 1000) { instruccionesB; }
else { instruccionesC; }
Robótica Industrial
Operadores de comparación

Las comparaciones de una variable o constante con


otra se utilizan con frecuencia en las estructuras
condicionales del tipo if, para probar si una condición
es verdadera:
x == y // x es igual a y
x != y // x no es igual a y
x<y // x es menor que y
x>y // x es mayor que y
x <= y // x es menor o igual que y
x >= y // x es mayor o igual que y

Todo esto regresa un valor lógico falso (0) o verdadero (1)


Robótica Industrial
Operadores lógicos

Son una forma de comparar dos expresiones y devolver un


VERDADERO o FALSO dependiendo del operador. Existen
tres operadores lógicos:
Logical AND
if ( x > 0 && x < 5 ) // cierto sólo si las dos expresiones son
ciertas

Logical OR
if ( x > 0 || y > 0 ) // cierto si cualquiera de las expresiones
es cierta

Logical NOT
if ( !x > 0 ) // cierto solo si la expresión es falsa
Estructura CASE
Al igual que las declaraciones if, el switch ... case controla el flujo de
los programas, permitiendo a los programadores especificar
diferentes códigos que deben ejecutarse en diversas condiciones. En
particular, una instrucción switch compara el valor de una variable
con los valores especificados en las sentencias case. Cuando se
encuentra una instrucción case cuyo valor coincide con el de la
variable, se ejecuta el código en esa instrucción case.
switch (var) {
case label:
// statements
break;
case label:
// statements
break;
default:
// statements
break;
}
Puerto serie
Serial.begin(tasa)

Abre el puerto serie y fija la velocidad en baudios para la


transmisión de datos en serie. El valor típico de velocidad
para comunicarse con el ordenador es 9600, aunque otras
velocidades pueden ser soportadas.

void setup() {
Serial.begin(9600); // abre el Puerto serie
} // configurando la velocidad en 9600 bps

Nota: Cuando se utiliza la comunicación serie los pines


digitales 0 (RX) y 1 (TX) no pueden utilizarse para otros
propósitos.
Puerto serie
Serial.println(data)

Imprime los datos en el puerto serie, seguido por un retorno


de carro y salto de línea. Este comando toma la misma
forma que Serial.print (), pero es más fácil para la lectura
de los datos en el Monitor Serie del software.

Serial.println(Text); // envía el valor ‘Text' al puerto


Puerto serie
Serial.read()

Lee o captura un byte (carácter) desde el puerto serie.


Ejemplo
int Tecla = 0; // almacenar el dato serie
void setup() {
Serial.begin(9600); // abre el puerto serie, y le asigna la
velocidad de 9600 bps }
void loop() {
Tecla = Serial.read(); // lee el byte de entrada
Serial.print("He recibido: "); //lo vuelca a pantalla
Serial.println(Tecla, DEC);
}
Puerto serie
Serial.available()
Devuelve un entero con el número de bytes (caracteres)
disponibles para leer desde el buffer serie, ó 0 si no hay
ninguno. Si hay algún dato disponible, SerialAvailable()
será mayor que 0. El buffer serie puede almacenar como
máximo 128 bytes.
Ejemplo
int Tecla = 0; // almacena el dato serie
void setup() {
Serial.begin(9600); }
void loop() {
if (Serial.available() > 0) {// envía datos sólo si los recibe
Tecla = Serial.read(); // lee el byte de entrada
Serial.print("He recibido: "); //lo vuelca a pantalla
Serial.println(Tecla, DEC); } }
Práctica 8:
“Control de Led utilizando el
teclado”
Instrucciones:

Al presionar una tecla numérica entre “1” y “9” se


enciende el Led correspondiente (Led 1 al Led 9) y
se mantiene encendido hasta que se presione la
tecla “0”.
Práctica 9:
“Imprimir el número de Led
encendido”
Instrucciones:

Al presionar una tecla numérica entre “1” y “9” se


encienda el Led correspondiente (Led 1 al Led 9) y
se envíe a imprimir al monitor serie “Se ha encendido
el Led: #”.
El Led se mantiene encendido hasta que se presione
la tecla “0”.
Práctica 10:
“Control de un Led utilizando el
teclado”
Instrucciones:

Al presionar la tecla numérica “1” se enciende un


Led, siempre y cuando esté apagado, mandando a
imprimir al monitor que se encendió el Led. En caso
de que el Led estuviera previamente encendido se
debe mandar un mensaje al monitor que indique que
el Led ya está encendido.
Al presionar la tecla “0” se apaga el Led y se indica
en el monitor que se apagó el Led. En caso de que el
Led estuviera apagado solo se envía un mensaje al
monitor indicando que el Led ya está apagado.
Robótica Industrial
Estructura WHILE

Los bucles while se realizan continuamente hasta que


la expresión dentro del paréntesis () se convierte en
falsa. Algo debe cambiar la variable probada, o el
bucle while nunca saldrá.

while (expresión) {
// Código
}

int var = 0;
while(var < 20) {
Serial.println(var);
var++;
}
Práctica 11:
“Control de encendido y parpadeo
de Led’s utilizando el teclado”
Instrucciones:

Al presionar la tecla ‘0’ se apaga el Led que esté


encendido;
al presionar la tecla ‘1’ se enciende el primer Led,
siempre y cuando esté apagado, en caso de que el
segundo Led estuviera encendido debe apagarse;
al presionar la tecla ‘2’ se enciende el segundo Led,
siempre y cuando esté apagado, en caso de que el
primer Led estuviera encendido debe apagarse;
al presionar la tecla ‘3’ el primer Led parpadea 10
veces, en caso de que el segundo Led estuviera
encendido debe apagarse;
Instrucciones:

al presionar la tecla ‘4’ el segundo Led parpadea 10


veces, en caso de que el primer Led estuviera
encendido debe apagarse;
al presionar la tecla ‘5’ el primer Led parpadea hasta
que se presione la tecla ‘7’, en caso de que el
segundo Led estuviera encendido debe apagarse;
al presionar la tecla ‘6’ el segundo Led parpadea
hasta que se presione la tecla ‘7’, en caso de que el
primer Led estuviera encendido debe apagarse.
Robótica Industrial
Estructura DO-WHILE

El bucle do-while trabaja de manera similar al bucle


while, con la excepción que la condición es probada al
final del bucle, por lo que el bucle do se ejecutará al
menos una vez.

do {
// Código
} while (Condición de prueba);
Robótica Industrial
Botón o pulsador

Muchos de los aparatos electrónico hoy en día


incluyen una tecla, botón, pulsador o switch.
Una de las funciones de las resistencias en el circuito
del botón es mantener un estado lógico conocido
cuando el botón no está siendo accionado.
La resistencia pull-up mantiene un estado alto en el
pin cuando el botón no es presionado, mientras que
cuando se acciona el estado activo del botón es bajo.
La resistencia pull-down mantiene un estado bajo
cuando el botón no es presionado, mientras que
cuando se acciona el estado activo del botón es alto.
Práctica 12:
“Control de un Led utilizando un
botón”
Instrucciones:

Al presionar un botón se enciende un Led,


imprimiendo un mensaje en el monitor serial, “Está
presionado el botón”, y cuando se suelta el botón se
apaga el Led, imprimiendo el mensaje
correspondiente en el monitor serial, “El botón está
liberado”.
Práctica 13:
“Cambio de estado de un Led
utilizando un botón”
Instrucciones:

Al presionar un botón el LED cambia de estado; es


decir, si está encendido se apaga y si está apagado
se enciende.
Robótica Industrial
Salidas analógicas

analogWrite(pin, value)
Sirve para escribir un pseudo-valor analógico utilizando el
procedimiento de modulación por ancho de pulso (PWM) a
uno de los pines de Arduino marcados como PWM. El valor
que se puede enviar a estos pines de salida analógica
puede darse en forma de variable o constante, pero
siempre con un margen de 0-255.

analogWrite(pin, valor); /* escribe 'valor' en el 'pin' definido


como analógico */
Práctica 14:
“Encendido gradual de un LED”
Instrucciones:

Encender gradualmente un LED, con incrementos de


51 (cambio de intensidad).
Utilizar un tiempo entre incrementos de 500 ms.
Práctica 15:
“Encendido y apagado gradual de
un LED utilizando la estructura
“FOR””
Instrucciones:

Utilizando la estructura FOR encender gradualmente


un LED, con incrementos de 5; al llegar a su máxima
intensidad (255) apagar al LED en forma gradual,
con decrementos de 5.
Considerar 150 ms como tiempo entre cambios de
intensidad.
Mandar a imprimir al monitor el nivel de intensidad en
el que se esta encendiendo el Led.
Práctica 16:
“Control gradual de tres LED’s
utilizando la estructura “FOR””
Instrucciones:

Encender gradualmente al primer LED, con


incrementos de 5, al llegar a su máxima intensidad
(255) apagarlo en forma gradual, con decrementos
de 5; al apagarse el primer LED se enciende
gradualmente el segundo LED, con incrementos de
5, al llegar a su máxima intensidad inicia su apagado
en forma gradual; al apagarse el segundo LED se
enciende gradualmente el tercer LED, con
incrementos de 5, al llegar a su máxima intensidad
inicia su apagado en forma gradual.
Robótica Móvil Industrial
Entradas analógicas

analogRead(pin)

Lee el valor de un determinado pin definido como entrada


analógica con una resolución de 10 bits. Esta instrucción
sólo funciona en los pines (A0-A15). El rango de valor que
podemos leer oscila de 0 a 1023.
valor = analogRead(pin); // asigna a 'valor' lo que lee en la
entrada 'pin‘
Nota: Los pines analógicos a diferencia de los pines digitales, no
necesitan ser declarados como INPUT u OUTPUT ya que son siempre
INPUT.
Instrucciones:

Función map()
Reasigna un número desde un rango a otro. Esto es,
un valor de fromLow es asignado a toLow, un valor
de fromHigh a toHigh, valores intermedios del primer
rango a valores intermedios del segundo rango.

map(value, fromLow, fromHigh, toLow, toHigh);


Práctica 17:
“Encendido gradual de un LED
utilizando el potenciómetro”
Instrucciones:

Encender gradualmente un LED utilizando un


potenciómetro, imprimir en pantalla el valor leído.
Desarrollo:
Desarrollo:

1023

0 1023

0
Práctica 18:
“Control digital de cinco LED’s
utilizando un potenciómetro”
Instrucciones:

Encender secuencialmente cinco LED’s utilizando un


potenciómetro.
Al iniciar, en la posición 0 todos los Led’s están
apagados, al mover el potenciómetro (mayor a cero y
hasta la quinta parte del ángulo total de giro) se
encenderá el primer LED, al continuar el movimiento
del potenciómetro el primer LED se apaga y se
enciende el segundo (de la primera quinta parte
hasta la segunda quinta parte), continua con el
encendido del tercer LED, posteriormente el cuarto
LED y finalmente con el quinto LED.
Desarrollo:

1023

0 1023

0
Práctica 19:
“Control analógico de cinco LED’s
utilizando un potenciómetro”
Instrucciones:

Encender secuencialmente en forma analógica cinco


LED’s utilizando un potenciómetro.
Es decir, al iniciar el movimiento del potenciómetro
(mayor a cero y hasta la quinta parte del ángulo total
de giro) se encenderá gradualmente el primer LED,
al continuar el movimiento del potenciómetro el
primer LED se apaga y se enciende gradualmente el
segundo (de la primera quinta parte hasta la segunda
quinta parte), continua con el encendido gradual del
tercer LED, posteriormente en forma gradual el
cuarto LED y finalmente con el quinto LED.
Sensor ultrasónico

Un sensor ultrasónico es un dispositivo para medir


distancias. Su funcionamiento se basa en el envío de
un pulso de alta frecuencia, no audible por el ser
humano. Este pulso rebota en los objetos cercanos y
es reflejado hacia el sensor, que dispone de un
micrófono adecuado para esa frecuencia.

Midiendo el tiempo entre pulsos (tiempo entre el


envío y la recepción de un pulso sonoro),
conociendo la velocidad del sonido, podemos estimar
la distancia del objeto contra cuya superficie impacto
el impulso.
Sensor ultrasónico
Sensor ultrasónico

pulseIn()
Lee un pulso (HIGH o LOW) en un pin. Por ejemplo, si
el valor es alto, pulseIn () espera a que el pin pase a
nivel HIGH, se inicia el tiempo, espera a que el pin
pase a nivel LOW y para el cronómetro. Devuelve la
longitud del impulso en microsegundos o 0 si no se
recibe un pulso completo dentro del tiempo de espera.
La temporización de esta función funciona en pulsos
de 10 microsegundos a 3 minutos de duración.
Sintaxis:
pulseIn (pin, value)
Ejemplo:
pulseIn(pinEco, HIGH);
Sensor ultrasónico
Práctica 20:
“Determinar la distancia de un objeto
con un sensor ultrasónico”
Instrucciones:

Utilizando el sensor ultrasónico determinar a que


distancia se encuentran los objetos; considerar un
límite mínimo de 10 cm y un límite máximo de 300
cm.
Conexiones
Sketch:

byte Pindisparo=6;
byte Pineco=5;
long tiempoMs;
int dist;

void setup() {
Serial.begin(9600);
pinMode(Pindisparo, OUTPUT);
pinMode(Pineco, INPUT);
}
Sketch:
void loop() {
iniciarDisparo ();
tiempoMs = pulseIn(Pineco, HIGH);
dist = tiempoMs*0.01715;
if (dist>=10 && dist<=300) {
Serial.println("Distancia: " + String(dist) + " cm");
}
else {
Serial.println("FUERA DE RANGO");
}
delay(500);
}
Sketch:

void iniciarDisparo() {
digitalWrite(Pindisparo, LOW);
delayMicroseconds(2);
digitalWrite(Pindisparo, HIGH);
delayMicroseconds(10);
digitalWrite(Pindisparo, LOW);
}
Práctica 21:
“Sistema de alarma con un sensor
ultrasónico”
Instrucciones:

Utilizando un sensor ultrasónico controlar el


encendido de dos LED’s; si el sensor detecta que el
objeto se encuentra a una distancia menor o igual a
75 cm se encienden ambos LED’s; si el objeto se
encuentra a una distancia mayor a 75 y menor o
igual a 125 cm solo el LED rojo se enciende; si el
objeto se encuentra a una distancia mayor a 125 y
menor o igual a 250 cm solo el LED amarillo se
enciende; si el objeto se encuentra a una distancia
mayor a 250 cm ambos LED’s se apagan.
Sensor infrarrojo pasivo (PIR)

Los sensores infrarrojos pasivos son dispositivos para


la detección de movimiento.

Los sensores PIR se basan en la medición de la


radiación infrarroja.

Todos los cuerpos emiten una cierta cantidad de


energía infrarroja, mayor cuanto mayor es su
temperatura. Los dispositivos PIR disponen de un
sensor piezo eléctrico capaz de captar esta radiación y
convertirla en una señal eléctrica.
Sensor infrarrojo pasivo (PIR)

En realidad cada sensor está dividido en dos


campos y se dispone de un circuito eléctrico que
compensa ambas mediciones. Si ambos campos
reciben la misma cantidad de infrarrojos la señal
eléctrica resultante es nula. Por el contrario, si los dos
campos realizan una medición diferente, se genera
una señal eléctrica.

De esta forma, si un objeto atraviesa uno de los


campos se genera una señal eléctrica diferencial, que
es captada por el sensor, y se emite una señal digital.
Sensor infrarrojo pasivo (PIR)
Sensor infrarrojo pasivo (PIR)
Sensor infrarrojo pasivo (PIR)
Práctica 22:
“Detectar el movimiento con sensor
PIR”
Instrucciones:

Utilizando el sensor PIR mandar un mensaje al


monitor serie: “Movimiento detectado” cuando se
detecte un movimiento.
Conexiones
Práctica 23:
“Sistema de alarma utilizando el
sensor PIR”
Instrucciones:

Utilizando el sensor PIR controlar el encendido de un


Led; cuando el sensor detecte un movimiento
encender un Led por 250 ms, mandando un mensaje
al monitor serie.
Conexiones
Sensor temperatura Ds18b20
Sensor temperatura Ds18b20

Este sensor es capaz de medir la temperatura de


cualquier entorno, sin embargo lo que lo hace
diferente a otros es que su diseño lo hace
impermeable, la punta de su diseño esta construida
con acero inoxidable para así evitar la corrosión por
agua salada o ciertos fluidos. Este sensor esta
construido en una sola pieza y cuenta con un cable de
conexión con una longitud de 1 Metro, esto es
fantástico si se requiere tomar la temperatura a
diferentes profundidades.
Sensor temperatura Ds18b20

Otro de los puntos fuertes de este sensor es que es


completamente compatible con Arduino por lo cual se
tiene un completo sistema capaz de sensar y procesar
temperatura al unir este sensor y Arduino. Sus
conexiones son simples ya que solo posee 3 de las
cuales 2 son positivo y negativo (GND).
Sensor temperatura Ds18b20

Características del Sensor de temperatura


• Encapsulado a prueba de agua
• La punta del sensor esta recubierta con acero
inoxidable
• Rango de Alimentación del sensor: 3 a 5.5V
• Rango de temperatura que puede medir el sensor: -
55°C a 125°C
• Largo del cable: 1 Metro
• Cable de salida : rojo ( VCC ), amarillo (DATA ),
negro ( GND )
Práctica 24:
“Medir la temperatura con el sensor
Ds18b20”
Conexiones
Utilizando el sensor Ds18b20 determinar la
temperatura del ambiente en grados Centígrados y
grados Fahrenheit.
Sensor temperatura Ds18b20
#include <OneWire.h>
#include <DallasTemperature.h>
#define Pin 2
OneWire ourWire(Pin);
DallasTemperature sensors(&ourWire);

void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin();
}
Sensor temperatura Ds18b20
void loop() {
sensors.requestTemperatures();
Serial.println(“TEMPERATURA MEDIDA”);
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" grados Centigrados");
Serial.print(sensors.getTempFByIndex(0));
Serial.println(" grados Fahrenheit");

delay(1000);

}
Práctica 25:
“Sistema de alarma con un sensor de
temperatura”
Instrucciones:

Utilizando el sensor Ds18b20 determinar la


temperatura del ambiente. Si la temperatura es
mayor o igual a 32 grados encender ambos Leds; si
la temperatura es menor a 32 y mayor o igual a 27
grados encender el Led 1; si la temperatura es menor
a 27 y mayor o igual a 24 grados encender el Led 2;
y, si la temperatura es menor a 24 grados apagar
ambos Leds.
Considerar que el led se enciende siempre y cuando
se encuentre previamente apagado, y se apaga solo
si previamente estaba encendido.
Sensor de sonido

Este dispositivo obtiene la lectura de manera digital o


analógica.
El dispositivo tiene integrado un micrófono, el que
funciona como un transductor que convierte las ondas
sonoras en señales eléctricas.
La salida producida por un micrófono es una señal
eléctrica analógica que representa el sonido recibido.
Sin embargo, en general, esta señal demasiado baja
para ser medida y tiene que ser amplificada.
Existen placas como la KY-038 que incorporan un
micrófono junto con un comparador LM393, que
permite obtener la lectura tanto como un valor
analógico como de forma digital.
Sensor de sonido

El uso habitual de este tipo de sensores no


amplificados es emplear la salida digital para detectar
el sonido cuando este supera un cierto umbral,
regulado a través de un potenciómetro ubicado en la
placa.
La salida analógica permite obtener una estimación
del volumen registrado.
Este tipo de sensores pueden ser útiles, por ejemplo,
para encender un dispositivo cuando se detecte
sonido, encender una lámpara con una palmada, o
incluso orientar un robot o una torre con servos
mediante sonido.
Sensor de sonido
Sensor de sonido
Práctica 26:
“Detectar sonido con un sensor”
Instrucciones:

Desarrollar un sketch en el que al detectar un nivel


de sonido alto encienda un led e imprima el mensaje
“Sonido detectado”.
El led debe permanecer encendido por 250 ms,
posteriormente, se debe detectar nuevamente el
nivel de sonido; considerar que el led se apaga solo
cuando el sensor ya no detecta sonido.
En caso de no detectar un nivel de sonido alto se
debe apagar el led y mandar a imprimir el mensaje
“No se detecta sonido”.
Práctica 27:
“Sistema de alarma con un sensor de
sonido”
Instrucciones:

Utilizando el sensor de sonido analógico determinar


el nivel de sonido del ambiente. Inicialmente
caracterizar el sensor, estableciendo los niveles de
sonido bajo, medio y alto.
Si el nivel de sonido es alto encender el led rojo; si el
nivel de sonido es medio encender el Led ámbar; si
el nivel de sonido es bajo encender el Led verde.
Considerar que el led se enciende siempre y cuando
se encuentre previamente apagado, y se apaga solo
si previamente estaba encendido.
Práctica 28:
“Sistema de alarma con sensor de
sonido y sensor ultrasónico”
Instrucciones:

Utilizando el sensor de sonido y el sensor ultrasónico


desarrollar un sistema que al detectar un nivel de
sonido alto detecte a que distancia se encuentra el
objeto. Si el objeto se encuentra a una distancia
menor o igual a 90 cm se enciende un led rojo, si el
objeto se encuentra a una distancia mayor a 90 cm y
menor o igual a 170 se enciende un led amarillo, si el
objeto se encuentra a una distancia mayor a 170 cm
y menor o igual a 300 se enciende un led verde; si el
objeto se encuentra a una distancia mayor a 300 cm
se apagan los led’s. Considerar que se encienden los
led’s solo si están previamente apagados.
Práctica 29:
“Sistema de alarma con sensor de
sonido, sensor ultrasónico y
teclado, con led’s analógicos”
Instrucciones:

Utilizando el sensor de sonido y el sensor ultrasónico


desarrollar un sistema que al determinar un nivel de
sonido alto inicie a detectar a que distancia se
encuentra el objeto.
Si el objeto se encuentra a una distancia menor o
igual a 100 cm se enciende gradualmente un led rojo,
el led se mantiene encendido y se detiene el sensado
hasta que se presione la tecla “r”.
Si el objeto se encuentra a una distancia mayor a
100 y menor o igual a 200 cm se enciende
gradualmente un led amarillo, el led se mantiene
Instrucciones:

encendido y se detiene el sensado hasta que se


presione la tecla “a”.
Si el objeto se encuentra a una distancia mayor a
200 y menor o igual a 300 cm se enciende
gradualmente un led verde, el led se mantiene
encendido y se detiene el sensado hasta que se
presione la tecla “v”.
Si el objeto se encuentra a una distancia mayor a
300 cm se mantienen apagado los tres led’s.
En otras palabras, al presionar la tecla “r”, “a” o “v” se
apaga el led correspondiente y se reinicia el
sensado.

También podría gustarte