Programador Pics compatible ProPic2
De Asociación de Robotica y Domótica de España (A.R.D.E.)
Construccion de un programador avanzado, compatible con el programador ProPic 2 comercial.
Enviado por: Alaclan
Fichero Original: Descargar
Fichero en PDF: Visualizar
Tabla de contenidos |
Introducción.
Se han presentado en artículos anteriores otros programadores muy simples aunque limitados. Presentamos ahora un programador semi-profesional, capaz de programar una cantidad ingente de dispositivos actuales y futuros, gracias a sus posibilidades de ampliación, desde memorias EEPROM de varias familias hasta microcontroladores de diversos fabricantes y, en general, casi cualquier dispositivo programable mediante un protocolo serie. Y todo ello, manteniendo la compatibilidad con el programador en el que está basado, el ProPic Programmer, por lo que se puede utilizar con la mayor parte del software de programación de dispositivos existente. Teniendo en cuenta esto, su precio es razonable, unos 15 euros con zócalos estándar y menos de 50 euros con ZIF (zócalo de fuerza de inserción nula).
Además del zócalo incluido en el programador, que permite programar los dispositivos más habituales, se ha añadido un conector a través del cuál, mediante adaptadores muy simples, se pueden programar otros dispositivos menos utilizados, o en encapsulados diferentes, por ejemplo dispositivos para montaje superficial. A través de este conector, también se pueden programar dispositivos en el propio circuito (ICSP), y será la vía para adaptarse a otros dispositivos programables en serie que aparezcan en el futuro. La tabla 1 muestra los dispositivos programables actualmente (los que aparecen en negrita los he probado personalmente).
| Dispositivo: | Zócalo | ICSP
| Adapt.
|
| PICs:
12C508, 12C508A, 12C509, 12C509A, 12CE518, 12CE519, 12C671, 12C672, 12CE673, 12CE674, 16C61, 16C62A, 12C62B, 16C63, 12C63A, 16C64A, 16C65A, 12C65B, 16C66, 16C67, 16C71, 16C72, 12C72A, 16C73A, 16C73B, 16C74A, 16C74B, 16C76, 16C77, 16F83, 16C84, 16F84, 16F84A, 16C433, 16C505, 16C620, 16C621, 16C622, 16C622A, 16F627, 16F628, 16C715, 16F870, 16F871, 16F872, 16F873, 16F874, 16F876, 16F877, 16C923, 16C924 | SI
| SI
| NO
|
| 24C01A, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, 24C128, 24C256, 24C512 | SI
| NO
| NO
|
| 59C11, 59C22, 59C13 | NO
| NO
| SI
|
| MDA2062, NVM3060 | NO
| NO
| SI
|
| 93C06, 93C46, 93C56, 93C57, 93C66, 93C76, 93C86 | NO
| NO
| SI
|
| AK6480, CXK1011, CXK1012, CXK1013, PDG011, TC89101, TC89102 | NO
| NO
| SI
|
| P87LPC764, P87LPC767, P87LPC768 | NO
| SI
| SI
|
| SX28AC | NO
| SI
| SI
|
| 25010, 25020, 25040, 25080, 25160, 25320, 25640, 25128, 25256 | NO
| NO
| SI
|
| AT89S53, AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535 | NO
| SI
| SI
|
El circuito.
El esquema del programador aparece en la figura 1. Su diseño se basa en el ProPic Programmer, y utiliza las mismas señales del puerto paralelo que él para comunicarse con el PC. Sin embargo, no se puede decir que sea absolutamente compatible, ya que algunas señales están invertidas respecto al original. El motivo es adaptarse a los componentes disponibles, como luego se verá, y no supone un gran problema, ya que la mayor parte de los programas existentes para grabación de chips permiten invertir las señales a voluntad (entre ellos el que yo recomiendo, ICPROG). Por otro lado, se ha corregido un fallo de diseño que hacía imposible que el ProPic Programmer funcionara correctamente (al menos el esquema disponible de dicho programador).
|
|
| Figura 1
|
Las señales del puerto paralelo utilizadas son D0 para enviar la señal DATA al PIC (o el dispositivo que se está programando), D1 para la señal CLOCK, D2 para activar la tensión de alimentación del PIC (Vdd) y ACK para recibir la señal DATA enviada por el PIC. D3, D4 y D5 activan la tensión de programación en distintas patillas del zócalo. Esto es necesario para evitar que llegue una tensión tan alta (13V) a una patilla de un PIC que no está preparada para soportarla (en otros programadores se obvia este problema, presuponiendo que el PIC aguantará esa tensión).
Los inversores U1A a U1F tienen por objeto aislar el circuito del PC, para evitar que éste pueda dañarse por error. Originalmente, en lugar de inversores se utilizaron buffers no inversores de tipo 74LS34, pero la dificultad de encontrar dicho chip me decidió a substituirlo. Como contrapartida, todas las señales están invertidas, por lo que habrá que configurar el software de grabación teniendo en cuenta este detalle, como luego veremos. Quien encuentre un 74LS34 puede ponerlo en el lugar de U1, en cuyo caso el programador será totalmente compatible con el ProPic Programmer, y por tanto no habrá que invertir ninguna señal en la configuración del software.
La conmutación de la alimentación del PIC se consigue mediante los transistores T1 y T2 y los componentes adyacentes. T3 se encarga de activar el LED que indica que el PIC está alimentado. T8 y los componentes que lo rodean sirven para acoplar las señales DATA IN y DATA out del puerto paralelo a la señal DATA IN/OUT del PIC. Vpp1, Vpp2 y Vpp3 se conmutan mediante los bloques construidos en torno a T6-T7, T9-T10 y T11-T12 respectivamente. Cuando se activa cualquiera de estas señales, gracias a los diodos D3, D4 y D5 se activa también la señal Vppx y se enciende el LED D6, indicador de que la tensión de programación está activada.
La fuente de alimentación es muy simple. La tensión que viene del transformador se rectifica y se filtra mediante PR1 y C1. U2 estabiliza esta tensión a unos +13V para obtener la tensión de programación, Vpp, ya que su patilla de masa está a aproximadamente +1V respecto a la masa del circuito, gracias a D8 y D9. A partir de esta tensión y mediante U3 obtenemos Vcc (+5V).
El conector CON2, cuya función será permitir tanto la programación de dispositivos en el propio circuito (ICSP) como el acoplamiento de adaptadores para algunos dispositivos, utiliza 6 de sus pines para las siguientes señales:
| PIN 1 | Vdd: Tensión de alimentación para el PIC, controlada por la señal D2 del puerto paralelo, para dar o no alimentación al PIC según se necesite. |
| PIN 2 | Vppx: Tensión de programación del PIC, que será activada por cualquiera de las señales D3, D4 ó D5 del puerto paralelo. Esto garantiza que, sea cual sea el dispositivo que se programe, el software activará la tensión de programación. |
| PIN 3 | Data: Señal DATA I/O del PIC. Para enviar datos al PIC se utiliza la señal D0, y para recibir datos la señal ACK del puerto paralelo. |
| PIN 4 | Clock: Señal de reloj para el PIC, controlada por la señal D1 del puerto paralelo. |
| PIN 5 | Masa: Señal Vss del PIC, correspondiente a 0V. |
| PIN 6 | Vcc: Alimentación para futuras ampliaciones y adaptadores. Vcc es +5V siempre que el programador esté encendido. |
Realización práctica.
El diseño final aparece en la figura 2 (con zócalo de fuerza de inserción nula) y en la figura 3 (con zócalo normal). Como se ve, en la zona inferior de la placa hay bastante espacio desaprovechado. Esta zona se dejó porque sobraba espacio y podrá aprovecharse en el futuro para posteriores ampliaciones.
|
| Figura 2
|
|
| Figura 3
|
| PP2.DOC | Este documento en formato Word 2000. |
| FOTOLITO.TIF | Trazado de las pistas para crear un fotolito. |
| SERIGRA1.TIF | Serigrafía de componentes con zócalo ZIF. |
| SERIGRA2.TIF | Serigrafía de componentes con zócalo normal. |
| PICPOS.TIF | Posición en que debe colocarse cada tipo de dispositivo. |
| LISTA.HTM | Lista de componentes y presupuesto en formato HTML. |
| SCH.GIF | Esquema del circuito. |
| CABLEADO.GIF | Esquema de cableado. |
| ICPROG.GIF | Configuración de ICPROG para este programador. |
Para la construcción de la placa de circuito impreso se seguirán los pasos normales. Sólo apuntaré la importancia de que el zócalo ZIF (en caso de que se utilice) entre con suavidad en su sitio, ya que si entra forzado, luego no funcionará correctamente, lo cual es una pena teniendo en cuenta su precio. Los conectores deben quedar sólidamente fijados para evitar que se rompan con el uso. No es necesario utilizar zócalo para U1, aunque es muy recomendable, puesto que este es el componente que hará de “fusible” en caso de que cometamos un fallo en la utilización del programador.
Para los más observadores, diré que yo utilicé un zócalo ZIF de 32 patillas que tenía por ahí, en lugar del de 40, como se ve en las figuras 4 y 5. No hay ningún problema en hacerlo, ya que las patillas que faltan no se utilizan, aunque es una tarea para manitas, ya que habrá que hacer ciertos retoques en el zócalo para que se puedan pinchar dispositivos de 40 patillas. También tracé unas líneas con rotulador indeleble sobre el zócalo que me sirven de guía a la hora de insertar un dispositivo, algo que recomiendo encarecidamente, ya que si se pincha un PIC en el lugar incorrecto, el resultado puede ser la muerte del programador, del PIC, o de ambas cosas.
|
| Figura 4
|
|
| Figura 5
|
|
|
| Figura 6
|
|
| Figura 7
|
|
| Figura 8
|
Utilización.
El programador PP2 está pensado como un dispositivo de uso intensivo. Puede estar encendido y funcionando 24 horas al día sin problemas, y por tanto estará conectado siempre a un puerto paralelo del PC. Sin embargo, si sólo se dispone de un puerto paralelo, habrá que conectarlo y desconectarlo con frecuencia, para lo cual es bueno conocer ciertos detalles. El puerto paralelo no está preparado para conectar y desconectar dispositivos “en caliente”, es decir, que en teoría habría que apagar el PC y el dispositivo cada vez que se vaya a conectar o desconectar. Sin embargo, apagar el PC cada vez es un trastorno, así que el programador se ha diseñado de forma que un par de segundos después de apagarlo no quede ningún tipo de tensión residual en las patillas del conector paralelo. Por otro lado, al utilizar lógica TTL-LS no es previsible que se produzca ningún daño en él si recibe señales estando apagado. En definitiva, que si esperamos unos segundos después de apagar el programador, podemos conectarlo o desconectarlo del puerto paralelo sin problemas. Eso sí, si se conecta o desconecta estando encendido, se pueden producir daños en el puerto paralelo del PC, así que habrá que ser muy prudente en este sentido.
Por otro lado, por motivos parecidos, nunca se debe insertar o extraer un dispositivo programable estando presentes en el programador las tensiones de alimentación o de programación para dicho dispositivo. Por ello se incluyeron en el montaje los LEDs D1 y D6, indicadores respectivamente de que está activada la tensión de alimentación o la de programación. NUNCA se debe insertar o extraer un dispositivo programable en el zócalo mientras uno de estos LEDs esté encendido. Tampoco se debe encender o apagar el programador con un dispositivo programable pinchado en el zócalo, ya que en el encendido o apagado se pueden producir señales espúreas que podrían incluso borrar el contenido de la memoria del dispositivo.
Por tanto, la situación correcta para insertar o extraer un dispositivo programable es con el LED D7 (POWER ON) encendido y los LEDs D1 (Vdd) y D6 (Vpp) apagados. Esta situación sólo se consigue con el programador encendido y con el software de grabación correctamente configurado y funcionando.
Si bien cada cual puede utilizar el software de grabación que mejor se adapte a sus necesidades, yo recomiendo ICPROG 1.4, que es freeware y funciona perfectamente (de hecho, no me ha fallado una sola vez con este programador). Se puede bajar de su website. Una vez instalado, en el menú SETTINGS – OPTIONS, en la sección LANGUAGE elegimos ESPAÑOL. A continuación, en el menú AJUSTES escogemos TIPO HARDWARE (se puede hacer directamente pulsando F3) y aparece la ventana de la figura 9. Todas las opciones deben quedar como en la figura 9, salvo el puerto, en el que habrá que marcar el que hayamos utilizado, pulsando OK para finalizar. Si se ha utilizado para U1 el 74LS34 en lugar del 74LS04, deberán dejar todas las señales sin invertir, es decir, todas las casillas en blanco.
|
| Figura 9
|
|
| Figura 10
|
Por último, quiero recalcar la importancia de insertar el dispositivo programable en la posición correcta, dada la tendencia de los transistores T7, T10 y T12 a incinerarse cuando no se hace así. En la figura 11 aparecen las plantillas que indican la posición correcta para cada dispositivo, en el zócalo ZIF, o en el zócalo estándar.
|
| Figura 11
|









