MONOGRÁFICO: Arduinoblocks - Capítulo 3 |
EQUIPAMIENTO TECNOLÓGICO - Didáctica de la tecnología | ||||||||
Escrito por Leopoldo Mosquera | ||||||||
Miércoles, 29 de Diciembre de 2010 21:27 | ||||||||
Página 4 de 6
Capítulo 31) IntroducciónSuperada la experimentación con entradas digitales para crear programas en nuestra placa, ahora conviene conocer las posibilidades de la tarjeta Arduino para interpretar señales analógicas de entrada, utilizando los sensores electrónicos más utilizados con nuestros alumnos. 2) Conexionado de entradas analógicas.La ventaja que nos proporcionan los sensores analógicos frente a los digitales estriba en la posibilidad de regular su holgura de detección, evitando el "todo o nada" (0V ó 5V de tensión en el pin de entrada) característico de los sensores (y de las salidas) digitales. Con un sensor de luz resistivo, por ejemplo, podremos decidir a nuestro gusto cuál es el umbral de iluminación con el que actuarán los elementos conectados a las salidas de la tarjeta Arduino. Dicho de otro modo, un sensor analógico estará constantemente cambiando el valor de tensión entre sus terminales con el tiempo, por lo que necesitará un tratamiento diferente, en comparación con el sensor digital, por parte del microprocesador. Arduino incorpora 6 patillas o pines denominados Analog In. Mediante la configuración "pull-down" del sensor (ver capítulo anterior), las pequeñas variaciones de voltaje que se produzcan en el pin de entrada correspondiente de la tarjeta, serán traducidas por el software en un número comprendido entre 0 (= 0 voltios) y 1023 (= 5 voltios), es decir, el umbral de tensión que queramos que perciba la tarjeta como límite, se fijará escribiendo un número menor que 1024, junto con la función analogRead(). También es importante saber que la pantalla de Amici dispone de una pequeña ventana en su parte superior donde, tras pulsar el botón "Leer Valor", podremos monitorizar la lectura del sensor analógico. El programa de la imagen anterior serviría para apagar un diodo led previamente pinchado en el pin 13 y GND (patilla más corta), mediante un sensor analógico construido con una LDR, y cuyo cable de entrada se conecta en el pin 1 de las Analog In. En el bloque ESPERAR HASTA utilizado para establecer la condición de funcionamiento, queda indicado un umbral de señal intermedio de valor 512 (que corresponde a una división de tensión en cable de entrada de 2,5V), el cual debe rebasarse, en sentido descendente, con un valor inferior. Si se observa la ventana de “Leer Valor”, capturada con la pantalla en un momento cualquiera, veremos que aparecen dos valores numéricos: uno de 584 > 512 (instante con el led encendido y la LDR iluminada) y otro de 243 < 512 (instante con el led apagado y la LDR en sombra o parcialmente tapada). La ubicación del bloque LEER VALOR en la parte inferior del programa en la pantalla de Amici sirve para poder monitorizar qué está pasando en la entrada analógica de la tarjeta. Analizando el programa en el editor de texto de Arduino, veremos que este bloque genera la aparición de la función Serial.begin() en el apartado set up (el número entre paréntesis indica la velocidad en baudios de la comunicación entre la tarjeta y el ordenador), así como de la función Serial.println(analogValue) al final de apartado loop.
La resistencia variable con la luz es posiblemente el sensor analógico más conocido y utilizado por nuestros alumnos en el taller de Tecnología, pero existen otros que también pueden estar a nuestro alcance para crear programas con Amici, como por ejemplo, una resistencia variable con la temperatura (NTC), un potenciómetro, un sensor de infrarrojos de corto alcance (CNY70) o de medio alcance (Sharp GP2D12). Para realizar el siguiente ejemplo, he pinchado una resistencia variable con la temperatura de coeficiente negativo, es decir, que disminuya el valor de su resistencia conforme aumente la cantidad de calor que almacene. El inconveniente de estas resistencias es que, al contrario que el resto de los sensores analógicos que utilizaré, tienen una respuesta lenta, lo que debe aprovecharse con algunos alumnos para que tengan tiempo de analizar su funcionamiento, a través de una programación elemental. El esquema de cableado para conectarlo a la tarjeta Arduino es similar al caso de la LDR, aunque en este caso, voy a utilizar una resistencia de 4,7 Kohmios entre el terminal del sensor y masa (Gnd). El programa que desarrollo a continuación es muy sencillo e incorpora un ejemplo de cómo utilizar dos bloques IF para crear una doble condición, utilizando la entrada analógica: si la señal detectada en el pin es superior a un valor fijado en el programa, sucederá una acción, y si es inferior, sucederá la contraria. En mi caso, aprovecho la presencia del zumbador piezoeléctrico de mi tarjeta y hago que suene (con una breve intermitencia) tras calentar la resistencia variable poniéndola en contacto, durante algunos segundos, con la punta de mi soldador, previamente calentado. El sonido continuará durante el tiempo que, una vez retirado el calor, la resistencia se enfríe lo suficiente para que la señal en la entrada analógica (pin 1), disminuya en valor numérico por debajo del umbral indicado (en mi ejemplo vale 500), hecho que observaremos atentamente en la ventana de LEER VALOR. La siguiente experiencia consistirá en conectar un potenciómetro al conjunto tarjeta-placa con el objetivo de encender o apagar los diodos leds, al girar su eje con los dedos. Se trata de ir complicando los programas al agregar varios condicionales IF, en este caso tres, uno para cada diodo led. Al variar el valor óhmico en los terminales del potenciómetro, y escogiendo uno de suficiente calidad y tamaño como para lograr cierta precisión al fijarlo en una posición angular determinada, podremos encender de modo independiente cada uno de los diodos. La señal de entrada alcanzará unos valores exactos y fijados en el programa, ya que el texto del editor de Arduino indica que utilizamos la igualdad como condición a cumplir. La conexión de potenciómetro a Arduino es, otra vez, mediante tres cables que parten de dos de las tres patillas del potenciómetro (la central y una de los extremos) y terminan, atendiendo a la configuración “pull-down”, en los pines GND, +5V y Analog In 1. Tanto la resistencia a masa como el mismo potenciómetro son de valor 10 Kohmios, por lo que la señal “traducida” en la entrada (y recogida en el monitor a través del cable USB) oscila entre 512 y 1024; como consecuencia, se han determinado los encendidos para los valores 600, 800 y 1000 (aproximadamente con una diferencia de un voltio de caída entre los terminales). Un aspecto interesante que aún no había comentado es que la tarjeta Arduino tiene un conector tipo Power Jack en el que, una vez cargado el programa en la memoria del microprocesador, puedes desconectar el cable USB (que hasta ahora hacía la doble función de transmitir datos y alimentar con 5 voltios de tensión desde el ordenador) para, mediante un conector preparado al efecto, utilizar una batería externa. El valor máximo de ésta será 20 V (ya que la tarjeta consta de un regulador de tensión de 5V), si bien se recomienda un rango de alimentación externa de entre 7 y 12V, que evitarían inestabilidades o sobrecalentamientos; lo más cómodo es posiblemente utilizar una pila de 9V como la de la imagen. 4) Conexionado de sensores de infrarrojosLa utilización de este tipo de sensores analógicos supone un pequeño salto cualitativo en el taller de Tecnología, respecto al tipo de dispositivos que allí normalmente se emplean y que hemos descrito hasta ahora. Sin embargo el detector denominado CNY70 ya aparece en circuitos ejemplificados en distintos libros de texto de 4º ESO, no resulta caro (algo menos de un euro) y es de gran fiabilidad; quizás su mayor inconveniente resida en la conexión correcta de sus cuatro patillas (dos para el diodo emisor de infrarrojos y dos para el fototransistor que actúa como receptor) a los tres cables que deben pincharse en la tarjeta. Normalmente se utilizan pareados en pequeños robots rastreadores que distinguen entre una línea negra y un fondo blanco para variar su trayectoria, pero yo en mi ejemplo lo voy a utilizar además para detectar el color, entendido éste como una tonalidad intermedia entre negro y blanco; el encendido simultáneo de uno, dos o tres diodos leds en mi tarjeta, determinará en este mismo orden, cuál es el grado de reflexión de la luz (casi nula para el negro, media para el color y máxima para el blanco) en la superficie sobre la que aproximemos el sensor de infrarrojos. Para fabricar mi sensor de color, una vez identificados los cuatro terminales del dispositivo, he unido los correspondientes al ánodo y al colector (con cuidado de no romper la patilla de aluminio al doblarla) y las he soldado al cable que se pinchará en la alimentación de +5V. A continuación he soldado una resistencia de valor 220 ohmios, para la protección del diodo emisor, en la patilla del kátodo; lo mismo debe hacerse, pero con una resistencia de 10 Kohm, en la patilla del emisor, en la que también soldaremos un cable que nos envíe la señal de entrada al pin analógico 1. Finalmente uniremos los dos extremos libres de las resistencias entre sí y con un cable negro que conectaremos, en su otro extremo, en el pin de masa de la Duemilanove. En las fotos puede apreciarse el resultado del programa anterior, en el que el led rojo conectado como salida digital 10, está permanentemente encendido, mientras que amarillo y verde, en este orden, se activan a medida que se aclara la superficie analizada.
5) ConclusiónEn este capítulo se han ampliado las posibilidades de interacción de nuestra placa conectada en la tarjeta Arduino con el mundo exterior y sus variables físicas, si bien empieza a echarse en falta la posibilidad de conectar, además de una variedad de dispositivos de entrada, algún nuevo actuador en una salida, como puede ser un pequeño motor de los que se disponen habitualmente en el taller de Tecnología, experimentación que abordaré en los próximos capítulos. |