Open Programmer v0.5: Un Grabador de Pics Libre


Uno de mis amores es la electronica y al principio del año pasado me propuse a aprender algo de la materia, y aunque mis conocimientos sobre la esta eran muy pobres, realice un buen proyecto sobre PIC (cabe aclarar que tambien realice un curso de 2 meses en la Facu) aun asi al principio me costo un poco, pero despues de leer mucho pude salir adelante y arme un circuito con un pic 16F84 y unos steppers. En otra ocasion voy a publicar todo sobre eso, pero esta vez solamente les traigo un gran proyecto que encontre para el armado de un grabador de PICs basado en Hardware y Software Libre, espero que les guste y cuando tengo unos pesos voy a tratar de armarlo.

Este es un programador de código abierto USB para micros PIC, I2C EEPROMs, algunos micros ATMEL, I2C/SPI dispositivos genéricos y (pronto) otros dispositivos

Datos* Completamente gratuito y de código abierto (incluido el firmware)
* Programa pic10-12-16-18, 24xxxx I2C EEPROMs, algunos micros ATMEL, se comunica con los genéricos I2C y SPI dispositivos (véase dispositivos)
* Interfaz USB, clase HID (igual que los teclados, ratones, etc)
* Auto alimentado
* No necesita drivers
* Construido a partir de componentes fáciles de encontrar (por un costo estimado ~ 10 € o 40 Pesos)
* El Hardware genera tiempos de máxima velocidad y fiabilidad (escribe un 18F2550 en 15, 8s con Linux)
* No satura su CPU y no sufre  cuando otros programas se están ejecutando
* Control de programas de fuente abierta para Linux y Windows

foto1

Otro Programador?

En los últimos años, las interfaces de serie y paralelo casi han desaparecido, los entusiastas de la electrónica encuentran aún más difícil de programar microcontroladores; los programadores viejos  no trabajan más, y las soluciones comunes incluyen el uso de adaptadores USB a serie (que no  aceptan accesos directos, sino sólamente a travez de las llamadas de la API), o añadir crips de interface, al igual que FTDIxxxx, que aparecen como  interfaces seriales y requieren drivers propiestarios.

Entonces, ¿por qué no utilizar los controladores PIC y su interfaz USB?
Después de buscar un tiempo no pude encontrar un programador USB que fuese al mismo tiempo funcional, libre y de código abierto, así que decidi diseñar uno.
De código abierto significa que todas las fuentes y los esquemas se dan de forma gratuita con el derecho a modificar y en libertad.

Aqui van a poder encontrar el proyecto para MPLAB y aqui el archivo HEX.

Firmware HID y USB (v0.5.0)
Para poder utilizar la interfaz USB incluido en algunos dispositivos PIC necesitamos un firmware que implementa una de las clases definidas por el USB de un consorcio o una nueva, me ha optado por la clase HID, que cuenta con el apoyo nativo de todos los sistemas operativos y así ya no necesita ningún controlador.

La Velocidad máxima permitida es de 64K / s, aunque con mi solicitud me mide algo en el rango de 20-40 K / s, sin duda suficiente para programar los dispositivos con memoria de 100K como máximo.

El programador del sistema aparece como un dispositivo HID 64 bytes que permite intercambios de paquetes cada 1 ms.
El punto de partida para el desarrollo de firmware es un ejemplo de Microchip en sí, modificado por Jan Axelson, a fin de aplicar una clase genérica de HID, en la parte superior de que he añadido un intérprete de comandos que controla el microcontrolador de la generación de los productos necesarios señales.
El principal ciclo de control espera por un paquete de USB y, a continuación, ejecuta los comandos en secuencia, mientras que la gestión de tareas de comunicación y, al mismo tiempo el regulador de función de control se llama periódicamente por un temporizador de interrupción y mantiene constante el voltaje de salida.
Creando el proyecto sólo requiere de programas libres, y MPLAB MCC18 versión estudiante, que son, lamentablemente, sólo disponible para las ventanas (en) el sistema operativo, es probablemente posible compilar con SDCC, aunque nunca he intentado.
El codig de Microchip se da con una licencia cerrada, así que no puedo utilizar GPL2 para la remoción de minas, sino que optó por LGPL2.1, pero tengo previsto cambiar a un firmware GPL USB.

Programas de control

Inicialmente pensaba en la modificación de un software existente, por ejemplo winpic o picprog, pero me pareció que sería muy difícil porque yo uso comunicación empaquetada en lugar de comunicaciones de serie, así que tuve que escribir uno ( o dos) a partir de cero.
Lamentablemente, o afortunadamente, ya no soy un programador profesional asique mantuve las  características al mínimo, la versión para Linux ni siquiera tiene una GUI (estoy seguro de que a muchos les va a gustar esto), lo bueno es que no utliza casi nada de cpu.
Para la mayoría de los dispositivos se ha verificado el código de programación, mientras que, por los demás inmediatamente después de la fase de redacción.
Utilizando el «Hardware Test» y un voltímetro es posible comprobar que el circuito está funcionando.

Windows (v0.5.1)
OpenProg es una aplicación de C + + escrito con Visual C + + 6 y MFC. Usarlo es muy sencillo: simplemente conecte el programador, iniciar la aplicación, seleccione el dispositivo y leer o escribir.
Para comunicarse a través de I2C siempre es necesario especificar el control de bytes y la dirección (o direcciones); RW poco se maneja automáticamente.
Yo no inclui un instalador, ya que no hay bibliotecas y el ejecutable es muy pequeño.
Acepta hex8 y hex32 archivos, con el apoyo idiomas Inglés y actualmente están italiano, es posible agregar un archivo de recursos con otros idiomas.

Dispositivos Soportados

He probado este programador con un pequeño número de dispositivos (los que yo mismo probe  se indica con *), la lista también incluye a otros miembros de la misma familia (la misma especificación de programación), que puede ser programado con los algoritmos que aplicado, por favor hágamelo saber si usted comprobar el funcionamiento de estos dispositivos.
También puede ponerse en contacto conmigo si necesita otros algoritmos o código nuevos por sí mismo.

10F200, 10F202, 10F204, 10F206*, 10F220, 10F222,
12F508, 12F509*, 12F510, 12F519*, 12F609, 12F615, 12F629, 12F635, 12F675*, 12F683*,
16F505, 16F506, 16F526, 16F54, 16F610, 16F616, 16F627, 16F627A, 16F628*, 16F628A*, 16F630, 16F631, 16F636*, 16F639, 16F648A*, 16F676, 16F677, 16F684, 16F685, 16F687, 16F688, 16F689, 16F690*, 16F83, 16F83A, 16C83, 16C83A, 16F84*, 16C84, 16F84A*, 16C84A, 16F870, 16F871, 16F872, 16F873, 16F873A, 16F874, 16F874A, 16F876*, 16F876A, 16F877, 16F877A,
18F242, 18F248, 18F252, 18F258, 18F442, 18F448, 18F452, 18F458, 18F1220, 18F1230, 18F1320, 18F1330*, 18F2220, 18F2221, 18F2320, 18F2321, 18F2331, 18F2410, 18F2420, 18F2423, 18F2431, 18F2450*, 18F2455, 18F2458, 18F2480, 18F2510, 18F2515, 18F2520, 18F2523, 18F2525, 18F2550*, 18F2553, 18F2580, 18F2585, 18F2610, 18F2620, 18F2680, 18F2682, 18F2685, 18F4220, 18F4221, 18F4320, 18F4321, 18F4331, 18F4410, 18F4420, 18F4423, 18F4431, 18F4450*, 18F4455, 18F4458, 18F4480, 18F4510, 18F4515, 18F4520, 18F4523, 18F4525, 18F4550, 18F4553, 18F4580, 18F4585, 18F4610, 18F4620, 18F4680, 18F4682, 18F4685,
2400, 2401, 2402, 2404, 2408, 2416*, 2432*, 2464*, 24128, 24256*, 24512*, 241025,
AT90S8515*, AT90S1200

EL Circuito

El proyecto se basa en un 28 pines 18F2550, pero sólo un tercio de la memoria y el 0% de EEPROM se utilizó, por lo que encaja en los más pequeños 2455.
El 2458 y 2553 tienen un ADC de 12 bits, por lo que debería funcionar también.
Con algunas modificaciones, creo que sería adaptable a la 2450 también.
El uso de los correspondientes dispositivos de 40 pines (4450, 4455, 4458, 4550, 4553) exige la modificación de los PCB.
Con el fin de aplicar un USB con un PIC pheripheral micro tenemos muy pocos componentes: los principales microcontroladores, uno de cuarzo, algunos condensadores, y un receptáculo USB de tipo B, tal y como está escrito en notas de aplicación de Microchip.
Para poder programar dispositivos PIC tenemos dos líneas digitales de reloj y datos y suministro de dos voltajes, VCC y VPP, que se controlan mediante tres transistores; VPP proviene de un regulador de conmutación que requiere un nuevo transistor y se describe más adelante.
El circuito básico y PCB puede alojar dispositivos PIC de 8, 14, 18 y 20 pines (excepto 10Fxxx), sino que debe insertarse en la U3 de la adaptación a pin1:

PCB Base

Muchos componentes son opcionales, como los conectores de expansión CONN2-3, protección de las resistencias R11: 23 (teniendo en cuenta su costo, por qué no usarlos?), I2C hasta resistencias de pull-R26-27, interruptor S1, ICSP EN CONN4 (ahora se usa para programar el microcontrolador principal sin la extracción).
Preste atención a la orientación de los transistores:
Q1 del emisor a la izquierda, hasta Q2, Q3 y Q4 derecho.

Lista de componentes:
U1 12Mhz cuarzo (otros requieren cambios en las frecuencias de entrada divisor)
U2 18F2550 (también 2450,2455,2458,2553,4450,4455,4458,4550,4553)
U3 20p zócalo.
U4 8p zócalo.
Q1-2 BC557 (o cualquier PNP, prestar atención a la polaridad)
Q3-4 BC547 (o cualquier NPN, prestar atención a la polaridad)
D1-2 LED
D3 1N4148 (o de cualquier diodo, mejor si Shottky)
L1 100uH resistencia de tipo
R1 22k
R2 12K
R3 100K
R4: 6 10K
R7 1M
R8-9 2.2K
R10 10K
R11: 23 100
R24-25 300K
R26-27 10K
C1 22-100uF 25V
C2-3 22pF
C4> = 220nF
C5 100nF
C6 10uF
C7-8 100nF

El diagrama se dibuja con gschem, un programa de código abierto que viene con la suite de GEDA.
En su sitio web no es evidente (como el uso de linux), pero también es posible ejecutar el programa en Windows bajo Cygwin, sugiero utilizar la última versión (lo que necesitas para compilar los fuentes).
Los PCB se dibuja con PCB, en este caso también hay una (algo limitado) versión de Windows.
Con un poco de esfuerzo el circuito también se puede montar en tableros de experimentación, sin PCB.

base_2exp

Contactos

Alberto Maccioni  

Fuente y Descargas mas El Proyecto completo lo pueden encontrar en:

http://openprog.altervista.org/OP_eng.html

4 respuestas a “Open Programmer v0.5: Un Grabador de Pics Libre

Add yours

  1. Saludos,l tu web esta genial, te mando un email, espero poder preguntarte algunas cosa de este programador, y talves preguntarte que eso de libre?, osea cualquier persona puede construirlo para ocuparlo en sus proyectos?

    1. Hola como estas, cuando quieras podes contactarme, en el blog tengo unos art. sobre Hardware Libre pegale una mirada y podras entender mas sobre el termino Libre, y si , no solo podes utilizarlo en tus proyectos personales, sino tambien en proyectos profesionales y en cualquier ambito siempre y cuando respetes la licencia sobre el cual fue liberado, a diferencia de cualqueir tipo de hard no Libre en este caso no deberas pagar ninguna regalia, ni derecho, saludos

Deja un comentario

Subir ↑