Paso 3

Hasta ahora hemos utilizado la tarjeta Home Work y la pantalla del ordenador para enviar mensajes a través de los programas y realizar un control del tiempo.  Ha llegado el momento de estudiar el funcionamiento y la programación de diferentes dispositivos físicos conectándolos a las clavijas de entrada y salida (I/O Imput/Output, o Entrada/Salida) de forma que el microcontrolador establezca sus funciones.

Como primer paso sencillo, vamos a probar un circuito LED (diodo emisor de luz o Light-Emitting Diode), es decir, construiremos circuitos que emitan luz para poder “comprobar” el tipo de señales electrónicas que se usan, entre otras cosas, para controlar los motores del robot.  Este es uno de los tipos de LEDES que vamos a emplear:

Estos dispositivos LED, que podemos ver en la gran parte de los aparatos electrónicos que tenemos en nuestras casas son dispositivos diodos semiconductores de silicio y otros materiales, que disponen de dos patitas o terminales.  Cuando se les aplica una diferencia de tensión (o voltaje) entre ambos con la polaridad correcta se encienden y emiten una luz que puede ser de diversos colores.  Un terminal se denomina ánodo (con polaridad positiva y que se corresponde con el más largo) y el otro, el cátodo (y polaridad negativa), es el más corto.

Para que se ilumine el LED hay que aplicar entre unos 2 a 4 V entre sus terminales (dependiendo de su color).  Dado que a través de la tarjeta Home Work obtenemos 5 V de tensión, deberemos colocar delante del LED una resistencia (resistor) que se encargue de absorber la tensión sobrante.

La resistencia es un dispositivo que no tiene polaridad, por lo que es indiferente la posición en la que se coloquen sus dos terminales.  Veamos a continuación una imagen de las resistencias que vamos a utilizar:

El efecto de absorción de tensión de las resistencias depende del valor que tengan, que se mide en ohmios (Ω).  Una buena iluminación LED puede conseguirse con una resistencia de 220 Ω, aunque también se puede conseguir que se encienda débilmente con una resistencia de 470 Ω.  Dado que las resistencias suelen ser muy pequeñas y cilíndricas no se puede grabar fácilmente su valor por lo que se utiliza un código de colores para indicarlo.  A continuación se muestra la tabla con el código de colores:

Además de los nueve primeros colores (que sirven para determinar el valor) se utilizan otros dos encargados de informar sobre la tolerancia o exactitud del valor indicado por los mismos.  Así, si la última franja tiene color ORO, significa que el valor real que tiene la resistencia no se desvía más de ±5% del que indican sus colores.  En el caso de ser plata, la tolerancia es de ±10% (si no hay ninguna de estas dos bandas, la tolerancia es de ±20%).

Para hacer la lectura correcta, deberemos colocar la resistencia de forma que la última franja, la de la derecha, sea la que indique la tolerancia: el color de la primera franja corresponde al primer número del valor; el color de la segunda franja al segundo; mientras que el de la tercera franja indica el número de ceros que hay que añadir a los dos anteriores para obtener el resultado en ohmios (esto es, un multiplicador):

Como un ±5% de 470 Ω son ±23,5 Ω, el valor real de la resistencia estará comprendido entre 470 ± 23,5 Ω, o sea, entre 493,5 y 446,5 Ω.

Encendido del LED

Una vez comprendidos los aspectos básicos, para encender un LED basta conectarle en serie una resistencia y aplicarle una tensión de 5 V, de forma que el polo positivo se conecte al ánodo, y el negativo al cátodo como podemos ver en el esquema representado más abajo:

En nuestro banco de pruebas, la “board of education”, el polo negativo de la alimentación se conecta a un terminal común que se denomina “tierra” y se representa con la tensión Vss.  El esquema quedaría de la siguiente forma:

Montaje de componentes

Como hemos dicho, la tarjeta Home Work posee una superficie destinada al montaje de los componentes de los circuitos (“board of education”) compuesta de numerosos orificios interconectados que permiten realizar la conexión entre los componentes sin usar soldadura ni estropearlos, únicamente aplicando presión.

La placa de pruebas tiene dos zonas blancas de 17 filas con cinco orificios en cada una.  Los orificios de cada fila están conectados entre sí de forma que si, por ejemplo, colocamos el cátodo del LED en uno de los orificios de la primera fila y en cualquiera de los cuatro restantes el terminal de una resistencia, ambos quedarán conectados.

Como vemos en la imagen, tanto en la parte superior como en el lado izquierdo de la placa de pruebas existen dos líneas negras de conectores (rotuladas como X2 la vertical, y X3 la horizontal).  La línea vertical tiene 16 orificios denominados P0 a P15 y están conectados a las 16 líneas de entrada o salida del microcontrolador.  A través de la programación del microcontrolador podremos establecer que cada una de estas líneas sea entrada o salida y, en caso de ser salida, podremos sacar un nivel alto o +5 V (o Vdd), o bien un nivel bajo o 0 V (o Vss).  Si la línea es de entrada, el microcontrolador leerá en ella la tensión exterior aplicada y reconocerá nivel alto o bajo.  El nivel alto puede estar comprendido entre 2 y 5 V, mientras que el bajo siempre será inferior a 1,4 V.

Haciendo parpadear un LED

El primer experimento consistirá en encender un LED durante tres segundos, luego volver a apagarlo otros 3 segundos y repetir estas dos acciones tres veces (es decir, el LED parpadeará tres veces cada tres segundos).

Elegiremos una de las clavijas de entrada/salida de la placa de pruebas (por ejemplo la P15), que actuará como salida generando por ella un nivel alto durante tres segundos y un nivel bajo durante otros tres segundos.  Para hacerlo será necesario conectar, como explicamos más arriba, una resistencia de absorción según el siguiente esquema:

En primer lugar, introducimos el ánodo (polo +) del LED en uno de los orificios de la placa de pruebas.  Por su parte, el cátodo se introduce en uno de los orificios de la fila de conectores X3 rotulada como Vss (es nuestra toma de tierra).  Ya tenemos conectado el LED.  Acto seguido tomamos una resistencia de 470 Ω e insertamos uno de sus extremos en un orificio junto al ánodo del LED (lo que hace que estén conectados entre sí), mientras que el otro extremo se introduce en el orificio P15 de la fila de conectores X2 (actuará como salida).  Las imágenes de abajo muestran la conexión:

Para encender el LED hay que sacar un nivel alto por la clavija P15 y, para apagarlo un nivel bajo.  Vamos a estudiar los comandos en lenguaje PBASIC que configuran cada clavija como E/S, y otras que sacan por ella un nivel alto o bien un nivel bajo.

El comando HIGH seguido por el número de la clavija que se quiera hará que salga por ella un nivel alto; por otro lado, el comando LOW sacará un nivel bajo (Vss).  Por ejemplo, HIGH 15 saca un nivel alto (Vdd) por la clavija P15, lo que hace que el LED conectado a ella se encienda; y LOW 15 saca un nivel bajo y hace que se apague.

Para mantener congelado el estado del microcontrolador un tiempo determinado se utiliza el comando PAUSE (que ya hemos estudiado) seguido del número de milisegundos que deseemos (por tanto, para controlar espacios de tiempo de 3 segundos emplearemos PAUSE 3000).

Veamos por tanto las líneas de código del programa de parpadeo del LED:

  1. ‘ Programa parpadeo LED.  ParpadeoLED.bs2
  2. ‘ {$STAMP BS2}
  3. ‘ {$PBASIC 2.5}
  4. DEBUG “Parpadeo tres veces durante tres segundos”
  5. HIGH 15‘Sale por P15 un nivel alto
  6. PAUSE 3000       ‘Pausa de tres segundos
  7. LOW 15               ‘Sale por P15 un nivel bajo
  8. PAUSE 3000
  9. HIGH 15               ‘Sale por P15 un nivel alto
  10. PAUSE 3000       ‘Pausa de tres segundos
  11. LOW 15               ‘Sale por P15 un nivel bajo
  12. PAUSE 3000
  13. HIGH 15               ‘Sale por P15 un nivel alto
  14. PAUSE 3000       ‘Pausa de tres segundos
  15. LOW 15               ‘Sale por P15 un nivel bajo
  16. PAUSE 3000
  17. END                     ‘Fin del programa

Como ya hemos hecho en otras ocasiones, escribimos el programa en el editor y lo ejecutamos para que quede grabado en la memoria del microcontrolador:

Como alguno de ustedes se habrá percatado, incluir la linea de comando DEBUG únicamente se ha hecho para comprobar que el programa se ha cargado adecuadamente.

Veamos una demostración en vídeo del funcionamiento:

Con estas instrucciones es muy sencillo cambiar el tiempo de parpadeo o las veces de repetición del mismo pero, ¿qué debemos hacer para que el LED parpadee de forma indefinida?, es una función que muy necesaria más adelante.  Existe una forma cómoda y fácil de repetir de forma ininterrumpida una secuencia de instrucciones evitando tener que reproducir hasta el infinito las líneas de código: con un comando PBASIC llamado GOTO.  Con él se pasa a ejecutar la instrucción que se desee, previamente identificada, y cuando el programa regrese a la línea de código que contiene el comando GOTO, todo vuelve a comenzar.  Es parecido a un bucle aunque esto lo explicaremos más detenidamente en siguientes entradas.  Veamos un ejemplo:

  1. ‘ Programa parpadeo infinito.  Parpadeoinfinito.bs2
  2. ‘ {$STAMP BS2}
  3. ‘ {$PBASIC 2.5}
  4.  DEBUG “Parpadeo infinito del LED”
  5.  INICIO:          HIGH 15              ‘Sale por P15 un nivel alto
  6.                       PAUSE 1000      ‘Pausa de un segundo
  7.                       LOW 15              ‘Sale por P15 un nivel bajo
  8.                       PAUSE 1000
  9. GOTO INICIO     ‘Salta a la instrucción con etiqueta INICIO

Al ejecutar este programa, el LED permanece parpadeando durante tres segundos de forma indefinida:







Un pensamiento en “Paso 3

  1. Pingback: Paso 4. Los motores del robot | Afán por saber

Deje un comentario