Sie sind auf Seite 1von 31

U.F.I.De.T.

SALTA

ARDUINO

“CURSO BASICO DE ARDUINO UNO,


Y USO DE SENSORES”

DIRIGIDO A ALUMNOS DE 1ER. AÑO DE


U.F.I.De.T.

AÑO 2017

Expositor:
Bioing. Hugo Aguila.

Bioing. Hugo Aguila 1 / 31


GUIA DEL CURSO

1 ¿Qué es Arduino? ................................................................................................................................. 3


2 ¿Cómo funciona Arduino? .................................................................................................................... 3
3 Hardware de Arduino ........................................................................................................................... 4
4 Software de Arduino: ........................................................................................................................... 5
4.1 Descarga e instalación del Entorno de Trabajo IDE de Arduino (Windows y Linux). .................. 5
4.2 Ejecución del IDE de ARDUINO ................................................................................................... 7
5 Primer programa: ................................................................................................................................. 8
5.1 Blink: Prueba de destello del LED que viene incluido en la placa. .............................................. 8
5.2 Ejercicio modificando el ejemplo anterior. ................................................................................. 9
5.3 Ley de ohm, cálculo de una resistencia para colocar un led en la placa..................................... 9
5.4 Descripción y utilización de un Sketch (Programa en Arduino). ............................................... 10
5.4.1 Cuerpo de un programa en Arduino ..................................................................................... 10
6 Señales Analógicas y Digitales. ........................................................................................................... 14
6.1 Señal Analógica. ........................................................................................................................ 14
6.2 Conversor Analógico Digital (CAD). ........................................................................................... 14
6.3 Señal Digital. ............................................................................................................................. 15
7 ARDUINO (IN/OUT) Entradas y Salidas, cuidando Arduino. ............................................................... 15
7.1 Entradas y salidas eléctricas en ARDUINO y cargas que soportan. ........................................... 15
7.2 Comunicaciones ........................................................................................................................ 16
8 Segundo programa: ............................................................................................................................ 17
8.1 Conexión de un Display: “HOLA MUNDO”. ............................................................................... 17
9 Tercer programa: conexión de un sensor analógico y uno digital. ..................................................... 21
9.1 Descripción de sensores, lumínico, temperatura, etc. ............................................................. 21
9.1.1 Ejemplo de rango de valores entregados por un sensor resistivo tipo LDR. ........................ 22
9.2 Utilización de una resistencia variable para toma de muestras Analógicas. ............................ 22
9.3 Conexión de un sensor LM35(temperatura). ............................................................................ 25
9.4 Conexión de un sensor DHT22(temperatura y humedad) ........................................................ 27

Carga horaria: 6 hs. Reloj.

Herramientas: Se formarán 4 a 6 grupos de alumnos (según disponibilidad), cada uno contará con un kit de
aprendizaje, una guía resumida de Arduino, y una PC.

Bibliografía
1. https://www.arduino.cc/
2. Libro básico de ARDUINO. (digital)
3. Guía resumida de Arduino: Teoría y programas. (en papel y digital)

Bioing. Hugo Aguila 2 / 31


1 ¿Qué es Arduino?

Muchas veces pensamos que los temas tecnológicos requieren de gran habilidad técnica y de un
gran conocimiento, pero esto no es cierto. Queremos que, con el desarrollo de esta guía, entiendas que
muchos de esos procesos tecnológicos son simples de entender y aquellos que son complejos son la unión
de muchos procesos simples. Esta guía, te va a ayudar a aprender, imaginar y materializar todas tus ideas
de las cuales te puedas sentir orgulloso, ya que fue tu idea y tú la desarrollaste.

Con las capacidades de Arduino solo debemos tener nociones básicas de electrónica y
programación, eso es suficiente para comenzar a desarrollar nuestros proyectos. Arduino cuenta con una
gran comunidad donde se comparte todo lo desarrollado, con un sin fin de SHIELDS diseñados para
aumentar sus capacidades y/o brindarle nuevas funcionalidades.

El proyecto comenzó (2005) en Ivrea, Italia (computadoras Olivetti), donde Massimo Banzi (uno
de los creadores) daba clases, y diseñó una placa controlada por un microprocesador y capaz de recibir y
emitir información a través de conexiones a otros aparatos. Una de las claves del proyecto era su precio,
que desde un principio se estableció en no más de 30 euros. El nombre de ARDUINO, viene del nombre
del Bar di Re Arduino (Bar del Rey Arduino). El rey Arduino fue rey de Italia entre los años 1002 y 1014.

2 ¿Cómo funciona Arduino?

El Arduino es una placa basada en un microcontrolador,


específicamente un ATMEL. Un microcontrolador es un circuito
integrado (podríamos hablar de un microchip) en el cual se
pueden grabar instrucciones. Estas instrucciones se escriben
utilizando un lenguaje de programación que permite al usuario
crear programas que interactúan con circuitos electrónicos.

Normalmente un microcontrolador posee entradas y


salidas digitales, entradas y salidas analógicas y entradas y salidas
para protocolos de comunicación. Un Arduino es una placa que
cuenta con todos los elementos necesarios para conectar
periféricos a las entradas y salidas del microcontrolador. Se trata
de una placa impresa con todos los componentes necesarios para
el funcionamiento del micro y su comunicación con una
computadora a través de comunicación serial. La comunicación
serial es un protocolo de comunicación que alguna vez fue muy
utilizado a través de los puertos serie que traían las computadoras
de antaño.
Formas de interacción con Arduino

Bioing. Hugo Aguila 3 / 31


3 Hardware de Arduino

El hardware consiste en una placa de circuito impreso con un microcontrolador,


usualmente Atmel, puertos digitales y analógicos de entrada/salida, los cuales pueden conectarse a placas
de expansión (SHIELDS), que amplían las características de funcionamiento 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.

Bioing. Hugo Aguila 4 / 31


4 Software de Arduino:
Por otro lado, el software consiste en un entorno de desarrollo (IDE) basado en el entorno
de Processing y lenguaje de programación basado en Wiring, así como en el cargador de
arranque (BOOTLOADER) que es ejecutado en la placa. El microcontrolador de la placa se programa
mediante una computadora, usando una comunicación serial mediante un convertidor de niveles RS-232 a
TTL serial.

4.1 Descarga e instalación del Entorno de Trabajo IDE de Arduino (Windows y Linux).
Si tu computadora tiene LINUX: Ubuntu y derivados.

1. Descargar la versión más reciente desde el sitio de Arduino.


2. Descomprimir
3. Mover la carpeta de Arduino dentro de la carpeta /opt: "sudo mv arduino-1.6.8 /opt"
4. Instalar Arduino: "/opt/arduino-1.6.8/install.sh", o bien : sudo ./install.sh
5. Luego moverse a la carpeta donde esta Arduino.
6. Dar permisos de ejecución al usuario para ejecutar el soft: "sudo usermod -a -G dialout
usuario".
7. Dar permisos de salida y comunicación al puerto serial tty: "sudo chmod a+rw
/dev/ttyACM0"
8. Si queremos Desinstalar: sudo ./uninstall.sh, desde la carpeta opt

Si tu computadora tiene de sistema operativo Windows en versión 7, Vista o XP, debes realizar la
siguiente sucesión de sencillos pasos:

9. Descargar el software del sitio: “https://www.arduino.cc/en/Main/Donate” allí pueden


elegir descargar el software o hacer una donación y descargar. Todavía no debemos
conectar la placa Arduino.

10. Descomprimir la carpeta de Arduino en una ubicación de fácil acceso, dar doble click y
aceptar todas las opciones de instalación, “ahora SI conectar la Placa”, posteriormente
debemos verificar que efectivamente la Placa de Arduino, fue detectada por nuestra PC,
esto se hace ingresando a en Panel de control y luego Administrador de dispositivos,
“Puertos (COM)”. Si no es detectada, seguir con el siguiente paso.

11. Si luego de Conectada la placa Arduino Uno al PC y ven este aviso. No nos debemos
preocupar.

12. Ir a Panel de control y luego Administrador de dispositivos, allí buscar la siguiente opción
y den Click derecho sobre Dispositivo desconocido y luego sobre la opción Actualizar
software del controlador.

Bioing. Hugo Aguila 5 / 31


13. Y allí ingresar a la opción Buscar software de controlador en el equipo

14. Examinar y buscar la carpeta de Arduino previamente descomprimida en el paso 2.


Dentro de esa carpeta acceder a la carpeta Drivers y dar Aceptar

15. Una vez que buscamos la carpeta de Drivers le damos Siguiente

Bioing. Hugo Aguila 6 / 31


16. Recibimos la confirmación del Puerto COM asignado, este número de Puerto COM es
muy importante tenerlo en cuenta a la hora de programar.

4.2 Ejecución del IDE de ARDUINO

Para ejecutar el programa Arduino, ingre-


samos a la carpeta de Arduino, o en el
Escritorio de Windows y allí buscamos el
icono de Arduino y le damos doble Click.

Allí elegimos el PUERTO COM

Allí elegimos la placa a trabajar

Bioing. Hugo Aguila 7 / 31


Monitor serial

Para comprobar el correcto funcionamiento, deberemos realizar el siguiente Sketch.

5 Primer programa:
5.1 Blink: Prueba de destello del LED que viene incluido en la placa.
Al final de este ejercicio ya vas a tener la capacidad de cargar programas a tu placa Arduino. Para
ello abre el software de Arduino y realiza lo que se indica en la siguiente imagen.

El programa de intermitencia (Blink) que acabas de cargar en electrónica se llama “Hola mundo”,
consiste en prender y apagar un LED en intervalos de un segundo. El LED que prende y apaga es el marcado
con la letra L según la imagen de abajo. Ahora te podemos dar la ¡Bienvenida! al mundo de Arduino.

Bioing. Hugo Aguila 8 / 31


5.2 Ejercicio modificando el ejemplo anterior.
A partir del ejemplo cargado en la sección anterior, ahora te propongo que modifiques un poco el
programa, para ello en las dos líneas de código donde dice:

delay(1000);

Cambia el valor de 1000 por 2000 y vuelve a cargar el programa a tu placa Arduino Uno, ¿qué observas?

5.3 Ley de ohm, cálculo de una resistencia para colocar un led en la placa.

La empresa de automatización NRJ Inc. te contrata para hacer un montaje de un LED Intermitente
en una placa Arduino UNO, con el único requisito de que el LED debe estar ubicado en el Pin 13, ellos
muy amablemente te han facilitado el esquema, tu tarea es:

Antes de conectar el circuito de la figura, primero debemos calcular cual será la corriente
MAXIMA que circulará por el circuito, para ello debemos considerar que la TENSIÓN máxima que entrega
el ARDUINO es de 5 [v], pero la caída de tensión en el DIODO LED es de aproximadamente 2[v], sabiendo
que una corriente tolerable por el diodo LED es de 15 [mA], entonces:

Reemplazando: R = V/I = (5[v]-2[v] ) / 15 [mA] = 200 [Ω]

Bioing. Hugo Aguila 9 / 31


Siendo que el valor comercial más cercano es de 220 [Ω]
Finalmente circularía una corriente de: 13,6 [mA]
5.4 Descripción y utilización de un Sketch (Programa en Arduino).
La programación es un gran recurso que nos permite crear diversas secuencias de pasos lógicos que
van a satisfacer nuestras necesidades y las de nuestros sistemas. Programar es todo un arte que requiere de
una gran habilidad lógica y concentración por parte del programador.

Para crear un programa (SKETCH en ARDUINO), que la computadora interprete y luego ejecute
las instrucciones escritas en él, debe usarse un “LENGUAJE DE PROGRAMACIÓN”. En sus inicios las
computadoras interpretaban sólo instrucciones en un lenguaje específico, llamados de “bajo nivel”
(ensamblador), conocido como código máquina, siendo éste un poco complicado para los programadores
novatos. De hecho, sólo consiste en cadenas de números 1 y 0 (Sistema binario).

A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un método más sencillo para programar. Entonces, se crearon los lenguajes de “alto
nivel”. Mientras que una tarea tan trivial como sumar o multiplicar dos números puede necesitar un conjunto
de instrucciones en lenguaje “ensamblador”, en un lenguaje de “alto nivel”, bastará con el uso de una sola
instrucción: “+” o “*” (el asterisco se usa regularmente como símbolo de multiplicación).

Un lenguaje de programación es un idioma artificial diseñado para expresar operaciones que pueden
ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que
controlen el comportamiento físico y lógico de una máquina, para expresar “algoritmos” con precisión, o
como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y
semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual
se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático, a
eso se le llama programación.

5.4.1 Cuerpo de un programa en Arduino

5.4.1.1 Modalidad de trabajo con Arduino

Arduino se programa en el lenguaje de alto nivel C/C++ y generalmente tiene los siguientes
componentes para elaborar el algoritmo:

➢ Estructuras.
➢ Tipos de variables, ejemplos.
➢ Operadores matemáticos, lógicos y booleanos.

Bioing. Hugo Aguila 10 / 31


5.4.1.2 Estructuras:

Los programas en Arduino, tienen siempre dos funciones principales. La palabra “void”, indica
que se trata de funciones, y los paréntesis están vacíos porque no envían ni reciben ningún parámetro en
especial. Todo lo encerrado entre corchetes se realizará en la función.

5.4.1.3 Tipos de Variables, ejemplos:

Bioing. Hugo Aguila 11 / 31


En el lenguaje de Arduino cuando queremos utilizar una variable primero hay que declarar el tipo
de variable de la que se trata (por ejemplo ‘int’ y luego el nombre que le queremos dar a esa variable
(‘testVariable’ en los ejemplos de la tabla anterior).

También podemos dejar la variable sin inicializar (es decir, sin asignarle un valor de partida):

int comienzo;

o, si nos interesa asignarle un valor inicial:

int comienzo = 0;

Les aconsejo, inicializar siempre vuestras variables en el momento de declararlas. Esto les puede
ayudar a depurar vuestros sketches y al mismo tiempo ahorrar código. Asimismo, al declarar una nueva
variable tratar siempre de anticipar el uso que el sketch va a darle a esa variable y el rango de valores que
va a tomar durante la ejecución (por ejemplo si va a sobrepasar el valor 32.000 interesa hacerla long en vez
de int, o si va a tomar valores decimales entonces necesitaremos una float). De no hacerlo así podríamos
encontrarnos con situaciones inesperadas durante la ejecución del sketch.

Ejemplo de uso de variables en un sketch:

Veamos el típico sketch que hace parpadear un LED activado a través de un pin:
int LEDpin = 6; //la variable LEDpin se inicializa a 6,es decir vamos a activar
// el pin 6

void setup(){
pinMode(LEDpin,OUTPUT);
}
void loop(){
digitalWrite(LEDpin,HIGH);
delay (1000);
digitalWrite(pinLED,LOW);
delay (1000);
}

Bioing. Hugo Aguila 12 / 31


El uso de variables nos permite reutilizar este código para otro pin con tan sólo cambiar la
asignación inicial de la variable LEDpin.

No te asustes si no entiendes todo en este código. De momento basta con que comprendas el uso
de las variables. Todo lo demás lo iremos viendo en detalle más adelante. Notá que cada instrucción debe
de terminarse con un punto y coma (;) de lo contrario el compilador no entendería que la instrucción ha
acabado y nos daría un error.

5.4.1.4 Operadores matemáticos, lógicos, booleanos y condicionales.

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.

y = y + 3;
x = x - 7;
i = j * 6;
r = r / 5;

Las asignaciones compuestas combinan una operación aritmética con una variable asignada. Estas
son comúnmente utilizadas en los bucles tal como se describe más adelante. Estas asignaciones compuestas
pueden ser:
x++ // igual que x = x +1, o incremento de x en +1

x-- // igual que x = x - 1, o decremento de x en -1

Las comparaciones de una variable o constante con otra se utilizan con frecuencia en las estructuras
condicionales o de control (del tipo if.. for, etc) para testear si una condición es verdadera. En los ejemplos
que siguen en las próximas páginas se verá su utilización práctica usando los siguientes tipos de
condicionales:

x == y // x es igual a y
x != y // x no es igual a y

Las estructuras de control en Arduino según el reference (ayuda online de ARDUINO) son:

Estructuras de decisión

if: http://arduino.cc/en/Reference/If
else: http://arduino.cc/en/Reference/Else
switch case: http://arduino.cc/en/Reference/SwitchCase

Estructuras de repetición
for: http://arduino.cc/en/Reference/For
while: http://arduino.cc/en/Reference/While
do .. while: http://arduino.cc/en/Reference/DoWhile

Ejemplo de uso de “if”:

“if” (SI en español) es un estamento (declaraciones o instrucciones) que se utiliza para probar si una
determinada condición se ha alcanzado, como por ejemplo averiguar si un valor analógico está por encima
de un cierto número y ejecutar una serie de declaraciones (operaciones) que se escriben dentro de llaves, si
es verdad. Si es falso (la condición no se cumple) el programa salta y no ejecuta las operaciones que están
dentro de las llaves. El formato para if es el siguiente:

if (unaVariable == valor)
{
Ejecuta esta Instrucciones;
}

Bioing. Hugo Aguila 13 / 31


En el ejemplo anterior se compara una variable con un valor, el cual puede ser una variable o constante.
Si la comparación, o la condición entre paréntesis se cumple (es cierta), las declaraciones dentro de los
corchetes se ejecutan. Si no es así, el programa salta sobre ellas y sigue.

6 Señales Analógicas y Digitales.


6.1 Señal Analógica.

6.2 Conversor Analógico Digital (CAD).

Bioing. Hugo Aguila 14 / 31


6.3 Señal Digital.

7 ARDUINO (IN/OUT) Entradas y Salidas, cuidando Arduino.

7.1 Entradas y salidas eléctricas en ARDUINO y cargas que soportan.

Con respecto a las consideraciones a tener, respecto de las cargas a conectar, esto
significa, los componentes que conectaremos a nuestro Arduino, y que corriente consumen, y
cuanta corriente nuestro Arduino es capaz de suministrarles.
Ya vimos un ejemplo en el inciso 5.3 (Conectar un LED a la placa), siguiendo esa línea
recordemos que una señal eléctrica analógica es aquella en la que los valores de la tensión o
voltaje varían constantemente y pueden tomar cualquier valor.
Un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar
con señales analógicas, de modo que necesita convertir las señales analógicas en señales
digitales para poder trabajar con ellas.
Cada uno de los 14 pines digitales (numerados del 0 al 13) pueden utilizarse como
entradas o como salidas usando las funciones pinMode(), digitalWrite() y digitalRead()(ver
Anexos 4.4 y 4.5, pp. 25). Las E/S operan a 5[V]. Cada pin puede proporcionar o recibir una
corriente máxima de 40[mA].
Los pines 3, 5, 6, 9, 10, y 11 proporcionan una salida PWM (modulación por ancho de
pulsos) de 8 bits de resolución (valores de 0 a 255) mediante la función analogWrite().
El pin digital 13 lleva conectado un LED integrado en la propia placa. Se encenderá cuando
dicho pin se configura como salida y adopte un valor HIGH; con valor LOW se apaga.
La placa tiene 6 entradas analógicas, y cada una de ellas proporciona una resolución de
10 bits (1024 valores enteros sin signo).

Bioing. Hugo Aguila 15 / 31


7.2 Comunicaciones
La placa proporciona comunicación serial a través de los pines digitales 0 y 1, utilizados
para la recepción (RX) y transmisión (TX) de datos. Un chip integrado en la placa canaliza esta
comunicación serie, además, a través del puerto USB. El software de Arduino incluye un monitor
de puerto serie, que permite enviar y recibir información textual hacia y desde la placa Arduino.
Los leds RX y X de la placa parpadearán cuando se detecte comunicación transmitida a través
de la conexión USB.

Bioing. Hugo Aguila 16 / 31


8 Segundo programa:
8.1 Conexión de un Display: “HOLA MUNDO”.

En este segundo programa, se va a mostrar cómo conectar una pantalla LCD 1602A a
una placa Arduino UNO para mostrar texto por pantalla.

Material usado
1xPantalla LCD 1602A
1xPlaca Arduino UNO
1xCable USB
Cables
1xProtoboard = Breadboard
1xpotenciómetro 50k
16x pines macho 2.54 mm
1xbobina de estaño
1x soldador

Antes que nada, observaremos la serigrafía escrita en los pines de nuestra pantalla, siendo la
siguiente:

❖ VSS que es el pin de masa o 0 volts o GND.


❖ VDD es la alimentación principal de la pantalla y el chip, lleva 5 voltios (recomendable
ponerle en serie una resistencia para evitar daños, con una de 220 ohmios es suficiente).
❖ VO es el contraste de la pantalla, debe conectarse con un potenciómetro de unos 10k
ohms o una resistencia fija una vez que encontremos el valor deseado de contraste.
Tengan en cuenta que, si no conectan esto, no verán nada.
❖ RS es el selector de registro (el microcontrolador le comunica al LCD si quiere mostrar
caracteres o si lo que quiere es enviar comandos de control, como cambiar posición del
cursor o borrar la pantalla, por ejemplo).
❖ RW es el pin que comanda la lectura/escritura. En nuestro caso siempre estará en 0
(conectado a GND) para que escriba en todo momento.
❖ E es enable, habilita la pantalla para recibir información.
❖ D0~D3 no los vamos a utilizar. Como pueden ver la pantalla tiene un bus de datos de 8
bits, de D0 a D7. Nosotros solamente utilizaremos 4 bits, de D4 a D7, que nos servirán
para establecer las líneas de comunicación por donde se transfieren los datos.

Bioing. Hugo Aguila 17 / 31


❖ A y K son los pines del led de la luz de fondo de la pantalla, A se conectará a 4 o 5 volts y
K a GND.

Preparación de las conexiones de la pantalla LCD 1602A

La pantalla LCD viene sin conectores por defecto. Hay dos soluciones para este
problema: soldar cables o soldar pines machos de 2,54mm. He optado por la segunda opción
por la comodidad que representa (menos cable y acoplan perfectamente con la breadboard).

Procederemos a la soldadura de los mismos, siendo el resultado el siguiente:

Circuito

Primero que todo, la pantalla necesitará ser alimentada. Conectaremos dos cables, uno al pin de
la placa Arduino UNO +5V y otro al GND para conectarlos a las filas "+" y "-" de la breadboard.
Conexión: Arduino 5V --> fila +
Conexión: Arduino GND --> fila -

Bioing. Hugo Aguila 18 / 31


Ahora procederemos a la preparación del contraste de la pantalla LCD. Para ello
haremos las siguientes conexiones mediante cables:

Conexión: fila GND (fila -) de la breadboard --> pin 1 de la LCD (VSS)


Conexión: fila 5V (fila +) de la breadboard--> pin 2 de la LCD (VDD)
Conexión: fila 5V (fila +) de la breadboard--> pin 15 de la LCD (A)
Conexión: fila GND (fila -) de la breadboard --> pin 16 de la LCD (K)

Para probar la correcta conexión, encenderemos la placa Arduino UNO mediante el cable
USB al ordenador y veremos que la pantalla LCD se ilumina.

El siguiente paso es la introducción del potenciómetro, para ajustar el contraste de la


pantalla. En mi caso he utilizado un potenciómetro de 50K, pero uno de 10k también es válido.
Lo conectaremos a la izquierda de la pantalla LCD sobre la breadboard y procederemos al
cableado para la conexión de sus tres pines.

Conexión: primer pin del potenciómetro---> GND de la breadboard (fila -)


Conexión: pin del medio del potenciómetro --> pin 3 de la pantalla LCD (VO)
Conexión: tercer pin del potenciómetro---> 5V de la breadboard (fila -)

Bioing. Hugo Aguila 19 / 31


Cuando la placa Arduino esté alimentada (conexión USB-PC), se verá por pantalla
caracteres en forma de cuadrado en la fila de arriba. Prueba a ajustar con el potenciómetro y
verificar que todo funciona correctamente.

En el próximo paso, vamos a conectar la pantalla LCD a la placa Arduino UNO para que
se pueda mostrar el mensaje de texto que queramos.

Conexión: pin 4 de la LCD (RS)---> pin 7 del Arduino (salida digital, PWM)
Conexión: pin 5 de la LCD (RW) --> GND de la breadboard (fila -)

Bioing. Hugo Aguila 20 / 31


Conexión: pin 6 de la LCD (E)--> pin 8 de la placa Arduino UNO (PWM)
Conexión: pin 11 de la LCD (D4)--> pin 9 de la placa Arduino UNO (PWM)
Conexión: pin 12 de la LCD (D5)--> pin 10 de la placa Arduino UNO (PWM)
Conexión: pin 13 de la LCD (D6)--> pin 11 de la placa Arduino UNO (PWM)
Conexión: pin 14 de la LCD (D7)--> pin 12 de la placa Arduino UNO (PWM)

El código

Ahora hay que escribir el siguiente programa y transmitirlo a la placa Arduino UNO.

#include <LiquidCrystal.h> // uso la librería correspondiente

LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

void setup() {
lcd.begin(16, 2); // inicializo el LCD
lcd.setCursor(0,1);
lcd.write("Hola mundo!");
}

void loop() { }

Cuando el código esté cargado y ejecutándose, la pantalla LCD mostrará el texto de esta forma.

9 Tercer programa: conexión de un sensor analógico y uno digital.


9.1 Descripción de sensores, lumínico, temperatura, etc.

Los sensores que se utilizan con Arduino, en


general, son resistivos. Esto quiere decir que son
resistencias que varían su valor según alguna
interacción con el medio ambiente. Por ejemplo,
el sensor de luz (fotorresistencia) es una resisten
cia, cuyo valor depende de la luz ambiente. Ahora
bien, la placa Arduino no puede medir resistencia, pero sí puede medir voltajes, a través
de sus entradas análogas. Luego, integrando los
conocimientos acerca del divisor de voltaje, es
posible disponer de un voltaje que dependa del medio ambiente. Para esto, se debe utilizar una
de las configuraciones de la Figura. Para efectos prácticos, R fija =10[KΩ] y Vin=5[V].

Bioing. Hugo Aguila 21 / 31


Ahora, se debe tener claro que, según la configuración utilizada, se obtendrán distintos
valores de entrada para la placa, bajo las mismas condiciones ambientales. Esto se ejemplifica
a continuación.

9.1.1 Ejemplo de rango de valores entregados por un sensor resistivo tipo LDR.

Se desea utilizar una fotorresistencia para medir la luz ambiente. En ausencia de luz,
tiene una resistencia de 1[MΩ] y con luz ambiente (aprox. 10[lux]), 50[KΩ]. Encontrar el rango de
valores que serán leídos por la placa.

Configuración A)

Configuración B)

Para la configuración A, el valor mínimo es 0,05[V], que Arduino lo interpretará como el


número entero 10. El más alto, será 0,9[V], que corresponde a un valor 184 (recordar que si se
lee 5[V], Arduino interpreta dicho voltaje como el número entero 1023). Para la configuración B,
el valor mínimo es 4,2[V], que corresponde al número entero 859. El más alto, es 5[V], que
equivale al número 1023.
Resumiendo, según la configuración utilizada, se tendrán los siguientes rangos de
voltajes y de valores de conversión para Arduino.

En conclusión, dependiendo de la configuración del hardware de conexión del sensor,


los valores interpretados por Arduino cambiarán. Luego, la lógica del software cambia en la toma
de decisiones. Por ejemplo, si se quiere tomar una decisión en torno a si hay luminosidad o no,
el código en ambas configuraciones debería ser:

9.2 Utilización de una resistencia variable para toma de muestras Analógicas.

En este segundo programa, vamos a aprender a leer el valor de posición de un


potenciómetro. Los potenciómetros son dispositivos que usaremos frecuentemente para

Bioing. Hugo Aguila 22 / 31


introducir valores analógicos en nuestro Arduino, por ejemplo, para regular la intensidad de la luz
de un Led, la velocidad de un motor DC, o la posición de un servo.

¿QUÉ ES UN POTENCIÓMETRO?

Un potenciómetro es un dispositivo que permite variar su resistencia de forma manual,


entre un valor mínimo Rmin, (normalmente 0 ohminos) y un valor máximo Rmax. Valores
habituales de Rmax son 5 [kΩ], 10 [kΩ] o 20 [kΩ] ohmios.

Internamente un potenciómetro está constituido por un contacto móvil que se desplaza


a lo largo de una pista resistiva. De esta forma, al mover el potenciómetro movemos el contacto
a lo largo de la pista, y variando la longitud del tramo de pista con el que estamos en contacto, y
por tanto variando su resistencia.

Normalmente un potenciómetro tiene tres terminales. Los dos extremos están unidos a
ambos lados de la pista, por lo que siempre registrarán la resistencia máxima Rmax. El terminal
restante corresponde con el contacto móvil. Este terminal varia su resistencia respecto a los otros
dos terminales a medida que accionamos el potenciómetro, siendo la suma de la resistencia a
los otros terminales igual a Rmax.

Respecto a la geometría, podemos encontrar potenciómetros de tipo lineal o rotativo.

Por último, en cuanto a la relación entre posición y resistencia, encontramos


potenciómetros de tipo lineal, parabólico o exponencial. Los lineales presentan una
proporcionalidad entre resistencia y desplazamiento, lo cual significa un comportamiento más
intuitivo. Mientras, los exponenciales permiten mayor precisión en valores de resistencia bajos,
por lo que resultan adecuados cuando hace falta un ajuste fino en un amplio rango.

Bioing. Hugo Aguila 23 / 31


ESQUEMA ELÉCTRICO

En este caso el propio potenciómetro actúa como divisor de tensión.

El esquema es el siguiente.

MONTAJE
El montaje necesario se muestra en la siguiente imagen

Bioing. Hugo Aguila 24 / 31


CÓDIGO
El código para leer el desplazamiento del potenciómetro es realmente sencillo.
Simplemente usamos una entrada analógica para leer el valor de tensión, y lo transformamos en
la posición interpolando con la función “map”.

/*
Lectura Analógica Serial
Leer una entrada analógica del pin 0, muestra el resultado por el
Serial Monitor.
*/
const int analogPin = A0;
int value; //variable que almacena la lectura analógica raw
int position; //posición del potenciómetro en tanto por ciento

void setup()
// inicializa la comunicación serial en 9600 bits por segundo
{ Serial.begin(9600);
}

void loop()
{
value = analogRead(analogPin); // realizar la lectura analógica raw
position = map(value, 0, 1023, 0, 100); // convertir a porcentaje
Serial.println(position); //muestra el valor en el monitor serial
delay(1000);
}

9.3 Conexión de un sensor LM35(temperatura).

¿QUE ES UN SENSOR LM35?

El LM35 es un sensor de temperatura. A diferencia de otros dispositivos como


los termistores en los que la medición de temperatura se obtiene de la medición de su resistencia
eléctrica, el LM35 es un integrado con su propio circuito de control, que proporciona una salida
de voltaje analógico, proporcional a la temperatura.

La salida del LM35 es lineal con la temperatura, incrementando el valor a razón de 10


[mV], por cada grado centígrado. El rango de medición es de -55ºC (-550mV) a 150ºC (1500
mV). Su precisión a temperatura ambiente es de 0,5ºC.

Los sensores LM35 son relativamente habituales en el mundo de los aficionados a la


electrónica por su bajo precio, y su sencillez de uso.

PRECIO

Los sensores LM35 son baratos. Podemos encontrar un sensor LM35 por $ 40,0 a $ 50,0
en vendedores locales.

ESQUEMA ELÉCTRICO

El PINOUT del LM35 se muestra en la siguiente imagen.


Los pines extremos son para alimentación, mientras que
el pin central entrega una tensión, proporcional a la medición
de temperatura, según la siguiente relación: 10 [mV/ºC].

Bioing. Hugo Aguila 25 / 31


Por tanto, el esquema eléctrico que necesitamos es el siguiente.

EJEMPLO DE CÓDIGO

El código necesario para realizar la lectura es simple. Simplemente leemos el valor de


tensión mediante la entrada analógica, y traducimos el valor a grados centígrados usando el
siguiente razonamiento:

De la hoja de datos del LM35, sabemos que la relación a su salida es 10 [mV/ºC], y como
es una relación lineal, usando una simple regla de tres podemos calcular, que para una salida
de 1 [V] equivale a tener 100 [ºC] de temperatura ambiente, mucho, ¿no?.

Bioing. Hugo Aguila 26 / 31


Para conocer el valor de temperatura debemos seguir los siguientes pasos:

1. En definitiva, sabemos que cuando tomamos un valor por el puerto analógico lo convertimos
a un valor DIGITAL (Valor del ADC) entero entre 0 y 1023 (1024), dadas las características
del conversor (CAD-> 2 10 = 1024) de Arduino.

2. Por lo tanto, estamos en presencia de solo un número (Valor del ADC), todavía no conocemos
la temperatura, el siguiente paso es encontrar el valor de tensión que corresponde a este
número, usando la relación lineal del gráfico anterior, primero escalamos el valor:

Regla de 3 simple:

1023 --------------------> 5000 [mV]


Valor del ADC --------------------> ¿Valor en milivoltios?

𝑉𝑎𝑙𝑜𝑟 𝑑𝑒𝑙 𝐴𝐷𝐶


Valor en milivoltios = 𝑥 5000 [mV]
1023

Luego, Si:

10 [mV]--------------------> 1 ºC
Valor en milivoltios--------------------> ¿Temperatura ºC?

𝑉𝑎𝑙𝑜𝑟 𝑒𝑛 𝑚𝑖𝑙𝑖𝑣𝑜𝑙𝑡𝑖𝑜𝑠
Temperatura = 𝑥 1 [ºC]
10

Ahora debemos traducir esto al código Arduino:

const int sensorPin= A0;

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

void loop()
{
int Valor_del_ADC = analogRead(sensorPin);
float Valor_en_milivoltios = (Valor_del_ADC / 1023.0) * 5000;
float Temperatura = Valor_en_milivoltios / 10;
Serial.print(Temperatura);
Serial.println(" C");
delay(1000);
}

9.4 Conexión de un sensor DHT22(temperatura y humedad)


¿QUÉ ES UN DHT11 / DHT22?

El DHT11 y el DHT22 son dos modelos de una misma familia de sensores, que permiten
realizar la medición simultánea de temperatura y humedad.

Bioing. Hugo Aguila 27 / 31


Estos sensores disponen de un procesador interno que realiza el proceso de medición,
proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener
la medición desde un microprocesador como Arduino.

Ambos sensores presentan un encapsulado de plástico similar. Podemos distinguir


ambos modelos por el color del mismo. El DHT11 presenta una carcasa azul, mientras que en el
caso del sensor DHT22 el exterior es blanco.

De ambos modelos, el DHT11 es el hermano pequeño de la familia, y cuenta peores


características técnicas. El DHT22 es el modelo superior, pero, por contra, tiene un precio
superior.
Las características del DHT11 son realmente escasas, especialmente en rango de
medición y precisión.

• Medición de temperatura entre 0 a 50, con una precisión de 2ºC


• Medición de humedad entre 20 a 80%, con precisión del 5%.
• Frecuencia de muestreo de 1 muestras por segundo (1 Hz)

El DHT11 es un sensor muy limitado que podemos usar con fines de formación, pruebas,
o en proyectos que realmente no requieran una medición precisa.

Por el contrario, el modelo DHT22 tiene unas características mucho más aceptables.

• Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC


• Medición de humedad entre 0 a 100%, con precisión del 2-5%.
• Frecuencia de muestreo de 2 muestras por segundo (0.5 Hz)

EL DHT22 (sin llegar a ser en absoluto un sensor de alta precisión) tiene unas
características aceptables para que sea posible emplearlo en proyectos reales de monitorización
o registro, que requieran una precisión media.

Los sensores de temperatura y, aún más, los sensores de humedad, son sensores con
elevada inercia y tiempos de respuesta elevados. Es decir, son “lentos” para reflejar los cambios
en la medición.

PRECIO
El DHT11, el modelo inferior en características, es realmente barato. Podemos
encontrarlo en vendedores internacionales en Ebay y AliExpress por 0,70€.

Mientras, podemos encontrar el modelo superior DHT22 por 2,40€, considerablemente


más caro que su hermano pequeño, pero aun relativamente barato.

ESQUEMA MONTAJE

La conexión del DH11 y el DHT22 son idénticas, ya que como hemos comentado la única
diferencia entre los modelos son sus prestaciones. En ambos casos, disponemos de 4 patillas,
de las cuales usaremos 3, Vcc, Output y GND.

Bioing. Hugo Aguila 28 / 31


Conectar el sensor es sencillo, simplemente alimentamos desde Arduino al sensor a
través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una
entrada digital de Arduino. Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El esquema eléctrico queda como la siguiente imagen

Mientras que el montaje en una protoboard sería el siguiente.

Bioing. Hugo Aguila 29 / 31


EJEMPLOS DE CÓDIGO

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional


mediante un único conductor, empleando señales temporizadas.

En cada envío de medición el sensor envía un total de 40bits, en 4ms. Estos 40 bits
corresponden con 2 Bytes para la medición de humedad, 2 Bytes para la medición de
temperatura, más un Byte final para la comprobación de errores (8bit integral RH data + 8bit
decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum).

Para mayor información sobre el funcionamiento y detalles de la comunicación, consultar


el datasheet de la serie DHTXX.
Podemos leer los datos del sensor directamente generando y leyendo las señales
temporizadas según el protocolo del DHTXX. En general, lo normal es que empleemos una
librería existente para simplificar el proceso.

Existen varias librerías disponibles, descargamos e instalamos la librería y cargamos el


código de ejemplo, o la siguiente versión simplificada.

1 #include "DHT.h"
2
3 // Descomentar el sensor que Utd. Este usando.
4
5 //#define DHTTYPE DHT11 // DHT 11
6 define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
7 //#define DHTTYPE DHT21 // DHT 21 (AM2301)
8
9 // ***************** PIN OUT***********************************
10 // Connect pin 1 (on the left) of the sensor to +5V
11 // Connect pin 2 of the sensor to whatever your DHTPIN is
12 // Connect pin 4 (on the right) of the sensor to GROUND
13 // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
14 //*****************************************************************
15
16 const int DHTPin = 5; // what digital pin we're connected to
17
18 DHT dht(DHTPin, DHTTYPE);
19
20 void setup() {
21 Serial.begin(9600);
22 Serial.println("DHTxx test!");
23
24 dht.begin(); // inicializa el sensor
25 }
26
27 void loop() {
28 // Wait a few seconds between measurements.
29 delay(2000);
30
31 // Reading temperature or humidity takes about 250 milliseconds!
32 float h = dht.readHumidity();
33 float t = dht.readTemperature();
34
35 //*****LA FUNCION “isnan” verifica si hubo algún fallo
36
37 if (isnan(h) || isnan(t)) {
38 Serial.println("Failed to read from DHT sensor!");
39 return;
40 }

Bioing. Hugo Aguila 30 / 31


41
42 Serial.print("Humidity: ");
43 Serial.print(h);
44 Serial.print(" %\t");
45 Serial.print("Temperature: ");
46 Serial.print(t);
Serial.print(" *C ");
}
Cargamos el programa en Arduino, y empezaremos a recibir por el puerto serie los
valores de temperatura y humedad.

Bioing. Hugo Aguila 31 / 31

Das könnte Ihnen auch gefallen