domingo, 9 de agosto de 2015

Construyendo un programador PICKIT-Lite

PROGRAMADOR PK2Lite. 


Fig1. Placa del programador PICKIT

En este espacio quiero compartir mi experiencia con este programador USB para PIC, actualmente existen una gran cantidad de programadores con sus particularidades y precios.
He estado buscando la manera de armar uno de los muchos que hay, considerando los siguientes aspectos:

  • Emplear el puerto USB sin necesidad de una fuente externa.
  • Que no requiera software adicional para la programación.
  • Bajo costo y disponibilidad de los componentes que empleara.

Fig2. Lista de componentes

Sobre estos puntos centre mi atención en el conocido PicKit2 de microchip el cual ha sido liberado y el mismo fabricante provee los esquemas para su montaje. sobre la base de este conocido programador y con la finalidad de reducir la cantidad de componentes encontré modificaciones tipo Lite en las cuales no se incorpora la función On-go y las etapas de regulación del voltaje.
 
Fig2. Programador Pickit2 lite
 
Como se observa en el esquemático el switch SW de dos posiciones conecta las lineas del programador a los pines PGD(data) y PGC(clock) del puerto ICSP utilizado al momento de programar.
Es recomendable que el circuito donde esta montado el PIC, tenga su propia fuente de alimentación para no sobrecargar al puerto USB de nuestro ordenador, por seguridad la corriente que proviene del puerto USB(VBAT) esta limitada por el diodo D1, este diodo también impide que circule corriente de nuestro circuito al puerto USB.
Debe ser muy cauteloso en el orden de los pines USB ya que una inversión podría causar serios daños al circuito y al puerto del ordenador.

Fig3. Detección pickit2 en MPLABX
He probado el funcionamiento de este programador en el software MPLABX sin inconvenientes.

Ojo no todos los modelos de PIC están soportados por la versión del pickit2, para mas datos sobre que modelos funcionan consulte el archivo Device Support.htm que se encuentra en la carpeta /docs del directorio de instalación.


Aqui les dejo el enlace con el firmware y los archivos PCB del programador, un dato importante es que el firmware debe ser cargado al PIC18F2550, por que sera necesario que cuente con un programador o pueda adquirir el PIC ya cargado.
 
Fig4. Trabajando con el pickit2 desde MPLABX

Como recomendación acerca de la construcción de un programador para PIC, quiero mencionar que actualmente la única razón por la que me decantaría hacer uno de estos es la experiencia de hacerlo yo mismo, como parte importante de mi aprendizaje en lo que respecta a quemar placas, perforar, soldar y verlo funcionar, porque al final el costo tanto económico y sobre todo el tiempo es mucho mayor que comprarlo en la tienda. En mi ciudad, el precio de este programador ronda entre 20 a 40 dolares, y tan solo el PIC esta alrededor de los 8 dolares.

Para finalizar, solo quiero agradecer tu visita al blog y cualquier consulta no dudes en escribirme a pablinzte@gmail.com

Pablo Zárate Arancibia

Ingeniero Electrónico

Santa Cruz - Bolivia

sábado, 8 de agosto de 2015

Mi Primer Programa PIC

BlinkLED en PICBoard28 

En esta entrada editaremos un programa simple para probar nuestra placa PICBoard28, antes deben haber instalado correctamente el IDE MPLABX junto al compilador XC8. si utilizo el bootloader debo agregar las siguientes directivas al linker del compilador en nuestro proyecto.
 
Fig1. Ventana de propiedades del proyecto

Ahora empecemos creando un nuevo proyecto mediante el menu File, New Project aquí se abrirán los cuadros de dialogo para la selección del nombre del proyecto, el micro controlador a utilizar y el compilador o herramienta que se empleara para generar el código HEX. debemos seleccionar las opciones adecuadas y finalmente se generara una plantilla de nuestro proyecto con grupo ramificado para agregar archivos de código, librerías, cabeceras, comentarios, etc. ahora adicionamos un nuevo archivo de código principal haciendo click derecho sobre el grupo Sources Files, en este archivo editaremos nuestro código principal por lo tanto debemos guardarlo. con una extensión.
Fig2. Estructura del código de programa


Ahora escribimos el siguiente programa, que enciende y apaga un diodo led conectado al pin RA0 con un retardo de 0.2 segundos tal como se observa en la siguiente imagen.
 
 

Fig3. Circuito y código C del programa

Como habrán notado el código de este programa es muy sencillo y fácil de comprender, el fichero "rutinas.c" al cual se hace referencia desde el programa contiene un procedimiento para el retardo, el cual utiliza contadores que se incrementan en un bucle considerando los tiempos de ejecución para 4MHz que es la frecuencia por defecto del oscilador interno, si desea cambiar esta frecuencias deberá también modificar el código.

Fig4. Código para generar retardo

Finalmente una vez compilado, se genera un archivo .hex que necesitaremos cargarlo con Tinybootloader, este archivo hex se encuentra en la ruta /dist/default/production de nuestro proyecto.
 
Fig5. Compilación y generación del archivo HEX

Para cargar el programa con tinybootloader debe seleccionar el archivo desde la ubicación de su proyecto, luego presiona-libera el pulsador S2, luego click en Write flash y empezara la carga.
 
Fig6. Interfaz de Tinybootloader
 
 
Fig7. Prueba y funcionamiento



Para finalizar, solo quiero agradecer tu visita al blog y cualquier consulta no dudes en escribirme a pablinzte@gmail.com

Pablo Zárate Arancibia

Ingeniero Electrónico

Santa Cruz - Bolivia

Tarjeta de pruebas PICBoard28

PLACA PICBoard28 

Les doy la bienvenida a todos lo amantes del mundo de la electrónica, En esta entrada quiero compartir mi experiencia en la elaboración de una placa que la he denominado PICBoard28.


Desde tiempo atrás he sido un programador de micro controladores PIC empezando desde los PIC16 y actualmente trabajando en proyectos recientes con PIC32, como ustedes sobran actualmente esta de moda el prototipado ya sea con Arduino, ESP, o alguna otra, por la facilidad de poder en marcha un sistema electrónico sin tener que perder tiempo en aspectos técnicos para construir el hardware.

Considero que dependiendo de la finalidad del sistema a elaborar puede resultar una buena alternativa emplear una de estas placas, y porque no pensar en construir una propia, que pueda adaptarse a nuestra necesidad de trabajo, personalmente creo que un diseño propio ayudaría a comprender mejor el funcionamiento de nuestro proyecto electrónico si mencionar la experiencia generada para beneficiar el aprendizaje.
 
Fig1. Placa de pruebas
 
Esta placa puede ser empleada con microcontroladores PIC de 28 pines tanto la familia PIC16 o PIC18 (según compatibilidad), en mi caso estoy utilizando un PIC16F886 el cual dispone de 24 pines I/O distribuidos en tres puertos A,B y C respectivamente.
Para la programación o grabador se dispone de la conexión ICSP, pero para ello necesitaremos un programador como el Pickit. En nuestro caso gracias a la memoria self-write de este PIC, es posible pre-cargar un código bootloader que nos permitirá realizar la programación sin necesidad de un grabador ICSP.
 
 
La placa emplea un regulador 7805 y un diodo para protección de polaridad inversa, no se incluye protección en los pines I/O.
 
Notaran que existe otro Microcontrolador en la placa, de hecho se trata de un PIC16F1454 este PIC actúa como un conversor serial-USB, el cual emplea la clase CDC de Para crear un puerto COM virtual en el sistema Windows, por seguridad prefiero emplear el modo Self-Powered Only para lo cual debo quitar el puente tal como se ilustra en la imagen.

La velocidad por defecto es 9600bps, y el pulsador S1 permite des-habilitar el modulo UART y colocar los pines RXD/TXD del PIC16F1454 en alta impedancia.
El diodo led indica el estado:

  • Apagado, Sin alimentación o UART PIC16F1454 deshabilitado.
  • Encendido, Modulo energizado y UART PIC16F1454 habilitado.
  • Parpadeo, Modulo correctamente conectado al puerto USB de la PC. 
El pulsador S2 permite reiniciar el PIC16F886 y sera necesario cada vez que carguemos nuestro código con tinybootloader.
A continuación se muestra una lista de los programas requeridos:

Materiales y montaje de la placa
Dejo el esquema y la lista de los componentes requerido para armar esta placa.
 
Fig2. Esquema de circuito de la placa

1 PIC16F886
1 PIC16F1454
1 Diodo LED.
1 Zócalo DIP28
1 Zócalo DIP14
1 Conector USB para placa
1 Peineta de 4 Contactos 2.54MM
3 Peineta de 8 Contactos para los puertos
1 Peineta de 6 Contactos para programación
1 Bornera de 2 Contactos 2.5MM
1 Diodo 1N4004
1 Regulador 7805
1 Capacitor 100uF /16V
1 Capacitor 0.1uF/50V
1 Capacitor 1uF
2 Pulsadores SPST
2 Resistencias 10K
2 Resistencias 1K

Aqui tienes el enlace con todos los archivos PCB, driver USB, el firmware bootloader y usbpic. 
Para cargar los archivos HEX en ambos PIC necesitaras un grabador ICSP.

Una vez finalizado el montaje sugiero revisar nuevamente y comprobar si el regulador trabaja correctamente antes de insertar los PIC en sus zócalos.
Una vez revisado y con los PIC instalados puede conectar al puerto USB y notara que iniciara la instalación del driver. Si es la primera vez que se instala en su PC demorara unos minutos hasta que le aparezca el mensaje de que se instalo correctamente, caso contrario intente una instalación manual con los drivers que se proveen en este link.
Una vez instalado puede ir al administrador de dispositivos y comprobar el numero de puerto COM que le asigno Windows, el puerto se identifica como USB Serial Port.

Fig3. Detección del puerto virtual COM

Para mi caso, el sistema me asigno el puerto COM15. A través de este puerto serie podre cargar el código HEX al microcontrolador empleando TinyBooloader para lo cual debo configurar las opciones de comunicación como se ilustra a continuación.

Fig4. Configuración con Tinybootloader

Para hacer una prueba del bootloader y la conexion USB presione y libere el pulsador S2 esto reinicia el PIC16F886, luego click en CheckPIC. Vera el mensaje de conexión y respuesta que indica el modelo del PIC. Si todo ha funcionado estamos listos para empezar a utilizar MPLABX, si ha tenido algún inconveniente revise lo siguiente:
  • Compruebe si realmente el sistema asigno el puerto COM, esto lo puede realizar conectando y desconectado varias veces y revisando el administrador de dispositivos.
  • Debe presionar y soltar S2, luego debe hacer click en CheckPIC sin esperar demasiado (max 2seg). ya que es el tiempo que el bootloader espera para iniciar la carga.
Ahora esta listo para comenzar a elaborar su primer proyecto empleando MPLABX + XC8, Un ultimo paso antes de programar es adicionar una directiva al linker del compilador en propiedades del proyecto, luego linker XC8 busque la categoría Memory model y en el cuadro ROM ranges debe escribir: default, -1F80-1FFF. como se ve en la imagen. 

Fig5. Configuración de la memoria

Esto impide que el compilador utilice el rango de memoria donde esta almacenado el bootloader. este punto no es necesario si vas a emplear un programador ICSP.

Para finalizar, solo quiero agradecer tu visita al blog y cualquier consulta no dudes en escribirme a pablinzte@gmail.com

Pablo Zárate Arancibia

Ingeniero Electrónico

Santa Cruz - Bolivia