Hasta ahora he estado usando un grabador de PIC comercial. Eso no tiene ningún interés, voy a construir uno casero. Me ha gustado el Pablin II, parece bastante bueno.
He visitado http://personales.ya.com/cepalacios/ProgramadorMarco.htm y he copiado el esquema del programador. El funcionamiento y configuración del Icprog105D están también explicados en esa misma página. Sin embargo he visto el foro de ARDE posts de gente quejándose de problemas con la alimentación y el funcionamiento del circuito. Efectivamente, este programador se alimenta a 13,5 Voltios y eso complica un poco encontrar un alimentador adecuado.
Analizando un poco el circuito se ve la razón de esa tensión de alimentación tan rara. Los PIC necesitan entre 11 y 13,5 V para MCLR/VPP durante la lectura o la grabación de su memoria interna. En el Pablin 2 del esquema de abajo esta tensión se consigue cuando cualquiera de las salidas D3 o D4 del puerto LPt están a 1. Entonces Q2 está saturado y corta a Q1 al poner R7 a masa (si no Q1 se se satura a gracias a +13,5 V a través de R6 y R7). Con Q1 cortado en la pata VPP aparecen los 13,5 V a través de R4 de 1K (que actúa de limitadora de corriente) y ¡el diodo led D4!. El diodo led D4, que no luce durante la programación porque la corriente que absorbe VPP es muy pequeña) tiene una caída de tensión típica de 1,5 V (si es rojo). Entonces tenemos que 13,5 V – 1,5 V = 12 V que es la tensión adecuada para VPP. Si usamos 12 V de alimentación en VPP solo tendremos 10,5 V, que está por debajo de las recomendaciones de MICROCHIP. Si alguien pone un LED verde en D4 (2 V de caída) o de otro color verá que el programador funciona cuando le da la gana porque la tensión que le llega a VPP no llega a 11 V..
Con esta pequeña modificación conseguimos los 12 V a partir de una alimentación de 12 V. Ya podemos reciclar los alimentadores de los móviles viejos o los del módem de 33K. Este es el esquema de la modificación:
Se trata de quitar el LED D4 del colector de Q1 de forma que la alimentación pasa sólo por R4 y va a VPP sin más caídas de tensión (excepto la caída en R4, pero como la corriente por R4 y VPP es muy pequeña no es apreciable). Para seguir teniendo señalización del estado de la grabación pongo en LED D4 en el colector de Q2 con una resistencia en paralelo de 1K (el único componente que hay que añadir). De esta forma el LED D4 se enciende DURANTE LA LECTURA o PROGRAMACIÓN, al contrario que en el Pablin 2 original. Me parece más lógico: LED rojo encendido PELIGRO no toques nada!! EL diodo en esta situación no interfiere para nada en el corte o la saturación de Q1 (resta 1,5 V pero la corriente sigue siendo suficientemente alta para saturarlo). La nueva resistencia R8 en paralelo con el LED sirve para evitar que la pequeña corriente que circula por D4, R6, R7 y base emisor de Q1 encienda débilmente el LED cuando no se está programando (Q2 cortado). Hace que la tensión en los extremos de D4, con esta pequeña corriente, baje de 1,5 V y ya no puede encenderse. Cuando Q2 conduce la corriente es mucho mas alta y se enciende sin problemas.
También he puesto un jack para aprovechar un alimentador viejo y un interruptor de encendido – apagado (ON/OFF) para evitar tener que poner y quitar el PIC con tensión.
Esta es una foto de mi versión del Pablin 2 con un 16F876A pinchado y listo para ser programado:
He utilizado placa protoboard (de «topos») e hilo de 2 décimas aislado en teflón, creo que es la forma más rápida y segura de hacer prototipos. Pueden verse unos jumpers de colores y un 7812, modificación de última hora, para poner o quitar diodos serie a la pata de masa del 7812, y poder variar la tensión de salida a 12,7 V ó 13,4 V. De esta forma puedo alimentar con 15V o más sin problemas.
Probado satisfactoriamente con: PIC18F252, PIC16F877A, PIC16F876A, PIC16F628A, PIC16F84, PIC16F84A
Fallos conocidos:
NO es posible programar los PIC16F628 si se configura la pata MCLR como I/O (casilla MCLR desactivada). Parece ser que el algoritmo de programación que usan tanto Icprog105D como WinPic800 NECESITAN resetear el PIC poniendo MCLR/VPP a 0. Si se pone el bit MCLR a 0 la pata MCLR/VPP no resetea el micro y la grabación falla siempre.