Grabador De Pic
Enviado por jos_boni • 13 de Noviembre de 2012 • 1.684 Palabras (7 Páginas) • 444 Visitas
Programador por puerto serrie para PIC
La programación a través del puerto serie debe sortear un impedimento. Los niveles de tensión en los que trabaja el puerto serie pueden ir de -12V a 12V. Estos voltajes tienen dos problemas. El primero es que como vimos en el programador por puerto paralelo(1) el protocolo ICSP trabaja con niveles de 0V, 5V y 13.2 voltios, por lo que habrá que adecuar los niveles. Pero el segundo es más complejo de resolver, dado que el estándar RS232 (puerto serie) solo especifica que el voltaje debe ser como máximo 12 o -12 voltios, pero coloca el mínimo en los 3 y -3 voltios respectivamente. Como norma podemos suponer que la mayoría de ordenadores de sobremesa usan niveles de 8 y -8 voltios. Veremos las implicaciones de este segundo problema al final.
Para conseguir programar un microcontrolador con los niveles de tensión adecuados, necesitamos adaptar los mismos, función por la que `Jens Dyekjær Madsen’ creo el programador JDM (2). Este programador tiene en cuenta que los 13 voltios necesarios no se pueden conseguir ni con 12 ni con -12 en el mejor de los casos ya que las tensiones serán incluso menores. Por lo tanto utiliza un pequeño truco, usar como tierra del circuito de la interfaz ICSP, el valor negativo del puerto. Suponiendo que las tensiones están en el rango de -8 – 8 tenemos una tensión efectiva de 16 voltios.
A grandes rasgos el programador JDM usa como tierra virtual la tensión negativa del puerto serie. Para estabilizar los niveles usa diodos zener que al no tener caída de tensión comparados con los reguladores de voltaje, permiten trabajar con puertos serie con niveles bajos de tensión. Más información teórica y completa en la página del autor.
La única modificación que he realizado es la inclusión de un diodo en la tierra del conector ICSP para evitar la aparición de tensiones negativas en los pines del microcontrolador. Por contra baja la tensión VPP hasta los 13 o 12,5 voltios, pero es suficiente para el microcontrolador PIC16F877 y en teoría para el resto.
Vemos el programador:
Lista de componentes (sin contar conectores):
5 Diodos 1N4148
2 Transistores NPN (BC547B o similar)
1 condensador electrolítico de 100 microfaradios
1 condensador electrolítico de 22 microfaradios
1 Diodo zener de 8,2 de ruptura
1 Diodo zener de 5,1 de ruptura
1 resistencia de 10K ohmios
1 resistencia de 1.5K ohmios
Como ventajas frente al programador paralelo nos encontramos la ausencia de alimentación externa, lo que reduce tanto el tamaño del programador como su precio.
Ya puntualizamos un problema en los niveles de tensión del puerto serie, y es que el estándar RS232 no fija un valor exacto para el puerto, sino que coloca en valor absoluto los niveles de 3 a 12 voltios. En los ordenadores de sobremesa tenemos de forma más o menos generalizada una tensión absoluta de 8 voltios, pero en los portátiles este nivel suele ser bastante menor. Además en también podemos encontrar con un problema similar en puertos serie con muy baja corriente. Con niveles demasiados bajos el programador no conseguirá los 13 (ni 12) voltios necesarios, por lo que el microcontrolador no entrará en modo de programación y no será posible operar sobre él. La solución en esos casos es sumar alimentación externa que entregue el voltaje y la corriente que el programador y el microcontrolador necesita. Para esos casos bastaría ingresar entre los pines del condensador de 100 microfaradios un voltaje de 18 voltios, limitados con una resistencia.
Gracias a Eagle 3D podemos ver el programador serie tal y como quedaría si lo hiciéramos en una placa de circuito impreso creada a tal fin.
El circuito.
Este programador, basado en el Ludipipo, está adaptado a la programación de PICs, es simple y barato, pero permite programar a través del puerto serie de cualquier PC de sobremesa (en los portátiles da problemas) una cantidad nada despreciable de PICs distintos, y todo ello utilizando software de programación estándar, como ICPROG 1.4.
Se ha probado con éxito a programar los siguientes PICs:
16F627, 16F628.
16C84, 16F83, 16F84.
16F873, 16F874, 16F876, 16F877.
18F242, 18F252, 18F258, 18F442, 18F452, 18F458.
Y, al menos en teoría (no los he probado) debería funcionar correctamente con los siguientes:
16C62, 16C63, 16C64, 16C65, 16C66, 16C67.
16C71, 16C72, 16C73, 16C74, 16C75, 16C76, 16C77, 16C715.
16C620, 16C621, 16C622, 16C623, 16C624, 16C625.
16F870, 16F871, 16F872.
16C923, 16C924.
Teniendo en cuenta el coste en tiempo y dinero que requiere la construcciónde este programador, no se puede pedir más.
Sin entrar en detalles sobre el funcionamiento del circuito, decir
sólo que se basa en principios muy parecidos a los del JDM2, pero con ciertos retoques en la temporización y la estabilidad de las señales. En este caso, se utiliza como alimentación de +5V el condensador C2, que se carga mediante D2, D3 y D4 en los momentos en que las señales DTR, RTS y TXD del puerto serie son negativas, y su tensión queda estabilizada mediante D7. D5 fija la tensión de programación en 12V y D6 limita la tensión de la señal CLOCK a 5V.
Utilización.
Lo primero que hay que tener claro a la hora de utilizar este programador es
el orden en que se deben hacer las cosas para no estropear ni el programador, ni el PIC, ni el puerto serie del PC. Siempre que queramos insertar o extraer un PIC del zócalo hay que desconectar el programador del puerto serie, ya que, al extraer la alimentación del puerto serie, mientras esté conectado estará alimentado. Por tanto, el proceso a seguir
...