huborarduino.com

La web de Hubor para la simulación de Arduino con Proteus

Banner Guia Programacion Arduino Con Proteus

[Proteus versión 8.5]

Una de las limitaciones que se encuentran muchos diseñadore al utilizar Arduino UNO es el escaso número de salidas analógicas que nos ofrece (3) y la peculiar naturaleza de las mismas (tecnología de modulación de ancho de pulsos, PWM). En nuestro curso de programación tuvimos ocasión de estudiar este tipo de señales en nuestra Lección 6.

Por eso hemos querido presentar este proyecto que sirva a nuestros alumnos para aumentar el número de salidas analógicas disponibles en el Arudino UNO y practicar con un buen número de conceptos diferentes que vimos a lo largo de nuestro curso. Vamos a utilizar el bus i2c para conectarnos con encapsulados que realicen por nosotros la tarea de gestionar las salidas analógicas.

Para aquellos que necesiten repasar los conceptos de uso del bus i2c pueden consultar nuestra Lección 10. Y los que quieren ver un ejemplo práctico de su uso pueden consultar nuestra Lección 11.

El integrado que hemos seleccionado para gestionar nuestra salida digital es el LTC2631 de la casa Linea Technology. Podemos consultar toda la información de este producto en el siguiente enlace: http://cds.linear.com/docs/en/datasheet/2631fc.pdf. Su compra se puede hacer desde la web de Farnell. Este integrado tiene múltiples versiones, como se muestra en la tabla siguiente dependiendo del rango de voltaje de la salida analógica (0-2,5V o 0-4,096V), la resolución (8,10 ó 12 bits) y otros criterios más.

Proy013 001

Además, tiene una ventaja adicional, que nos permite utilizar varios de ellos en un mismo diseño direccionándolos mediante hardware. Si no necesitamos utilizar el pin que hace las funciones de referencia externa, podemos usar hasta 9 dispositivos. Para entender cómo es posible obtener nueve direcciones diferentes con sólo dos pines, tenemos que fijarnos que por cada pin podemos obtener tres estados: conectado a GND, conectado a VCC o flotante. Si necesitamos utilizar el pin que hace las funciones de referencia externa, entonces limitaremos el número de direcciones diferentes a 3. En las siguientes tablas se ven todas las posibles combinaciones y la dirección lógica que hay que se genera.

Proy013 002

El proyecto que presentamos utiliza cuatro dispositivos. Pero seguro que si el lector necesita más o menos, no tendrá ninguna dificultad en ajustar el diseño a sus necesidades.

Proteus, nos suministra los modelos para simular este dispositivo en todas sus variedades.

Proy013 003

El proyecto se completa utilizando el terminal virtual para monitorizar el valor de las salidas que enviamos a nuestros cuatro dispositivos.Si fuera necesario se puede consultar nuestra Lección 4 para aprender el funcionamiento de los terminales virtuales en la simulación con Proteus.

También hemos utilizado la libreria de Hubor.cpp  para gestionar las funciones de tiempo de forma más sencilla y sin las limitaciones que el uso de la función delay() impone de tener nuestro microprocesador "fuera de juego" durante la espera. El uso de las funciones de tiempo se puede consultar en nuestra Lección 17 y las funciones de la librería Hubor.cpp en nuestra Lección 22.

Además, nos hemos ayudado de estructuras para dividir el valor que debemos mandar al convertidor para que se encarge de poner la salida analógica al valor de tensión deseado. El uso de las estructuras se explica con detalle en la Lección 20

Armados con todo este arsenal de herramientas, ya podemos ver el diseño de nuestro proyecto (pulsando sobre la imagen se puede ver ampliado):

Proy013 004

 

Nuestro diseño se compone de la placa principal del Arduino.  Del bus i2c, conectado a los pines AD4 y AD5 de nuestro Arduino, con sus resistencias de pull-up. Del instrumento virtual (i2cdebbuger) que nos ofrece Proteus para monitorizar toda la actividad que se genera en el bus. El instrumento virtual (terminal virtual) que también pone a nuestra disposición Proteus para hacer las funciones de consola. Y, por último, de cuatro convertidores LTC2631-HZ12. Cada uno de ellos direccionado de forma diferente (hemos rotulado junto a cada uno su dirección en binario y en hexadecimal para facilitar su reconocimiento). En las salidas hemos conectado otros cuatro insturmentos virtuales (voltímetros de corriente continua) para ver gráficamente la tensión generada en nuestras salidas analógicas.

Si ejecutamos la simulación, podremos ver todo nuestro montaje en pleno funcionamiento (nuevamente, pulsando sobre la imagen se puede ver ampliada).

Proy013 007

 

La potencia de Proteus, nos permite una simulación perfecta para que los estudiantes puedan estudiar y entender en profundidad el funcionamiento de todo el proceso. En el terminal virtual vemos los cuatro valores enviados, en los voltímetros los voltajes generados en cada salida y en el analizador del bus i2c todo el tráfico de datos que se genera en el bus.

Por útlimo, vamos a presentar el código que posibilita todo este proyecto.

Proy013 008

Proy013 009

Proy013 010

Proy013 011

El código completo se puede descargar desde el siguiente enlace: Código fuente completo

En la primera parte enlazamos con las librerías, definimos las estructuras, costantes y variables que usaremos en el programa.

En la función setup() configuramos las comunicaciones e inicializamos las variables.

En la función loop() escribimos toda la lógica de control de nuestro proyecto. Usamos las funciones de tiempo de la librería Hubor.cpp para realizar las escrituras cada 500mseg (se puede variar esta frecuencia con la constante TiempoLecturas para ajustar más o menos la velocidad a nuestro gusto y a las capacidades de procesamiento de nuestro PC). Asignamos los valores de cada salida analógica a las variables (cómo es obvio no nos hemos complicado mucho en este caso, puesto que sólo es un ejemplo para comprender el funcionamiento de las salidas analógicas). Enviamos las órdenes correspondientes por el bus i2c a los cuatro convertidores. Y finalizamos sacando por la consola la información de los valores enviados.

Como siempre, esperamos que este proyecto les resulte interesante.

 

Comparte este artículo en redes sociales

Submit to FacebookSubmit to Google PlusSubmit to TwitterSubmit to LinkedIn


Esta página es propiedad de Hubor.

2014.

¡Atención! Este sitio usa cookies y tecnologías similares. Si no cambia la configuración de su navegador, usted acepta su uso. Ampliar información