12/31/2014

¡¡Felices fiestas 2014-2015!!


Saludos gente escribo esta publicación con el fin de agradecer a todos los seguidores de Electrónica&Robótica, este  ha sido un año de cambios y de muchas cosas buenas para el blog, iniciando por el cambio a blogspot y las secciones mas organizadas para poder acceder a la información que se publica, así como de una mejor vista del blog (bueno ami me gusta espero igual a ustedes).

Me permitiré contarles un poco de historia sobre lo que es Electrónica&Robótica, todo esta idea inicio allá a finales del 2010 con la apertura del blog (en WordPress) con la idea de ir compartiendo información, notas, tips, etc. en fin todo material que podría ser de utilidad para todo aquel que lo visitara, regularmente iniciaba compartiendo circuitos, practicas o material que realizaba en mis tiempos de estudiante, con el termino de la carrera decidí continuar publicando, pero ahora era distinto era información que iba aprendiendo o que iba poniendo en practica y que seguirá siendo así siempre y cuando me disponga de algo de tiempo para preparar el material que muchas veces con el trabajo es un poco difícil pero aquí seguimos.

A mediados del 2011 (En el mes de abril aproximadamente, ya que no recuerdo la fecha exacta) se inicio con la propuesta de crear el Grupo y Pagina de Facebook y que actualmente siguen activos y se sigue actualizando constantemente, aunque debo aceptar el grupo es el que tiene mucha actividad ya que actualmente se alcanzan los 18 000 usuarios, por supuesto agradezco a los administradores y a toda la gente que día a día se esfuerza por ayudar a los demás usuarios. Tambien los invito a unirse y participar para seguir creciendo en conocimiento.

Les comparto algunas estadísticas del blog, los países de los que mas nos visitan:
Las 10 entradas mas visitadas del blog:
Las paginas mas visitadas del blog:
También agradezco a todos los que nos siguen en nuestras redes sociales y otras cuentas:
  1. Grupo: https://www.facebook.com/groups/electronicayrobotica/
  2. Pagina: https://www.facebook.com/ElectronicayRobotica/
  3. Google+: https://plus.google.com/+MrchunckueeBlogspotMx-1
  4. YouTube: https://www.youtube.com/user/electronicyrobotic/
  5. Twitter: https://twitter.com/MrChunckuee
  6. GitHub: https://github.com/MrChunckuee
Debo agradecer a los sitios amigos que continuamente generan visitas al blog y que recomiendo altamente que los visiten:
  1. Inventable: http://www.inventable.eu/
  2. Make-a-tronik: http://blog.make-a-tronik.com/
  3. Apuntes de Electrónica: http://www.apuntesdeelectronica.com/
Les comento que también tengo mas tarjetas de desarrollo que espero poder usarlas y compartir experiencias y ejemplos, algunos me han preguntado que por que no hay nada sobre Arduino en el blog y es sencillamente por una razón, por que no tengo tarjetas o herramientas de Arduino, en su lugar espero poder compartir algo sobre el Stellaris, C2000, Renesas y otras herramientas que si tengo, también procurare retomar las publicaciones de PICs en C18 y vendrán los tutoriales o ejemplos usando el LauchPad MSP430, seguiremos compartiendo sobre Eagle y espero poder compartir algo de PICs usando el compilador XC8.

Bueno no me queda mas por decir, solo que les deseo lo mejor este año y que sus proyectos o metas que se fijen se cumplan con todo el éxito posible.

Cordiales saludos!!!

Att. Pedro Sánchez (MrChunckuee)

12/30/2014

Numato Lab - Give Away 2015

Saludos cordiales a todos lo lectores!!! Les comparto una noticia de la que recientemente me entere.

Para celebrar el fin de año y la llegada del 2015 la gente de Numato Lab han iniciado una campaña (como la que realizaron el año pasado) para premiar a las personas que les ayuden a divulgar su pagina web y el trabajo que realizan. 

Cualquier persona que desee participar en la campaña solo debe de compartir la siguiente publicación de Facebook, darle Retweet al siguiente tweet o incluso hacer alguna publicación es sus blogs como la que estoy haciendo yo (aunque como dicen ellos le tienes que avisar dejando un comentario en su publicación si es que no compartiste en Facebook o Twitter).

12/26/2014

MSP-EXP430G2 LaunchPad & Energia: Realizando primeras pruebas, traumas y demás

Saludos!!! En esta ocasión quería relatar antes de finalizar el año lo que me sucedió hace unos meses cuando decidí desempolvar mi LauchPad, por pura curiosidad decidí hacer algunos ejemplos usando Energia el IDE de TI para esta tarjeta, lo primero que uno se da cuenta es que es el mismo que el de Arduino e incluso trae los mismo ejemplos y librerias, recordemos que mi tarjeta trae el MSP430G2231, probé los ejemplos básicos; el blinking con un LED, encender el LED con un botón, variar la intensidad del LED con un potenciometro y  mostrar un mensaje en el LCD bueno todo esto lo compile y grabe sin problemas y funcionaba y todo ok. 

Pero al se me ocurrió hacer una practica mas, la cual consistía en mostrar el valor leído en el ADC (tenia un potenciometro) en una LCD16x2 el código usado fue el siguiente:
 Pero gran sorpresa cuando el IDE me mostraba el siguiente error:


Debo confesar que me volví loco, revise información en la red pensando que algo había hecho mal y ese error indicaba el fin del mundo jejejeje, pero me di cuenta que al momento de comentar una linea de código funcionaba bien, ya sea que comentara la opción de leer el ADC o la opción de mostrar el valor todo trabajaba bien pero obviamente no hacia lo que yo quería.


Bueno por mas tonto que pareciera mi problema decidí publicarlo en el foro de energia 43oh y gracias que ellos me dijeron mi gran pero gran error, algo que no hago muy a menudo pero esta ocasión me paso, no tome en cuenta los recursos de este micro ( 2 KB de memoria Flash, 128 Bytes de memoria Ram) pensando en que esas pocas lineas de código no consumían mucho, pero otra gran sorpresa cuando vi que las librerias ya sea del LCD o del ADC me consumían casi por arriba de los 1.8KB en Flash y es por eso que cuando comentaba una u otra si funcionaba.

Con esto decidí que si quería usar ese micro era mejor que lo hiciera con el CCS (Code Composser Studio) para que así por lo menos pudiera aprovechar al máximo los recursos que tiene este microcontrolador, y ese es el motivo de que haya iniciado las publicaciones sobre el MSP340 LaunchPad con CCS bueno y también hice caso a lo que me recomendaron pedir un micro con mas recursos para futuras practicas.

Con esto no digo que Energia o Arduino sea un asco, eso no, ya que por algo se ha vuelto tan popular, lo que digo es que si la intención es aprender y aprovechar al máximo un microcontrolador debemos crear nuestras propias librerias (Recordar no confiarse y cometer mi error), no lo se tal vez en un futuro decida hacer mas ejemplos en Energia y abrir una seccion para ellos en el blog. 

Un pequeño relato de lo que me paso y que espero a ustedes no les pase, si tiene cualquier duda o sugerencia pues hacérmela saber con un comentario, ya que es grato saber que a alguien le interese lo que escribo.

Una vez mas saludos y hasta la próxima publicación... 

12/12/2014

MPLAB X & C18: Interrupciones

El uso de las interrupciones al momento de programar microcontroladores es un recurso de gran utilidad, ya que una interrupción causa que el PIC responda a cierto evento inesperado ya sea externo o interno, cuando una interrupción se activa el micro detiene la ejecución del programa en curso y da un salto de programa para llegar al vector de interrupción (ISR) ejecutando el bloque de código que allí se encuentre, cuando ejecuto todo regresa al lugar de donde realizo el salto y continuar con la ejecución normal del programa.

La gama PIC18 tienen múltiples fuentes de interrupción, además de la característica de prioridad de interrupción, que permite a cada fuente de interrupción asignarle un nivel de prioridad ya sea alta o baja. Cuando ocurre un evento de alta prioridad interrumpirá cualquier interrupción de baja prioridad que pueda estar en progreso. El vector de alta prioridad está en la dirección 0x0008 y el vector de baja prioridad está en la dirección 0x0018.

En general las interrupciones manejan tres tipos de bits para su control:
  • Flag bit: Indica si un evento de interrupción ha ocurrido.
  • Enable bit: Habilita el salto al vector de interrupción cuando ocurre un evento.
  • Priority bit: Selecciona entre prioridad alta y baja.
Para el manejo de interrupciones existen 10 registros que son los siguientes:
  • RCON
  • INTCON, INTCON2, INTCON3
  • PIR1, PIR2
  • PIE1, PIE2
  • IPR1, IPR2
La característica de prioridad de interrupciones se activa seteando el bit IPEN del registro RCON. Si este no esta seteado, no existen prioridades y las interrupciones se comportan como en los dispositivos de la gama media (PIC16).

11/29/2014

MSP-EXP430G2 LaunchPad & CCS: Configuración de Entradas y Salidas

Como ya sabemos todo microcontrolador posee periféricos para poder interactuar con el exterior, por su puesto los dispositivos MSP430 de TI también pueden configurarse para que se comporten como de periféricos de entrada o de salida. Cada puerto se asocia normalmente con un máximo de 8 pines que pueden ser individualmente configurados como una entrada o una salida, incluso cambiar su función en medio de un programa.
Es importante tener en cuenta que para los sistemas de baja potencia el MSP430 es capaz de controlar directamente dispositivos (suponiendo que trabajen bien a 3.3V), por el contrario la mayoría de dispositivos tendrá que ser controlado con algún sistema intermedio (transistores, buffers, optoacopladores, etc.), para evitar dañar el MSP430 con altas tensiones o corrientes.

Bueno revisemos la guía de usuario de la familia del microcontrolador (MSP430x2xx Family User’s Guide) a usar para tener una idea más clara de las opciones de configuración que tiene cada puerto o cada pin.
  • Registro PxDIR: Configura los pines como entras o salidas ya sea que se manipule el registro completo o se haga bit por bit. Si el bit es cero es una entrada, por el contrario si es uno es una salida.
  • Registro PxIN: Este es un registro de lectura y refleja la señal de entrada del puerto ya sea un estado bajo o uno alto.
  • Registro PxOUT: Es para escribir en un puerto o en un bit del puerto ya sea un estado alto o bajo, las resistencias de pull up/down se deshabilitan.
  • Registro PxREN: Habilita o deshabilita las resistencias de pull up/down. Si el bit es cero se deshabilita, por el contrario si es uno se habilita.
  • Registro PxSEL: Se usa para determinar si se usa E/S digitales o para otras funciones especificas que tiene cada pin.
Veamos algunos ejemplos para que se comprender un poco mas este tema:
  • P1OUT = 0xFF; Coloca todo el puerto uno en alto
  • P1OUT = 0x00; Coloca todo el puerto en estado bajo
  • P1DIR |= 0x01; Pin P1.0 como salida
  • P1OUT |= 0x02; Solo el pin P1.2 del puerto en alto, los demás quedan intactos
  • P1DIR &= ~ 0x03; P1.0 y P1.2 como entrada 
  • P1OUT |= 0x80 + 0x40; El pin P1.7 y pin P1.6 en alto, los demás quedan intactos
  • P1SEL = 0x00; Todo el puerto como entradas y salidas digitales
  • P1OUT &= ~ 0x01; Coloca el pin P1.0 en estado bajo
En la siguientes publicaciones veremos algunos ejemplos ya en acción, espero que esta información les sea de utilidad.

11/21/2014

Amplificador de audio con el integrado LM836

Saludos a todos los lectores!! Hace ya unos meses un amigo por encargo que le diseñara unos circuitos para que practicaran sus alumnos sobre soldadura y algo de electrónica no tan compleja y le pareció buena la propuesta de hacerse de un pequeño amplificador de audio.

En esta ocasión no es una publicación de un circuito completo y con toda su explicación, es un pequeño resumen de lo que realice en conjunto con otro buen amigo (Angel Tenorio) y esta basado en el LM386, si se da una pequeña revisada en el datasheet podemos ver que el fabricante nos da algunas recomendaciones sobre las aplicaciones y circuitos que podemos armar, no se le realizo mucho solo se agrego ciertas partes para que el circuito quedara completo por su puesto realizamos el ruteado y listo aquí unas fotos del resultado.

Se utilizaron dos LM386 uno para cada lado del audio (izquierdo y derecho) y un potenciometro doble para que al momento de variar el audio estos cambien al mismo tiempo.

Primero les dejo el circuito base con el que se inicio, como se observan no son muchos los componentes utilizados pero se tiene buenos resultados.

11/15/2014

MPLAB X & C18: Encender y apagar un LED con un boton

Seguimos con las publicaciones en C18, en ejemplos anteriores hemos visto la manera de manipular un puerto como salida ahora toca el turno de ver como se manipula un pin como salida, para ello tenemos un botón conecto al pin RE0 con su resistencia de pull-down también se ha colocado un LED con su debida resistencia en el pin RE1 y se agrego una resistencia a +5V en el pin MCLR par que el circuito funcione correctamente, así queda el circuito que utilizaremos:

11/01/2014

MPLAB X & C18: LEDs Secuenciales

Seguimos con las publicaciones en C18 y ahora encenderemos 8 LEDs conectados al puerto B con sus debidas resistencias y en el Master Clear una resistencia de 10KΩ a VCC para que nuestro circuito funcione correctamente. Utilizaremos el PIC18F4620 y nuestra tarjeta entrenadora de PICs para ver los resultados. El circuito debe estar alimentado a 5 Volts, a continuación el circuito que utilizaremos:

10/25/2014

MSP-EXP430G2 LaunchPad & CCS: Crear un nuevo proyecto en Code Composer Studio

Bueno seguimos nuestro aprendizaje en el mundo de los microcontroladores de Texas Instruments por su puesto hablamos de las LauchPad y un paso importante para empezar con código y muchos ejemplos, es saber cómo crear un nuevo proyecto en el Code Composer Studio (CCS), pues no es muy complicado y con unos sencillos pasos dejaremos listo el IDE para hacer nuestro primer ejemplo, una cosa que tengo que decir ates de continuar es que el programa tarda un poquito al momento de ejecutar pero después de eso todo bien.

Bueno así es como aprendí y como lo hago, ejecutamos el CCS después te mostrara la un mensaje donde te pregunta la ubicación en la que se guardaran tus proyectos yo la dejo tal cual esta (En una ocasión recuerdo que la cambie y me dio problemas).

10/18/2014

MPLAB X & C18: LED Intermitente

Una vez explicado ciertos temas antes de comenzar con los ejemplos es momento de realizar una primera prueba o mejor dicho nuestro primer código en C18. Para esto se utilizar un PIC18F4620 con un LED y su debida resistencia conectada al pin RE0 además de un botón de Reset conectado en el Master Clear del PIC. Para este y otros ejemplos trabajaremos con el oscilador interno des microcontrolador. Recordar que el circuito se alimenta a 5 volts.

El circuito es el siguiente:

10/10/2014

MPLAB X & C18: Sentencias repetitivas y selectivas

Sentencias selectivas 

Sentencia IF: Se utiliza para ejecutar una sentencia o un grupo de ellas si una expresión es cierta.

La sintaxis es la siguiente:
if (expresion){     //Si expresión es verdadera
    sentenciaA;      //Ejecutamos las sentencias
    sentenciaB;
}

Ejemplo 1:
if(PORTA==0x01){     //Si PORTA es igual a 0x01
    PORTB=0xFF;         //Colocamos el valor 0xFF en PORTB
}

Ejemplo 2:
if(PORTA==1 && A==5){          //Si PORTA=1 y A=5
                PORTC=1;                     //El puerto C es igual a 1
                LED_STATUS=0;        //LED_STATUS es igual a 0
                X=150;                           //X es igual a 150
}             

10/04/2014

MPLAB X & C18: Operadores

En el lenguaje C se dispone de una gran cantidad de operadores que sirven para operar con los datos dentro de nuestros programas y estos se clasifican en varios grupos: aritméticos, de comparación, lógicos, de manejo de un solo bit, etc. Vamos a ver los operadores que nos permite utilizar C18.

Operadores Matemáticos: Permiten la realizar operaciones matemáticas en nuestros programas.

9/27/2014

9/20/2014

MPLAB X & C18: Bits de configuración (FUSES)

Continuando con la programación en C18 toca el turno de los Bits de configuración. Un paso muy importante al momento de realizar un código es configurar adecuadamente los FUSES del PIC que se está utilizando para ello es necesario tener del Datasheet del micro (Capitulo SPECIAL FEATURES OF THE CPU), pero Microchip nos proporciona el archivo “hlpPIC18ConfigSet” en donde podemos consultarlos todos y este se encuentra en la carpeta llamada “doc” donde se ha instalado el C18.


Ahora bien basta con abrir el archivo y seleccionar el PIC a utilizar y tendrán la lista de todos los FUSES que se deben de configurar. Utilizare el PIC18F4620 como ejemplo lo bueno de esto es que con una vez que lo configures te servirá para tus demás proyectos, pero para una mayor estética en nuestro firmware nosotros crearemos un archivo llamado “Config_FusesPIC.h” en donde estarán todos y cuando se necesite solo agregaremos el archivo al proyecto y listo.

Es momento de explicar (No domino del todo el tema pero algo será de ayuda):
  • OSC: Selección del oscilador (interno, externo, etc.)
  • FCMEN: Permite un cambio del oscilador (El externo por el interno en caso de fallar el externo).
  • IESO: Permite minimizar el periodo de latencia del oscilador al inicio del programa (Two-Speed Start-Up), También permite al microcontrolador usar el oscilador INTOSC como fuente de reloj hasta que la fuente de reloj principal esté disponible si es que se está usando en modo XT, LP, HS o HSPLL.
  • PWRT: Permite habilitar el Power-UpTimer
  • BOREN: Habilita y configura el modo del Brown-OutReset. Provoca que el micro entre en modo Reset si el voltaje de alimentación baja a un cierto nivel.
  • BORV: Selección los niveles del BOR, nivel al cual BOREN responderá.
  • WDT: Habilita el WatchDogTimer, para evitar que el micro se quede atorado en un lugar no previsto por el diseñador.
  • WDTPS: Selecciona el Postscaler del WDT
  • CCP2MX: CCP2 multiplexado con RB3 o RC1.
  • PBADEN: Configura los pines del PORTB como análogos o digitales después del Reset.
  • LPT1OSC: Configura el modo de consumo del Timer1.
  • MCLRE: Habilita el pin MCLR y deshabilita el pin RE3 o deshabilita el MCLR y habilita el pin RE3 como entrada.
  • STVREN: Habilita el Reset por desbordamiento de pila.
  • LVP: Habilita la programación en bajo voltaje (Low Voltaje Programming).
  • XINST: Habilita el modo de instrucciones extendidas.
  • DEBUG: Habilita o deshabilita el Debugger ubicado en los pines RB6 y RB7, pueden ser dedicados al Debugger o a pines digitales.
  • CP0: Habilita protección del bloque 0 de la memoria de programa.
  • CP1: Habilita protección del bloque 1 de la memoria de programa.
  • CP2: Habilita protección del bloque 2 de la memoria de programa.
  • CP3: Habilita protección del bloque 3 de la memoria de programa.
  • CPB: Habilita protección del bloque BOOT.
  • CPD: Habilita protección de la memoria EEPROM.
  • WRT0: Habilita protección de escritura de la memoria de programa en bloque 0.
  • WRT1: Habilita protección de escritura de la memoria de programa en bloque 1.
  • WRT2: Habilita protección de escritura de la memoria de programa en bloque 2.
  • WRT3: Habilita protección de escritura de la memoria de programa en bloque 3.
  • WRTB: Habilita protección de escritura del BOOT.
  • WRTC: Habilita protección de escritura de los registros de configuración.
  • WRTD: Habilita protección de escritura de la memoria EEPROM
  • EBTR0: Habilita protección de lectura de tablas de la memoria de programa en el bloque 0.
  • EBTR1: Habilita protección de lectura de tablas de la memoria de programa en el bloque 1.
  • EBTR2: Habilita protección de lectura de tablas de la memoria de programa en el bloque 2.
  • EBTR3: Habilita protección de lectura de tablas de la memoria de programa en el bloque 3.
  • EBTRB: Habilita protección de lectura de tablas de la memoria de programa en el BOOT.
Tal vez no esté explicado al 100% pues sugiero revisar la hoja de datos o investigar más del tema en otros sitios para tener un mayor entendimiento.

Para declarar estos FUSES en C18 se hace de la siguiente manera:

#pragma config OSC = INTIO67

Es hora de hacer nuestro archivo con toda la configuración del PIC para ello necesitamos crear un nuevo proyecto Click en la carpeta Header File >> New >> C Header File…
En la ventana que aparezca en File Name colocaremos Config_FusesPIC y en Extensión debe de estar h después Finish.
Ya tenemos el archivo ahora solo falta apuntar todos los FUSES del PIC y tendremos todo listo para empezar con nuestro proyecto. Dejo la configuración que he utilizado para el PIC18F4620.

9/13/2014

MPLAB X & C18: Crear nuevo proyecto

Continuando con MPLAB X y C18 en esta ocasión aprenderemos a crear un nuevo proyecto, configurar el MPLAB X, seleccionar el PIC utilizar, etc. Después de instalar todo ejecutamos el MPLAB y nos aparecerá lo siguiente:


El siguiente paso es hacer click en: File >> New Project... y nos aparecerá la siguiente ventana, donde seleccionaremos: Microchip Embedded >> Standalone Project y después Next.


En la siguiente ventana que aparezca seleccionamos en Family: Advanced 8-bit MCUs (PIC18) y en Device: El PIC que utilicen, en mi caso utilizare el PIC18F4620 y dan Next.


En la siguiente ventana se selecciona el grabador, en mi caso uso el PICkit3 pero eso depende de cual tengan. Si no es uno de los que está en la lista puedes seleccionar Simulador u otro, después dar en Next.


En la ventana que aparece seleccionamos C18 y damos Next. Con esto le decimos que compilador es el que vamos a utilizar.


Ahora colocamos un nombre a nuestro proyecto y seleccionamos en donde lo guardaremos yo lo he dejado en la carpeta por defecto. Importante no guardarlo en un lugar que tenga una ruta demasiada larga por qué no te ve a permitir hacerlo. Dar en Finish para terminar


Ya está configurado el proyecto el siguiente paso es crear el archivo principal para ello dar click sobre la carpeta Source Files >> New >> C Main File…


Aparecerá la siguiente ventana donde colocamos el nombre al archivo por lo regular es Main, dejamos lo demás como esta y damos click en Finish.


Ahora si ya está listo para empezar a escribir código.


Con esto se termina esta parte, en la siguiente publicación veremos nuestro primer ejemplo.

9/06/2014

MicroCode Studio & PBP: Uso del ADC con PIC16F877A – Display de 7 segmentos

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión utilizaremos el ADC del PIC16F887 para encender un display de 7 segmentos.

Se tiene un display de7 segmentos de cátodo común conectado al puerto B del microcontrolador (RB0-RB6), un potenciómetro conectado al canal analógico (RA0), además una resistencia conectado al Master Clear (MCLR) para que funcione el PIC, se utiliza el oscilador interno del PIC a 4 MHz. Recordar que los pines de alimentación del PIC son: 5 para GND y 14 para Vcc=5 Volts, el circuito utilizado se muestra a continuación:

8/09/2014

MicroCode Studio & PBP: Control de motor paso a paso con PIC16F84A

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión será el control de un motor a pasos unipolar. Además es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.

El circuito es sencillo consta de un motor paso a paso dos pulsadores para hacerlo girar en ambas direcciones (izquierda o derecha) conectados al puerto A del PIC con sus debidas resistencias y también su oscilador a 4MHz con sus respectivos capacitores de 22pF, tiene su botón de Reset conectado al Master Clear, para acoplar se utiliza un integrado ULN2803 activado desde el puerto B del PIC. Recordar que los pines de alimentación del PIC son: 5 para GND y 14 para Vcc=5 Volts.

Como se controla un motor paso a paso unipolar

Estos motores suelen tener 6 o 5 cables, dependiendo de su conexión interna. Este tipo se caracteriza por ser más simple de controlar por esta razón será el que utilicemos. En la siguiente figura podemos apreciar un ejemplo para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es un arreglo de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activación se conectan directamente al un microcontrolador.

Dejo la lista de material para poder realizar este ejemplo y seguir aprendiendo de la programación.

MATERIAL:
  • 1 PIC16F84A
  • 1 ULN2803
  • 1 Motor a pasos unipolar (5 o 6 cables)
  • 3 Pulsadores
  • 3 Resistores de 330Ω a 1/2 W
  • 1 Cristal de cuarzo de 4MHz
  • 2 Capacitores de 22pF
Secuencias para manejar motores paso a paso unipolares

Existen tres secuencias posibles para activar este tipo de motores, las cuales se explican a continuación. Todas las secuencias comienzan nuevamente en el paso 1 una vez que alcanzan el último paso (4 u 8). Para hacer que el motor gire en sentido opuesto, simplemente basta con ejecutar las secuencias de manera inversa.

Secuencia Normal: Esta es la secuencia más usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retención.
Secuencia del tipo wave drive: En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento más suave. Pero al estar solo una bobina activada, el torque de paso y retención es menor.
Secuencia del tipo medio paso: En esta secuencia se activan las bobinas para brindar un movimiento igual a la mitad del paso real. Para ello se activan primero 2 bobinas y luego solo 1 así sucesivamente. Se puede decir que es una combinación de las dos formas anteriores, en este caso para lograr una vuelta tiene que hacer 8 pasos y no 4 como los anteriores.

Realizando el firmware para controlar nuestro motor

Para este ejemplo utilizare la secuencia wave drive, el comando que se utilizara para mostrar el valor en el puerto B es LOOKUP. Los valores dentro de LOOKUP pueden ser en forma hexadecimal para ello el compilador requiere que se utilice el símbolo “$”, si se quisiera utilizar los números en binario se debe de agregar el “%” y para los decimales solo basta escribir el numero tal y como es, estas tres posibilidades deben de ir separadas por comas. Nosotros utilizaremos decimales.

El código en Basic para este circuito es el siguiente:

Se declara el puerto B como salida, se declara la variable DIGITO, se inicializa el puerto B en cero, etiqueta de INICIO que es la principal, donde estará todo el código que haga que el motor funcione.

La instrucción LOOKUP va mostrar una variable DIGITO en el puerto B y se tiene la siguiente sintaxis:

LOOKUP DIGITO, [1, 2, 4, 8], PORTB

Se utiliza la variable DIGITO para saber que dato es que se va a mostrar recordar que esta variable después de mostrarse se incrementa en uno, después de le coloca un retardo para dar tiempo entre paso y paso este tiempo se puede modificar para aumentar o disminuir la velocidad de giro.

La variable DIGITO cuanta de 0 a 4 por que la secuencia utilizada solo tiene 4 pasos, cuando de utiliza la secuencia de 8 paso se debe de incrementar a 8 y de debe de modificar los valores dentro de la instrucción LOOKUP.

Vídeo del circuito en acción.

Como identificar las terminales de los motores unipolares

Cuando se trabaja con motores paso a paso usados o bien nuevos, pero de los cuales no tenemos hojas de datos. Es posible determinar la distribución de los cables a los bobinados y el común siguiendo las instrucciones siguientes:

Identificando el común: Por lo regular los motores con 6 cables tienes dos cables para el común y generalmente son del mismo color (Negro), recomiendo unirlos para no confundirse en un futuro, para el caso de tener uno de 5 cables también aplica lo del color Negro.

Identificando los cables de las bobinas (A, B, C y D): Aplicar un voltaje al cable común se puede usar 5V y manteniendo uno de los otros cables a tierra (GND) mientras vamos poniendo a tierra cada uno de los demás cables de forma alternada y observando los resultados. La nomenclatura de los cables (A, B, C y D) es totalmente arbitraria.
  1. Seleccionar un cable y conectarlo a tierra. Ese será llamado cable A.
  2. Manteniendo el cable A conectado a masa, probar cuál de los tres cables restantes provoca un paso en sentido horario al ser conectado también a tierra. Ese será el cable B.
  3. Manteniendo el cable A conectado a tierra, probar cuál de los dos cables restantes provoca un paso en sentido antihorario al ser conectado a tierra. Ese será el cable D.
  4. El último cable debería ser el cable C. Para comprobarlo, basta con conectarlo a tierra, lo que no debería generar movimiento alguno debido a que es la bobina opuesta a la A.
Aquí el enlace para DESCARGAR los archivos disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...

8/07/2014

MicroCode Studio & PBP: Control de LCD

Las LCD están compuestos básicamente por una pantalla de cristal líquido y un circuito microcontrolador especializado el cual posee los circuitos y memorias de control necesarias para desplegar el conjunto de caracteres ASCII, un conjunto básico de caracteres japoneses, griegos y algunos símbolos matemáticos por medio de un circuito denominado generador de caracteres. La lógica de control se encarga de mantener la información en la pantalla hasta que ella sea sobrescrita o borrada en la memoria RAM de datos.


El compilador en BASIC permite definir los pines del microcontrolador que se conectan al LCD (pines tales como datos, enable, escritura, etc.) usando la función DEFINE. Los parámetros disponibles para el manejo de LCD alfanuméricos son los siguientes:
  • LCD_BITS: Define el número de bits de la interfaz de datos. Se pueden asignar valores de 4 u 8, siendo 4 el valor por defecto.
  • LCD_DREG: Define a que puerto del PIC tenemos conectado el port de datos del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
  • LCD_DBIT: Define cual es el primer pin del puerto que usamos para enviar los datos al LCD cuando seleccionamos un bus de 4 bits. Solo puede ser el 0 (para los pines el 0, 1, 2 y 3) o 4 (para usar los pines 4, 5, 6 y 7). Por defecto se asume “4”, y esta instrucción se ignora para LCD_BITS = 8.
  • LCD_RSREG: Define a que puerto del PIC tenemos conectado el pin RS del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
  • LCD_RSBIT: Define a que pin del puerto tenemos conectado el pin RS del LCD. Por defecto se asume “3”.
  • LCD_EREG: Define a que puerto del PIC tenemos conectado el pin E del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
  • LCD_EBIT: Define a que pin del puerto tenemos conectado el pin E del LCD. Por defecto se asume “2”.
  • LCD_RWREG: Define a que puerto del PIC tenemos conectado el pin RW del LCD. Los valores permitidos son 0, PORTA, PORTB, PORTC, etc. Por defecto se asume “0”, que significa “no usamos el pin RW”.
  • LCD_RWBIT: Define a que pin del puerto tenemos conectado el pin RW del LCD. Por defecto se asume “0”, que significa “no usamos el pin RW”.
  • LCD_COMMANDUS: Define cuantos microsegundos demora la escritura de un comando en el display. Por defecto, este valor es de 5000. La mayoría de los LCD funcionan bien con un valor de 2000, lo que hace más rápidos nuestros programas.
  • LCD_DATAUS: Define cuantos microsegundos demora la escritura de un dato en el LCD. Por defecto, este valor es de 100.
  • LCD_INITMS: Define cuantos microsegundos demora la inicialización de la electrónica del LCD. Por defecto, este valor es de 100.
Una vez definidos los puertos y los pines del LCD, es necesario realizar una pausa de medio segundo antes de enviar los datos al LCD, esto para que tenga tiempo de inicializar la memoria RAM el dispositivo. Usamos la función PAUSE.

A continuación se muestra las sentencias para escritura del LCD, usando LCDOUT:


El pin RW va a tierra debido a que se solo escribirá datos en el LCD.

Para escribir un dato en el LCD se usan funciones como DEC, HEX, BIN, por ejemplo:

LCDOUT $FE, 1, DEC 38

LCDOUT $FE, $C0, BIN 38

Si se desea escribir en una posición inicial específica del LCD, se usa la siguiente tabla para determinar dicha posición:


Por ejemplo, para escribir desde la tercera celda de la segunda fila la palabra “ELECTRONICA” se usa:

LCDOUT $FE,$C2,”ELECTRONICA”

O bien se puede escribir la dirección de memoria en formato decimal: C2 está en hexadecimal y es 194 en decimal, por la tanto:

LCDOUT $FE,194,”TEXTO”

Físicamente, el LCD de 16×2 se debe conectar como lo indica la siguiente figura, para controlar el contraste de la pantalla:


Descripción y función de los pines de LCD.

8/05/2014

MSP-EXP430G2 LaunchPad & CCS: Introducción

Muchas son las placas que podemos encontrar en el mercado para iniciarse en el mundo de microcontroladores, una de estas es la Launchpad que es una herramienta de desarrollo y evaluación para los dispositivos MSP430 de Texas Instruments y está enfocada a su línea de dispositivos Value Line que son microcontroladores de 16 bits y además de bajo consumo.

Hace ya tiempo que tengo en mis manos una de estas tarjetas, pero por ciertas razones no la utilizo como yo quisiera, bueno creo que es hora de publicar algo y así ir aprendiendo a utilizarla, conforme vaya avanzando iré compartiendo información que a mí me ha sido de utilidad e incluso iré compartiendo las practicas o ejemplos que haya hecho. A continuación unas pequeñas fotos de mi tarjeta.

7/26/2014

MicroCode Studio & PBP: Contador ascendente y descendente con PIC16F84A (De 0 a 9)

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión utilizaremos un Display de 7 Segmentos y pulsadores para visualizar los números del 0 al 9. Además es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.

Algo que tenemos que tener en cuenta es que el código cambia dependiendo si usamos un display de ánodo común o de cátodo común. En este caso lo veremos con un display de cátodo común, lo que nos dice que para que algún segmento encienda el pin tiene que recibir un 1 lógico. Por lo tanto para saber qué es lo que deseamos ver en el display necesitamos que el puerto B del PIC o salidas (RB0-RB7) tengan 1 lógicos ó 0 lógicos.

Como lo que queremos ver en el display con los números del 0 al 9 tenemos la siguiente tabla que nos mostrara mejor lo antes mencionado. También se muestra los números en decimal, hexadecimal y binario esto nos será útil al momento de realizar la programación, que son las tres formas de mandar datos al puerto B de nuestro PIC.

7/19/2014

Convertir fuente ATX en una de laboratorio

Saludos a todos resulta que hace tiempo que tenía arrumbada una fuente de computadora (Fuente ATX) modelo LC-A300ATX de la empresa L&C TECHNOLOGY INC así que me decidí a convertirla en una de laboratorio por así decirlo, esto para hacer mis pruebas con los prototipos y todo eso, se que en Internet hay una infinidad de personas las cuales hacen estas modificaciones pero yo les comparto las fotos de cómo lo hice para que tengan una idea más, sencilla pero muy útil.

Además de utilizar los valores fijos que tiene por defecto +3.3V, +5V, -5V, +12V y -12V le he agregado un LM317 para poder tener una salida variable de +1.2V a +12V aproximadamente. Lo interesante de los valores fijos es que te soportan una corriente bastante buena que bien puede utilizarse para alimentar motores y cosas que lo requieran, el valor variable se limita a la corriente soportada por el LM317 pero aun así es útil en algunos proyectos.

Dejare algunas fotos donde se puede ir viendo el paso a paso del proceso y añadiré una breve explicación de lo que de ha realizado. Esta por demás decir que necesitamos herramientas para hacerlo como por ejemplo: pinzas de corte, desarmadores, regla, lápiz, pistola de silicón, barritas silicón, taladro, brocas, multimetro, pintura negra (puede ocuparse de otro color), thiner, lija, tablilla de cobre perforada, soldadura, cautín, en fin todo lo que se necesite para nuestra fuente quede bien.

Bueno aparte de las herramientas vamos a necesitar material aquí la lista, pero puede variar según sea el gusto del terminado que se le va a dar.

Lista de material para la fuente:
  • 6 Conectores rojos tipo banana para salida de los voltajes
  • 2 Conectores negros tipo banana para salida del GND
  • 1 Interruptor para 120V (En mi caso ya venia incluido en la fuente)
  • 1 Resistencia de 330 Ohms
  • 1 LED Rojo de 5mm (Pueden utilizar otro color)
  • 1 Base pare LED de 5 mm
  • Thermofit
Como le vamos a añadir la parte del voltaje variable vamos a necesitar:
  • 1 Regulador  LM317
  • 1 Diodo 1N4007 pero también aplica el 1N4004
  • 1 Capacitor de 220uF / 25V (Pueden ocupar de un voltaje mayor)
  • 1 Capacitor de 100uF / 25V (Pueden ocupar de un voltaje mayor)
  • 1 Capacitor de 10uF / 25V (Pueden ocupar de un voltaje mayor)
  • 1 Resistencia de 120 Ohms
  • 1 Potenciometro de 5K Ohms
Una vez que he mencionado lo que se va a utilizar pues damos manos a la obra y checamos las características que tiene nuestra fuente, vemos que nos indican el voltaje, corriente y color de cable.

7/12/2014

MicroCode Studio & PBP: Contador de 0 a 9 con PIC16F84A

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión utilizaremos un Display de 7 Segmentos para visualizar los números del 0 al 9 de manera que haremos un contador, fácil de realizar. Además es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.

Algo que tenemos que tener en cuenta es que el código cambia dependiendo si usamos un display de ánodo común o de cátodo común. En este caso lo veremos con un display de cátodo común, lo que nos dice que para que algún segmento encienda el pin tiene que recibir un 1 lógico. Por lo tanto para saber qué es lo que deseamos ver en el display necesitamos que el puerto B del PIC o salidas (RB0-RB7) tengan 1 lógicos ó 0 lógicos.

Como lo que queremos ver en el display con los números del 0 al 9 tenemos la siguiente tabla que nos mostrara mejor lo antes mencionado. También se muestra los números en decimal, hexadecimal y binario esto nos será útil al momento de realizar la programación, que son las tres formas de mandar datos al puerto B de nuestro PIC.

7/05/2014

MicroCode Studio & PBP: Luces tipo auto fantástico con PIC16F84A

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión un circuito es muy fácil de realizar además con una gran armonía visual, su sombre es luces tipo auto fantástico ya que con unos sencillos componentes se puede tener distintos efectos visualizados en los LEDs. A demás es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.

En este caso tenemos en el puerto B del PIC conectamos LEDs con sus debidas resistencias de 330Ω, los cuales se encienden de distintas formas y cada sentencia o efecto es activado mediante pulsadores en arreglo pull-up conectados en el puerto A de nuestro PIC16F84A. El circuito también cuenta con su botón de RESET conectado al pin designado paro ello en el PIC que en este caso es el pin numero 4, también tiene un cristal de cuarzo de 4MHz y sus debidos capacitores de 22pF para establecer la frecuencia de trabajo del PIC. Todo el circuito se alimenta a 5 volts, el circuito se muestra a continuación:
El código en Basic para este circuito es el siguiente:
Parte de lo que se tiene en el código ya se ha visto anteriormente así que eso doy por hecho que se tiene comprendido como lo son la inicialización de puertos, el uso de las variables, la instrucción GOTO, entro otros puedes revisar publicaciones anteriores para darse una mejor idea y poder comprender este ejemplo. Pero parte del código tiene instrucciones que hasta el momento no se habían utilizado como lo son el uso de las condicionales IF y FOR, además del uso del LOOKUP.

Al utilizar la condicional IF viene acompañado de la instrucción THEN y ENDIF. En este ejemplo se utiliza para revisar el estado de los pulsadores por ejemplo tenemos lo siguiente:

IF PORTA.0 = 1 THEN
   Líneas de código con una tarea específica.
ENDIF

Con estas líneas se revisa el estado del RA0 y si es uno ósea que si el botón es presionado ejecuta las líneas de escritas después de la instrucción THEN hasta que encuentre el ENDIF que indica el termino de la condicional. Por supuesto puedes utilizar más operadores al momento de hacer la comparación (= igual, <= menor o igual que, >=mayor o igual que, < menor que, > mayor que, etc.) y también puedes comparar variables pero este no es el caso.

Al utiliza la condicional FOR viene acompañado de la instrucción TO y de NEXT, en este ejemplo se utiliza para hacer un conteo de las veces que se repita el efecto y también para saber cuántos dígitos se mostraran en el puerto B haciendo uno de la instrucción LOOKUP, la forma de utilizarlo lo mostraremos con un ejemplo:

Para esto es necesario definir las variables en este caso de utiliza la variable “veces” y “digito”

FOR veces = 0 TO 255
   FOR digito = 0 TO 33
      Líneas de código con una tarea específica.
   NEXT
NEXT

Estas instrucciones se encargan de hacer repeticiones de instrucciones que se encuentren dentro del lazo FOR…NEXT, se tiene la primera condicional y esta se encarga contar las veces que se repetirá el efecto y en este caso va desde 0 hasta 255, supongamos que en una primera ocasión veces =0 por lo tanto ejecutara las instrucciones que se encuentren dentro de esta condicional llegando a la instrucción NEXT aumentara uno y así sucesivamente hasta que llegue a 255 una vez que se cumpla yo no realizara lo que este dentro de ello y esperara a que se presione otro botón. La segunda condicional hará lo mismo pero en este caso contara lo que este dentro de la instrucción LOOKUP este número varía dependiendo del efecto que se tenga y por supuesto el conteo lo realiza de la misma manera que la anterior condicional.

La instrucción LOOKUP sirve para mostrar una variable en un puerto en específico, en este ejemplo se muestra en el puerto B y se tiene la siguiente sintaxis:

LOOKUP digito, [$00, $01, $03, $07, $0f, $1f, $3f, $7f, $ff, $fe, $fc, $f8, $f0, $e0, $c0, $80, $00, $80, $c0, $e0, $f0, $f8, $fc, $fe, $ff, $7f, $3f, $1f, $0f, $07, $03, $01, $00], PORTB

PAUSE 75

Se utiliza la variable digito para saber que dato es que se va a mostrar recordar que esta variable está aumentando su valor con la instrucción FOR por lo tanto cada que aumente se mostrara un dato distinto en el puerto B los valores dentro de los corchetes “[valores]” están en hexadecimal, puede modificarse libremente para obtener otro resultados, después de esta instrucción colocamos un retardo para poder visualizar el efecto en los LEDs. Yo he colocado 75 milisegundos pero puede ser otro dependiendo del efecto que se requiera. Dejo la lista de material para poder realizar este ejemplo y seguir aprendiendo de la programación.

MATERIAL:
  • 8 LEDs
  • 1 PIC16F84A
  • 14 Resistores de 330Ω
  • 1 Cristal de Cuarzo de 4MHz
  • 6 Pulsadores
  • 2 Capacitores Cerámicos 22pF
Vídeo del circuito en acción:
Aquí el enlace para DESCARGAR los archivos disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...

6/28/2014

MicroCode Studio & PBP: Semáforo con PIC16F84A - Tres

Bueno en esta ocasión comenzaremos con algunas prácticas utilizando el MicroCode Studio esto para programación en BASIC para nuestros Microcontroladores PIC, en esta ocasión utilizando el ya conocido PIC16F84A, el circuito realiza la simulación de un semáforo, con pocas instrucciones y pocos elementos.

A continuación se muestra el diagrama correspondiente al semáforo, el cual tiene su oscilador externo y es un cristal de cuarzo con sus debidos capacitores, una resistencia a Vcc de 10KΩ y los LEDs (2 Rojos, 2 Verdes y 2 Amarillos) con sus debidas resistencias de 330Ω. El circuito se alimenta a 5 volts.
A continuación muestro el código para un semáforo sencillo con muy pocos elementos y muy fácil de armar.
Ahora la explicación del código: 

En esta publicación se trato de mejorar la presentación de firmware uso de nombres más específicos, nuevas instrucciones de código, uso de subrutinas, entre otros puntos que veremos a continuación. 

Las primeras líneas de código se utiliza lo que ya se venía manejando el oscilador, puertos de salida, los nombres a cada pin del puerto B de nuestro PIC. Ahora se cuenta con una variable tipo BYTE llamada VECES que más adelante se utilizara para establecer la cantidad de ocasiones que encenderán y apagan los LEDs amarillos. 

Se tiene la etiqueta SEMAFORO que indica el inicio nuestra rutina principal y en el cual se encuentra que pines se deben de activar con su debido tiempo para que se tenga visualmente en los LEDs una simulación de un par de semáforos. Básicamente se inicia encendiendo el LED verde del primer semáforo y el LED rojo del segundo, mientras el LED rojo permanece activo el otro semáforo enciende y apaga el LED amarillo, después enciende el LED verde del segundo semáforo y el primero pasa rojo y se repite bueno ya sabrán ustedes el comportamiento de los semáforos. 

Dentro de esta rutina nos encontramos con las siguientes instrucciones GOSUB BLINK_LED_AMARILLO1 y GOSUB BLINK_LED_AMARILLO2 que no son más que saltos a otras subrutinas. 

Después se tienes dos subrutinas que son casi iguales, la diferencia entre ellos es el nombre de cada una y el pin o LED que activan, en el primer caso activa el LED correspondiente a un primer semáforo y por supuesto la otra activa el LED del segundo semáforo. Dentro de estas se encuentra unos ciclos FOR que son los encargados de indicar cuantas veces se repetirá el encendido y apagado de los LEDs amarillos, al terminar dicha cantidad se utiliza la instrucción RETURN para regresar al lugar de donde se ha llamado la subrutina. Por último tenemos el fin de nuestro programa. 

Dejo el vídeo del circuito en funcionamiento
Aquí el enlace para DESCARGAR los archivos disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...

6/21/2014

Conector ICSP (In-Cicuit Serial Programming)

Una forma fácil y rápida de grabar un microcontrolador PIC es utilizar un conector ICSP (In-Circuit Serial Programming), ya que no se tiene que desmontar de la tarjeta o protoboard donde esté ubicado, también se utiliza cuando se trabaja con microcontroladores de montaje se superficie (SMD). Lo primordial es tener un programador o grabador que tenga una conexión ICSP por lo regular se ocupan 5 pines, pero en algunos micros es necesario utilizar 6 pines.

El conector ICSP que utiliza Microchip está organizado de la siguiente forma.
  • Pin 1: Corresponde al Master Clear (MCRL o VPP), para poner en modo de grabación al PIC se necesitan 12 volts en este pin.
  • Pin 2: Corresponde al VDD, VCC o 5 volts y son para alimentar al microcontrolador al momento de realizar la grabación.
  • Pin 3: Corresponde a GND, VSS o tierra.
  • Pin 4: Corresponde al control PGC y es una línea unidireccional sincrónica serial de reloj.
  • Pin 5: Corresponden a los datos de programación PGD y es una línea de datos bidireccional sincrónica serial.
  • Pin 6: Corresponde al pin PGM y se usa para habilitar la programación de bajo voltaje
Nota 1: Es importante mencionar que la conexión de estos pines puede variar dependiendo del microcontrolador utilizado, para ello se recomienda revisar la hoja de datos.

A continuación un diagrama general para utilizar el conector ICSP.
Nota 2: aquí se debe de seleccionar alguno de los dos ya sea el diodo o la resistencia. Ambos tiene el mismo fin aislar los 12 volts que se tiene en el MCRL de los 5 volts que se tienen en VCC, en lo personal yo utilizo la resistencia no ha causado problemas en mis diseños y por unos cuantos pesos es más barato que utilizar el diodo.

A continuación se muestra la forma en la que se conectar un microcontrolador de 8 pines y es el PIC12F675.
A continuación se muestra la forma en la que se conectar un microcontrolador de 18 pines y es el PIC16F628.
A continuación se muestra la forma en la que se conectar un microcontrolador de 40 pines y es el PIC16F887.
Como se menciono anteriormente solo se debe de identificar los pines utilizados y listo.

También se debe de aclarar que no todos los programadores tiene el mismo orden ya que depende de cada fabricante, pero ya depende de cada quien identificar o revisar la guía de su programador para saber exactamente el orden, si el orden es distinto yo aconsejo hacer un cable, header o adaptador para trabajar universalmente pero eso ya es elección propia.

Les comento siempre que hago mis circuitos donde ocupo PICs les agrego los pines ICSP independientemente si son Thru-hole o SMD (regularmente le dejo una tira de pines machos), también cuando trabajo en la protoborad le dejo un espacio para conectar mi grabador. contemplando que uso el PicKit3 pues sabrán que tiene un header hembra  y de esta forma no se puede usar en la protoboard, para ello he construido un adaptador Macho-Macho que no es otra cosa que un que un tramo de cable plano al cual le soldado unos pines y encima le he agregado silicon para que no se rompan o hagan corto, de la misma forma me he creado uno Macho-Hembra que igual lo ocupo para cuando dejo los pines Machos en mis PCBs. A continuación una imagen de ellos:
Espero que la información aquí encontrada les sea de gran ayuda, si tienen dudas, comentarios, sugerencias, traumas o inquietudes déjenlas en los comentarios y con gusto responderé.
  • Actualización (14/01/2014): Se agrego información sobre mis cables para ICSP.