miércoles, 15 de diciembre de 2010

PRACTICA CON EL PIC 16F84A




OBJETIVO GENERAL
"Realizar la práctica primeramente simulada y después llevarla a cabo físicamente, además que la práctica requirió que guardáramos la información en el pic 16f84a”.
JUSTIFICACIÓN
La realización de esta práctica es de gran importancia ya que la simulación ahorra mucho tiempo que si se hiciera físicamente y se tuviera que estar probando y por lo tanto representa un ahorro considerable de dinero ya que no se compran cosas innecesarias y al llevarlo al protoboard nos damos cuenta que es mucho más fácil su implementación.
La práctica ayuda a comprender las grandes ventajas que se le pueden aprovechar a los circuitos integrados ya que pueden automatizar tareas y a la vez tiene algunas ventajas como la exactitud y economía que representa
PARTES Y MATERIALES

Ø  Protoboard.
Ø  6 leds rojos
Ø  2 leds verdes
Ø  pic16f84a
Ø  Cristal de cuarzo de 12MHz
Ø  8 resistencias de 100 OMS y de 1koms
 
MARCO TEÓRICO
Pic16f84a




 Se trata de uno de los microcontroladores más populares del mercado actual, ideal para principiantes, debido a su arquitectura de 8 bits, 18 pines, y un set de instrucciones RISC muy amigable para memorizar y fácil de entender, internamente consta de:

Ø  Memoria Flash de programa (1K x 14).
Ø  Memoria EEPROM de datos (64 x 8).
Ø  Memoria RAM (68 registros x 8).
Ø  Un temporizador/contador (timer de 8 bits).
Ø  Un divisor de frecuencia.
Ø  Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A  y 8 pines el puerto B).
Ø  Manejo de interrupciones (de 4 fuentes).
Ø  Perro guardián (watchdog).
Ø  Bajo consumo.
Ø  Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un reloj de 20Mhz, el reloj interno sería de 5Mhz y así pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS)
Ø  No posee conversores analógicos-digital ni digital-analógicos.
Ø  Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución de la instrucción (los saltos ocupan un ciclo más).
Ø  Repertorio de instrucciones reducido (RISC), con tan solo 30 instrucciones distintas.
Ø  4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operación entre registros, de salto.




Resistencia
La resistencia es el componente electrónico diseñado para introducir una resistencia eléctrica determinada entre dos puntos de un circuito. En el propio argot eléctrico y electrónico, son conocidos simplemente como resistencias.
Es un material formado por carbón y otros elementos resistivos para disminuir la corriente que pasa. Se opone al paso de la corriente.



Cristal de cuarzo


El cuarzo se conoce por sus propiedades piezoeléctricas: cuando se comprime se produce una separación de cargas eléctricas que genera a su vez una diferencia de tensión y, de manera recíproca, reacciona mecánicamente cuando se somete a un cierto voltaje. Este efecto lo convierte en un elemento de gran utilidad para gran variedad de transductores, desde encendedores o mecheros hasta altavoces.
Otra característica interesante de un cristal de cuarzo es su capacidad de presentar un comportamiento resonante. De la misma manera que un péndulo o un columpio oscila con una frecuencia propia si, tras darle impulso, se le deja moverse libremente, un cristal de cuarzo sometido a un estímulo eléctrico puede continuar vibrando a una cierta frecuencia (dependiente de la propia naturaleza del cristal), hasta perder ese impulso inicial. Si se mantiene el estímulo de manera periódica y sincronizada, tendremos una señal a una frecuencia extraordinariamente precisa, en lo que podría considerarse la contrapartida electrónica de un reloj de péndulo. Esta aplicación es común en todo tipo de sistemas electrónicos como relojes, microprocesadores, y osciladores.

Led

Un led[1] o diodo emisor de luz es un dispositivo semiconductor (diodo) que emite luz incoherente de espectro reducido cuando se polariza de forma directa la unión PN del mismo y circula por él una corriente eléctrica. Este fenómeno es una forma de electroluminiscencia.
El color, depende del material semiconductor empleado en la construcción del diodo y puede variar desde el ultravioleta, pasando por el visible, hasta el infrarrojo. Los diodos emisores de luz que emiten luz ultravioleta también reciben el nombre de led UV (ultraviolet light: ‘luz ultravioleta’) y los que emiten luz infrarroja se llaman IRED (InfraRed Emitting Diode).
El funcionamiento físico consiste en que, en los materiales semiconductores, un electrón al pasar de la banda de conducción a la de valencia, pierde energía; esta energía perdida se puede manifestar en forma de un fotón desprendido, con una amplitud, una dirección y una fase aleatoria. El que esa energía perdida cuando pasa un electrón de la banda de conducción a la de valencia se manifieste como un fotón desprendido o como otra forma de energía (calor por ejemplo) va a depender principalmente del tipo de material semiconductor.


 
FUNCIONAMIENTO


La práctica consiste en programar el pic para que mande la señal de encendido en diferentes tiempos a los leds de manera uniforme para que se vea como una secuencia de luces.








IMAGEN EN PROTEUS

 


CONCLUSIÓN



Se ha aprendido y practicado aspectos importantes para la utilización de la simulación en el campo de la electrónica así como la utilización del  pic.

Todo esto nos ayuda a comprender que la electrónica es una rama muy importante para los procesos de automatización de las grandes industrias de todo tipo y que una buena utilización de estas herramientas nos reportan una gran cantidad de ahorro en tiempo y dinero.

viernes, 19 de noviembre de 2010

Practica usando el puerto paralelo


OBJETIVO GENERAL
“Identificar los comando básicos para control de puertos por medio de un lenguaje de programación”

JUSTIFICACIÓN
La realización de esta práctica es de gran importancia ya que al implementar el control del puerto paralelo podemos entender cómo se pueden utilizar estos tipos de puertos para controlar diversos dispositivos desde la computadora.
PARTES Y MATERIALES
  • Protoboard
  • Fuente: Batería 9V DC.
  • Resistencias de 1/4W:
    • R3: 3 de 2.2 K
    • R2: 8 de 4.7 K
    • R1: 8 de 330
  • 8 Leds.
  • 2 circuitos integrados 74LS04.
  • 1 circuito regulador LM7805.
  • 2 condensadores electrolíticos
  • 3 pulsadores.
  • 1 conector DB25 macho.
  • Cable para unir del conector DB25
Resistencias de 1/4W:
    • R3: 3 de 2.2 K
    • R2: 8 de 4.7 K
    • R1: 8 de 330
La resistencia es el componente electrónico diseñado para introducir una resistencia eléctrica determinada entre dos puntos de un circuito. En el propio argot eléctrico y electrónico, son conocidos simplemente como resistencias.
Es un material formado por carbón y otros elementos resistivos para disminuir la corriente que pasa. Se opone al paso de la corriente.
Led:
 
Es un dispositivo que en su interior contiene un material semiconductor que al aplicarle una pequeña corriente eléctrica produce luz. La luz emitida por este dispositivo es de un determinado color que no produce calor, por lo tanto, no se presenta aumento de temperatura como si ocurre con muchos de los dispositivos comunes emisores de luz.


Circuitos integrados 74LS04




Circuito regulador LM7805

Es el regulador de voltaje más común, y muy usado en diseños empotrados.

Condensador Electrolítico:
Es un dispositivo que almacena energía eléctrica, es un componente pasivo. Está formado por un par de superficies conductoras en situación de influencia total (esto es, que todas las líneas de campo eléctrico que parten de una van a parar a la otra), generalmente en forma de tablas, esferas o láminas, separadas por un material dieléctrico (siendo este utilizado en un condensador para disminuir el campo eléctrico, ya que actúa como aislante) o por el vacío, que, sometidos a una diferencia de potencial


Pulsadores
  
Elemento que permite el paso o interrupción de la corriente mientras es accionado. Cuando ya no se actúa sobre él vuelve a su posición de reposo.

Conector DB25 macho


Es un conector analógico de 25 clavijas de la familia de conectores D-Subminiature (D-Sub o Sub-D).

Cable para unir del conector DB25

    MARCO TEÓRICO
Existen dos métodos básicos para transmisión de datos en las computadoras modernas. En un esquema de transmisión de datos en serie un dispositivo envía datos a otro a razón de un bit a la vez a través de un cable. Por otro lado, en un esquema de transmisión de datos en paralelo un dispositivo envía datos a otro a una tasa de n número de bits a través de un número de cables a un tiempo. Sería fácil pensar que un sistema en paralelo es n veces más rápido que un sistema en serie, sin embargo esto no se cumple, básicamente el impedimento principal es el tipo de cable que se utiliza para interconectar los equipos.
Un sistema de comunicación en paralelo puede utilizar cualquier número de cables para transmitir datos, la mayoría de los sistemas paralelos utilizan ocho líneas de datos para transmitir un byte a la vez, como en todo, existen excepciones, por ejemplo el estándar SCSI permite transferencia de datos en esquemas que van desde los ocho bits y hasta los treinta y dos bits en paralelo. Un típico sistema de comunicación en paralelo puede ser de una dirección (unidireccional) o de dos direcciones (bidireccional). El más simple mecanismo utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora.
FUNCIONAMIENTO


El circuito trabaja de acuerdo con la información que recibe del puerto paralelo del ordenador.

En este caso se utilizó visual Basic 6 y con la librería io.dll para controlar el puerto paralelo.

Lo que hace el programa es que manda en código binario al circuito el cual lo recibe el circuito integrado que es el que se encarga de direccionar la corriente para que prenda el led que corresponde al código binario.

En el caso del programa se manejan lo que son los botones para decidir que led va a encender, aunque también se pueden mandar una sumatoria de código binario para encender más de un solo led.
Por ejemplo si nosotros quisiéramos que el led número 1 encendiera, el botón en visual mandaría una orden, con el número 1 al circuito. Si quisiéramos que solo encendiera el led número 5 el botón mandaría una orden pero con el numero 16 (la librería se encarga de reconocer los números en decimal para que el ordenador se los envía al circuito integrado en forma binaria).
Pero si quisiéramos que al presionar el botón se prendieran los dos leds tendríamos que hacer una sumatoria de los números decimales en este caso 1+5 =6, 6 será nuestro nuevo número para enviarlo se encenderán los dos leds.




DIAGRAMA ELECTRICO

 






INTERFAZ







      
  
Creado en visual Basic 6



IMÁGENES DEL FUNCIONAMIENTO

Solo se indica que prendan los leds amarillos en este caso vemos que la posición 1 se encuentra el led que se encuentra más a la izquierda, se puede visualizar que los leds que enciendes son los que se encuentran en la posición 2 y la posición 6 por lo que tenemos que 2+32= 34, 34 es el número que se va enviar al presionar el botón en la interfaz de visual.

 

Aquí tenemos los leds rojos



Tambien se manejó secuencias, en la imagen también se ven los leds rojos pero en realidad iban prendiéndose cada colores respetando un intervalo de tiempo. 

 

CODIGO EN VISUAL BASIC 6

Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)

Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte

Dim a, b, c, d, e, f As Integer


Private Sub btnLed10_Click()
    PortOut &H378, 0
    Me.Timer1 = False
    Me.tmrSemaforo = False
    Me.tmrMotor = False
    Me.tmrSecuencia2 = False
    Me.tmrSecuencia3 = False
    a = 0
    b = 0
    c = 0
    d = 0
    e = 0
    f = 0
    Me.imgApagAmarillo.Visible = True
    Me.imgApagRojo.Visible = True
    Me.imgApagVerde.Visible = True
    Me.imgPrendiAmarillo.Visible = False
    Me.imgPrendiRojo.Visible = False
    Me.imgPrendiVerde.Visible = False
End Sub

Private Sub btnLed5_Click()
    If Me.imgApagAmarillo.Visible = True And Me.imgApagVerde.Visible = True Then
        PortOut &H378, 96
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = False
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
       



Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnLed6_Click()
    If Me.imgApagAmarillo.Visible = True Then
            PortOut &H378, 32
            Me.imgPrendiAmarillo.Visible = True
            Me.imgPrendiVerde.Visible = False
            Me.imgPrendiRojo.Visible = False
            imgApagAmarillo.Visible = False
            Me.imgApagVerde.Visible = True
            Me.imgApagRojo.Visible = True
        Else
            PortOut &H378, 0
            Me.imgPrendiAmarillo.Visible = False
            Me.imgPrendiVerde.Visible = False
            Me.imgPrendiRojo.Visible = False
            imgApagAmarillo.Visible = True
            Me.imgApagVerde.Visible = True
            Me.imgApagRojo.Visible = True
        End If
End Sub

Private Sub btnLed7_Click()
    If Me.imgApagVerde.Visible = True Then
        PortOut &H378, 64
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnLed9_Click()
    If Me.imgApagAmarillo.Visible = True And Me.imgApagVerde.Visible = True And Me.imgApagRojo.Visible = True Then
        PortOut &H378, 255
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = True
        imgApagAmarillo.Visible = False
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = False
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnMotor_Click()
    If Me.imgApagRojo.Visible = True Then
        PortOut &H378, 128
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = True
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = False
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnRojoAmarillo_Click()
    'PortOut &H378, 160
    If Me.imgApagAmarillo.Visible = True And Me.imgApagRojo.Visible = True Then
        PortOut &H378, 160
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        imgApagAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgApagVerde.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub


Private Sub btnSalir_Click()
    End
End Sub

Private Sub btnSecuencia_Click()
    If Me.txtVelocidadKitt.Text = "" Or Me.txtVelocidadKitt.Text = "0" Then
        MsgBox "Seleccione algún valor de velocidad mayor a cero"
    Else
         Me.Timer1.Interval = CInt(Me.txtVelocidadKitt.Text)
         Me.Timer1 = True
    End If
End Sub

Private Sub btnSecuencia2_Click()
    Me.tmrSecuencia2.Interval = 1000
    Me.tmrSecuencia2 = True
End Sub

Private Sub btnSecuencia3_Click()
    Me.tmrSecuencia3.Interval = 1000
    Me.tmrSecuencia3 = True
End Sub

Private Sub btnSemaforo_Click()
    Me.tmrSemaforo.Interval = 1000
    Me.tmrSemaforo = True
End Sub


Private Sub btnSMotor_Click()
    Me.tmrMotor.Interval = 1000
    Me.tmrMotor = True
End Sub



Private Sub Timer1_Timer()
    a = a + 1
    lblCuenta.Caption = a
 
    'Secuencia del Kitt
    If a = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf a = 2 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf a = 3 Then
        PortOut &H378, 128
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf a = 4 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        a = 0
    End If
End Sub

Private Sub tmrMotor_Timer()
    c = c + 1
    d = d + 1
    If c = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf c = 2 Then
        PortOut &H378, 0
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        c = 0
    End If
    If d = 8 Then
        PortOut &H378, 128
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        Me.tmrMotor = False
    End If
   
    Me.lblCuenta.Caption = d
End Sub

Private Sub tmrSecuencia2_Timer()
    e = e + 1
     'Secuencia 2
    If e = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf e = 3 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf e = 5 Then
        PortOut &H378, 96
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
        e = 0
    ElseIf (e Mod 2) = 0 Then
        PortOut &H378, 0
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    End If
End Sub

Private Sub tmrSecuencia3_Timer()
    f = f + 1
    'Secuencia 2
    If f = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf f = 2 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        f = 0
    End If
End Sub

Private Sub tmrSemaforo_Timer()
    b = b + 1
    If b = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf b = 4 Then
        PortOut &H378, 96
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf b = 6 Then
         PortOut &H378, 128
         Me.imgApagAmarillo.Visible = True
         Me.imgPrendiAmarillo.Visible = False
         Me.imgApagRojo.Visible = False
         Me.imgPrendiRojo.Visible = True
         Me.imgPrendiVerde.Visible = False
         Me.imgApagVerde.Visible = True
    ElseIf b = 9 Then
         b = 0
    End If
    
End Sub

Private Sub VScroll1_Change()
    Me.txtVelocidadKitt.Text = CInt(VScroll1.Value)
End Sub