TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: manwenwe en 19 de Abril de 2017, 16:18:35
-
Buenas,
llevo tiempo viendo que hay compañeros que siguen utilizando programadores antiguos para PIC: lo cual es una lástima especialmente porque en la mayoría de los casos no se puede depurar. Supongo que se debe a diversas circunstancias: coste de uno más moderno, difícil de encontrar en un país concreto etc. Me he acordado que hace años monté un clone del Pickit2 "mínimo" en una protoboard sin mucha dificultad y me he dicho:¿y si probamos a hacer una versión reducida y accesible del Pickit3?.
Pues esa es la idea: hacer una versión reducida del PK3 que se pueda montar en protoboard con componentes fáciles de encontrar en cualquier sitio y que salga por un presupuesto económico (menos de 10$ ¿?). Es probable que lo más complejo de encontrar sea el micro pero supongo que se pueden buscar formas de hacerlo.
Más adelante se puede diseñar el layout para quien se lo quiera fabricar y hacer versiones/ampliaciones.
Por lo pronto el esquemático está aquí (página 75):
http://ww1.microchip.com/downloads/en/DeviceDoc/51795B.pdf
Y el código fuente aquí:
http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit3%20Programmer%20Application%20v3.10.zip
Es necesario tener MPLAB antiguo instalado y C30 (buscar en archivos viejos de Microchip). Lo acabo de bajar y probar y compila correctamente. No tengo claro cuanto ocupa el firmware que se instala a posteriori ya que en el código fuente se ve claramente que hay un bootloader, pero al compilar sólo se utiliza un 15% de la flash y un 25% de la RAM con lo que es probable que se pueda cambiar el micro (PIC24FJ256GB106) por una versión algo más barata.
Yo puedo ayudar con el código y si se hace un layout haciendo todas las versiones necesarias, pero necesitaría ayuda con la parte analógica del circuito (alimentación, bomba de carga, etc.). Ojo!: la idea es quitar todos los componentes posibles para simplificar y abaratar el diseño.
¿Alguien se anima?.
Saludos!
-
Que tal manwenwe,
Yo me apunto en lo que pueda ayudar.
elreypic.
-
Lo primero es quitar las memorias SPI no son necesarias para fines de programacion y de depuración, eso reducirá bastante el costo.
Segundo: el circuito de la generación del voltaje de programación VPP es idéntico en ambos pickit, Es decir es igual en PICKIT2 y PICKIT3 así que ese se puede quedar igual, si no se pueden conseguir los transistores de 2N3904 y 2N3906 se pueden reemplazar con los BC548 o BC547 y BC557 o BC558.
Tercero: La parte más complicada en cuanto a componentes fáciles de conseguir son los level shifters. Esto se pueden sustituir por transistores mosfet que ya existe un pcb muy económico que hace el trabajo.
En cuanto pueda subo un esquemático de estos tres pasos para comenzar.
elreypic.
-
De donde sale VDD_INT ?
-
Que tal KillerJC,
VDD_INT sale de la activacion del mosfet a traves del amplificador operacional MCP601. Si te fijas el source del mosfet Q1 esta conectado a +5V_USB, entonces al activar el mosfet en el drain ahora se llama VDD_INT.
elreypic
-
Hola Manuel por supuesto que me apunto, en lo que pueda ayudar, ahí estaré.
PIC24FJ256GB106 literalmente imposible de conseguir en Argentina, acá lo más alto que se consigue es un 18F. Me corrijo, acabo de encontrar el PIC24FJ256GA406, aunque al precio que está, casi que me conviene comprar el PICkit3 de los chinos.
Un saludo.
Atte. CARLOS.
-
Pues lo prometido es deuda.
Este es mi esquemático inicial para generar el voltaje de programación. Básicamente no cambia en nada a excepción de que se pueden usar transistores 2N3904 y 2N3906, así como BC548 y BC558 (parte superior del esquemático).
En la parte central se encuentra el level-shifter bidireccional. Por ahora solo está indicado el voltaje VDD_TAR, ya que este puede ser de 3.3V, 5V generado por el pickit3 o bien proveniente del circuito externo a programar-depurar. Por ahora suponemos que es seleccionable manualmente. Estaré pensando en como realizar la selección automática mediante transistores.
En la parte inferior se encuentra regulador de voltaje DC-DC para convertir el voltaje de 5V (VBUS) a +3.3V. Para ello estoy usando un LM1117T-3.3. En el esquemático el símbolo muestra que el pin 1 es ADJ, pero en realidad es GND, ya que estoy usando el regulador con voltaje fijo en la salida y no el regulador ajustable.
- Tienes que ingresar para ver archivos adjuntos -
- Tienes que ingresar para ver archivos adjuntos -
- Tienes que ingresar para ver archivos adjuntos -
-
Por favor alguien pudiera confirmar si el VPP para la mayoría de (si no es que para todos) los microcontroladores PIC es de 10V a 13V. Si es de 10V se podría usar un MAX232 ya que este es un doblador de voltaje y puede entregar 10V, asi eliminariamos el regulador boost, ya que para algunos encontrar los inductores es una pesadilla.
Pero no se si esto realmente funcionaría, habría que realizar pruebas.
elreypic.
-
Por favor alguien pudiera confirmar si el VPP para la mayoría de (si no es que para todos) los microcontroladores PIC es de 10V a 13V. Si es de 10V se podría usar un MAX232 ya que este es un doblador de voltaje y puede entregar 10V, asi eliminariamos el regulador boost, ya que para algunos encontrar los inductores es una pesadilla.
Pero no se si esto realmente funcionaría, habría que realizar pruebas.
elreypic.
Si no recuerdo mal con VDD+ 4.5V (9.5V para 5V) es suficiente. Si no, ¿sería muy complejo hacer una bomba de cargar con transistores + pwm?.
Charly: mi idea era hacerlo con un micro en PDIP para no obligar a nadie a hacerse una PCB. Por ejemplo: PIC24FJ128GB202: para esto habría que reducir pines que no sean totalmente necesario. Si estos micros son dificiles de conseguir en algunos lares tenemos 2 opciones: 1. Enviar desde otro sitio dónde se cosigan más fácil. 2. Portar el código a PIC18F, lo malo de esto es que los PIC18F con mucha memoria son caros.
Saludos!
-
Rectifico: si hay un bootloader y se descarga parte de código no va a ser posible usar un PIC18F u otro PIC24 que no sea de la misma familia. Por cierto, elreypic2, para que dices que valen las memorias SPI?
saludos.
-
Pero ¿realmente merece la pena?
Hay pickit3 por 12 Euros: http://www.ebay.es/itm/Original-PICkit3-Micro-In-Circuit-Debugger-Emulator-Programmer-Download-TE465-/311681844366?hash=item4891af848e:g:9QwAAOSw9NdXuy01
Los puedes encontrar por menos de 10Euros con gastos de envío incluidos:
http://www.ebay.es/itm/PICkit3-PIC-KIT-3-5-PIC-Debugger-Programmer-Emulator-ICSP-for-FLASH-ROM-EEPROM-/192046175744?hash=item2cb6d81600:g:OkMAAOSwux5YRnMP
Un saludo.
-
Me extraña que si es original valga 12€: ¿"de los que se caen del camión". Con los clones te puedes encontrar con esto:
http://www.todopic.com.ar/foros/index.php?topic=47420.0
Mi idea era dar una alternativa a quien por una razón u otra no pueda o quiera comprarlo y le apetezca montarlo. Pero bueno, para eso se tiene que animar la gente porque si no hay interés real pues entonces si que no merecería la pena...
Saludos.
-
Yo tengo uno.
Son clones de los chinos. Fabricados con menos cuidado, claro. Pero funciona (al menos el mío e imagino que muchos más o el vendedor de e-bay tendría problemas).
Es interesante como hobby, pero no le veo sentido para ahorrar dinero.
Un saludo.
-
Hombre... ahorrar... dependiendo del caso. Lo mínimo para que funcione el sistema (limpiando el código a tope) es:
* PIC24
* XTAL (no creo que con el oscilador interno el USB sea estable)
* Bomba de carga o alimentador de 12V.
* Unos pocos condensadores.
* 1 transistor para disparar VPP.
* LDO de 3.3V.
* Cable USB.
* Un programador antiguo que te grabe el PIC (o que alguien lo haga por ti).
* Protoboard, cables y pelador/cortador.
Y si no vas a programar PICs de 8bit te sobra la bomba o alimentador y el transistor.
Con lo que si puedes pedir el micro de samples (no todo el mundo puede claro) y tienes parte o todos los componentes no te sale muy caro. A mi en concreto 0€ porque el micro lo puedo pedir y el resto de componentes básicos ya los tengo: no son cosas raras. Aunque entiendo que habrá gente que le salga más caro que comprar el clon.
Saludos!
-
Solución fácil para conseguir 9V: añadir una pila de 9V.
Otra (si no necesitas mucha corriente):
Multiplicador de tensión acoplado a una salida del pic
(https://sub.allaboutcircuits.com/images/03288.png)
Suerte con el proyecto.
Un saludo.
-
Que tal manwenwe,
Las memorias SPI son para usar el pickit3 en modo stand-alone. Es decir guardar el codigo que deseas programar en el microcontrolador objetivo, sin utilizar la PC. Simplemente se graba el codigo en las memorias SPI y luego presionas el boton (conectado el pickit al microcontrolador) y el codigo se transfiere. Es por eso que pienso que para las razones que quieres no serian necesarias.
En cuanto al charge-pump, se puede hacer uno tal como lo mencionas con unos diodos, capacitores y un PWM. Habria que utilizar diodos con muy bajo votaje de Vf tal como los 1N5817, para que el voltaje de salida fuere lo mas cercano a 10V, si es que se usa 5V como alimentación. O bien se podria usar 3.3V y cuadriplicar el voltaje, pero esto ocuparias mas componentes. En fin hay varias formas, aunque sin duda ocuparia mas componentes. En realidad el convertidor DC-DC es mejor ya que solo utilizar un transistor, un inductor, un diodo, un par de capacitores, un para de resistencias y una señal pwm.
Pero me gustaría saber tu opinión con respecto a la propuesta inicial que hago en los esquemáticos que coloqué.
elreypic.
-
elreypic2,
No recordaba lo de que el PK3 valía también como autónomo: gracias.
Respecto a lo demás...
1. Me he perdido un poco porque comentas de usar un max232 pero has puesto el esquemático del elevador original en al primera imagen. La verdad es que creo que sería más barato usar una bomba de carga, por ejemplo:
https://www.digikey.com/product-detail/en/microchip-technology/TC7660CPA/TC7660CPA-ND/115285
Con eso y un único transistor está la cosa solucionada.
2. El LDO ok. No creo que hagan falta 10uF a la salida pero todo es probar como comentas.
3. Del LVP directamente pasaría ya que no todos los PICs de 8bit lo soportan pero sí todos soportan el método tradicional por lo que si pones la bomba de carga o un elevador realmente no lo necesitas.
4. En cuanto a los level-translator... me parece correcto aunque yo probaría también "a pelo". 3.3V quizá sean suficientes para las lineas de programación (aunque las programming specifications suelen decir 0.8*VDD), lo único que habría que poner la línea de datos a un GPIO que sea tolerante a 5V.
¿cómo lo ves?.
Saludos!
-
Se me olvidó: si se pone bomba de carga en vez de elevador se necesita conmutar VPP entre 12V y 3.3V ya que los micros de 16 y 32bit necesitan 3.3V.
Saludos!
-
Y de golpe un TC7660CPA :P
Crei que la idea era de hacerlo con componentes comunes, no hacerlo mas barato para la produccion en masa y competirle al chino :P.
Lo mas lindo es que hay gente que gasta casi la misma plata comprando un programador pickit3 clon, cuando podria comprar directamente el pickit3 original.
-
Y de golpe un TC7660CPA :P
Crei que la idea era de hacerlo con componentes comunes, no hacerlo mas barato para la produccion en masa y competirle al chino :P.
Lo mas lindo es que hay gente que gasta casi la misma plata comprando un programador pickit3 clon, cuando podria comprar directamente el pickit3 original.
He dicho,"por ejemplo" ;-). He visto que era barato y de microchip (posibilidad de pedir samples para algunos) pero no tenía ni idea si es accesible o no. No hay intención de hacerle la competencia al chino jeje.
-
elreypic2,
No recordaba lo de que el PK3 valía también como autónomo: gracias.
Respecto a lo demás...
1. Me he perdido un poco porque comentas de usar un max232 pero has puesto el esquemático del elevador original en al primera imagen. La verdad es que creo que sería más barato usar una bomba de carga, por ejemplo:
https://www.digikey.com/product-detail/en/microchip-technology/TC7660CPA/TC7660CPA-ND/115285
Con eso y un único transistor está la cosa solucionada.
2. El LDO ok. No creo que hagan falta 10uF a la salida pero todo es probar como comentas.
3. Del LVP directamente pasaría ya que no todos los PICs de 8bit lo soportan pero sí todos soportan el método tradicional por lo que si pones la bomba de carga o un elevador realmente no lo necesitas.
4. En cuanto a los level-translator... me parece correcto aunque yo probaría también "a pelo". 3.3V quizá sean suficientes para las lineas de programación (aunque las programming specifications suelen decir 0.8*VDD), lo único que habría que poner la línea de datos a un GPIO que sea tolerante a 5V.
¿cómo lo ves?.
Saludos!
Con respecto al punto 1. Lo que sugiero originalmente es usar el elevador original y como segunda opcion el MAX232 como charge-pump. Pero revisando varios micros desde los de 8 bits hasta los de 32 bits seria mejor usar el elevador de voltaje de cualquier manera el pwm generado ahi lo tienes en el codigo del pickit3. Además me di cuanta de que en algunos caso el maximo voltaje permitid en el VPP para micros de 16 bits es de 9V, entonces al usar un charge pump se dañaria el micro. Y veo que se complica más el asunto. El Elevador tiene feedback (retroalimentación) así que el micro sensa el voltaje de salido y de acuerdo al algoritmo de programación lo ajusto según sea el caso.
Con respecto al punto 2. Lo que digo es que solamente sea necesario 10uF en la salida y no 100uF.
Con respecto al punto 3, estoy de acuerdo, este se puede omitir.
Con respecto al punto 4. El pin de clock puede quedar en 3.3V y el micro lo reconocería bien (supongo) aunque habría que probar. El problema es con el pin de datos, ya que este es bidireccional, y si el micro a programar esta usando un voltaje de 5V, y como bien dices habria que poner la linea de datos a un puerto que sea tolerante a 5V. Lo cual in simple mosfet con dos pull-up resolveria el problema, tal como lo sugiero.
El problema aquí es el VDD, ya que este tiene dos posibilidades:
1) El programamdor provee la alimentación, y dependiendo del micro esta será de 3.3V o de 5V
2) El programador detecta que el circuito esta suministrando el voltaje
Como te puedes dar cuenta tenemos que seleccionar entre 3.3V, 5V o "no proveer voltaje" para el micro a programar.
elreypic.
-
Lo del elevador lo decía sólo por si es complejo encontrar el inductor. En cualquier caso está claro que es mejor así, como comentas, ya que el código para generar voltaje ya está hecho.
Perdón por lo del condensador: estoy de acuerdo, 100uF parece demasiado.
Lo de la linea de datos tolerante a 5V me refería a que el micro lleva varios pines que aceptan hasta 5.5V por lo que no haría falta adaptación.
No acabo de entender lo del problema del VDD. ¿Cómo se conmuta en el circuito original?.
Gracias y saludos!
-
Que tal manwenwe,
Para generar el VDD, que en el pickit3 (al igual que en pickit2) hay un pin que se llama VDD_PUMP, este a su vez está conectado a un filtro RX y este hacia la entrada inversora del amplificador operacional MCP601. El cual controla el MOSFET Q1. Esto es un "convertidor reductor", para generar el VDD_TAR, que puede ser desde 2.5V hasta 5V. Este es el punto, es decir como generar este VDD_TAR, para detectar que el circuito es quin suple el voltaje, hay un divisor de tension del cual se desprende VDD_FBACK y entonces el pickit no genera ninguno voltaje en VDD_TAR porque este es proporcionado por el circuito. Así es como funciona. Ahra bien lo que estoy pensando es usar los 5V de VBUS o los 3.3V del regulador LM1117, sin necesidad de hacer lo anterior explicado. Sino mediante transistores seleccionar 5V, 3.3 o no voltaje en VDD_TAR.
Espero haberme explicado mejor.
elreypic.
-
Siiii mucho mejor :-). Justo eso es lo que pensaba desde el principio: conmutar entre 5V y 3.3V y alta impedancia para cuando el micro a programar ya esté alimentado.
Es evidente que sabes mucho más que yo de analógica :-). Así que lo mejor es que trabajes con el esquemático y lo vayas actualizando. Yo consigo los componentes que hagan falta para hacer las primeras pruebas y me pongo con él código. Por favor: coge el micro en DIP28 y quitamos todo lo innecesario para que se pueda montar en protoboard.
Gracias crack!
-
Buenas,
aunque sea "por cabezotas" Miguel (elreypic2) y yo seguimos currando en el proyecto: él con el esquemático y yo con el código.
Por mi parte estoy limpiando el código para quitar las funcionalidades que no son imprescindibles (leds, LVP, etc.) e intentar meterlo en un micro en DIP28 (PIC24FJ128GB202). Está casi compilado pero me encuentro con un escollo que no sé como solventar. El código hace algo en memoria que no entiendo (no tengo experiencia en lo que hace) usando los registros los registros: TBLPAG y PSVPAG. El caso es que PIC24FJ128GB202 no tiene el registro PSVPAG. ¿alguién tiene experiencia como para explicarme el proposito de ambos?
Los modelos de memoria de ambos micros están en:
https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwir0rHa39PTAhWD6RQKHeOGCqgQFggsMAA&url=http%3A%2F%2Fww1.microchip.com%2Fdownloads%2Fen%2FDeviceDoc%2F39897c.pdf&usg=AFQjCNFTCpvUjXwC__8nx99IKqzW9umFag&sig2=mgoIhk3rs89WV3MQjahycA
https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwij8cHy39PTAhUGWBQKHQ22Bo0QFgglMAA&url=http%3A%2F%2Fww1.microchip.com%2Fdownloads%2Fen%2FDeviceDoc%2F30005009c.pdf&usg=AFQjCNHjEz2JjWOGW1xJrz-bNoCKUAPxtQ&sig2=iaqMMvBxcT6XcY70cTG5cg
Páginas 35 y 31 respectivamente.
Saludos!