Buenos Aires - Argentina
 

GPIC USB - PROGRAMADOR PIC POR PUERTO USB

 

Esquema electrónico del programador.

En esta primera parte del programador PIC por puerto USB se realiza una descripción del esquema electrónico.

 Figura 1: Circuito electrónico del programador USB

Descripción del circuito electrónico

El esquema de la figura 1 corresponde al programador de microcontroladores Pic por puerto Usb, su diseño es simple y sencillo. Lo podemos dividir en tres bloques fundamentales bien definidos:

Figura 2 : Bloques del programador Usb

 
Bloque 1: Microcontrolador


El primero y más importante está constituido por el microcontrolador 18F2550 (IC2), es el encargado de la comunicación por el puerto USB con la PC por intermedio de la interfaz de programación, establece la transferencia de datos con los microcontroladores soportados y activa las tensiones de VDD y VPP.

 

 Figura 3 : Circuito del Pic 18F2550

                       

Los pines 15 y 16 (RC4 - RC5) del puerto C del Pic conectan con la ficha correspondiente para la transmisión y recepción de los datos vía USB. Los pines 2 y 3 (RA0 - RA1) del puerto A se destinan como interfaz de comunicación del protocolo ICSP entre el programador y los microcontroladores soportados por éste, a través del conector ICSP (terminales 1 y 2, figura 1). Los datos por el pin 2 son bidireccionales, sincronizados por una señal de reloj con salida por el pin 3.

Los pines 23, 24 y 25 (RB2 - RB3 - RB4) del puerto B los utilizamos para el control de la tensión VPP de programación. Según el estado de estas salidas obtenemos diferentes tensiones en la salida VPP del conector ICSP (terminal 3, figura 1).

El pin 26 (RB5) del Pic lo utilizamos como una salida para controlar los estados de la tensión VDD.

Continuamos con los pines 11, 12 y 13 (RC0 - RC1 - RC2) del puerto C, son utilizados como salidas para los leds de visualización del funcionamiento del programador.

Comenzando con el led denominado "VDD", este se encenderá con el suministro de esta tensión. Tenemos tres estados posibles, según la configuración establecida desde la interfaz de usuario en la PC:

A- Sólo se suministra tensión VDD a los microcontroladores soportados durante los procesos de lectura, grabación, verificación y borrado.

B- Suministro de tensión constante, para poder alimentar a los circuitos durante las pruebas (sólo circuitos con bajo consumo)

C- No se suministra tensión VDD hacia los microcontroladores soportados, una fuente externa debe proveer la alimentación.

El led denominado VPP, se enciende durante el suministro de dicha tensión durante todos los procesos. Desde la interfaz de programación en la PC podemos configurar el suministro de esta tensión de dos formas:

A- Sólo se suministra tensión VPP a los microcontroladores soportados durante todos los procesos.

B- Suministro de tensión MCLR post-procesos, para "arrancar" al microcontrolador sin tener que desconectar la ficha ICSP.

Por último el led denominado USB, se enciende cuando se establece la comunicación con el puerto USB y es reconocido el programador. Volviendo sobre el Pic 18F2550, éste debe ser grabado en un principio para su funcionamiento. El programa para este microcontrolador podemos dividirlo en dos partes: un programa residente en un block de memoria del Pic, comúnmente llamado bootloader, encargado de "chequear" la existencia del Firmware correspondiente al conectar el programador al puerto USB. En caso de no encontrarse, el led denominado USB comenzará una secuencia de encendido en forma intermitente. En caso contrario, el firmware tomará el control y el led quedará encendido en forma continua.

La gran ventaja de utilizar este sistema se debe a que sólo una vez debemos programar el microcontrolador 18F2550, en lo sucesivo los cambios y actualizaciones del firmware se podrán realizar directamente desde la interfaz de usuario en la PC.

Para finalizar este bloque, el pin 17 (RC6) del puerto C, lo utilizamos para generar una señal que, junto con el buzzer BZ1 emite unos "beeps" cada vez que pulsamos los botones de comando para lectura, grabación, verificación y borrado desde la interfaz de programación. Es opcional su implementación y puede ser activado o desactivado desde la misma interfaz.

Bloque 2: Conversor DC - DC

En un comienzo me planteé qué diseño usar para el conversor de tensión, si implementarlo de forma totalmente independiente o utilizar el Pic para esta tarea generando un pwm por software, más los componentes externos necesarios. Me decidí por la primera opción por varios motivos: el circuito integrado utilizado MC34093, es un conversor especializado para esta función, de muy bajo costo, ampliamente difundido, que figura en las listas de componentes de casi todos los comercios de electrónica. Es autónomo, no depende del firmware grabado en el 18F2550, quiero decir con esto que podemos chequear su funcionamiento y la tensión de salida del conversor (en las pruebas) sin necesidad de tener el Pic en la placa del programador ya que no depende de éste. Además nos permite, si fuera necesario, regular la tensión de salida con sólo variar el valor de una resistencia: R3 o R4.

El valor del choque L1 no es crítico, puede estar comprendido entre 220 uH y 680 uH sin ningún tipo de inconveniente.

El circuito se alimenta con 5 volt suministrados por el puerto USB y a la salida de TP2 obtenemos una tensión continua de aproximadamente 14 - 14.5 volt necesarios para alimentar el bloque 3 (figura 2).


 

                                                            Figura 4 - Circuito del conversor DC DC

Las resistencias R3, R4 junto con R5 forman un divisor resistivo conectado al pin 5 del MC34093, este lazo de realimentación estabiliza la tensión de salida ya que es comparada con una tensión de referencia interna, como podemos observar en la figura 5. En la salida del integrado pin 1, obtenemos una onda variable en ancho de pulso (pwm) en relación al consumo exigido luego de la rectificación, lógicamente dentro de unos límites.

Los estados de conmutación On Off en el pin 1 del MC34093 junto con L1 producen la elevación de la tensión, el diodo D1 y los capacitares C3, C4 se encargan de la rectificación. El capacitor C2 establece la frecuencia del oscilador interno.

                                                                                                               Figura 5 - Diagrama interno del MC34063

Bloque 3: Tensiones VPP y VDD

Podría haber utilizado un solo transistor para tratar la tensión de programación VPP, pero estaríamos bastante limitados. La idea era tener una salida Vpp única y más flexible, que proporcionara la tensión normal de programación, la opción de una tensión MCLR post programación y por último que ya estuviera pensada para los microcontroladores que trabajan con 3.3 volts que serán incorporados en el futuro. Esto lo podía obtener utilizando un amplificador operacional, precisamente el CA3140 con entradas mosfet y salida bipolar, que trabaja bien con alimentación de simple vía, pero lo más importante en cuanto a la elección es que está preparado para obtener una tensión de salida diferente independientemente a la tensión suministrada sobre el pin 7.

                                                                                                 Figura 6 - Circuito que controla las tensiones VPP y VDD

Con un diodo Zener sobre el pin 8 (STROBE) se consigue de forma simple y práctica modificar el valor de la tensión de salida por el pin 6. En la figura 7 podemos ver la información que brinda el fabricante del CA3140 para adaptar la salida a niveles compatibles TTL independientemente de la tensión V+ en el pin 7.

Figura 7

En el programador he adaptado el circuito para manejar las tensiones de 3.3 volts para esta gama de Pics que se irán incorporando en próximas actualizaciones. Está conformada, como podemos observar en la figura 6, por el Zener Z1 conectado al pin 8 del CA3140 en serie con el transistor NPN Q2 que trabaja como llave electrónica On-Off, de acuerdo a los niveles alto o bajo en la base. Con un nivel bajo sobre la base de este transistor el circuito está desconectado, por lo tanto la tensión VPP será la normal de 12.30 / 13 volts; por otro lado, con un nivel alto proporcionado por RB4 del 18F2550 a través de R13 el circuito se conecta, la tensión VPP en este caso será de 3.3 volts. De esta forma queda totalmente automatizado el suministro de VPP de acuerdo a los dispositivos seleccionados desde la interfaz de usuario en la PC.

Por el momento no es necesario implementar Z1, Q2 y R13, ya que es la primera versión base del programador y dicha gama de dispositivos aún no están incorporados. En este caso el pin 8 debe quedar sin conexión. Como pueden ver, la electrónica del programador ya está pensada para soportar de forma práctica a estos microcontroladores a medida que sean agregados.

Continuando con esta etapa, las entradas inversora y no inversora del amplificador operacional se conectan con RB3 y RB2 del microcontrolador; de acuerdo a los niveles detectados por las entradas del CA3140 la salida de éste conmutará entre un estado próximo a masa (0.3 volts) y Vpp, al finalizar proveerá una tensión adecuada al caso, si se eligió la opción "suministrar MCLR" desde la interfaz de programación. Todas las señales para la activación de las tensiones están sincronizadas desde el firmware del microcontrolador Pic.

Las resistencias R9 y R10 conectadas a masa evitan que queden al "aire" las entradas del operacional en caso que el microcontrolador 18F2550 no esté presente en su zócalo, de lo contrario tendríamos un estado de indeterminación a la salida. El capacitor C10 limita la banda pasante del operacional, es obligatorio junto con R11 y R12.

El pin 7 del CA3140 recibe la tensión de alimentación para su funcionamiento, proporcionada por el conversor Dc-Dc. El pin 4 se conecta a masa.

La tensión máxima en la salida del operacional pin 6 es aproximadamente 2 volts menor a la tensión de alimentación sobre el pin 7 (en caso que no se encuentre activado Q2, Z1).

Para finalizar la descripción y resumiendo, el terminal 3 del conector ICSP (figura 1) puede manejar cuatro estados de VPP:

1- una tensión próxima a masa (0.3 volts).

2- una tensión Vpp de aproximadamente 12.30 - 13 volts.

3- una tensión post programación MCLR.

4- una tensión Vpp baja de 3.3 volts.

Por último el transistor Q1 se encarga del manejo de la tensión Vdd, se encuentra conectado con la salida RB5 del microcontrolador. Un nivel alto en la base de Q1 lo mantiene bloqueado y un nivel bajo lo coloca en estado de conducción con salida por colector; el emisor de dicho transistor se conecta a + 5 volts suministrados por el puerto USB.

Extensión 3.3 Volts VDD2

Opcionalmente podemos anexar una línea auxiliar de 3.3 volts en el conector ICSP. Con un simple circuito (figura 8) obtenemos una tensión de salida de 3.3 volts en el emisor de Q3, con las mismas características de control que VDD. La entrada de tensión se produce por el colector de Q3, conectado a VDD, colector de Q2.


Listado de componentes del programador USB

IC1 = MC34063
IC2 = PIC 18F2550
IC3 = CA 3140
Q1 = BC327
Q2 = BC547

Vpp - Vdd - Usb = leds 3 mm

D1 = 1N4148

R1 = 0.22 a 0.47 Ohms
R2 = 180 Ohms
R3 = R4 = 12k
R5 = 2.2K
R6 - R7 - R8 = 33 Ohms
R9 - R10 - R11= 10K
R12 = 33K
R13 - R14 - R15 - R21 - R22 = 4.7K
R16 - R17 - R18 = 470 Ohms

C1 - C4 = 100 uf x 16v electrolítico
C2 = 390 pf
C3 - C5 = .1 uf (100n)
C6 = 10 UF x 16v electrolítico
C7 - C8 = 15 pf
C9 = .47 uf (470n)
C10 = .001 uf (1n)
C11 = 1 uf x 16v electrolítico

L1 = choque 330uH a 680uH
Xtal = cristal de 20 Mhz
Bz1 = (opcional) buzzer sin oscilador interno
F1 = requiere puente o picofusible

Conector USB
Conector ICSP

Esquema electrónico
 

 


EL SOFTWARE, FIRMWARE, HARDWARE, DOCUMENTACION SE ENCUENTRA PROTEGIDO POR LEYES Y TRATADOS RELATIVOS A PROPIEDAD INTELECTUAL.

Está permitida su difusión proporcionando el correspondiente enlace a este sitio Web.