Arduino Primero
Arduino Primero
CANTIDAD MATERIAL
1 1 Arduino UNO/MEGA
2 Resistores de valores comunes
3 1 Breadboard
4 LEDS de colores diversos
5 Multímetro
6 Pinzas, UTP
Introducción
Arduino es una plataforma open-hardware basada en una sencilla placa con entradas y salidas (E/S),
analógicas y digitales,
Su corazón es el microcontrolador Atmega8, un chip sencillo y de bajo coste que permite el
desarrollo de múltiples diseños.
Al ser open-hardware tanto su diseño como su distribución es libre, puede utilizarse libremente para
desarrollar cualquier tipo de proyecto sin tener que adquirir ningún tipo de licencia.
Tiene:
- 14 pines de entrada/salida digital (de los cuales 6 pueden ser usados como salidas PWM),
- 6 entradas analógicas,
- una conexión USB,
- un conector para alimentación,
- un botón de reset
Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de
sensores
Existen 2 tipos básicos de señales a utilizar cuando estamos programando, esto dependiendo del
tipo de entrada que estamos utilizando, de los sensores que proveen la información al sistema; estos
tipos de señales son:
1
También puede afectar todo aquello que lo rodea (actuadores digitales y analógicos) controlando
luces, motores y otros actuadores.
Entrada - Control - Salida
Sensores - Controlador - Acturadores
Información de entrada - Programa - Información de salida
Desarrollo
Una vez instalado el IDE, vamos a comprobar que reconoce nuestro Arduino correctamente y que
podemos programarlo. Para ello, Conecta tu Arduino a tu ordenador mediante el USB
Ahora, ya podemos arrancar el icono de Arduino del escritorio de trabajo y configurar el modelo de
Arduino y confirmar el puerto serie al que se conecta. En [Menú]\Herramientas\Placa Elegir el
modelo exacto de nuestro Arduino. En nuestro caso elegimos un Arduino Uno:
Es importante asignar el puerto y el modelo de Arduino para garantizar el correcto funcionamiento del
IDE. La marca de selección debe estar con el tick. Vamos ahora a volcar un programa de ejemplo:
2
El código es el que se muestra
Si queremos alterar el tiempo de respuesta de la salida basta con cambiar el parámetro dentro de la
instrucción delay(ms)
Detiene la ejecución del programa la cantidad de tiempo en ms.
1000 equivale a 1 seg
Cambie el parámetro a 500. Que ocurre
3
Basándose en el código anterior diseñe un semáforo y utilizando tarjetas de potencia con Relé active
el semáforo real
Secuencias
Una secuencia es una sucesión de eventos en un orden específico, utilizando las instrucciones de
escritura y temporización podemos elaborar secuencias más o menos sencillas a muy elaboradas,
por ejemplo, el juego de luces del auto fantástico
4
Diseñe una secuencia para display que muestre el conteo de 0 a 9
5
Guía 2
Tema: Entradas digitales
Duración estimada:
CANTIDAD MATERIAL
1 1 Arduino UNO
2 2 Pulsadores N/A
3 Resistores de valores comunes
4 1 Breadboard
5 LEDS de colores diversos
6 Multímetro
7 Pinzas, UTP
Introducción
Instrucciones de e/s digitales
hay 14 pines de e/s digitales numerados del 0 al 13, al ser digitales, los valores que se leen y/o
escriben son 0 y 1.
instrucciones
pinMode(pin,modo)
digitalRead(pin)
digitalWrite(pin, valor)
pin, entre 0 y 13
modo, entre INPUT y OUTPUT
valor, entre HIGH y LOW
Diferencia entre 2 posibles estados.
Digital Ej: frio – calor, On – OFF, HIGH - LOW
Las resistencias de Pull-Down y Pull-Up se conectan entre el PIN digital y una de las tensiones de
referencia (0V o 5V) y “fuerzan” (de ahí su nombre) el valor de la tensión a LOW o HIGH, respectivamente.
La resistencia de Pull-Up fuerza HIGH cuando el pulsador está abierto. Cuando está cerrado el
PIN se pone a LOW, la intensidad que circula se ve limitada por esta resistencia
6
La resistencia de Pull-Down fuerza LOW cuando el pulsador está abierto. Cuando está cerrado el
PIN se pone a HIGH, y la intensidad que circula se ve limitada por esta resistencia
Así es como quedaría el montaje final en vista esquemática (la conexión de puede realizar en empleando
cualquiera de los PIN digital).
Modificaremos el programa para que funcione utilizando 2 pulsadores, uno para encender el led y otro para
apagarlo
7
|
Modifique el código, pero en vez de encender un led haga que seleccione una de dos secuencias diferentes
8
Guía 3
Tema: Lectura Analógica
Duración estimada:
CANTIDAD MATERIAL
1 1 Potenciómetro 5K
2 1 Arduino UNO
3 1 LDR, termistor, LM35
4 Resistores de valores comunes
5 1 Breadboard
6 LEDS de colores diversos
7 Multímetro
8 Pinzas, UTP
I. INTRODUCCIÓN
Existen 2 tipos básicos de señales a utilizar cuando estamos programando, esto dependiendo del
tipo de entrada que estamos utilizando, de los sensores que proveen la información al sistema; estos
tipos de señales son:
Estos tipos de señal son captados a través de las distintos puertos del Arduino, asi los datos digitales
son recibidos por los pines digitales (usados en practicas anteriores) y los valores análogos a través
de los pines análogos (solo funcionan como entradas)
9
Analog In - Entradas análogas
Pins análogos son entradas análogas. Reciben tensiones entre 5V y 0 voltios. Los pines análogos,
al contrario de los digitales, no necesitan ser declarados como modo INPUT o OUTPUT .
Comandos básicos
analogRead(pin), Lee o captura el valor de entrada del especificado pin análogo. Placa Arduino
realiza una conversión análoga a digital de 10 bits. Esto quiere decir que mapeará los valores de
voltaje de entrada, entre 0 y 5 voltios, a valores enteros comprendidos entre 0 y 1023.
Tal y como se mencionó, el Arduino maneja valores de hasta 5VDC, por los cual será necesario la
utilización de reguladores de voltaje, siendo el más fácil de usar el divisor de voltajes
10
El divisor podría ser hecho con 2 resistores como en la izquierda, o un potenciómetro (como se hara
en esta guía), y en algunos casos usaremos la configuración de Puente de Wheastone.
Veamos algunos ejemplos de uso de puertos anlogicos
II. DESARROLLO
Ejemplo:
int analogRead(pin) Lee el valor de un pin analógico. Entrega un valor entre 0 y 1023 que
representa 0 o 5V es decir 4.9mV por unidad.
3. Agregaremos las líneas al programa para verificar la lectura en el monitor serie de Arduino
IDE
11
4. Primero en la barra de herramientas de Arduino IDE buscamos la opción
Herramientas/Monitor serie o con la combinación Ctrl + Mayus + M
Note que los valores son siempre números entre 0 y 1023, haremos una modificación para visualizar
en unidades más entendibles, reescriba el código según se muestra a continuación
6. Ahora utilizaremos la lectura del potenciómetro y el uso de condiciones para activar cargas,
iniciemos con un LED en el pin 9 del Arduino
12
7. Utilizaremos el código que se muestra a continuación
8. Modifique el código agregando 4 LED de manera que cada uno indique cuando el valor del
potenciómetro haya alcanzado el 20% del total de la señal máxima de entrada (es decir, un
LED enciende con cada voltio que incrementa)
9. Midiendo luz con Arduino. Utilizando una LDR tomaremos valores de intensidad lumínica a fin
de activar cargas de 120VAC utilizando Reles
13
10. Describa el funcionamiento del programa
11. Invierta la posición de la LDR y describa como afecta eso al funcionamiento del programa
Diseñe un programa de termómetro que utilizando termistor y LM35 muestre vía monitor serie
los valores de temperatura en grados Celsius.
Guía 4
Tema: Salidas PWM
Duración estimada:
CANTIDAD MATERIAL
1 1 ARDUINO UNO
2 1 Breadboard
3 1 Multímetro
4 1 Transistor 2N2222
5 1 Motor DC
6 1 Fuente de voltaje variable
7 Varios Resistores de valores comerciales, potenciómetro 5K, LDR, Termistor, LM35
8 Tarjetas de relé
14
I. INTRODUCCIÓN
Las salidas analógicas son algo más complicadas que las digitales (como ya pasaba con las
entradas analógicas y digitales).
Lo primero que tenemos que entender es que la mayoría de automatismos (y Arduino no es una
excepción) no son capaces de proporcionar una auténtica salida analógica. Ni siquiera pueden
suministrar una salida analógica discretizada (es decir, a saltos) de tensión. Lo único que pueden
proporcionar es una salida digital de -Vcc o Vcc. (por ejemplo, 0V y 5V)
Para salvar esta limitación y simular una salida analógica la mayoría de los automatismos emplean
un “truco”, que consiste en activar una salida digital durante un tiempo y mantenerla apagada
durante el resto. El promedio de la tensión de salida, a lo largo del tiempo, será igual al valor
analógico deseado.
Existe más de una forma de hacer esta aproximación. Una de las más sencillas, y por ello muy
empleada en automatización, es la modulación de ancho de pulso (PWM). En esta modulación se
mantiene constante la frecuencia (es decir, el tiempo entre disparo de pulsos), mientras que se hace
variar la anchura del pulso.
La proporción de tiempo que está encendida la señal, respecto al total del ciclo, se denomina “Duty
cycle”, y generalmente se expresa en tanto por ciento.
En Arduino la señal de salida PWM (pines 3, 5, 6, 9, 10 y 11) es una señal de frecuencia constante
(30769 Hz) y que solo nos permite cambiar el "duty cycle" o el tiempo que el pulso está activo (on) o
inactivo (off), utilizando la función analogWrite().
15
II. DESARROLLO
Entendiendo el PWM
1. Con el siguiente código y con solo realizar modificaciones en los intervalos de tiempo que el
pin seleccionado tenga valor HIGH o LOW, a través de la función digitalWrite (), generamos la
señal PWM.
El programa pone el pin a HIGH una vez por segundo, la frecuencia que se genera en dicho
pin es de 1 pulso por segundo o 1 Hertz de pulso de frecuencia (periodo de 1 segundo) .
Cambiando la temporización del programa, podremos cambiar la frecuencia de la señal. Por
ejemplo, si cambiamos las dos lineas con delay(500) a delay(250), multiplicaremos la
frecuencia por dos, de forma que estamos enviando el doble de la cantidad de pulsos por
segundo que antes.,o sea que el LED ya no blinkea, sino que esta brillando al 50% de su brillo
normal.
Ahora cambia los números del LED en 1/4 del tiempo en que esta off. Has correr el sketch y
veras que el brillo es de 25%. Esta técnica se llama pulse width modulation (PWM), la idea
es que el LED blinkea tan rápido que no te das cuenta, pero cambias su rango de brillo entre
el tiempo on y el tiempo off. También se aplica a motores y es controlada con la instrucción
analogWrite()
Tener que calcular la relación de entrada/salida puede resultar complicado en ocasiones; por
eso convendría hacer un mapeo de los valores siguiendo la estructura siguiente:
salida = map(Val entrada, min entrada, max entrada, min salida, max salida)
Es decir q se toma el rango de entrada leído en la variable y se utiliza el rango convertido
como salida, para ser más exactos usaremos:
led_value = map(output, 0, 1023, 0, 255)
17
III. ACTIVIDAD COMPLEMENTARIA
18