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

Volver a
página principal
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.
|