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.

6/14/2014

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

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.

6/07/2014

PIC TRAINER: Módulo de 8 entradas o salidas

Esta placa es una pieza importante de nuestra lista de módulos. Básicamente, consiste en una serie de pulsadores y LEDs, para ser utilizados como entradas o salidas dependiendo de lo que se requiera. Para se mas específicos la tarjeta tiene 8 LEDs y 8 pulsadores y se pueden seleccionar por medio de unos jumpers. Por ejemplo es posible ocupar 5 LEDs como salidas y 3 pulsadores como entrada.

Como sabemos los conectores son compatibles con los otros módulos y cables de nuestra entrenadora, así que este modulo también tiene los conectores para cable plano que impide colocarlos de distinta posición.

El circuito que se utiliza para el circuito es el siguiente: