Está en la página 1de 94

Robótica

Segundo Parcial

Ing. Jorge Luis Charco, MSc.


Máster en Inteligencia Artificial

2020 – 2021 Ciclo I


Carrera de Ingeniería en Sistemas Computacionales Robótica

Índice

- Introducción y características de los microcontroladores

- Plataforma Arduino, instalación, lenguaje de programación

- Electrónica básica.

- Programación básica en Arduino

- Actuadores y sensores digitales básicos

- Actuadores y sensores analógicos básicos

- Uso de Pulse Modulation PWD

- Comunicación con el Arduino usando el monitor serial


Carrera de Ingeniería en Sistemas Computacionales Robótica

Microcontroladores

Un microcontrolador es un circuito integrado digital que


puede ser usado para diversos propósitos debido a que
es programable.

Está compuesto por:


• Unidad central de proceso (CPU),
• Memorias (ROM y RAM)
• Líneas de entrada y salida (periféricos).
Carrera de Ingeniería en Sistemas Computacionales Robótica
Carrera de Ingeniería en Sistemas Computacionales Robótica

Un microcontrolador tiene los mismos bloques de


funcionamiento básicos de una computadora lo que nos permite
tratarlo como un pequeño dispositivo de cómputo.
Un microcontrolador puede usarse para muchas aplicaciones
algunas de ellas son:

• Manejo de sensores
• Controladores, juegos, calculadoras
• Secuenciador de luces, cerrojos electrónicos
• Alarmas, robots, entre otros.
Carrera de Ingeniería en Sistemas Computacionales Robótica
Carrera de Ingeniería en Sistemas Computacionales Robótica

Como el hardware ya viene integrado en un solo chip, para usar


un microcontrolador se debe especificar su funcionamiento por
software a través de programas que indiquen las instrucciones
que el microcontrolador debe realizar.

En una memoria se guardan los programas y un elemento


llamado CPU se encarga de procesar paso por paso las
instrucciones del programa.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Los lenguajes de programación típicos que se usan para este


fin son ensamblador y C, pero antes de grabar un programa al
microcontrolador hay que compilarlo a hexadecimal que es el
formato con el que funciona el microcontrolador.

El propósito fundamental de los microcontroladores es el de


leer y ejecutar los programas que el usuario le escribe, es por
esto que la programación es una actividad básica e
indispensable cuando se diseñan circuitos y sistemas que los
incluyan.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Permiten modularidad y flexibilidad, ya que un mismo circuito se


puede utilizar para que realice diferentes funciones con solo
cambiar el programa del microcontrolador.

¿Cómo se escriben los programas?

Los microcontroladores están diseñados para interpretar y


procesar datos e instrucciones en forma binaria. Patrones de
1's y 0's conforman el lenguaje máquina de los
microcontroladores. , y es lo único que son capaces de
entender.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Por eso la programación comúnmente se lleva a cabo en un


lenguaje de alto nivel, es decir, un lenguaje que utilice frases o
palabras semejantes o propias del lenguaje humano.

Las sentencias de los lenguajes de alto nivel facilitan


enormemente la programación ya que son familiares a nuestra
manera de comunicarnos. Lenguajes como el C o BASIC son
comúnmente utilizados en la programación de
microcontroladores.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Para diseñar programas es necesario conocer los bloques


funcionales básicos del microcontrolador, estos bloques son:

• CPU (Unidad central de proceso)


• Memoria ROM y RAM(Lectura y acceso aleatorio)
• Líneas de entrada y salida (Periféricos),

La computadora, a través del software de grabación, se


encarga de enviar el programa que se desea grabar al
microcontrolador por intermedio del circuito programador.
Carrera de Ingeniería en Sistemas Computacionales Robótica
Carrera de Ingeniería en Sistemas Computacionales Robótica

Características generales.

Son diseñados para disminuir el coste económico y el consumo


de energía de un sistema en particular. Por eso el tamaño de la
CPU, la cantidad de memoria y los periféricos incluidos
dependerán de la aplicación.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Memoria

En los microcontroladores la memoria de instrucciones y datos


está integrada en el propio chip. Una parte debe ser no volátil,
tipo ROM, y se destina a contener el programa de instrucciones
que gobierna la aplicación. Otra parte de memoria será tipo
RAM, volátil, y se destina a guardar las variables y los datos
Carrera de Ingeniería en Sistemas Computacionales Robótica

Puertas de entrada y salida

Las puertas de Entrada y Salida (E/S) permiten comunicar al


procesador con el mundo exterior, a través de interfaces, o con
otros dispositivos. Según los controladores de periféricos, las
líneas de E/S se destinan a proporcionar el soporte a las
señales de entrada, salida y control
Carrera de Ingeniería en Sistemas Computacionales Robótica

El reloj

Reloj principal: Todos los microcontroladores disponen de un


circuito oscilador que genera una onda cuadrada de alta
frecuencia, que configura los impulsos de reloj usados en la
sincronización de todas las operaciones del sistema. Esta señal
del reloj es el motor del sistema y la que hace que el programa
y los contadores avancen.
Carrera de Ingeniería en Sistemas Computacionales Robótica

El procesador

Es el elemento más importante del microcontrolador y


determina sus principales características, tanto a nivel hardware
como software.

Se encarga de direccionar la memoria de instrucciones, recibir


el código de la instrucción en curso, su decodificación y la
ejecución de la operación, así como la búsqueda de los
operandos y el almacenamiento del resultado.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Temporizadores o timers

Se emplean para controlar periodos de tiempo (temporizadores)


y para llevar la cuenta de acontecimientos que suceden en el
exterior (contadores).

Para la medida de tiempos se carga un registro con el valor


adecuado y a continuación dicho valor se va incrementando o
decrementando al ritmo de los impulsos de reloj.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Plataforma Arduino

Arduino es una plataforma de prototipos electrónica de código


abierto (open-source) basada en hardware y software flexibles y
fáciles de usar.

Está pensado para cualquier interesado en crear objetos o


entornos interactivos. Arduino puede percibir el entorno
mediante la recepción de entradas desde una variedad
de sensores.
Carrera de Ingeniería en Sistemas Computacionales Robótica
Carrera de Ingeniería en Sistemas Computacionales Robótica

El hardware consiste en una placa de circuito impreso con un


microcontrolador, usualmente Atmel AVR, puertos digitales y
analógicos de entrada/salida

Pueden conectarse placas de expansión (shields), que amplían


los funcionamientos de la placa Arduino. Asimismo, posee un
puerto de conexión USB desde donde se puede alimentar la
placa y establecer comunicación con el computador.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Por otro lado, el software consiste en un entorno de desarrollo


(IDE) basado en el entorno de processing y lenguaje de
programación, así como en el cargador de
arranque (bootloader) que es ejecutado en la placa.

El microcontrolador de la placa se programa mediante un


computador, usando una comunicación serie mediante un
convertidor de niveles RS-232 a TTL.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Las placas Arduino están disponibles de dos formas:


ensambladas o en forma de kits.

Los esquemas de diseño del hardware están disponibles


bajo licencia libre, con lo que se permite que cualquier persona
pueda crear su propia placa Arduino sin necesidad de comprar
una prefabricada.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Arduino como herramienta educativa es muy útil y efectiva.


Existen diferentes web con recursos, tutoriales, trucos y
ejercicios, además de existir tutoriales oficiales de Arduino.

La plataforma en sí misma tiene una gran comunidad a su


alrededor donde se puede encontrar muchos recursos, desde
tutoriales para iniciarse desde cero hasta aquellos destinados a
usuarios más avanzados.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Instalación de Arduino

1.- Conseguir una placa Arduino y el cable USB


2.- Descargar el ambiente de desarrollo Arduino
3.- Instalar los drivers USB
4.- Conectar la tarjeta Arduino
5.- Conectar un LED
6.- Ejecutar el ambiente de desarrollo Arduino
7.- Cargar el programa en la tarjeta
Carrera de Ingeniería en Sistemas Computacionales Robótica

Lenguaje de programación

Para programar un Arduino, el lenguaje estándar es C++,


aunque es posible programarlo en otros lenguajes. No es un
C++ puro sino que es una adaptación que provee de una
librería de C de alta calidad para usar en los
microcontroladores.
Carrera de Ingeniería en Sistemas Computacionales Robótica

El lenguaje de programación usado por Arduino está basado en


Processing. Es un lenguaje de programación y entorno de
desarrollo integrado de código abierto basado en Java, de fácil
utilización, y que sirve como medio para la enseñanza y
producción de proyectos multimedia e interactivos de diseño
digital.

Es útil cuando queremos comunicar Arduino con un ordenador y


mostrar datos o guardar datos, pero también podemos usar
otros lenguajes de programación como python, .NET o
cualquier otro que conozcamos.
Carrera de Ingeniería en Sistemas Computacionales Robótica

La estructura básica del lenguaje de programación de Arduino


es bastante simple y se compone de al menos dos partes.
Estas dos partes necesarias, o funciones, encierran bloques
que contienen declaraciones, estamentos o instrucciones.

• void setup()
• void loop()

Setup() es una función que se ejecuta una sola vez.


Loop() contiene el código que se ejecutara continuamente .
Carrera de Ingeniería en Sistemas Computacionales Robótica

La función de configuración (SETUP) debe contener la


declaración de las variables. Es la primera función a ejecutar en
el programa, se ejecuta sólo una vez, y se utiliza para
configurar o inicializar pinMode (modo de trabajo de las E/S),
configuración de la comunicación en serie y otras.

La función bucle (LOOP) siguiente contiene el código que se


ejecutara continuamente (lectura de entradas, activación de
salidas, etc) Esta función es el núcleo de todos los programas
de Arduino y la que realiza la mayor parte del trabajo.
Carrera de Ingeniería en Sistemas Computacionales Robótica

SETUP()

La función setup() se invoca una sola vez cuando el programa


empieza. Se utiliza para inicializar los modos de trabajo de los
pins, o el puerto serie. Debe ser incluido en un programa
aunque no haya declaración que ejecutar.

void setup()
{
pinMode(pin, OUTPUT); // configura el 'pin' como salida
digitalWrite(pin, HIGH); // pone el ‘pin’ en estado HIGH
}
Carrera de Ingeniería en Sistemas Computacionales Robótica

LOOP()

Después de llamar a setup(), la función loop() hace


precisamente lo que sugiere su nombre, se ejecuta de forma
cíclica, lo que posibilita que el programa esté respondiendo
continuamente ante los eventos que se produzcan en la placa.

void loop()
{
digitalWrite(pin, HIGH); // pone en uno (on, 5v) el 'pin'
delay(1000); // espera un segundo (1000 ms)
digitalWrite(pin, LOW); // pone en cero (off, 0v.) el 'pin' delay(1000);
}
Carrera de Ingeniería en Sistemas Computacionales Robótica

Funciones

Las funciones de usuario pueden ser escritas para realizar


tareas repetitivas y para reducir el tamaño de un programa. Las
funciones se declaran asociadas a un tipo de valor “type”. Este
valor será el que devolverá la función, por ejemplo:

'INT' se utilizará cuando la función devuelve un dato numérico


de tipo entero. Si la función no devuelve ningún valor entonces
se colocará delante la palabra “VOID”, que significa “función
vacía”.
Carrera de Ingeniería en Sistemas Computacionales Robótica

type nombreFunción(parámetros)
{
instrucción;
}

{} Entre llaves
Las llaves sirven para definir el principio y el final de un bloque
de instrucciones

; punto y coma
El punto y coma “;” se utiliza para separar instrucciones en el
lenguaje de programación de Arduino. También se utiliza para
separar elementos en una instrucción de tipo “bucle for”.
Carrera de Ingeniería en Sistemas Computacionales Robótica

/*… */ bloque de comentarios


Los bloques de comentarios, o comentarios multi-línea son
áreas de texto ignorados por el programa que se utilizan para
las descripciones del código o comentarios que ayudan a
comprender el programa.

// línea de comentarios
Una línea de comentario empieza con // y terminan con la
siguiente línea de código. Al igual que los comentarios de
bloque, los de línea son ignoradas por el programa y no ocupan
espacio en la memoria.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Electrónica Básica

La electrónica es la rama de la física y especialización de la ingeniería,


que estudia y emplea sistemas cuyo funcionamiento se basa en la
conducción y el control del flujo de los electrones u otras partículas
cargadas eléctricamente.

Utiliza una gran variedad de conocimientos, materiales y dispositivos,


desde los semiconductores hasta las válvulas termoiónicas. El diseño y la
gran construcción de circuitos electrónicos para resolver problemas
prácticos forman parte de la electrónica y de los campos de la ingeniería
electrónica, electromecánica y la informática en el diseño de software para
su control.
Carrera de Ingeniería en Sistemas Computacionales Robótica
Carrera de Ingeniería en Sistemas Computacionales Robótica

Interruptor.- Permite cerrar o abrir el


circuito para el paso de voltaje.

Transformador.- Es un bobinado de
cobre, que nos permite disminuir la
tensión, en nuestro caso de 110 Volt a 5V,
12V, 24V, etc.

LED (Diodo Emisor de Luz), los hay rojos,


verdes, azules, amarillos, también
infrarrojos, láser y otros. Sus terminales
son ánodo (terminal largo) y cátodo
(terminal corto).
Carrera de Ingeniería en Sistemas Computacionales Robótica

Diodo Al igual que los LED's sus


terminales son ánodo y cátodo (este
último, identificado con una banda en uno
de sus lados), a diferencia de los LED's
éstos no emiten luz.

Resistencias o Resistores Presentan una


cierta resistencia al paso de la corriente,
sus valores están dados en Ohmios.

Potenciómetros Son resistencias


variables, en su interior tienen una pista de
carbón y un cursor que la recorre. Según
la posición del cursor el valor de la
resistencia de este componente cambiará.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Fotocelda.- También llamada LDR. Una


fotocelda es un resistor sensible a la luz
que incide en ella. A mayor luz menor
resistencia, a menor luz mayor resistencia.

Capacitor de cerámica.- Estos son


componentes que pueden almacenar
pequeñas cargas eléctricas, su valor se
expresa en picofaradios o nanofaradios, no
distingue sus terminales por lo que no
interesa de que lado se conectan.

Condensador ó Capacitor electrolítico.-


Estos almacenan más energía que los
anteriores, se debe respetar la polaridad
de sus terminales. El más corto es el
negativo. o bien, podrás identificarlo por el
signo en el cuerpo de componente.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Transistores.- Un transistor puede


controlar una corriente muy grande a partir
de una muy pequeña, muy común en los
amplificadores de audio. Son del tipo NPN
y PNP. Sus terminales son; Colector, Base
y Emisor.

SCR o TIC 106.- Son llaves electrónicas, y


se activan mediante un pulso positivo en el
terminal G. muy común en sistemas de
alarma. Sus terminales son Ánodo, Cátodo
y Gatillo.

Circuitos Integrados (IC).- Un Circuito


Integrado (IC) contiene en su interior una
gran variedad de componentes en
miniatura. Según el IC. de que se trate
tendrá distintas funciones o aplicaciones,
pueden ser amplificadores, contadores,
multiplexores, codificadores, flip-flop, etc..
Carrera de Ingeniería en Sistemas Computacionales Robótica

Ejercicio.- Prender un Diodo Led mediante un interruptor. Con respecto al


LED recuerda sus terminales, el mas largo (ánodo) apunta al polo (+), el
corto (cátodo) al negativo (-)
Carrera de Ingeniería en Sistemas Computacionales Robótica

Ejercicio.- Potenciómetro se los encuentra en casi todo aparato electrónico,


un ejemplo es el control de volumen de los equipos de audio. En este
circuito lo usaremos para controlar el brillo del LED.

Ahora bien, los extremos A y B del potenciómetro son indistintos ya que la


resistencia entre ambos es constante y en nuestro circuito es de 100 k,
mientras que la resistencia entre cualquier extremo y el cursor C depende
de la posición de este último, pero su máxima resistencia será 100 k.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Ejercicio.- Fotocelda o LDR. Muy común en cámaras fotográficas, lo que


hacen es mediante el circuito adecuado desactivar el flash cuando hay
suficiente luz.

En este ejemplo, si cubres parcial o totalmente la superficie de la fotocelda


verás los cambios en el brillo del LED. A más luz incidente, menor será su
resistencia, habrá mayor flujo de corriente y mayor será el brillo del LED..
Carrera de Ingeniería en Sistemas Computacionales Robótica

Ejercicio.- Condensadores o Capacitores Electrolíticos. Condensadores o


Capacitores Electrolíticos

La corriente que parte de la batería fluye por R1 hacia el nodo, donde se


encuentra R2 y el capacitor C1. Aquí comienza a cargarse el Capacitor, una
vez cargado, se encenderá el LED. Desconecta la fuente y el LED
permanecerá encendido por un cierto tiempo gracias a la energía
almacenada en el capacitor, a medida que ésta se agote el brillo del LED
disminuirá.
Carrera de Ingeniería en Sistemas Computacionales Robótica

El valor de los resistores se puede identificar por los colores de las 4


bandas que rodean al componente, una de ellas es llamada tolerancia, esta
banda puede ser dorada o plateada

La primer banda es el primer dígito y es café=1,


la segunda es el segundo dígito negra=0
y la tercera es la cantidad de ceros roja=dos ceros.
Entonces su valor será: 1000 ohm o sea 1 kilo o 1k,
Carrera de Ingeniería en Sistemas Computacionales Robótica

Resistencias en Serie.

En un circuito en serie las resistencias se colocan una seguida de la otra


de tal modo que la corriente deberá fluir primero por una de ellas para
llegar a la siguiente, esto implica que el valor de la resistencia total del
circuito sea la suma de todas ellas.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Resistencias en Paralelo.

En un circuito en paralelo las resistencias se colocan según se indica en


el siguiente grafico, de esta manera la corriente eléctrica llega a todas las
resistencias a la vez, aunque la intensidad de la corriente es mayor por el
resistor de menor valor. En este caso la resistencia total del circuito la
puedes obtener utilizando la ecuación que se muestra en el grafico.
Carrera de Ingeniería en Sistemas Computacionales Robótica

Trabajando con Arduino

• Hacer parpadear un LED (Hola Mundo de Arduino)


• Ley de Ohm y analogía del agua
• Botones
• Voltajes analógicos y PWM
• Temperatura
• Display 7 segmentos
• Servomotores
Comunicaciones
con Arduino
• Los puertos de comunicación serial nos
proporcionan la forma más efectiva de comunicar
nuestra paca de Arduino con nuestro ordenador.

• Podremos mandar diferentes órdenes a nuestro


Arduino para automatizar procesos o incluso recibir
informaciones importantes para mostrarlas en la
pantalla de nuestro computador.

• La comunicación serial entre dos dispositivos se


realiza a través del intercambio de una secuencia de
bits. Aunque es lenta la comunicación, tiene la
ventaja de poder ser transmitida a mayores
distancias y utilizar menos líneas de comunicación.
• La comunicación serial entre
dos dispositivos únicamente
utiliza 3 líneas las cuales son:
• Línea de recepción de
datos (RX)
• Línea de transmisión de
datos (TX)
• Línea común (GND)
Puerto Serie del
Arduino

• Las placas de Arduino poseen unidades


UART que operan a nivel TTL 0 / 5v, lo que
las vuelve compatibles con la conexión USB.

• Podemos notar también que la mayoría de


Arduinos disponen de un conector USB que
nos permite una conexión serie instantánea
con nuestro ordenador.
• Conectamos nuestro Arduino a
nuestro computador a través del
cable USB, y dentro del IDE de
arduinos debemos abrir
el Monitor Serial.

• El monitor serial de Arduino es


una interfaz grafica integrada al
IDE Standard que nos permite
recibir o transmitir datos.
Definir dentro del void setup del Arduino la
comunicación serial mediante la siguiente
instrucción

Pasos para
trabajar con la Serial.begin(velocidad)
comunicación
serial con Donde velocidad puede tomar los siguientes
Arduino valores: 300, 600, 1200, 2400, 4800, 9600,
14400, 19200, 28800, 38400, 57600 o 115200.

La unidad de medida de las velocidades son


el Baudio correspondiente al número de
cambios en una señal por segundo
• Dentro del void loop, se pueden
imprimir o mostrar los datos en el
Monitor Serial mediante la instrucción:
• Serial.print(dato);

• También puede mostrar el dato con un


Consideraciones enter al final
• Serial.println(dato)

• Para leer datos desde el puerto serial


se usa
• dato = Serial.read()
• Para escribir en el puerto serie datos en forma de bytes se usa
• Serial.write(dato);

• Para conocer si existen datos pendientes en el bus de comunicación


serial usamos
• Serial.available();
• Esta instrucción retorna un TRUE si es verdad o un FALSE si es falso
• Para deshabilitar el puerto serial y de esa
forma poder usar los pines TX y RX como
pines digitales, usamos:
• Serial.end()

• Si deseamos preguntar si el puerto serial


está listo para efectuar la comunicación
• if (Serial)
• Devuelve true si el puerto serial el cual se ha
especificado está disponible.
• Para leer los datos del buffer y buscar
un string especifico usamos el comando:
• Serial.find(string);

• Si se desea configurar el máximo de


milisegundos que desea esperarse mientras
llega un dato por el puerto serial (por
defecto es 1000ms), se usa:
• Serial.setTimeout(time)
• Para esperar a que se complete la transmisión de los datos seriales
salientes:
• Serial.flush()

• Para leer caracteres del buffer serie y guardarlos en un string hasta que
se produzca un timeout usamos:
• Serial.readString()
Actuadores
y sensores
digitales
básicos
ACTUADORES Y SENSORES DIGITALES BÁSICOS

Sensores

Los sensores son dispositivos que recogen información del mundo ‘real’ y la
entregan al sistema de control de forma que el sistema de control ‘entienda’ y
pueda procesar y tomar decisiones.

Por ejemplo, un sensor de temperatura, de estado de puerta (abierta /


cerrada), de humedad, de velocidad del aire, de nivel de CO2, etc.
Actuadores

Los actuadores son dispositivos que siguiendo las órdenes del sistema de
control, realizan acciones que repercuten en el mundo ‘real’, por ejemplo:
motores, relés, pistones, válvulas, indicadores luminosos, etc. Es conveniente
aclarar que en muchos casos el actuador es un dispositivo que pone en
marcha alguno de estos equipos.
Actuadores Digitales

Solo dos valores.

Ejemplos:

• [0-1]

• Verdadero o Falso

• 0V o 5V
La salida será de 0 o 5 volts.

Los configuramos dentro del setup(){}

Ejemplo:

setup()
{
pinMode([PIN], OUTPUT);
}

Para definir una salida o escribir usamos la función digitalWrite:

digitalWrite([PIN], [HIGH/LOW]);

Donde HIGH será 5V y LOW serán 0V


Ejemplo

“Un sensor de luz le indica al sistema de control que hay poca luz en los
aparcamientos que queremos controlar y el sistema determina que hay que
activar una serie de farolas, para conseguirlo activa un contactor (actuador)
que provoca que las farolas se iluminen”
A la hora de elegir un sensor para Arduino debemos tener en cuenta los
valores que puede leer las entradas analógicas o digitales de la placa para
poder conectarlo o sino adaptar la señal del sensor a los valores que acepta
Arduino.

Una vez comprobado que el sensor es compatible con las entradas de


Arduino, hay que verificar cómo leer el sensor mediante la programación,
comprobar si existe una librería o es posible leerlo con los métodos
disponibles de lectura de entrada analógica o digital.
Características de los sensores

Rango de medida: dominio en la magnitud medida en el que puede aplicarse


el sensor.
Precisión: es el error de medida máximo esperado.
Resolución: mínima variación de la magnitud de entrada que puede
detectarse a la salida.
Rapidez de respuesta: puede ser un tiempo fijo o depender de cuánto varíe
la magnitud a medir. Depende de la capacidad del sistema para seguir las
variaciones de la magnitud de entrada.
Repetitividad: error esperado al repetir varias veces la misma medida.
Sensor HC-SR04 para crear una alarma con Arduino

El Sensor ultrasónico HC-SR04 es un circuito que detecta o mide la distancia


y es compatible con Arduino. Básicamente, el sensor puede detectar objetos,
distancia o nivel en un rango mínimo de 2 cm a un máximo de 400 cm.

Se puede utilizar, por ejemplo, para diferente tipos de proyectos como lo son
alarmas de proximidad, medir niveles de agua de un tinaco o cualquier otro
objeto que almacene algún tipo de líquidos. Ten en cuenta que para que este
sensor funcione de manera correcta, se requiere de una superficie lisa y
perpendicular a la dirección de propagación del sensor.
El sensor se basa simplemente en medir el tiempo entre el envío y la
recepción de un pulso sonoro. Sabemos que la velocidad del sonido es
343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión
atmosférica a nivel del mar. Transformando unidades resulta.

Es decir, el sonido tarda 29,2 microsegundos en recorrer un centímetro.


Por tanto, podemos obtener la distancia a partir del tiempo entre la
emisión y recepción del pulso mediante la siguiente ecuación.
int sensor = 6; else if(distancia >=100 and distancia <150)
int zumbador = 13; {
int distancia; int duracion; delay(800); tone(zumbador,1000);
delay(100; noTone(zumbador);
void setup() }
{ else if (distancia >= 150)
pinMode(zumbador, OUTPUT); {
} delay(1500); tone(zumbador,1000);
delay(100); noTone(zumbador);
void loop() }
{ }
getDistancia();
noTone(zumbador); void getDistancia()
{
if (distancia < 100) pinMode(sensor, OUTPUT);
{ digitalWrite(sensor, LOW);
delay(200); delay(4); digitalWrite(sensor, HIGH);
tone(zumbador,1000); delay(10); digitalWrite(sensor, LOW);
delay(100);
noTone(zumbador); pinMode(sensor, INPUT);
} duracion = pulseIn(sensor, HIGH);
distancia = duracion/29/2; delay(10);
}
Display LCD
Los LCD alfanuméricos más utilizados en el mercado son el LCD1602 y el
LCD204 con tamaños de 16x2 y 20x4 caracteres respectivamente. Entre
estos tamaños también hay diferentes modelos los cuales varían en color y
sobretodo en la presencia o no de un Backlight (retro iluminador incorporado)

Para controlar el contrastes usa una entrada analógica VEE el cual por lo
general se usa un potenciómetro para poder variar el contraste. Los LCD que
traen Backlight tiene dos pines al final Led+ y Led- los cuáles se pueden
alimentar directamente a 5V o a través de una resistencia si se tratase de un
LED, variando su resistencia se pude variar la intensidad de luz.
COMANDOS IMPORTANTES
#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Inicializar el LCD con el número de columnas y filas del LCD


lcd.begin(16, 2);

// Imprime una cadena de caracteres


lcd.print(“Mensaje");

// Ubica el mensaje en el LCD en una posición (Columna, Fila)


lcd.setCursor(0, 1);

// Escribir un carácter en la pantalla LCD, en la ubicación actual del cursor.


lcd.write()

//Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la izquierda.


lcd. scrollDisplayLeft()
Conexiones del LCD al arduino:

LCD RS pin to digital pin 12


LCD RW to GND
LCD E Enable pin to digital pin 11
LCD D4 pin to digital pin 5
LCD D5 pin to digital pin 4
LCD D6 pin to digital pin 3
LCD D7 pin to digital pin 2
V0 → Adicional, un potenciómetro de 10k a +5v y GND. Resistencia de 220
ohm es usada para alimentar al blacklight del display
Sensor PIR con Arduino

Sensor PIR de movimiento, también conocido como sensor infrarrojo


pasivo o piro eléctrico. Este, de hecho es un sensor electrónico que
utiliza la luz infrarroja irradiada por los objetos que se encuentran en su
campo de visión. En este caso su distancia máxima es de 6 metros.

Cuando los sensores piroeléctricos detectan un cambio de señal, el


sensor cambia rápidamente y el amplificador activa la salida para indicar
que hay movimiento. En este caso, esta salida permanece activa
durante unos segundos para que el microcontrolador ó Arduino pueda
tomar una decisión si hubo movimiento o no.
int pir=7;
int zumbador=6;

void setup()
{
pinMode(pir, INPUT);
pinMode(zumbador, OUTPUT);
}

void loop()
{
if (digitalRead(pir) == HIGH)
{
tone(zumbador,1000);
}
else
{
noTone(zumbador);
}
}
Sensores
analógicos
básicos
Entradas
analógicas
• Las entradas analógicas del
modelo Uno son las
correspondientes a los pines de
A0 a A5. Se caracterizan por
leer valores de tensión de 0 a 5
Voltios con una resolución de
1024 (10 bits).

• Si dividimos 5 entre 1024


tenemos que ser capaz de
detectar variaciones en el nivel
de la señal de entrada de casi 5
mV.
Entradas analógicas

Para hacer la lectura de uno de estos


lectura = analogRead(pinentrada);
pines escribiremos en nuestro código

Esta función nos devolverá un valor que va de 0 a 1023 en proporción al nivel


de la señal de entrada. Para una entrada nula obtendremos el valor 0, para
una entrada de 2.5 Voltios 511 (la mitad de 1023) y para 5 Voltios 1023.
Entradas y Salidas Analógicas

En Arduino para tratar las entradas y salidas analógicas usamos las


siguientes funciones:

• analogReference() – configura la referencia de voltaje usada para la


entrada analógica.
• analogRead() – lee el valor del pin analógico especificado.
• analogWrite() – escribe un valor analógico (onda PWM) al pin
especificado. No en todos los pines digitales se puede aplicar PWM.
Otras funciones interesantes con entradas/salidas analóicas:
• map(value, fromLow, fromHigh, toLow, toHigh)
• constrain(x, a, b):

La mayoría de Arduino no tienen salidas analógicas puras sino PWM.


Algunos pines digitales pueden usarse como salidas analógicas PWM
• Todas las señales físicas que
captamos con nuestros
sentidos, al igual que toda
variable que existe en el
entorno (temperatura,
velocidad, peso, caudal, etc)
son señales analógicas, es
decir señales que varían con el
tiempo, y que pueden tomar
diferentes valores.
• El Arduino tiene la capacidad de leer señales analógicas realizando
aproximaciones discretas a través de pequeños rectángulos digitales.

• Entre más pequeños sean los rectángulos, más parecido será la


aproximación digital con relación a la señal analógica.

Que significa adc en arduino?


• Es la abreviación del Conversor Analógico Digital. Es el encargado de
la conversión analógica digital empleada en la placa para poder leer
todos los sensores disponibles en el mercado
ADC Arduino

Se debe tener en consideración


que solo podemos colocar
voltajes de máximo 5v o de 3.3v.

Ejemplo
Si estamos leyendo voltajes en
un Arduino UNO, como es de 10
bits en realidad el Arduino va a
ver una variación de
un entero entre 0 a 1023
• Esto quiere decir que si Arduino mide:

• El máximo voltaje (5v) va a almacenar un valor entero de 1023.


• Voltaje intermedio (2.5v) va a almacenar un valor entero de 512.
• Voltaje mínimo (0v) va a almacenar un entero de 0.
LM35 Arduino LCD
• El LM35 es un sensor de temperatura del tipo
semiconductor el cual proporciona una salida de voltaje que
es proporcional a la temperatura.

• El sensor entrega una relación lineal en su salida la cual va


incrementando a una razón de 10mV por 1 grado centígrado
• El integrado LM35 tiene 3
Pines, donde los extremos son
la alimentación y el pin del
medio entrega el valor de
voltaje a una razón
de 10mV/ºC
• El programa tendrá que leer el valor de
la señal del pin analógico de arduino
denominado PIN A0, que varía de 0 a
1023, donde 0 corresponde a 0Volts y
1023 corresponde a 5Volts. Como
sabemos, 1ºC es igual a 10mV. Siendo
así, tenemos:
Actuadores analógicos básicos
• Los actuadores son los dispositivos que permiten al sistema de
control ‘actuar’ sobre el ‘mundo real’ para realizar las acciones
deseadas, existen multitud de sistemas actuadores aunque el mando
y control de los mismos es más fácil, en general, que el manejo de
sensores.
• Requieren valores analógicos (grado de apertura de una trampilla, velocidad de
rotación de un motor, etc.), en este caso se suelen usar señales de mando del tipo
que hemos visto tales como 0-5V, 0-10V, 0-20 mA y 4-20 mA.

• Otra forma de controlar actuadores es mediante P.W.M. (modulación de anchura


de impulsos), que está tomando auge con la iluminación LED, para controlar
niveles de luz o mezcla de colores.
• A veces es necesario que se activen sistemas con valores diferentes a
todo/nada, por ejemplo, un motor con diferentes velocidades, iluminación
ajustable en intensidad, etc. Para ello, precisamos actuadores que
respondan a salidas típicas de control con valores variables.

• Las salidas con valores ajustables más usadas son 0-10V, 0-5V, 0-20mA y 4-
20mA. Por ejemplo, un actuador para controlar el nivel de iluminación
(dimmer) de unas lámparas fluorescente se puede controlar con tensión 0-
10V, correspondiendo 0V a apagado, 10V para que estén totalmente
encendidos y los valores intermedios para niveles de luz intermedios.

También podría gustarte