[Versión 8.1 de Proteus]
Detengamos la simulación que comenzamos en el punto anterior con el botón ‘STOP’ y luego volvamos a ejecutar la simulación con el botón ‘Avanzar un fotograma’ de los controles.
Volvamos a escoger en el desplegable el código de nuestro programa main.ino.
Observemos que en la parte inferior de la ventana se visualiza la variable línea.
Nos muestra su dirección y su valor (cero al iniciar el programa). Pulsemos repetidamente sobre la tecla ‘Avanzar un fotograma’ hasta que observemos que el valor de la variable cambia.
Si seguimos con la simulación paso a paso, veremos que vuelve a cambiar y recupera el valor 0 y 1 de forma sucesiva según se ejecute el programa.
[Versión 8.1 de Proteus]
Proteus nos permite activar el histórico de simulación y observar todas las órdenes que enviamos al display LCD. Primero tenemos que activar la ventana donde se muestra el histórico de la simulación utilizando la opción ‘Simulation log’ del menú ‘Depuración’.
La ventana con el histórico de la simulación se muestra en la zona inferior de la pestaña ‘código fuente’.
Ahora vamos a definir que mensajes se muestran. Para ello utilizaremos la opción ‘Configurar los diagnósticos’ del menú ‘Depuración’.
En la ventana de diálogo que se abre, seleccionaremos el dispositivo LM016L (el display LCD) y expandiremos todas sus opciones dando al signo ‘+’ que figura a su izquierda.
Nos colocaremos encima de la opción ‘Controller Diagnostics’ y seleccionaremos la opción ‘Completo’ en la zona inferior.
Volveremos a ejecutar la simulación paso a paso y veremos como la ventana del histórico se actualiza con las órdenes que se han enviado al display LCD a medida que avanzamos por el programa.
[Versión 8.2 de Proteus]
Hasta ahora hemos visto todas las capacidades que nos ofrece Proteus para simular el comportamiento de un equipo Arduino. Una vez que hemos depurado nuestro programa y que todo funciona correctamente, Proteus también nos posibilita la carga de nuestro código en la placa Arduino real. En este artículo vamos a ver todos los pasos de este proceso.
Como es lógico, el primer paso consiste en unir la placa Arduino receptora del programa con nuestro ordenador PC mediante el cable USB. Cómo a estas alturas es seguro que ya hemos instalado Proteus y el entorno de programación de Arduino en nuestra computadora, todos los drivers están listos y sólo tenemos que conectar los dos equipos con el cable USB.
En cuanto lo hagamos tenemos que ver que las luces de nuestra placa se encienden, puesto que toman la alimentación directamente del puerto USB.
Los drivers instalados han tenido que asignar un puerto serie (COM<n>) al que se ha conectado nuestro equipo Arduino. Nuestra primera labor consiste en averiguar qué puerto se le ha asignado. Para ello consultaremos el administrador de equipos. Como dependiendo de la configuración de nuestro ordenador, el administrador de equipos puede estar visible en un menú u en otro, lo mejor es dejar que Windows lo busque por nosotros. Para eso abrimos el menú inicio y en el cuadro de búsqueda de la zona inferior escribimos 'Administrador de dispositivos'. Windows se encargará de buscarlo y nos lo oferecerá en los resultados.
Pulsando sobre el resultado, se abrirá el administrador de equipos de Windows. En la parte izquierda seleccionaremos en el árbol de opciones 'Administrador de dispositivos' y en la zona derecha la opción Puertos (COM y LPT):
En la rama de esta opción tiene que aparecer nuestro equipo y el puerto que se le ha asginado. En nuestro caso como hemos utilizado una placa Arduino Uno podemos observar que el puerto serie ha sido el COM7.
Una vez que ya sabemos el puerto serie al que se ha conectado nuestro Arduino, ya podemos volver a nuestro proyecto de Proteus e ir a la pestaña "código fuente". Ahí tendremos todo nuestro código que ya sabemos que funciona correctamente cuando hemos ejecutado su simulación en el entorno Proteus.
Vamos a configurar la información de nuestra conexión a la placa Arduino en Proteus. Para ello usaremos el menú Construir->Configurar proyecto.
En la ventana de diálogo que se abre, podemos comprobar en la opción Port que ya está disponible el puerto asignado a nuestra placa (en nuestro caso el COM7).
Tenemos que configurar todas las opciones de acuerdo con la placa Arduino que estamos utilizando. En nuestro caso, los datos mostrados a continuación se refieren al Arduino Uno.
Una vez hecho esto, ya podemos utilizar la opción que nos ofrece Proteus de enviar el programa a nuestra placa Arduino. Para ello seleccionamos el menú Construir->Enviar
Al hacerlo, en la zona inferior de la ventana de Proteus, podemos ver el progreso de la operación.
Sólo nos resta destacar una cosa más. En la pantalla de configuración de Proteus hemos seleccionado en nuestro caso la velocidad (port speed) de 115200 baudios. No sé bien la razón por la que me he encontrado placas Arduino Uno que se conectan a diferentes velocidades por el puerto de programación. Tal vez algún lector quiera dejarnos en nuestra página de facebook (https://www.facebook.com/pages/Hubor-Proteus/294446180592964?ref=hl) la explicación del método dónde se selecciona en Arduino esta velocidad para que lo podamos compartir con todos vosotros.
Si la velocidad seleccionada no coincide con la de nuestra placa Arduino, el programa no se cargará y recibiremos un mensaje de error después de un par de minutos.
En este caso, conviene probar con varias velocidades diferentes hasta que lo logremos. Las velocidades estándar para probar son: 9600, 14400, 19200, 38400, 57600, 115200, 128000.
Esperamos que esta lección os haya resultado interesante.
[Versión 8.1 de Proteus]
Veamos un ejemplo de simulación que le ayudará a familiarizarse con el uso de los instrumentos virtuales.
Utilizaremos el botón ‘Abrir ejemplo’ de la sección ‘Empezar a trabajar’ desde la pantalla de inicio.
En la ventana emergente que aparece elegiremos la categoría ‘VSM for AVR’ y entre los resultados el ‘Arduino Motors Example’
Y podremos disponer de un complejo ejemplo totalmente operativo donde se controla con un Arduino dos motores y un terminal.
Ejecutemos la simulación y accionemos el pulsador A superior.
Podremos observar que en el terminal aparece:
Y que el primer motor se pone en marcha lentamente.
Si accionamos cuatro veces más el pulsador, la velocidad se irá incrementando y aparecerán en el terminal las órdenes enviadas.
Si accionamos ahora varias veces sobre el pulsador B superior, la velocidad del segundo motor se incrementará.
Detengamos la simulación y coloquemos el osciloscopio virtual en nuestro diseño. Para ello utilizaremos el botón de la barra de herramientas lateral ‘instrumentos’ y en el panel que aparece seleccionaremos ‘oscilloscope’.
Y lo colocamos sobre nuestro área de trabajo.
Ahora debemos unir el terminal A del osciloscopio con el cable rotulado PWMA y el terminal B del osciloscopio con el cable rotulado PWMB.
Volvemos a la pestaña del código fuente y ejecutamos la simulación con la tecla PLAY. El osciloscopio y el terminal se tienen que mostrar en blanco.
En la ventana emergente activa situada en la zona inferior derecha podemos utilizar los pulsadores A y B superiores para ir incrementando la velocidad de los motores y observar como varía la frecuencia de la señal PWM ue controla los motores en el osciloscopio.
Además, podemos aprovechar la ventana emergente activa intermedia para ver al mismo tiempo como se aceleran los motores.
Y todo de un simple vistazo y en la misma ventana.