Objetivos

 

  • Veremos como detectar si podemos recuperar un Arduino UNO dañado.
  • En caso de que sea recuperable veremos como cambiar el chip principal.
  • Después veremos como programar en este chip en blanco la secuencia de bootloader necesaria.
     

    Material requerido.

     

      Tienda España
    Vista principal Arduino UNO
    Integrado para arduino ATMEGA328

     

    Arduinos que no funcionan

     

    Por lo que suelo ver, la mayor parte de los que nos gusta enredar con esto de la electrónica y los Arduinos solemos ser gente entre desordenada y caótica, pasando por diferentes grados de desequilibrio mental.

    Y claro, pretender que tengas la mesa limpia y pulcramente dispuesta es algo que no suele estar a nuestro alcance, lo que acaba conllevando no solo caos de nuestro laboratorio sino también mas de un cortocircuito provocado por algún cable que anda rodando por la mesa con la lamentable muerte prematura dé componentes valiosos.

    Naturalmente con el fin de año hacemos propósitos de enmienda y de ser mas ordenados el año que viene, pero al final la vida es como es, y si nosotros fueran serios y ordenados habríamos estudiado algo presentable como derecho o contabilidad y no electrónica o informática.

    Así que al final solemos tener por algún cajón restos de varios componentes en diversos grados de destrozo  que se supone que en algún omento recuperaremos para piezas o algún proyecto loco que ya se nos ocurrirá. Y entre ellos yo tengo media docena de Arduinos UNO que no funcionan y que llevaba tiempo queriendo revisar para cambiarles el chip a ver que tal y mira ha llegado el momento.

    Vamos a ver en esta humilde sesión como hacer para cambiar el chip ATmega 328 que es el corazón de nuestro Arduino UNO R3, para intentar recuperar esa placa que todos tenemos tirada por ahí a la espera de una oportunidad para revisarla.

    Como los UNOs son de bajo coste al final acabamos comprando otro pero no esta de mas saber como cambiar y reprogramar el chip para salvar alguna de nuestras viejas placas y en especial en centros educativos, que yo se que suele haber cajones llenos de Arduino fundidos por alumnos atolondrados.

    Es algo sencillo y mucho menos complicado de lo que solemos pensar, así que confío que esta sesión sirva para evitar que vayan a la basura muchas placas que seguramente son recuperables.

    Recuperando Arduinos UNO R3

     

    Como todos sabéis el corazón del Arduino UNO es el chip grande que se ve en la foto:

    Es un procesador ATmega de la serie 328, que incluye todas las características de nuestros queridos Arduinos y que como podéis observar viene montado en un zócalo para que se pueda sustituir cuando sea necesario.

    Detalle de chip y zocalo

    ¿Y porqué se han tomado las molestia los diseñadores de montarlo en zócalo para que se pueda sustituir? Pues sencillamente porque cualquier error o problema (Como cortos y similares) puede acabar friendo el chip integrado y vieron interesante que se pudiera cambiar.

    En realidad, solo hay dos problemas serios en nuestros Arduinos UNO:

  • Fundir el chip central.
  • Fundir el controlador de comunicación USB / Serie.[/fancy-ul] [/three-fourth]
  •  

    Si quemamos el integrado principal ATMEGA328, basta con reemplazarlo y listo , para eso esta el zócalo, pero si quemamos el controlador de comunicaciones, entonces si que tenemos que tirar la placa porque este chip esta soldado a la placa por SMD y no hay forma de cambiarlo (Podéis verlo justo a la derecha del conector de USB en la foto superior)

    ¿Basta entonces con reemplazar el chip para probar? Pues no. Eso seria demasiado fácil.Hay que reemplazar el chip y asegurarte de que este tiene cargado el bootloader de Arduino.

    ¿El que? Diréis. Verás, lo que le permite ejecutar programas de Arduino a nuestras placas es un pequeño programa instalado en el arranque del microprocesador que cuando encendemos lanza el ultimo programa instalado pero a la vez controla si estamos queriendo instalar otro programa nuevo y en caso afirmativo lo recibe y guarda.

    Este pequeño programa es lo que se llama el Bootloader y es una de las cosas por los que Arduino es tan sencillo de usar. Por eso para que el chip se comporte como un Arduino necesitamos asegurarnos de que el bootloader este instalado porque si no, no vamos a comernos una rosca.

    Algunos proveedores te suministran el chip ATMEGA328 (Nosotros mismos vaya) unas veces vacío y otras con el bootloader ya programado. Pero como a nosotros nos va enredar y los chips cargados valen el doble que los que no, vamos a dedicar esta sesión a ver como cambiamos el  chip y como podemos programarlo nosotros mismo para que tenga el arranque necesario.
     

    Detectando la averia

     

    Como ya decíamos antes,  para saber si podemos reparar nuestro antiguo Arduino UNO cambiando el chip tenemos que conectar el Arduino dañado a nuestro PC e ir al menú de herramientas\Puerto COM:

    Seleccionar

    Si con el Arduino conectado, no te lo vé, o sea no te aparece aquí el puerto diferente del COM1, la cosa tiene mal arreglo porque todo apunta a que tienes quemado el chip USB y eso no se puede sustituir.

    Si por el contrario si te reconoce el puerto serie (Digamos como COM4 o así) tenemos muchas posibilidades de recuperar la placa sin mas que cambiar el procesador y cargarle el bootloader.

    Hay dos maneras básicas de grabar el bootloader en un chip Atmega328:

  • La pro: Montando un circuito externo y es práctico si vas a grabar 50 chips (Para venderlos con el bootloader cargado, por ejemplo) pero que requiere algunos condensadores y resistencias y hasta un cristal de cuarzo, por lo que hoy por hoy no vamos a entrar en este método.
  • La fácil, usando un Arduino UNO en funcionamiento que usaremos como programador que es la que vamos a usar porque creo que es con mucho la que os va a resultar mas sencilla y rápida de usar.[/fancy-ul] [/three-fourth].
  •  

    Conectando y programando el chip

     

    Los fabricantes de microprocesadores proporcionan siempre un sistema mas o menos sencillo,  de programar sus chips sin grandes requerimientos de hardware. En el caso de ATMEL que es quien fabrica los chips de Arduino, propone un sistema básico de programación llamado ICSP (In Chip Serial Programmer) que es básicamente una puerta serie con algo mas, que podemos usar para cargar el famoso bootloader del que os llevo hablando ya un rato.

    Y (Sorpresa) vuestro Arduino UNO incluye una puerta con este interface, que podemos usar para programar el chip, a la parte de la derecha y que increíblemente esta rotulada como ICSP:

    Puerta de programacion in chip

    La idea es que vamos a usar un Arduino UNO que funcione correctamente para reprogramar el nuevo chip a través del conector ICSP del Arduino dañado.

    Para eso tenemos que empezar por sacar el chip del Arduino dañado y reemplazarlo con un nuevo chip en buenas condiciones. Como no estoy muy seguro de si sois unos manazas conviene tener algunas consideraciones previas para evitar que destrocéis el chip al meterlo o sacarlo.

    En un capitulo previo  mostramos como meter y sacar estos chips, y os recomiendo que lo reviséis si es la primera vez, pero a grandes rasgos os repito aquí el procedimiento:

    Para sacar el ATMEGA328 del zócalo:

  • Usad un destornillador plano fino, introduciéndolo poco a poco por un lateral y girad suavemente el ventilador sin levantarlo, y repetid la operación por el otro extremo con suavidad.
  • No intentéis sacarlo por completo levantando solamente un lateral. Si lo hacéis doblareis las patas del otro lado y podéis inutilizar el chip. No es caro, pero es molesto tener que comprar otro por manazas.
  • Repetid la operación con suavidad hasta que el chip salga sin forzarlo, recordad que luego habrá que volverlo a insertar, así que poned empeño en no doblarle las patitas.[/fancy-ul] [/three-fourth]
  •  

    Aquí os dejo un pequeño video de la operación de sacar el chip, por si a alguno os da un ataque de pánico, veréis que no es nada complicado, ni peligroso para vuestro Arduino si tenéis una mínima precaución.

    Y para dejar el trabajo hecho, aquí os dejo un mini video mostrando como se vuelva a insertar cuando acabemos con el:

    Una vez que hayas cambiado el procesador, tenemos que hacer las algunas conexiones entre las placas (Pocas), Si llamamos Master es el Arduino funcional y Slave al que queremos programar el bootloader, podemos aplicar el siguiente esquema:

    Esquema de conexion
     

    Programando el chip

     

    Vale pues, solo nos queda programar el bootloader y eso, queridos amigos, es la parte mas fácil.

    Conecta el master al USB y arranca el IDE Arduino. Asegúrate de tener seleccionado la puerta y modelos correctos de tu Arduino en el menú de herramientas

    Arduino IDE

    • Para los que van a por nota: Cuando seleccionas el modelo de placa arduino aquí se refiere a la placa a la que vas a programar el boot (Slave) y no a la que programa (Master) como es habitual.
    • Podría ocurrir que estuvieras intentando reprogramar el boot de un modelo diferente digamos de un MEGA mediante un UNO como ISP y entonces seleccionarías aqui el modelo MEGA.
    •  

      El programa para quemar el boot en nuestros Arduino viene incluido en los ejemplos, con el nombre ArduinoISP. Cárgalo

      Seleccion del ejemplo para carga

      Una vez cargado el programa del grabador seleccionamos en herramientas la opción

      \\herramientas|\Programador Arduino as ISP\Arduino as ISP

      Menu arduino

      Y finalmente, ya solo queda iniciar la grabación del bootloader con la orden de quemar el boot:

      Seleccion de menu arduino

      Enseguida veréis que hay una serie de luces moviéndose y veréis un mensaje en la parte inferior como este:

      Mensaje consola arduino

      Finalmente obtendréis el mensaje de que se ha completado el quemado:

      Mensaje de progreso

      Y eso es todo. Ya podeis desenchufar, soltar todos los cables y probad vuestro nuevo Arduino uno recuperado si todo ha ido correctamente. Probad a grabar algo y ya me direís.
       

      Resumen de la sesión

       

    • Hemos visto como probar si podemos recuperar un arduino UNO dañado.
    • Si el problema parece el procesador, vimos como reemplazarlo y ademas como reprogramar el bootloader
    • Si todo va bien habremos salvado una vieja placa para mejor uso. 
    •  

      Deja una respuesta