sábado, 4 de junio de 2011

Convertidor Analógico-Digital con Picaxe.

Para empezar este artículo, es conveniente indicar lo que es un convertidor Analógico-Digital, así como sus principales características de utilización. El portal Web SiliconFarEast.com (2005) define este tipo de dispositivos como un semiconductor utilizado para efectuar el proceso de conversión de una señal análoga, hacia un código digital, destacando la posibilidad de traducir casi cualquier tipo de valor basado en señales de ésta naturaleza. Ejemplos de estos dispositivos son el ADC0804 y otras variantes de dichos convertidores.

Para efectos prácticos de lo que nosotros podemos llegar a ocupar y utilizar sobre este tipo de dispositivos, es que representan una gran utilidad. Nosotros normalmente gestionamos el uso de valores digitales, con la capacidad de lectura a través del equipo de cómputo, llámese por un puerto de Entrada/Salida, como los que estamos utilizando en nuestro equipo de cómputo:

  • Puerto Serie (RS-232).
  • Puerto Paralelo (DB-25).
  • Puerto USB (Bus de Serie Universal).
  • Tarjetas PCI.
  • Etc.
Este tipo de puertos (y dispositivos) de Entrada/Salida no pueden leer, por si mismos, algún valor analógico, por lo tanto es necesario establecer el proceso de conversión de valores analógicos hacia digitales. Bueno, pudiera ser que nosotros no tengamos la necesidad de la lectura de valores análogos, pero no es cierto, muchas cosas tienen resultados de procesos valores analógicos, como por ejemplo:

  • La lectura de intensidad de luz de un cuarto.
  • El giro determinado de un motor (una posición física).
  • Lectura de distancia de un dispositivo hacia un punto dado (sensores de distancia).
  • Detección de colores (sensores de robótica).
  • Etc.
Aunque está más enfocado el proceso de conversión hacia robótica, pudiera ser que le encontremos otro uso, como por ejemplo los carros de control remoto, los cuales permiten restringir la velocidad en base a qué tanto presionamos la palanca del control remoto. Igualmente, se que has visto películas de ciencia ficción (Parque Jurásico, Terminator, etc.), el movimiento de los rostros de los robots es mediante el uso de valores analógicos (posterior conversión a digital).

Parte del funcionamiento que iremos a exponer dentro de este tema será dado por el uso de los microcontroladores Picaxe. Obviamente, daremos por sentado que ya conoces su utilización, solo especificaremos algunos detalles básicos de funcionamiento para conversión de valores Analógicos hacia Digitales.

Un microcontrolador Picaxe es técnicamente como los demás microcontroladores, teniendo unidad de procesamiento, memoria, y medios de Entrada-Salida de datos, pudiéndose programar acorde a nuestras necesidades, pero, la diferencia radica en la facilidad de programación de los chips Picaxe, así como su puesta en funcionamiento dentro de un circuito, pues se puede programar directamente en el circuito usado sin tener que hacer para ello nada especial, solamente ubicarlos cables adecuados (Revolution Education, 2011a).

¿Por qué se recomienda el uso de este tipo de dispositivos? Porque la otra opción es el uso de algunos circuitos digitales conocidos como ADC (Analogic – Digital – Converter), presentando las ventajas y desventajas del uso ya sea del Picaxe, como del ADC:

  • El Picaxe se puede programar acorde a nuestras necesidades, con el uso de un lenguaje muy básico (o bien, diagramas de flujo).
  • Picaxe admite un trato un tanto más “rudo” respecto al ADC, sobre cargas electrostáticas, programación directa, etc.
  • Picaxe cuenta con un simulador para verificar el funcionamiento antes de trasladarlo a un circuito ante Protoboard.
  • El costo de los chips Picaxe ha disminuido considerablemente, representando una ventaja sobre cuántos ADC puedes llegar a quemar por manejos incorrectos de voltaje, o por cargas electrostáticas.
  • Picaxe permite (gracias a programación) establecer umbrales e identificar ciertos parámetros acorde a nuestras necesidades.
Tras experiencia personal de utilización, los circuitos ADC son un tanto “especiales” sobre su funcionamiento, de entrada, no soportan el exceso de voltaje, o bien, utilizar un dispositivo de entrada que sobrepase cierto rango de amperaje. Además, por ser circuitos de tipo CMOS (Metal Óxido Semiconductor Complementario) son sumamente sensibles a la electricidad estática, implicando con esto que se queman sumamente fácil”. Por ello prefiero utilizar los microcontroladores Picaxe.

Empecemos con una primera práctica, la cual está muy sencilla, pero sentará las bases de lo que intentaremos posteriormente.


Práctica 1. Parte teórica.

En ésta práctica lo que haremos será encender dos LED's conectados con el Picaxe, acorde al umbral que tendremos en base a un potenciómetro conectado.

Primero, lo haremos con el simulador de Picaxe, y posteriormente veremos el armado práctico y puesta en funcionamiento.

Para empezar con la programación, abriremos el programa de Picaxe “Programming Editor”, el cual tenderemos a comprender que ya sabes utilizarlo, y que conoces aunque sea los aspectos más esenciales de su funcionamiento.

Figura 1. Apertura y pantalla inicial de “Programming Editor.

Acto seguido, procederemos a ubicar el código, en este caso, mediante “Basic” (recuerda que existen otras opciones de programación). El código a insertar dentro del programador es el siguiente:

Figura 2. Código ubicado dentro del programador.

Explicamos algunas fracciones del código:

main:
            readadc 1,b1
            if b1<75 then light1
            if b1<175 then light2
            goto light3

En la fracción anterior básicamente estamos planteando la lectura del valor a través del Pin 1 del Picaxe, guardando el valor en el registro (variable) “b1”), si el valor leído es menor a 75 brincaremos a la etiqueta “light1”, si está en un rango de entre 75 y 175 entonces brincaremos a la etiqueta “light2”. Para finalizar, si el rango de valores está entre 175 y 255 (límite de Picaxe), brincaremos a la etiqueta “light3”.

De aquí es importante destacar el uso de la función “readadc” especificada en base a lo que dice la página Web de Picaxe (Revolution Education, 2011b):

  • Su sintaxis: READADC canal, variable.
  • Canal es una variable o constante que especifica el pin que fungirá como lector del valor análogo.
  • Variable almacenará el valor leído como un byte (8 bits).
  • Este comando permite la lectura de valores análogos sobre el pin de entrada especificado.
Continuamos con las fracciones de código:

light1:
            high 0
            low 2
            low 4
            goto main

Dentro de ésta fracción únicamente encendemos el Pin 0, apagamos el Pin 2 y apagamos el Pin 4, al finalizar regresamos a la etiqueta que definimos como “main”. La siguiente fracción es muy similar:

light2:
            low 0
            high 2
            low 4
            goto main

Lo mismo que en la anterior, pero aquí apagamos el Pin 0, encendemos el Pin 2, y apagamos el Pin 4. La última fracción (que resultará muy obvio en su funcionamiento):

light3:
            low 0
            low 2
            high 4
            goto main

Igual que las fracciones anteriores, salvo el apagado del Pin 0, el apagado del Pin 2, y el encendido del Pin 4. La siguiente tabla explicará mejor la estructura de funcionamiento acorde a los valores leídos:

Valor leído
Pin 0
Pin 1
Pin 2
Menor “<” a 75
Encendido
Apagado
Apagado
Entre 75 y 175
Apagado
Encendido
Apagado
Entre 175 y 255
Apagado
Apagado
Encendido

Bien, hasta aquí no creo que haya problema, pues ha estado muy simple la explicación del código. Ahora vamos a correr el simulador del “Programming Editor” de Picaxe, para ello, daremos click al botón correspondiente a “Simulate”:

Figura 3. Ejecución de la simulación.

Al empezar la simulación (si no tuviste contratiempos con la sintaxis, o errores de lógica), tu pantalla tendrá que verse de la siguiente forma:

Figura 4. Programa en simulación y corriendo.

Observa a partir de la figura anterior lo siguiente:

  • El Pin 0 estará encendido al momento de iniciar el programa, pues estamos en un rango inferior al valor de 75 que especificamos en la codificación.
  • El Pin 2 y Pin 4 están apagados, pues no hemos alcanzado el umbral de funcionamiento.
  • El Pin 1 está especificado como entrada, y no deberemos tocarlo, al menos para esta simulación.
Bien, es momento de probar que funciona todo bien, para ello, iremos a incrementar los valores especificados sobre el Pin 1 “A1” en este caso, dando click al botón con la flecha a la izquierda y a la derecha. La siguiente figura muestra sobre dónde debemos dar click:

Figura 5. Flechas de incremento o decremento de valores.

Bien, de momento estamos con un valor de cero “0”, incrementemos poco a poco los valores hasta alcanzar el valor de 80, señal que indicará un cambio en el Picaxe, y por lo tanto, se apagará el Pin 0 y se prenderá el Pin 2. La siguiente figura demuestra éste caso:

Figura 6. Cambio de valor, y cambio de Pin encendido en el Picaxe.

Como puedes ver en la figura anterior, el cambio realizado al valor de “A1” implicó un cambio dentro de los pines de Picaxe, señal que está funcionando todo bien. Si cambiamos el valor a 180 (superior a 175) entonces el Pin 2 se apagará, y se encenderá el Pin 4. Veamos la siguiente figura, donde se ha demostrado que se ha realizado este cambio:


Figura 7. Cambio de valor de Pin 2 y Pin 4.

Con esto creo ha quedado claro el punto sobre la simulación en Picaxe. Si lo deseas puedes modificar los valores de regreso y probar con ello su funcionamiento.

Pasemos ahora a la parte práctica de la programación que hemos realizado.


Práctica 1. Parte práctica.

Antes de iniciar la prueba de ésta práctica en un entorno real, es conveniente destacar que se supone ya sabrás programar los microcontroladores Picaxe, por ello no daremos mayor detalle en ello. La lista de materiales que necesitarás:

  • Una tabla de prototipos. 
  • Un microcontrolador Picaxe 08M. 
  •   Tres resistencias:
    • Una de 22k, 1/4 w, y 5% de tolerancia (o menor).
    • Dos de 10k, 1/4 2, y 5% de tolerancia (o menor).
  • Un potenciómetro de 50k.
  • Alambre para conexión (el de tu elección).
  • Tres LED's del color de tu elección (como salidas).
  • Una fuente de alimentación de 5 Volts (pilas, fuente de poder, etc.).
Lo primero que realizarás será el armado del siguiente circuito electrónico (previa carga del código indicado en la parte teórica dentro del Picaxe):


Figura 8. Circuito a armar.

¿Por qué estamos utilizando otra resistencia de 10k para su conexión con el Picaxe? Básicamente, nosotros sabemos que a nivel de código, Picaxe acepta valores entre 0 y 255 (un byte técnicamente), pero, estos valores van en relación al voltaje que recibe el Picaxe, 5 Volts. Para ello, tendríamos que hacer (más o menos, no es exactamente así) una regla de tres:

255 en Picaxe = 5 Volts
80 en Picaxe = x

x = (80 en Picaxe * 5 Volts) / 255 en Picaxe
x = 1.56 Volts

Lo anterior implica que, por lo menos, a nivel teórico (es un tanto subjetivo y depende de muchas variables este valor), si en el código de Picaxe hubiéramos puesto un umbral de 80 sobre la lectura del valor análogo, tendríamos que ingresar 1.56 Volts para que se realizara la activación de este umbral.

Por ello, no podemos ingresar un Potenciómetro que nos restrinja valores de 0 a 5 Volts, pues su valor sería sumamente grande a nivel resistivo. Más fácil, conectamos una resistencia a la salida del potenciómetro, y su terminal de entrada la ocuparemos para obtener el voltaje. ¿A qué vamos con esto? Que utilizando esta resistencia de 10k si podremos variar aproximadamente el voltaje que ingresará en el Pin 1 del Picaxe.

Físicamente se tendrá que ver de la siguiente forma (más o menos) en la tabla de prototipos (o circuito impreso, como tú decidas):

Figura 9. Circuito físico transferido a tabla de prototipos.

Al momento de conectar la alimentación del circuito, se tendrá que prender el primer LED, correspondiente al Pin 0:



Figura 10. Primer LED encendido.

Pasará lo mismo conforme vayamos variando el giro en relación al potenciómetro dentro del circuito:


Figura 11. Segundo LED encendido.


Figura 12. Tercer LED encendido.

Con esto concluimos la primer práctica (teórica-práctica) del funcionamiento de Picaxe como conversor Analógico-Digital, demostrando la sencillez de la misma. En la siguiente entrada mostraremos un uso más práctico sobre éste funcionamiento y su vinculación con una computadora, mediante un lenguaje de programación.

Recuerda que se pueden armar cursos acorde a tus necesidades, tanto de sistemas computacionales, tecnologías educativas y educación en general, o bien, apoyo para tareas y desarrollo de proyectos conforme lo necesites. Actualmente ofrecemos los siguientes cursos ya disponibles y armados para su impartición conforme lo necesites:

  • Programación en Java con Swing.
  • Programación de sistemas Pocket PC.
  • Programación de Sistemas Palm.
  • Programación en lenguaje C (fundamentos de programación).
  • Programación en PHP.
  • Fundamentos de Bases de Datos.
De igual forma, la enseñanza es en línea, se resuelven dudas vía correo electrónico, chat, foros de discusión y distintos medios para que siempre estés comunicado y al pendiente de todo, y dispones del material completo vía Internet para su disposición cuando lo quieras, al momento que quieras y cuantas veces quieras. Para ello contamos con una plataforma de enseñanza en línea con varias herramientas para que estudies y aprendas de la mejor forma, a tu ritmo, conforme tus necesidades y enfatizando la comunicación en todo momento.

Pregunta por los cursos existentes o bien, si deseas, se te puede armar un curso acorde a tus necesidades de aprendizaje. Recordándote, tenemos (y podemos armar) cursos de los siguientes temas:

  • Sistemas Computacionales.
  • Control asistido por computadora.
  • Paquetes informáticos.
  • Lenguajes de programación.
  • Bases de datos.
  • Tecnologías educativas.
  • Educación en general.
Gracias y pues nos vemos pronto.


Referencias.

El siguiente listado de referencias son tanto las utilizadas para la búsqueda de la información teórica, como para los fundamentos de programación de Picaxe: