ARD01 – Introducción a Arduino

BIENVENIDOS Este texto pretende ser una guía de mis experiencias y las de otras personas en el entorno Arduino. Aunque empezaremos exponiendo algunas bases teoricas y a lo largo del manual haremos referencia a conceptos de programación, el conjunto pretende ser eminentemente práctico, en plan de aprender a hacer las cosas haciéndolas, más que estudiando sobre ellas. Los autores hemos huido de los tecnicismos académicos en la medida de lo posible. Sólo esperamos que disfrutes tanto experimentando y aprendiendo con Arduino como lo hicimos nosotros.

ARD02 – El primer sketch

Vamos a crear un sketch muy simple, que permita que Arduino encienda y apague, de forma intermitente un LED. Un LED es, como seguramente ya sabes, un diodo emisor de luz. Cuando se aplica una tensión continua adecuada, con la polaridad correcta, el LED se enciende. En general, el aspecto de un LED responde al de la figura 2.1. Como puedes ver, uno de los terminales es más largo que el otro. A ese terminal, llamado ánodo, se le aplica el polo positivo de la fuente de tensión. Al otro terminal, el cátodo, se le aplica la masa. Los LED se fabrican en diferentes colores y tamaños, y se venden en tiendas especializadas en electrónica a muy bajo coste (apenas unos céntimos). Dado que Arduino funciona con 5V no podemos conectar, directamente el LED a una salida de la placa, ya que se quemaría. Usaremos una resistencia para absorber el exceso de tensión, de forma que el LED funcione perfectamente. En el Apéndice A algunos conceptos básicos de electrónica, para aquellos que no estéis familiarizados con estas cuestiones. En nuestro caso emplearemos una resistencia de 330 ohmios.  

ARD03 – Entrada y salida

En el artículo anterior hemos visto como Arduino, una vez programado, controla el LED. Aquí vamos a hacer un montaje muy sencillo, con un comportamiento muy simple, para ilustrar como Arduino puede leer información procedente del exterior, y operar en consecuencia.

ARD04 – PWM

Lo de las salidas digitales está muy bien, y es muy claro de entender: las “cosas” (un LED o lo que sea) están activadas o no lo están. Así de simple. Sin embargo, en ocasiones es necesario obtener salidas analógicas. Por ejemplo, suponte que queremos un LED que esté encendido, pero no del todo, tan brillante. Solo queremos que se encienda con la mitad de su intensidad (o una tercera parte, una cuarta parte, un 80 %….) Esto puede venirnos bien como indicador de otra cosa. Las salidas de Arduino son todas digitales: o están activadas o no lo están. Arduino recurre, para conseguir emular salidas analógicas, a una técnica llamada PWM (Pulse Width Modulation, Modulación de Anchura de Pulso). Observa los pines de salida de tu placa Arduino. Verás que hay varios (en concreto el 3, el 5, el 6, el 9, el 10 y el 11) que tienen el símbolo ~ grabado. Estas salidas se pueden programar, mediante PWM, para comportarse como si fueran analógicas. La técnica de PWM consiste en lo siguiente. Si tu tienes un valor digital 0 (LOW) fijo, la salida de señal en el tiempo es a 0 permanente, como ves en la figura 4.1.

ARD05 – Entradas analógicas

De la misma forma que se pueden obtener salidas analógicas, Arduino también puede detectar entradas analógicas. Una señal analógica de entrada es la proporcionada por un sensor o componente que puede presentar diversos valores de resistencia. Ya no es un pulsador (o interruptor o similar) que sólo admite dos estados (activado o desactivado). Ahora se trata de un elemento que puede ofrecer múltiples valores. El ejemplo más simple es un potenciómetro, o resistencia variable, que se controla a mano. También hay otras resistencias cuyo valor depende de la luz recibida (las llamadas LDR, que pueden actuar como sensores de luz), o de la temperatura (los termistores), etc.

ARD06 – Datos en serie

Ya sabemos que Arduino recibe el sketch que hemos codificado y lo ejecuta, reconociendo entradas o dando salidas de señal a diferentes dispositivos (hasta ahora, hemos usado un LED, pero ya veremos que podemos conectar otros elementos como altavoces, motores, etc). Además, Arduino puede enviar datos en serie a través del puerto USB al ordenador. El IDE de Arduino puede recibir estos datos y mostrárnoslos en una ventana como valores numéricos. Para gestionar este tipo de comunicación empleamos un objeto llamado Serial, que se encarga de la transmisión y presentación de datos. En este artítulo vamos a emplear el mismo circuito que en el anterior, por lo que no hay cambios en la parte hardware.

ARD07 – Calibración manual

El uso de elementos como los potenciómetros o los pulsadores para producir una señal de entrada está muy bien, porque tenemos un control manual directo sobre la entrada pero, en muchísimos casos, se queda corto. En la naturaleza existen parámetros como la temperatura, la luz, la humedad, etc que varían las condiciones de un entorno, y tenemos que poder medirlos con un circuito electrónico. Por ejemplo, podemos querer hacer con nuestro Arduino un equipo que mida la temperatura ambiente, y la refleje en una escala de LED’s. Eso es, justamente, lo que vamos a hacer ahora. Este capítulo nos ayudará a conocer la naturaleza y comportamiento de un sensor térmico, y a programarlo adecuadamente en Arduino. También introduciremos algunos conceptos del lenguaje de programación Arduino y un concepto especialmente interesante cuando se usan sensores: la calibración, para obtener un reflejo real del valor del parámetro medido por el sensor.

ARD08 – Calibración automática

La calibración manual está muy bien, si queremos partir de unos valores base concretos para empezar nuestras mediciones. Pero ¿que ocurre si las condiciones del entorno que queremos medir (luz, temperatura, etc) son tan variables de un momento a otro que no podemos tener un valor base durante toda la ejecución del sketch? Piénsalo. Suponte un sensor de luz, como pueda ser una resistencia LDR (cuyo valor resistivo varía según la luz que incide sobre ella) funcionando en un entorno donde la iluminación varía constantemente, encendiendo y apagando lámparas, o por reflejos de sol a través de la ventana, etc). Lo que necesitas en este caso, para que Arduino pueda medir la iluminación relativa que incide sobre la LDR de una forma fiable a lo largo de un tiempo de funcionamiento, es una calibración automática, de modo que el valor base no venga establecido por programación, sino que se redefina según los valores máximo y mínimo de iluminación (o el parámetro que estemos midiendo), en cada momento. Veamos en este capítulo como funciona la calibración automática de sensores.

ARD09 – Servomotores

Con Arduino es posible manejar, prácticamente, cualquier dispositivo. En este capítulo vamos a trabajar con servomotores. Son un tipo de motores eléctricos que llevan tres cables para conectar: los dos típicos de masa y alimentación y un tercero para control de giro. Es a través de este tercer cable que controlaremos la posición del servomotor. Aunque en el mercado hay gran cantidad de modelos para distintos usos, el objetivo general de un servomotor no es mover grandes cargas, sino actuar sobre otros mecanismos, como cerrojos, válvulas hidráulicas, etc. Su giro está limitado a 180 grados, es decir, no dan vueltas continuamente, como un motor convencional, sino que dan media vuelta (o una fracción de esa media vuelta), y luego vuelven a su posición. Con ese giro es suficiente para mover una leva que actúe sobre otro mecanismo, como hemos mencionado. Por ejemplo, algunos vehículos llevan el acelerador conectado eléctricamente a un servomotor y la leva de este actúa sobre la válvula que regula el paso de combustible.

ARD10 – Motores

En este capítulo vamos a hacer un montaje conceptualmente muy simple: cuenta con un motor eléctrico. Al pulsar un botón, el motor recibe corriente y gira. Dicho así suena a poca cosa, pero nos va a venir muy bien para entender un concepto importante: los pines de salida de Arduino pueden proporcionar una señal de muy poca intensidad de corriente. Existen dispositivos que necesitan funcionar con tensiones o intensidades que la placa Arduino no puede manejar. Si conectásemos un pequeño motorcito eléctrico directamente a la placa, no llegaría a funcionar y, muy probablemente, la placa se dañaría irremisiblemente.