domingo, 11 de marzo de 2012

Tarea 1 - Proyecto PIC

En este post describiré cómo hacer un letrero luminoso 


Material necesario:




Material para soldar




Primeramente vamos a trabajar con el ventilador:


1. El primer paso es insertar el led infrarojo por debajo de la entrada de 12 V del ventilador.
2. La resistencia de 560 Ohms (verde, azul y café) debe ser soldada al cátodo del led (patita más corta), dejando una separación de 1.5 cm entre el led y la resistencia.




3. Aislamos la conexión con cinta.
4. Ahora tenemos que conectarla por debajo del ventilador al cable de color azul que viene en el abanico y soldar. La otra patita del led que no tiene resistencia se conecta al cable rojo.
Nota: Para conectar el cable con la resistencia es necesario pelar el cable en la parte en la que se va a conectar sin cortar el resto. Soldamos esa parte y aislamos con cinta.




Para probar si el abanico funciona debemos conectar los cables rojo y azul que quedaron arriba a un eliminador (cargador) o una fuente de luz. El abanico debe girar. 

Ahora sigamos con el circuito:
Aqui se muestra un diagrama que tenemos que seguir para que el circuito sea formado correctamente




Tenemos una tablita con el circuito ya impreso, solamente tenemos que colocar las piezas en el orden y posición adecuados.




Aqui se muestra cómo se van a colocar las piezas descritas previamente en el material y la manera en la que se deben acomodar.
La base del circuito integrado debe estar en posición U3.
Las resistencias deben estar en sus respectivas posiciones (R1-R2).
Los leds tienen que ir acomodados en la posición correcta, tenemos que verificar que el cátodo esté en la parte de abajo. (La patita más corta del led es el cátodo).
El regulador tiene que estar ubicado en posición U2.
El capacitor debe estar en posición C1. Es importante verificar la posición de la terminal positiva.


Cuando terminemos de acomodar estos componentes debemos soldarlos, de manera que quede fijo el circuito.
También debemos soldar los cables del porta pila.
Después tenemos que cortar los excesos de metal.


Después de tener nuestro circuito tenemos que soldar también el foto transistor (D1). Éste debe ir soldado a 1.5 cms sobre la tabla, ya que después se doblará y se colocará hacia abajo. También debemos soldar y cortar los excesos de metal.


El circuito debe quedar de la siguiente manera:




Ahora colocamos el circuito sobre el abanico en la base y le agregamos una batería de 9 Volts.

Al final debe quedar de la siguiente manera:


Si queremos probar si funciona bien, podemos insertar un led en la base de pic. Tiene que estar en la linea numero 5, contando desde el lado donde está el regulador. El foco del led debe encender.


El ventilador debe ir atornillado a una base para que no se mueva mucho.


Ahora tenemos que programar el pic que va a ir en la base. Este pic es el que hará que prendan los leds del letrero luminoso y forme las palabras que queremos.


Para esto necesitamos:


Hardware:










Software:
  • Steren PIC-600 (USB PIC Programmer)
  • MikroBasic Pro for PIC
Primeramente necesitamos generar un archivo .hex usando el código que le queremos programar a  nuestro pic. 
Para esto vamos a utilizar el MikroBasic:


1. Creamos un nuevo proyecto




2. Le cambiamos el nombre al proyecto
3. Identificamos el tipo de pic que vamos a programar. En este caso el que utilizamos fue el P16F628A.

Podemos seleccionar archivos para el proyecto pero no es necesario.
Incluimos todas las librerías.

Después en el panel principal introducimos el código de nuestro programa.
Donde dice program debemos escribir el nombre del proyecto.

Ejemplo: program pic (A nuestro proyecto lo llamamos pic)


Tenemos que editar el proyecto para ponerle algunas especificaciones y que pueda funcionar en nuestro proyecto.

Ahora tenemos que cambiarle éstas opciones:


Tenemos que deshabilitar el masterclear y cambiar el oscilador

Ahora vamos a generar el .hex presionando el botón de build (El que está señalado con la flecha morada)


Si todo salió bien deberíamos ver que abajo diga: Finished successfully.

Ahora ya tenemos el .hex y vamos a programarlo en el pic.

Primero tenemos que cerrar este programa y abrir el Steren PIC 600.

Ahora insertamos el pic en el programador y lo conectamos a la computadora con el cable usb.

El pic tiene que ir acomodado de la siguiente manera:


Cuando abramos el programa nos va a aparecer una pantalla como ésta

Tenemos que detectar el pic presionando el botón que dice "Identify PIC in programmer"


Después seleccionamos el archivo HEX que vamos a utilizar. Ahi tenemos que buscar el que se generó con el programa anterior.



Tenemos que asegurarnos que el PIC no tenga nada programado, si no es un pic nuevo, es recomendable presionar "Erase PIC".

Tenemos que asegurarnos que la información seleccionada en éstos campos sea la adecuada al tipo de pic que utilizamos:


Ahora vamos a cambiarle un poco a la configuración del PIC. Tenemos que irnos a la pestaña PIC Configuration, cambiarle el oscilador y deshabilitarle el Master Clear


Ya que tenemos todo esto listo podemos darle click donde dice write HEX-FILE into PIC


Ahora nuestro PIC ya está programado. Antes de retirarlo tenemos que presionar remove CP para poder quitarlo. Una vez que hayamos hecho esto ya podemos quitar el PIC y ponerlo en la base de nuestro sistema.


Ahora tenemos que probar si funciona...

Proyecto Carmen

Código
program monohola

symbol sensor = PortA.1
' Declarations section
dim i,r as longint
dim mov as short
dim mov_uno, mov_dos, mov_tres as BYTE

sub procedure mov1
const uno as byte[68]=
($00,$00,$10,$08,$EF,$FE,$EF,$08,$10,$00,
$00,$00,$00,$00,$00,$FF,$08,$08,$08,$FF,
$00,$00,$00,$5F,$00,$00,$00,$FD,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00)

for i= 0 to 68
         for mov_uno = 0 to 3 '//determina el ancho de la letra
               portb = uno [i]
               delay_us (75)
               portb = 0
               delay_us (30)
       next mov_uno
    next i

end sub

sub procedure mov2
const dos as byte[68]=
($00,$00,$04,$08,$EF,$FE,$EF,$08,$04,$00,
$00,$00,$00,$00,$00,$FF,$08,$08,$08,$FF,
$00,$00,$00,$5F,$00,$00,$00,$FD,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00)

for i= 0 to 68
         for mov_dos = 0 to 3 '//determina el ancho de la letra
               portb = dos [i]
               delay_us (75)
               portb = 0
               delay_us (30)
         next mov_dos
    next i
end sub

sub procedure mov3
const tres as byte[68]=
($00,$00,$08,$08,$EF,$FE,$EF,$08,$08,$00,
$00,$00,$00,$00,$00,$FF,$08,$08,$08,$FF,
$00,$00,$00,$5F,$00,$00,$00,$FD,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00)

for i= 0 to 68
         for mov_tres = 0 to 3 '//determina el ancho de la letra
               portb = tres [i]
               delay_us (75)
               portb = 0
               delay_us (30)
         next mov_tres
    next i
end sub

main:
'   Main program
portB=0
cmcon=7

trisb = 000000
trisa = 000010

mov = 0

sinc:
     if sensor = 1 then '//los leds prenden hasta que reciban señal IR
             goto sinc
     end if

while true

mov1
mov2
mov3

wend

goto main
end.


Video letrero de Carmen


Programa Gaby

program pic
symbol sensor = PortA.1

dim i as longint
dim letra, num as byte

sub procedure num_diez
const diez as byte[10] =($00,$00,$42,$FE,$02,$00,$FE,$82,$FE,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = diez [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_nueve
const nueve as byte[10] =($00,$00,$F2,$92,$92,$FE,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = nueve [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_ocho
const ocho as byte[10] =($00,$00,$FE,$92,$92,$FE,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = ocho [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_siete
const siete as byte[10] =($00,$00,$80,$90,$90,$FE,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = siete [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_seis
const seis as byte[10] =($00,$00,$FE,$92,$92,$9E,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = seis [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_cinco
const cinco as byte[10] =($00,$00,$F2,$92,$92,$9E,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = cinco [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_cuatro
const cuatro as byte[10] =($00,$00,$F0,$90,$90,$FE,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = cuatro [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_tres
const tres as byte[10] =($00,$00,$82,$92,$92,$FE,$00,$00,$00,$00)
    for i = 0 to 10
         for letra = 0 to 2
               portb = tres [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_dos
const dos as byte[10] =($00,$00,$9E,$92,$92,$F2,$00,$00,$00,$00)
    for i = 0 to 9
         for letra = 0 to 2
               portb = dos [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

sub procedure num_uno
const uno as byte[10] =($00,$00,$22,$42,$FE,$02,$02,$00,$00,$00)
    for i = 0 to 9
         for letra = 0 to 2
               portb = uno [i]
               delay_us (75)
               portb = 0
               delay_us (30)
        next letra
    next i
end sub

main:

portB=0
cmcon=7
' //inicialización del PIC
trisb = 000000
trisa = 000010

num = 0

sinc:
if sensor = 1 then
   goto sinc
   end if
   
while true

num_diez
num_nueve
num_ocho
num_siete
num_seis
num_cinco
num_cuatro
num_tres
num_dos
num_uno

wend

goto main

end.

Video letrero de Gaby




Agradecimientos

Alejandro Avendaño
Victor Alex Briones
Osvaldo Hinojosa
Roberto Martinez










2 comentarios:

  1. Confio en tí en que salga el video. Van 8 para el lab, aunque ya es el tercer tutorial para la misma cosa, según yo...

    ResponderEliminar
  2. buenos dias quisiera saber como crearon o como hicieron para conseguir el codigo de cada imagen...tienen algun programa o como hicieron para crear la imagen cuando esta dando vuelta el ventilador?? muchas gracias

    ResponderEliminar