Como grabar un PIC16Fxx con el JDM con un portátil

El programador JDM es una solución de bajo coste para la introducción de un programa en la memoria flash interna del PIC. Además de los planes originales de Jens Dyekjær Madsen, también hay muchos esquemas modificados en la web, entre elllos el TE20, el TE20x o el grabador_smt1.De destacar R1 y el voltaje de D5 son modificaciones adicionales que son necesarias para todos los PICs recientes que vienen con una capacidad de programación de bajo voltaje (que, de hecho, el programador JDM no utiliza y debe ser deshabilitada con la resistencia pulldown en el pin RB3) y un valor ligeramente incrementado para el diodo Z para cumplir las especificaciones de programación del PIC16F87x y PIC18F452.

Web oficial: http://www.jdm.homepage.dk/newpics.htm

Este programador es alimentado por el puerto RS232 del PC y funciona con niveles RS232 <±8.6V.

Dispositivos que soporta JDM
24CXX, EEPROM
PIC12C5XX
PIC12C67X
PIC16C55X
PIC16C61
PIC16C62X
PIC16C71
PIC16C71X
PIC16C8X
PIC16F8X
Tarjetas ISO con ASF

4 diodos 1N4148
1 diodo Zener de 8.2v
1 diodo Zener de 5.1v
1 capacitor electrolítico de 100uF x 40v
1 capacitor electrolítico de 22uF x 16v
2 transistores BC547B
1 resistencia de 10k, ¼ de watt
1 resistencia de 1.5k, ¼ de watt.
1 zócalo de 18 pines
Es un circuito muy simple, pero que tiene varias ventajas que lo hacen muy interesante:

>Se conecta al puerto serie, que generalmente en cualquier PC esta disponible.
>Existe software gratis para utilizarlo, incluso bajo DOS, LINUX y por supuesto Windows (incluido WinXP)
>Sirve para programar varios modelos de PICS (PIC12C5XX, 12C67X, 24CXX, 16C55X, 16C61, 16C62X, 16C71, 16C71X, 16C8X, 16F8X entre otros ) y también para leer/escribir varios chips de memoria (24Cxx ). Otros microcontroladores también pueden ser programados mediante un adaptador.
>Dispone del conector ICSP (In-Circuit Serial Programming) para la programación de microcontroladores sin necesidad de desmontarlos de su placa de circuito impreso.
>No necesitamos de una fuente de alimentación externa, ya que se alimenta directamente del puerto de la PC.
>Su costo es muy bajo, los componentes necesarios difícilmente nos cuesten mas de 3 o 4 u$s y son muy fáciles de conseguir.

Una aclaración importante antes de seguir adelante: el hecho de que el programador se conecte a un puerto serie RS-232 de la PC no significa que el protocolo utilizado para comunicar la PC y la placa del programador sea este, de hecho se puede adaptar este circuito para conectarlo al puerto paralelo e incluso USB. Como dijimos antes, los tiempos, y las señales necesarias para programar los PICs dependen de un protocolo especifico desarrollado por Microchip, por lo que utilizamos el puerto como vehiculo para llevar los bits al PIC y para obtener las tensiones necesarias para la programación, pero utilizando un programa y un protocolo especifico para esta tarea

DESCRIPCION DEL CIRCUITO.

La tensión de la entrada de reloj está limitada mediante D3 y D4 sin que sea necesaria ninguna resistencia limitadora.

Los diodos a Vdd internos del PIC protegen también las entradas. Los dispositivos 24CXX no tienen ningún diodo a Vdd, y D4 es absolutamente necesario.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Programador PIC y EEPROM JDM 13.5

Q2 aumenta el voltaje de salida a niveles RS232. Entonces funciona como base común. R2 es una resistencia pull-up que no resulta fundamental debido a la corriente limitada del puerto RS232. Q2 también limita la tensión de la entrada al PIC cuando DTR es de nivel alto. Entonces funciona como un seguidor de emisor y se reduce la tensión de la entrada a Vdd-0.7V.

Cuando DTR se pone a nibel bajo, Q2 trabaja invertido y la ganancia sólo es aproximadamente 5. La resistencia equivalente es aproximadamente 10K/5 = 2K. Esto reduce la corriente de entrada de datos al PIC junto con la resistencia R2. Cuando DTR cambia de nivel bajo a nivel alto, Q2 cambia de modo invertido saturado a seguidor de emisor activo. Esta causa un pico sobre los datos, pero el pico está extinguido cuando cambia el reloj. Esto garantiza que las eeprom no pasen al modo de prueba.

Q1 trabaja en cierto modo como seguidor de emisor también, pero se satura cuando es activo. En ese caso su tensión CE es muy baja. El transistor activa o desactiva la tensión para MCLR.

TXD alimenta a C2 para que alcance 13V a través de la unión base-colector de Q1. El tensión en C2 está limitado por el zener D6 y es aproximadamente 5.1V+8.2V = 13.3V. Cuando TXD está a nivel alto la tensión en MCLR no excede esta tensión. La base sube a una tensión mas alta, pero Q1 se satura y la salida no excederá la tensión de colector.

C2 proporciona la Vpp y la Vdd a través del diodo zener D6. Pero Vdd sólo aparece si el voltaje en C2 es aproximadamente de 13V. Si tiene 8V, entonces será posible controlar la alimentación mediante RTS y DTR. La alimentación C2 se reduce aproximadamente a 8V por medio de TXD, DTR y RTS mantenidas a nivel alto durante aproximadamente 0.5s.

El diodo extra, D5, limita la tensión sobre TXD. En principio se utiliza para alimentar la eeprom cuando DTR y RTS están a nivel alto. También garantiza que MCLR es mayor de -0.2V cuando TXD está a nivel bajo. El diodo D7 pone MCLR a nivel bajo cuando TXD está a nivel bajo.

El PIC también es alimentado por RTS mediante D3. La corriente de entrada «on data» también alimenta el PIC a Vss. Ambas señales necesitan ser negativas para alimentar al dispositivo con la máxima corriente posible. C2 alimenta al PIC si las señales son positivas. RTS y DTR no son criticas al programar el 24CXX, porque el diodo D5 pone Vss a nivel bajo.

Al programar un PIC sólo D3 puede utilizarse. RTS y DTR necesitan ser de nivel bajo para alimentarlo, y no deben estar a nivel alto durante demasiado tiempo. La corriente es excepcionalmente alta al leer ceros del PIC, y el tiempo de lectura activo con DTR a nivel alto debe ser corto. Para compensar el corriente utilizada, un nivel bajo de be aplicarse a RTS durante un tiempo extra.

Si reemplaza D5 y D7 por un BC557B,es importante que sepa que la base-emisor se comporta como un un diodo zener. Sólo D7 pueden actuar como un zener, y MCLR necesita ser conectada al emisor, mientras el colector del BC557B se conecta a Vss. El transitor trabaja en cierto modo como seguidor de emisor, y proporciona a MCLR una corriente alta extra.

Esta corriente alta no es necesaria, y puede incluso dañar al BC557B si el programador se conecta con alimentación externa. Conectar el programador a una fuente de alimentación externa siempre puede causar problemas, y no se permite para el uso normal.

El peligro de conectar una fuente de alimenmtación externa está en que el diodo zener interior reduce el voltaje a 5.1V. Puede ser perjudicial que se aplique una tensión demasiado alta. Las conexiones externas pueden causar problemas también debido a tensiones negativas. Vdd se conecta a la masa del PC y pueden provocarse cortocircuitos si un circuito externo se conecta con la masa del ordenador, por ejemplo a traves de la toma de tierra. Una fuente de alimentación externa también puede dar problemas de seguridad si los PIC u otros dispositivos no se insertan adecuadamente

Generalmente este diseño funciona muy bien sobre puertos serie «estandard» ( de pc de sobremesa) pero ultimamente en los pc’s modernos o portatiles no termina de funcionar a traves de adaptadores usb a rs232 ( ya que en la mayoria de lso portatiles se ha eliminado este util puerto)

IC-Prog por Bonny Gijzen parece ser el software de grabación más flexible, ya que no solo soporta el JDM, sino muchos otros programadores. Se puede descargar aquí: http://www.ic-prog.com. Antes de empezar a programar cualquier chip, por favor, revisa tu circuito de programación en el menú Hardware Check .( Es Importante que no midas los voltajes con un osciloscopio o instrumentos similares que estén conectados a tierra como tu PC, ya que esto falsificaría los resultados de la medicon pues el JDM usa la conexión de tierra para Vdd).

Otros programadores que soportan el JDm y sus variantes: WINPIC800, WINPICPGM

Por tanto para probar el TE20 ,usaremos el IC-PROG y un multímetro con batería .Sigue estas instrucciones:

Ve a Settings->Hardware menu, ponlo en «JDM Programmer», selecciona el Puerto (COM1, COM2, …?), Selecciona Interface Direct I/O (bueno para Windows 9x) o API (Windows ME/NT/2000/XP). Comienza con I/O Delay 0, No inviertas ninguna señal:

Ahora selecciona el dispositivo correcto:: Settings->Device->Microchip PIC->PIC16F84)

Start Settings->Options, ve al sub-menú «Programming»

Habilita «Verfiy after programming» y «Verify during programming». La última opción asegura que se te notifiquen inmediatamente los errores de programación. La primera opción es especialmente necesaria para los derivados de PIC16F87xA, ya que IC-Prog no verifica estos chips durante la programación.

Ve al submenú «Misc», habilita «Vcc control for JDM» y selecciona «Realtime» en Process Priority

Ve a Settings->menú Hardware Check

Prepara tu multímetro y revisa los voltajes de tu programador.

Notas:

Cuando se deshabilita una señal, el voltaje cae hasta 0V muy, muy despacio, ya que los capacitadores no se descargan con una carga. Así que no estés pendiente de los valores de señales desactivadas, solo revisa las señales habilitadas.

Los voltajes cambiarán a los valores correctos y especificados cuando haya un PIC en el socket. El propósito de la revisión de hardware no es ver los voltajes correctos, sino asegurarse de que las señales puedan ser controladas (switched on/off) por tu PC. Si te quieres asegurar de que el voltaje no sea demasiado alto en la carga para verificar que el circuito esté correctamente cableado, conecta temporalmente una resistencia de 1k entre Vss y el «pin en pruebas».

¡¡¡Asegúrate de que no haya PIC en el socket de programación!!!

Pulsa sobre «Enable Data Out«: La caja de Data In debe ser automáticamente seleccionada para soporte de hardware (Data Out->Data In). Desconecta «Data out» de nuevo. No te preocupes si Data In se acciona en los siguientes tests, este es el comportamiento normal.

Pulsa sobre «Enable MCLR«, mide el voltaje entre Vss (Pin 12/31) y MCLR# (Pin 1) : ca. 14 V

Deshabilita todas las señales

Pulsa sobre «Enable Vcc«, mide el voltaje entre Vss (Pin 12/31) y Vdd (Pin 11/32): ca. 5 V
Si esta prueba falla, asegúrate de que la opción «Vcc control for JDM» esté activada en el submenú «Misc»(Settings->Options)
Deshabilita todas las señales y p

Pulsa sobre «Enable clock«, mide el voltaje entre Vss (Pin 12/31) y RB6 (Pin 39): ca. 5 V +/- 1 V, despues deshabilita todas las señales
Pulsa sobre «Enable Data Out«, mide el voltaje entre Vss (Pin 12/31) y RB7 (Pin 40): ca 5 V +/- 0.5 V
Ahroa enchufa el PIC en el socket de programación.
Start Command->Read All

Durante la lectura:
Mide el voltaje entreVss (Pin 12/31) y MCLR# (Pin 1) : ca. 13.7 V
Mide el voltaje entre Vss (Pin 12/31) y Vdd (Pin 11/32): ca. 5.1 V

No tiene sentido medir los voltajes de los otros pines, ya que se accionan muy rápido.

Nota: El programador JDM no funcionará cuando pruebes estos pines con un osciloscopio (GND->Earth problem)
Si no mides 13.7V entre Vss y MCLR cuando el PIC esté enchufado, puedes incrementar/decrecer el voltaje con el I/O Delay en el menú Hardware. Retrasos más bajos incrementan el voltaje, retrasos más altos decrecerán el

voltaje! Me di cuenta de que no se pueden alcanzar 13.7V cuando se accede al JDM a través de las funciones API de Windows

Start File->Open File: carga el firmware (archivo .hex ) en IC-Prog

Start Command->Program All

Ahora pasarán unos 3 min. hasta que el PIC esté programado. Si la escritura no funciona, IC-Prog lo notificará como «Verify failed» cuando esten marcadas «Verfiy after programming» y «Verify during programming» en Settings->Options->submenú Programming

Nota:Parece que con algunos PCs, el proceso de programación solo pasa cuando el pin 5 (GND) del enchufe SubD-Plug está conectado con el chásis de metal(tierra) del conector.
Después de que la programación esté hecha, tu PIC estará preparado 🙂

Solución de problemas
Compara tu circuito con el esquema y la base PCB una y otra vez- Revisa especialmente la polaridad de los diodos, capacitadores y transistores. Asegúrate de que las soldaduras estén bien (sin falsos contactos)
IC-Prog a veces se olvida alguna opción bajo circonstancias desconocidas (por ej. el retraso I/O y el número de puerto COM ). Así que si falla el proceso de quemado, asegúrate de tu configuración no se ha cambiado.

Prueba diferentes valores de retraso I/O

Usa la función de verificación de IC-Prog para asegurar que el firmware se haya quemado correctamente si ves que el PIC no funciona.

Si el voltaje MCLR# no fuera suficientemente alto (este problema se ha visto en portátiles, pero también en PCs con un puerto COM débil), puedes proporcionar este voltaje desde el exterior de 15-20v en los extremos de C1(de 100mf).Usa o dos baterías de 9V o un PSU que entrega al menos 15V. No hace falta ningún regulador ya que los diodos zener limitan el voltaje. No olvides la resistencia de 220 Ohm – que limita la corriente y protege el circuito JDM.

Si esta solucion no es suficiente para alcanzar la tension necesaria de programacion ,se puede probar con un amplificador RS2323 con alimentacion externa, tal vez sea un solucion drastica pero muchos usarios qeu lo han probado han tenido exito.

Si usted mira esta página, usted probablemente parece hice cuando traté de controlar a un programador autoimpulsado PIC con mi ordenador portátil. Sí, el puerto serie era el tipo » el poder extremo bajo » y wouldn ` la t proporciona bastante corriente para impulsar al programador. El problema era claro y la solución también . Yo podría haber modificado al programador para conseguir el poder de en otra parte, pero en el futuro yo me estrellaría con la misma pared. Necesité algo al interfaz el puerto serie de poder bajo al programador hambriento. No encontré nada en el web, entonces decidí diseñarlo solo. Otra vez, la MÁXIMA debía allí ayudar con uno de su ICS simpático tramado, el MAX205
El MAX205 es algo similar a MAX232 popular pero estos son las buenas noticias:
Ello hast 5 receptores y 5 conductores en vez de sólo 2 + 2. ¡¡Esto no necesita condensadores de bomba de precio externos!! Si usted une(conecta) las salidas TTL de los receptores RS-232 (al TTL) las entradas de los conductores RS-232, usted con eficacia consigue las señales originales con mucha corriente para cualquier dispositivo impulsado por serie con un circuito sumamente simple:

No olvide de conectar los conectores DB9 a tierra del circuito. Como se puede observar en el esquema las entradas del RS-232 no necesitan ser amplificadas , por lo que todo lo que tiene que hacer usted es alimentar el Max205 con 5v.(por ejemplo puede usar cualquier fuente en desuso y añadirle un simple 7805 de regulador).

4 comentarios en “Como grabar un PIC16Fxx con el JDM con un portátil

  1. Excelente informacion, he estado trabajando en esto pero uan no logro programar mi pic, es un 16F84A tengo un programador JDM bastante parecido a esto pero sin diodos y un solo capacitor y transistor. Probare las tensiones a ver si eso es lo que me esta fallando. Muchas gracias. Espero poder programar mi primer PIc llevo 1 semana en el intento.

  2. Os puedo decir que yo no he conseguido quemar un PIC con portátil ni con conversor USB-SERIE. Ni con ICprog, WINPIC800, WINPIC ni PICpgm.
    Solamente conseguía detectar mi programador en WINPIC800 y PICpgm, pero no grabarlo.
    Lo pude grabar con un PC sobremesa con puerto serie y WINPIC800 a la primera.
    Intentar buscar un pc con puerto serie antes de devanaros los sesos!

Deja una respuesta