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...