miércoles, 14 de febrero de 2018

Cargar programas a un ATMega328P (micro de Arduino)

Comparto mi experiencia y les enseño a subir programas a un microcontrolador ATMega328P.

Sucede que varios proyectos que tengo en mente, requieren el uso de algún microcontrolador, y no he encontrado en el mercado (hablando de Argentina) un microcontrolador mas eficiente y barato que el famoso ATMega328P utilizado por el famosisimo Arduino UNO y NANO.

En mi caso, hice uso de un Arduino UNO para cargarle el bootloader al nuevo micro, comprado en Mercadolibre por $50. Tengan en cuenta que algunas tiendas ya vender el ATMega328P con el bootloader pre-cargado, y deberán saltearse este paso.  

Para no confundir las explicaciones, les paso la pagina oficial de Arduino donde explica detalladamente como cargar el bootloader a un nuevo micro.


Tengan especial cuidado de seleccionar correctamente las opciones que indica el tutorial del link, de otra manera, van a llevarse muchos intentos fallidos.

Luego de tener el bootloader cargado, sucedía que mi Arduino UNO es una copia china, con el micro de tipo SMD, con lo que no me permitía desmontarlo para cargar sucesivos programas como indica el tutorial.
He visto en la red que algunos pudieron solucionar este problema poniendo un capacitor de 10 uF entre la pata "Reset" y "Gnd" del arduino UNO.

Por mi parte, después de intentarlo de varias maneras, pude solucionarlo utilizando un conversor USB-TTL. Son relativamente baratos y casi todos los que experimentan con electronica tienen uno.
Ese es el tipo de conversor que utilice.

Lo conectaremos como les dejo en la imagen siguiente (click en la imagen para ampliar):

Si tienen dudas, el ATMega328 tiene conectado un cristal de 16 Mhz con sus respectivos capacitores de 22 pF a masa. La alimentación la hacemos desde el propio conversor USB-TTL. No es necesario que sea un "FTDI", yo lo hice con los conversores "comunes" que muestro en la imagen de mas arriba.
Tx del conversor, conectado a RX del micro.
Rx del conversor, conectado a TX del micro.

Ahora presten atención:
Con esta conexión, y el bootloader cargado, en el IDE de Arduino tendrán el programa que quieran subir, seleccionen el puerto Serie donde tienen conectado el conversor y pongan "Subir". 
El IDE de arduino mostrara el mensaje "compilando", y cuando el mensaje cambia a "subiendo", instantáneamente opriman el botón en la protoboard para resetear el microcontrolador. (pulsen el botón aproximadamente por un segundo)

Si no hacen esto, raramente el programa se subirá al micro. Algunos conversores USB-TTL tran un pin llamado "RST", quien es el encargado de resetear al microcontrolador, pero en mi caso no me funcionaba y debia hacerlo manualmente como expliqué.

Espero hayan entendido el procedimiento. En mi caso particular, no me funcionó colocarle el capacitor de 10 uF como dije mas arriba, ni tampoco funcionaba conectando la patilla RST del conversor al ATMega328P. Por eso opté por esta opción "manual", y tiene la ventaja de que pueden subir continuamente los programas que esten probando, solo con una conexion serie TX-RX.
Digo esto porque la conexion ISP, cuyos 6 pines tienen una disposicion molesta necesitan de un conector especial.

Saludos!



No hay comentarios:

Publicar un comentario