Simulación con Proteus

No podemos dejar pasar la simulación de Arduino, como sabemos hay un numero muy grande de placas de Arduino con diferentes configuraciones y potencia de proceso, pero muchas veces no tenemos la placa con nosotros, o simplemente es mas sencillo depurar un programa en la PC que subir una y otra vez el fuente a la placa Arduino.
En este caso y con la gran trayectoria que tiene el Proteus, vamos a hacer un pequeño tutorial de simulación de Arduino.

Como primer paso debemos descargar el proteus, tenemos una versión demo disponible en la web y también tenemos alguna otra opción educativa, etc..., en este caso dejare el link a la web de Labcenter Electronics, este es el Link a Download

Obviamente tendremos que descargar también el Arduino IDE para realizar la programación y la compilación del programa. 
Recordemos que el código compilado nos dará un fichero con extensión .hex, este sera el que incluiremos en el Proteus para la simulación.

Antes de comenzar con el Proteus, debemos tener las librerías de Arduino, si bien el proteus viene con los microcontroladores de Atmega, esta no es la forma en la que se presenta en Arduino, para ello buscamos la librería y nos traerá una representación gráfica del arduino que en su interior tiene el Atmega.

Lamentablemente para nosotros, no hay librerías oficiales para Arduino, librerías que bajemos del sitio de proteus, arduino, o algún repositorio oficial. 
En mi caso buscando en google con las palabras mágicas "Proteus Arduino Library" aparecieron varias opciones, tengamos en cuenta lo anterior, esta librería no es mas que un gráfico que representa el micro Atmega donde en su interior o en el contenedor del package hay un Atmega, por ello les digo que pueden usar directamente el atmega del proteus sin ninguna librería, pero de todas formas vamos a incluir la librería para ver las diferencias.
Después de buscar un poco encontré una en la pagina: http://www.electronicslovers.com/2015/12/arduino-nano-pro-mini-uno-12802560.html 
Pero pueden buscar otra que quieran.

El primer paso es descargar la librería, una vez descargada debemos ir a la ruta donde el Proteus guarda sus librerías y pegar en esa carpeta la que descargamos:

El archivo descargado:



La carpeta de la Liberia del Proteus en la PC:


Pegamos los archivos .IDX y .LIB en la carpeta LIBRARY:



Una vez terminado esto, abrimos el Proteus y buscamos Arduino en la librería:



NOTA: Claramente esta librería tiene solo dos modelos, aunque en la web decía que tenia mas, esto es lo que pasa al no tener librerías oficiales, pero pueden buscar otra librería e incluirla fácilmente.

Ahora podemos abrir el Arduino IDE, en mi caso voy a simularlo para un Arduino MINI porque es uno de los que trae la librería de Proteus.
Entramos a preferencias Archivo->Preferencias, y tenemos que tildar las opciones Compilación y Subir, dentro de Detalle de Salida, esta configuración nos mostrara en el spool del IDE el archivo temporal donde se encuentra el archivo compilado de forma temporal. 
Es recomendable no cerrar el ArduinoIDE hasta no copiar el .hex en otra carpeta para su simulación en proteus.



Realizamos el programa, en este caso el Blink LED para demostrar que funciona, y luego con la tilde de verificación vamos a compilar el código.


Como podremos ver en el spool tenemos la ruta donde esta Blink.ino.hex (el ultimo registro que vemos), debemos ir a buscar ese archivo y podríamos copiarlo en otro lado.

Primero vamos a tener que habilitar la opción de archivos o carpetas ocultas en el explorador de archivos:



Siguiendo la ruta mencionada mas arriba: C:\Users\NombreUsuario\AppData\Local\Temp\build61b4cef66da87d4ce238804c8e3422e1.tmp/Blink.ino.hex podremos encontrar nuestro archivo. 

Luego vamos al proteus y buscamos el archivo donde lo hemos copiado, y con doble click en el Arduino virtual del ISIS seleccionamos el .hex y simulamos el programa.


Ahora procedemos a la simulación:


Como podremos ver estamos analizando con el osciloscopio la señal que sale del pin 13 del Arduino como lo hemos programado en el IDE.