puerto paralelo vb6

Upload: danielsani

Post on 13-Oct-2015

95 views

Category:

Documents


12 download

TRANSCRIPT

  • MANEJO DE PUERTO PARALELO EN VISUAL BASIC 6.0

    EL PUERTO PARALELO

    OBJETIVOS:

    1.- Saber que funcin tiene la librera DLL. 2.- Saber que es la Codificacin Binaria. 3.- Reconocer al puerto paralelo. 4.- Escritura y Lectura de Datos. 5.- Armar la Interfaz Electrnica. 6.- Instalacin del Archivo Ntport 7.- Ejercicios de Aplicacin. 8.- Ejercicios Propuestos. 9.- Auto evaluacin.

    1.- NTPORT.DLL

    Es un conjunto de libreras relacionadas con el acceso directo a dispositivos de entrada y salida que evita tener que usar herramientas de desarrollo de software. Hay dos archivos: NTPORT.DLL y ANTPORT.SYS. Por lo tanto se puede decir que estas libreras son un archivo. Para la implementacin de un proyecto en cdigo es necesario contar con una librera que trabaje con el puerto paralelo. Las razones se dan a continuacin:

    - Lectura y escritura en el puerto paralelo utilizando Visual Basic. - Para realizar las operaciones de lectura y escritura en el puerto paralelo

    utilizando el entorno de Visual Basic, es necesario controlar el puerto a travs de una librera DLL, esto es, una librera de enlace dinmico porque Visual Basic no cuenta con instrucciones propias para escribir o leer datos del puerto, las libreras de enlace dinmico, forman parte de los elementos primordiales del sistema operativo de Windows.

    Bsicamente las libreras DLL, son archivos ejecutables independientes que incluyen funciones y recursos para que puedan ser llamadas por otros programas, e incluso por otras DLL, para llevar acabo ciertos trabajos. No es posible ejecutar una DLL de

  • manera independiente, sino que solo se puede utilizar hasta que un programa u otra DLL llamen a alguna de las funciones de la librera. El hecho de que sea una librera de enlace dinmico, hace referencia al cdigo que contiene, la DLL se incorpora al programa ejecutable, y esta es llamada solo al momento en que se solicita, esto es en tiempo de ejecucin. Dentro de la librera DLL existen funciones para controlar el puerto paralelo y desde Visual Basic puede ser fcilmente llamada. En esta ocasin un proyecto se trabajara con la librera NTPORT.DLL la cual permite tener acceso a los puertos de entrada y salida de una computadora sin necesidad de utilizar el paquete de Windows Drivers Development.

    2.- CODIFICACIN BINARIA

    2.1.- QUE ES UN ARCHIVO:

    Es un conjunto de informacin binaria; es decir, un conjunto que va de 0 a 1. Este archivo puede almacenarse para mantener un registro de esta informacin. Un archivo de texto es un archivo que contiene caracteres almacenados en forma de octetos (o bytes). Se guarda en el disco duro con la forma: nombre del archivo.ext" (nombre_del_archivo.ext). ".ext" representa la extensin, la cual constituye una manera de reconocer el tipo de programa que se necesita para abrir el archivo (nota: esto no ofrece garantas respecto del tipo de archivo, ya que cuando se modifica la extensin, el tipo de archivo no cambia). El largo del nombre y de la extensin puede variar segn el sistema operativo: 8 caracteres para el nombre y 3 para la extensin.

    2.2.- INTRODUCCIN AL SISTEMA BINARIO.

    - Hay 2 condiciones, es decir dos estados (desde un punto de vista lgico). - En el mundo real el 0 y 1 son representados por voltaje. El nmero 0 representa cero voltios, y el nmero 1 representa 5 voltios.

    - Sistema de Codificacin Binario = funcionamiento de la computadora

    Tipos de Sistemas: Sistema decimal (1, 2, 39,0). Sistema sexagesimal (60) sumerios. Sistema Vigesimal (20) mayas. Sistema Duodecimal (12) Reino Unido.

    2.3.- El BIT (Dgito Binario): Corresponde a cero 1 en numeracin binaria, es la unidad de informacin ms pequea que puede manipular una mquina digital, es posible representar esta informacin binaria:

    - Con una seal elctrica o magntica que, ms all de un cierto nivel representa el 1.

    - Utilizando circuitos elctricos, componentes electrnicos que posee dos condiciones estables (una que representa al 1 y la otra al 0). (Ejemplo: un chip).

  • Por lo tanto el bit se puede establecer con uno de los dos estados, tanto con 1 como 0. Con dos bits, se puede obtener 4 condiciones diferentes (2x2):

    0 0 0 1 1 0 1 1

    Con 3 bits, se pueden obtener ocho condiciones diferentes (2x2x2): Valor binario de 3 bits Valor decimal 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7

    Con 4 bits, se puede obtener 16 condiciones diferentes.

    Nota:

    Con un grupo de n bits: es posible presentar 2 a la n valores.

    Valores de los bits

    En un nmero binario, el valor de un bit depende de su posicin, empezando desde la derecha. Como las decenas, centenas y millares en un nmero decimal, el valor de un bit se incrementa por dos a medida que va desde la derecha hacia la izquierda, como se muestra en el siguiente cuadro:

    Nmero binario: 1 1 1 1 1 1 1 1 2^0=1 2^1=2 2^2=4 2^3=8 Valor: 2^4=16 2^5=32 2^6=64 2^7=128

    Conversin:

    Para convertir una cadena binaria en un nmero decimal se debe multiplicar cada bit por su valor, y luego sumar los productos. De esta forma, la cadena binaria 0101 en nmero decimal sera:

  • = 2^3 x 0 + 2^2 x 1 + 2^1 x 0 + 2^0 x 1 = 8x0 + 4x1 + 2x0 + 1x1 = 5

    Ejemplos: Convertir un Nmero Binario a Decimal o viceversa.

    Convertir el nmero decimal 77: a nmero binario.

    Convertir el nmero binario: 11011001 a nmero decimal.

    2.4.- El BYTE

    El byte (abreviado con la mayscula B) es una unidad de informacin compuesta por 8 bits. Se puede utilizar para almacenar, entre otras cosas, un carcter, como por ejemplo una letra o un nmero. Agrupar nmeros en cmulos de 8 facilita su lectura, as como agrupar nmeros en grupos de tres hace ms legibles los millares cuando se trabaja en base decimal. Por ejemplo, el nmero "1.256.245" se lee mejor que "1256245". Por lo general, una unidad de informacin de 16 bits se denomina palabra. Una unidad de informacin de 32 bits se denomina palabra doble (o tambin, dword). Para un byte, el menor nmero posible es 0 (representado por ocho ceros: 00000000), y el mayor nmero es 255 (representado por ocho unos: 11111111), que permite la creacin de 256 valores diferentes.

    Nmero Binario Valor 0 1 2^0=1 0 1 2^1=2 0 1 2^2=4 0 1 2^3=8 0 1 2^4=16 0 1 2^5=32 0 1 2^6=64 0 1 2^7=128

    Kilobytes y Megabytes

    Durante mucho tiempo, la informtica fue una ciencia inusual ya que utilizaba diferentes valores para sus unidades, diferentes a las del sistema mtrico (tambin llamado "sistema Internacional"). Los usuarios de ordenadores aprendan con rapidez que 1 kilobyte estaba compuesto por 1024 bytes. La lista siguiente incluye las unidades estandarizadas de la IEC: Un kilobyte (kB) = 1000 bytes Un megabyte (MB) = 1000 kB = 1.000.000 bytes Un gigabyte (GB) = 1000 MB = 1.000.000.000 bytes Un terabyte (TB) = 1000 GB = 1.000.000.000.000 bytes

  • 3.- RECONOCER EL PUERTO PARALELO (DISEO DEL SOFTWARE)

    Recibe el nombre de paralelo porque tiene un bus de datos de 8 lneas y adems es posible escribir en el 8 bits al mismo tiempo, se encuentra atrs del computador y es un conector DB25 hembra generalmente, en donde normalmente se conecta la impresora, o algunos otros dispositivos como los escneres.

    CONECTOR CENTRONICS HEMBRA

    Por las caractersticas que tiene el puerto paralelo se le puede sacar provecho en muchas aplicaciones electrnicas entre el puerto y el exterior.

  • Pines de funcionamiento:

    Signal Name Register Bit Pin I/O Strobe C0 1 Output Data Bit 0 D0 2 Output Data Bit 1 D1 3 Output Data Bit 2 D2 4 Output Data Bit 3 D3 5 Output Data Bit 4 D4 6 Output Data Bit 5 D5 7 Output Data Bit 6 D6 8 Output Data Bit 7 D7 9 Output Acknowledge S6 10 Input Busy S7 11 Input Paper End S5 12 Input Select In S4 13 Input Auto Feed C1 14 Output Error S3 15 Input Initialize C2 16 Output Select C3 17 Output Ground - 18-25 -

    PINES DE FUNCIONAMIENTO

    Las tierras cumplen dos funciones:

    La primera es que vinculan las tierras de seal de los dos dispositivos que se interconectan de modo que puedan compartir una tierra comn como referencia para la seal.

    La segunda es que, puesto que, la conexin entre los dos dispositivos se realiza a menudo mediante un cable tipo cinta, las tierras (llamadas muchas veces retornos de tierra) actan como blindajes de las lneas ms importantes.

    Las salidas de datos mandan informacin desde la computadora al puerto paralelo. Para esto hay ocho bits (un byte) del 2-9. D0 es el menos significativo (LSB) y D7 el ms significativo (MSB). A este conjunto de pines se le denominan Salidas de Datos.

    A estas cuatro lneas de salida (STROB, AUTOFEED, SELECT, INITIALIZE) son conocidas como salidas de dialogo y manda seales determinadas al dispositivo electrnico, interactuando para cumplir su labor.

    Cinco lneas de entrada (SEL, PE, OCUPADO, ACK, FAULT), son conocidas como entradas de dialogo y, estas lneas junto con las salidas de dialogo cumplen con el dialogo entre la computadora y el dispositivo electrnico. Es

  • importante mencionar que el pin ACK (lnea 10) trabaja como pulso negativotes decir que se encuentra negado).

    Con todo lo anterior resumimos que contamos con 12 lneas de salida y 5 de entrada.

    Para poder tener acceso al puerto es importante contar con un compilador, cualquiera es valido desde ensamblador hasta Visual Basic. A pesar de la gran cantidad de lenguajes la sintaxis para poder leer y escribir en el puerto son muy parecidas en todos ellos.

    4.- ESCRITURA DE DATOS EN EL PUERTO

    Para poder mandar informacin o escribir en el puerto se necesitan dos parmetros. El dato y la direccin, la direccin es el lugar a donde va a ser escrito el dato.

    Existen tres diferentes direcciones compatibles con el puerto paralelo, 0x378, 0x278 y 0x888. La mas comn es la primera (esto depende de la computadora no siempre se utiliza la misma).

    En nuestro caso utilizaremos la tercera: 0x888

    4.1.- SALIDA O ESCRITURA DE DATOS:

    Otra cosa importante es aclarar que estas direcciones slo se utilizan para manejar las Salidas de datos (Pin 2 Pin 9).

    Sintaxis:

    NTPORT.VALUE = dato a asignar

    Se debe tener presente que la direccin en las propiedades del puerto para salida de datos debe configurarse: con el nmero 888.

    Ejemplo:

    NTPORT1.VALUE = 8

    NOTA:

    El otro parmetro de la instruccin es el dato, corresponden a la combinacin de unos y ceros que sern enviados al dispositivo. Es importante aclarar que los unos se representan como 3.8 a 5 voltios, y los ceros se representan con valores menores a 0.8V.

    Adems es importante tener presente que la salida de cada pin mxima es de 24mA, por lo que es importante hacer uso de un buffer (Opto acopladores) para aislar el puerto. En nuestro caso hemos puesto resistencias de 220 ohmios o 330 ohmios.

  • HARDWARE PARA ESCRIBIR EN EL PUERTO PARALELO

    En donde J1, es el conector DB-25 del puerto paralelo.

    R1 a R8 son resistencias de 1/4W de 330 ohmios o 220 ohmios.

    D1 a D8 son leds.

    IC1 es un 74AC541 o similar. Para nuestra Interfaz no utilizamos suficiente las resistencias.

    4.1.- LECTURA DE DATOS EN EL PUERTO:

    Para leer datos, debemos enviar estos datos desde el dip switch hacia el dispositivo utilizando los siguientes pines 10, 11, 12, 13 para esto el valor que toma el objeto creado ser de la siguiente manera:

    Sintaxis:

    Text1.text = NTPORT2.VALUE

    Se debe tener presente que la direccin en las propiedades del puerto para la entrada de datos debe configurarse: con el nmero 889.

  • Ejemplo:

    Text1.text = NTPORT2.VALUE

    El objeto texto recibe un nmero que va a depender de la entrada desde la interfaz electrnica.

    LECTURA DEL PUERTO

    En donde J1, es el conector DB-25 del puerto paralelo.

    R1 A R5 son resistencias de 1/4 W 10 kiloohms.

    S1 a S5 son pulsadores, llaves, DIP SWICH. Ntese que el circuito tiene en cuenta la lnea negada, lo que "normaliza" la lectura.

    Ejemplo: Lectura de datos hacia el puerto.

  • 6.- INSTALACIN DEL ARCHIVO NTPORT:

    Archivo NTPORT:

    Doble click en setup.exe

    Pulsamos OK

    Icono: Click this button to install NTPORT 1.21

  • Botn: No to All

    Boton: Aceptar

    Buscamos en el explorador donde se instalo

    C:\Archivos de programa\Project1

    Doble click archivo Project1

  • Doble click archivo: LOADDRV.EXE

    Escribimos: dlportio.sys

    Pulsamos el boton Install

  • Pulsamos: el boton Start

    Boton OK.

    Una vez realizado la instalacin debemos cargar el objeto desde la ventana componentes del proyecto, para esto hacemos click derecho en el espacio de los componentes y habilitamos NTPORT.

    Me sale la ventana componentes

  • Sealamos con un visto bueno en donde dice NTPORT_Custom_Control y pulsamos el botn Aplicar, luego el botn Cerrar.

    Inmediatamente se crea el archivo un objeto color verde y lo cargamos en el formulario, para poder utilizarlo en el proyecto.

    Nota:

    Una vez cargado el objeto en el formulario en las propiedades: Address dejamos el nmero que me da por defecto 888 porque vamos a utilizar el objeto para salida de datos. Si al objeto lo vamos a utilizar como entrada de datos debemos cambiar la direccin: Address =889.

  • 7.- EJERCICIOS DE APLICACIN:

    7.1.- Salida de Datos

    Para los siguientes ejercicios el objeto NTPORT1 la propiedad (address = 888), para realizar la salida de datos hacia la interfaz.

    7.1.1.- Ejercicio 1

    Conectar la Interfaz al puerto paralelo.

    Ejercicios de salida de datos:

    - Encender todos los leds

    Private Sub cmdencender_Click() NTPORT1.Value = 255 End Sub

    - (Apagar todos los leds)

    Private Sub cmdencender_Click () NTPORT1.Value = 0

    End Sub

    - Salida de datos con diferentes bits.

    Encender los leds de las posiciones impares:

    Private Sub cmddiferentes_Click () NTPORT1.Value = 85 End Sub

  • 7.1.2.- Ejercicio 2

    Utilizando un temporizador hacer titilar los diodos leds.

    Tarea 2.1

    Cuando se cargue el formulario las propiedades del reloj debe ser:

    Enabled = false Interval = 100

    Botn: Activar el temporizador

    Private Sub cmdactivartemporizador_Click() tmptiempo.Enabled = True

    End Sub

    Temporizador - Reloj 1: (programar dentro del temporizador)

    Private Sub tmptiempo_Timer() If NTPORT1.Value = 255 Then NTPORT1.Value = 0 Else NTPORT1.Value = 0 NTPORT1.Value = 255 End If

    End Sub

  • Botn = deshabilitar el temporizador y apagar el puerto.

    Private Sub cmddesactivartemporizador_Click() tmptiempo.Enabled = False NTPORT1.Value = 0 End Sub

    Tarea 2.2

    Apagar temporizador utilizando contrasea. (Texto y botn):

    Cuando se cargue el formulario las propiedades del reloj 1 deben ser:

    Enabled = false Interval = 100

    Activar Leds:

    Private Sub cmdactivarleds_Click() tmptiempo.Enabled = True End Sub

    Apagar a travs de contrasea:

    Private Sub cmdcontrasea_Click() If txtcontrasea.Text = "nombre" Then

    tmptiempo.Enabled = False NTPORT1.Value = 0

    End If End Sub

    7.1.3.-Ejercicio 3

    Utilizando una funcin de tipo cadena determinar el nmero de caracteres ingresados en una caja de texto.

    Ingresar una palabra o nmeros no mayor a 8 dgitos y encender los leds segn el nmero de letras o palabras que se tiene ingresado en la caja de texto.

  • Private Sub cmdcaracteres_Click() Dim a As Integer

    Dim aux as Integer Dim i As Integer

    a = Len(txtcadena.Text) For i = 0 To a - 1

    aux = aux + 2 ^ i NTPORT1.Value = aux

    Next i End Sub

    Boton Terminar:

    Private Sub cmdterminar_Click() NTPORT1.Value = 0 txtcadena.Text = "" txtcadena.SetFocus

    End Sub

    7.1.4.- Ejercicio 4

    Visualizacin grfica de encendido y apagado de un foco.

  • Tarea 4.1

    Dibujar un foco (diodo led), con objeto shape1.

    Propiedades del objeto shape1:

    Shape1= circle border width = 3 bordercolor = &H000000FF& borderstyle = 1_Solido fillstyle = 0-Solid fillcolor = &H0000FFFF&

    Hacemos correr el programa (F5):

    El foco se encuentra en su estado apagado:

    Private Sub Form_Load() Shape1.FillColor = &H404040 End Sub

    Boton = Encender foco:

    Private Sub cmdencenderfoco_Click() Shape1.FillColor = &HFFFF& End Sub

    Boton: Apagar Foco

    Private Sub cmdapagarfoco_Click() Shape1.FillColor = &H404040 End Sub

  • Tarea 4.2:

    Encendido y apagado del foco y de la interfaz automticamente durante un tiempo determinado:

    Cuando se cargue el formulario las propiedades del reloj 2 debe ser:

    Enabled = false Interval = 100

    Boton: Encendido y Apagado Automtico

    Private Sub cmdfocoautomatico_Click() tmpautomatico.Enabled = True End Sub

    Habilita al reloj 2 (tmpautomatico):

    Private Sub tmpautomatico_Timer() If Shape1.FillColor = &HFFFF& And NTPORT1.Value = 255 Then

    Shape1.FillColor = &H404040 NTPORT1.Value = 0

    Else Shape1.FillColor = &H404040 Shape1.FillColor = &HFFFF& NTPORT1.Value = 0 NTPORT1.Value = 255 End If

    End Sub

    Boton: Apagado Automtico:

    Private Sub cmdapagarautomatico_Click() tmpautomatico.Enabled = False TPORT1.Value = 0 End Sub

    7.1.5.- Ejercicio 5

    Movimiento de leds. Debemos pulsar el botn para dar movimiento a los leds, al pulsar el botn se deben encender los leds en forma ordenada desde el led nmero uno hasta el leds nmero 8.

  • Propiedades del temporizador (reloj). Nombre = tmpactivar Enabled = false Interval = 500

    General, Declaraciones

    Dim a, n As Integer

    Private Sub cmdactivar_Click() tmpactivar.Enabled = True End Sub

    Private Sub cmddetener_Click() Timer1.Enabled = False NTPORT1.Value = 0 End Sub

    Private Sub tmpactivar_Timer() a = 2 ^ n NTPORT1.Value = a n = n + 1 If n = 8 Then n = 0

    End If End Sub

    7.2.- Entrada de Datos desde la interfaz electrnica.

    Ejercicio 6

    En un objeto text1 verificar los valores para los diferentes ingresos activados desde el dip switch (anotar el nmero que ingresa desde cada interruptor).

    El objeto NTPORT1 la propiedad address debe estar configurada de la siguiente manera:

    Address = 889

  • Private Sub Form_Load() Text1.Text = NTPORT1.Value End Sub

    Al ejecutar el programa, en el objeto text1 aparecer un valor que por defecto ser un nmero cualquiera segn la interfaz, dicho nmero ser cuando los interruptores del dip switch se encuentran en una mismo posicin es decir en su estado de reposo.

    Ejecutamos el programa y obtendremos un nmero como sale en el ejemplo a continuacin:

    Para hacer que vari dicho valor se debe utilizar un objeto timer1 y dentro de este se proceder a programar, antes debe tener presente que las propiedades del objeto timer1 deben estar configurado as:

    Enabled = True Interval = 500

  • Private Sub Timer1_Timer() Text1.Text = NTPORT1.Value End Sub

    Ejecutamos el programa y procedemos a pulsar el interruptor, como podemos ver al activar un interruptor el ingreso variara y se puede comprobar observando el nmero que ha variado en el objeto texto. Estos nmeros sern diferentes segn pulsemos cada interruptor o una combinacin de interruptores que estn activos.

    7.2. Tarea 6.1

    Al activar un interruptor hacer que se enciendan los leds de la interfaz electrnica.

    Utilizar otro objeto NTPORT2 que ser para salida de datos los mismos que encenderan los leds, address = 888.

    Al ejecutar el programa y como ya tenemos identificado que nmero enva desde la entrada de la interfaz hacia el software utilizamos este nmero para programar dentro

  • del procedimiento de control if y utilizando aqu otro objeto NTPOT2 podremos encender todos los leds siendo activados los leds desde la interfaz electrnica al accionar el interruptor previamente identificado.

    Private Sub Timer1_Timer() Text1.Text = NTPORT1.Value 'Seales de entrada

    If Text1.Text = 56 Then NTPORT2.Value = 255 'Para activar los leds, seal de salida End If End Sub

    Para apagar los leds utilizaremos un botn apagado.

    Private Sub cmdapagar_Click() NTPORT2.Value = 0 Timer1.Enabled = False End Sub

    En el procedimiento anterior al pulsar el botn apagado vemos como los leds se apagaran porque el objeto NTPORT2.value = 0 las salidas se hacen cero, tambin debo mandar a deshabilitar el objeto timer1 para que no se vuelvan a encender los leds y finalmente debo regresar a su posicin original el interruptor activado para volver a iniciar el proceso de encendido.

  • Ejercicio 7

    Puerta con Alarma

    Dibujar el grafico que propone la figura siguiente para simular un cuarto con una puerta.

    Utilizar dos objetos: ntport1, ntport2:

    Ntport1: Salida de datos. (address = 888). Ntport2: Entrada de datos. (address = 889).

    Las paredes y la puerta se pueden representar con objetos shape, observemos en el grfico se dibuja la puerta abierta y la puerta cerrada para lo cual hay que cambiar el nombre de los objetos que representan la puerta en las propiedades de los objetos shape.

    Los objetos shape que simulan la puerta cerrada y la puerta abierta:

    Propiedades:

    Shape:

    Name = puertaabierta Name = puertacerrada.

    El objeto timer1 debe tener las siguientes propiedades:

    Timer1.Enabled = True Interval = 100

    Aqu los objetos shape: puertaabierta y puertacerrada se encuentran en estado de diseo.

    AL cargar el programa con F5,

  • La puerta se presenta cerrada, para esto tenemos el cdigo siguiente:

    Private Sub Form_Load() 'Aqui se asigna un valor decimal desde el puerto (seal de entrada) al text1 como vemos el valor es de 120.

    'Y este valor decimal es el que se debe usar para mantener 'en el grfico la puerta cerrada.

    Text1 = NTPORT2.Value Puerto de entrada.

    If Text1 = 120 Then puertaabierta.Visible = False puertacerrada.Visible = True End If

    End Sub

    Ahora envo la seal activando un contacto desde el dip swicth, (Solo envi la seal enseguida regreso el contacto a su posicin inicial), esto debo programar dentro del objeto timer1

    Private Sub Timer1_Timer() Text1 = NTPORT2.Value If Text1 = 56 Then puertaabierta.Visible = True puertacerrada.Visible = False

    NTPORT1.Value = 255 Se encienden los Leds End If End Sub

  • La seal es el nmero 56 como se observa en el text1 y este nmero ser el que se utilice dentro de la programacin para lograr nuestro propsito que es abrir la puerta y encender los leds. (Enseguida debo regresar el dip switch a su posicin inicial).

    Para apagar los leds y cerrar la puerta debo ingresar una contrasea en el text2 que ser la siguiente: (ctsprogramacion) y pulso el botn Contrasea, de esta manera se apaga los leds y regreso la puerta a su posicin inicial luego de ingresar la clave.

    Private Sub Command1_Click() If Text2 = "ctsprogramacion" Then puertaabierta.Visible = False puertacerrada.Visible = True NTPORT1.Value = 0 'Se apagan los leds End If End Sub

    En este grafico vemos que una vez ingresado la clave se cierra la puerta y se apagaran los leds.

  • Nota: Si la puerta no se cierra es porque todava tiene activa la seal desde el dip switch, regrese el contacto a su posicin inicial para ejecutar nuevamente todo el programa.

    Ejercicio 8

    Mando de un Motor a Pasos

    Los motores de paso estn constituidos por varias bobinas en su estator y varios imanes permanentes en el rotor, por lo que permite que gire el eje cuando se aplique una corriente sobre sus bobinas. La aplicacin de la corriente debe ser secuenciada por pulsos a cada bobina del rotor, Existen dos tipos de motores paso a paso: los unipolares y bipolares.

  • Para nuestro caso de estudio vamos a utilizar los unipolares, los cuales por lo general contienen 5 cables o 6 cables dependiendo si tiene 1 o 2 puntos comunes como se observa en la Figura 2, en el caso de los bipolares contienen 4 cables. Los motores unipolares al aplicarse una corriente a cada una de las bobinas gira un paso de 1.8 y para que gire de forma continua se debe realizar una secuencia seguida como la que vemos en la siguiente tabla.

    Paso Bit 0 A

    Bit 1 B

    Bit 2 C

    Bit 3 D

    Giro

    1 1 0 0 0 1 paso 1.8 grados 2 0 1 0 0 1 paso 1.8 grados 3 0 0 1 0 1 paso 1.8 grados 4 0 0 0 1 1 paso 1.8 grados

    Determinacin de los Cables para el Motor Paso a Paso Unipolar

    A continuacin se representa la conexin interna para los motores de paso unipolares de 5 o 6 cables.

    Cuando no se tienen hojas de datos de los motores es necesario realizar la determinacin de cada uno de los cables, de tal forma que se garantice el buen funcionamiento, para lo cual debemos seguir los siguientes pasos:

  • 1.- Aislar el cable comn que va conectado a la Fuente de 5 Vcc Determinar si contiene 5 o 6 cables, para el primer caso contiene un cable comn y en el siguiente 2 comunes que por lo general son del mismo color de aislante. Utilizando un multmetro medir la resistencia entre todos los cables de par en par. El cable comn ser el que contenga la mitad de resistencia entre ellas y el resto de los cables.

    2.- Identificacin de los cables para las bobinas (ABCD) Conectar el cable comn a 5 Vcc Seleccionar un cable y conectar a gnd (Tierra); este ser llamado A.

    Manteniendo el cable A conectado a gnd probar cul de los otros cables producen un giro anti horario al conectarlo a gnd; este ser llamado B. Manteniendo el cable A conectado a gnd probar cul de los otros cables producen un giro horario al conectarlo a gnd; este ser llamado D. El ltimo cable debera ser el cable C. Para comprobar deberamos conectarlo a gnd y no debera producir movimiento alguno ya que es la bobina opuesta de A.

    Materiales:

    Un motor a pasos. 4 Resistencias de 1000 ohmios. 4 Transistores Tip 31C Una Fuente de voltaje de 5V. Proto board. Cables para la conexin en el proto board. Multmetro. Pinzas. Alicate. Cuchilla.

    Circuito Elctrico:

    R11k

    R2

    1k

    Q22N3904

    Q32N3904

    Q12N3904

    Q42N3904

    R31k

    R41k

    C

    1mH

    A

    1mH

    D

    1mH

    B

    1mH11421531641751861972082192210231124122513

    5 Vcc

  • Circuito Armado en el Proto Board:

    Secuencia A, B, C, D = Motor giro horario.

    Secuencia D, C, B, A = Motor giro Anti horario.

    Tabla de verdad para la salida de seales desde el puerto paralelo de la computadora:

    Paso Bit 0 A

    Bit 1 B

    Bit 2 C

    Bit 3 D

    Giro

    1 1 0 0 0 1 paso 1.8 grados 2 0 1 0 0 1 paso 1.8 grados 3 0 0 1 0 1 paso 1.8 grados 4 0 0 0 1 1 paso 1.8 grados

    Vista lateral del circuito:

  • Declaro a nivel de formulario las variables que voy a utilizar:

    Dim n, con As Integer

    Interfaz de Usuario:

    Pulso el Botn Girar Motor Derecha, se activa el timer1.

    Private Sub Command2_Click() 'Se activa el temporizador Timer1.

    Timer1.Enabled = True Propiedad del Timer1 Enabled = false n = 1 con = 0

    End Sub

    Pulso el Botn Girar Motor Izquierda, se activa el timer2.

    Private Sub Command5_Click() 'Se activa el temporizador Timer2

    Timer2.Enabled = True Propiedad del Timer2 Enabled = false n = 1 con = 0

    End Sub

    Este siguiente procedimiento se ejecuta cuando pulso el botn Girar Motor Derecha, obsrvese en la programacin que los valores que va tomando el ntport1 son de 1, 2, 4, 8 para que el motor gire en sentido horario.

    Private Sub Timer1_Timer() If n = 1 Then NTPORT1.Value = 1 End If If n = 2 Then NTPORT1.Value = 2 End If If n = 3 Then NTPORT1.Value = 4 End If

  • If n = 4 Then NTPORT1.Value = 8

    Este contador me sirve para determinar los grados que gira el motor.

    con = con + 1 n = 0 End If n = n + 1

    Para determinar los grados que gira el motor. Al comparar el contador con 50 gira los 360 grados, y si cambio a 12 solo dar un ngulo de giro de 90 grados.

    If con = 50 Then NTPORT1.Value = 0 Timer1.Enabled = False n = 0 End If

    End Sub

    El siguiente procedimiento se ejecuta cuando pulso el botn Girar Motor Izquierda, obsrvese que en la programacin los valores que va tomando el ntport1 son de 8, 4, 2, 1, es para darle el sentido de giro anti horario.

    Private Sub Timer2_Timer () If n = 1 Then NTPORT1.Value = 8 End If If n = 2 Then NTPORT1.Value = 4 End If If n = 3 Then NTPORT1.Value = 2 End If If n = 4 Then NTPORT1.Value = 1 con = con + 1 n = 0 End If n = n + 1

    Para determinar los grados que gira el motor. Al comparar el contador con 50, gira los 360 grados, y si cambio a 12 solo dar un ngulo de giro de 90 grados.

    If con = 12 Then NTPORT1.Value = 0 Timer2.Enabled = False

  • n = 0 End If End Sub

    Para detener el motor en cualquiera de los giros que se estn dando:

    Botn, Detener Motor:

    Private Sub Command3_Click () NTPORT1.Value = 0 Timer1.Enabled = False Timer2.Enabled = False End Sub

    Objeto Slider1:

    Propiedades:

    LargeChange = 200 smallChange =100

    Para cambiar la velocidad de giro de los motores: (Variacin de la Velocidad)

    Private Sub Slider1_Click() Timer1.Interval = Slider1.Value End Sub

    8.- EJERCICIOS PROPUESTOS:

    1.- Leer un nmero comprendido entre el 1 y el 8, de acuerdo al nmero se deber encender el led de la interfaz electrnica correspondiente al nmero.

    2.- Ingresar 2 nmeros a y b, desarrollar un procedimiento que me permita obtener que el valor de a se eleve al valor dado de b y se enciendan la cantidad de focos leds en funcin de la cantidad del valor de b. (el nmero b no debe ser mayor a la cantidad de leds que existen en la interfaz electrnica).

    3.- Leer un nmero entero de 4 dgitos y determinar a travs de la interfaz electrnica hacindose que se prenda el led equivalente a la posicin donde esta el mayor digito.

    4.- Leer un nmero entero mximo de 5 dgitos y deben encenderse los leds de la interfaz en funcin de la cantidad del ltimo digito del nmero ingresado. Si el nmero termina en 9 o cero, deben titilar solo los dos leds centrales adems de enviar un mensaje por pantalla indicando que el nmero es termina en cero o en nueve.

  • 5.- Leer un nmero y determinar si es nmero primo se debe utilizar el bucle for, y la salida de emergencia. Si es nmero primo deben permanecer encendidos todos los diodos leds, si no es primo deben titilar los diodos (led nmero 4 y led nmero 5) durante tres segundos y apagarse. Para ingresar un nuevo nmero debe haber un botn de apagado de los diodos leds.

    6.- Leer un nmero entero (mximo 8 dgitos) y determinar a cuanto es igual la suma de sus dgitos pares y encender los diodos leds en funcin de la cantidad de dgitos pares ingresados. Presentar el resultado de la suma en un msgbox.

    7.- Realizar un procedimiento para que de una manera aleatoria se encienda un solo diodo leds e indicar que nmero de leds esta encendido a travs de un mensaje. (Utilice la funcin: Randmica).

    8.- Ingresar un nmero de dos dgitos y a travs de un procedimiento determinar si es mltiplo de 2, si es verdadero debe prenderse todos los leds y empezar a titilar hasta que se le pueda apagar utilizando una contrasea que ser su respectivo nombre, si el nmero ingresado es mltiplo de 3, se deben encender los tres ltimos leds de la interfaz y la clave para apagarlos debe ser su nmero de cdula, si no es mltiplo de ninguno de los nmeros indicados envi un mensaje de informacin haciendo que los leds se enciendan por tres segundos y termine el proceso.

    9.- Ingresar un dia de la semana y encender un led de acuerdo al dia de la semana hacer cuenta que cada led desde el nmero 1 al 7 son los das de la semana. Adems debe salir un mensaje indicando el da que corresponde, si no corresponde a ninguno de los das ingresados debe salir un mensaje de aviso y deber encenderse el led nmero 8.

    10.- Hacer un procedimiento para encender el led 1 y 2, despus de dos segundo el led 3 y 4, despus de dos segundo el 5 y 6 y finalmente despus de dos segundos el 7 y 8. Al final todos deben quedar encendidos durante 4 segundos. Para apagar se debe pulsar otro botn y empiezan a apagarse en forma descendente cada par de leds que fue encendido despus de 2 segundos, hasta que todos se encuentren apagados.

    11.- Disear el espacio fsico de una casa que conste de sala, comedor, cocina, dormitorio y bao dichos espacios fsicos deben constar en un vector. A travs de una caja de texto en donde debo ingresar el nombre de cualquiera de los espacios fsicos se debe abrir la puerta correspondiente a este espacio fsico y se debe encender los leds de la interfaz y deben permanecer titilando hasta que se ingrese una clave en otra caja de texto una clave que ser el nombre de cada diseador y se apagaran los leds y se cerrara la puerta del espacio abierto.

  • 9.- AUTOEVALUACION:

    1.- Que son las libreras DDL.

    2.- Cual es el motivo principal de controlar los puertos a travs de la librera DDL.

    3.- Que es un Archivo.

    4.- Que significa enlace dinmico.

    5.- Que es un Bit.

    6.- Que significa el valor de un Bit.

    7.- Para que se utiliza un Byte.

    8.- A que se denomina palabra.

    9.- Porque se denomina Puerto Paralelo.

    10.- Que funcin tiene un compilador.

    11.- Cual es la corriente mxima de salida de un pin.

    12.- Cual es la razn para que en el diseo de la interfaz electrnica se debe poner resistencias de 220 330 ohmios.

    13.- Enumere cuales son los pines de entrada del puerto y cuanto debe ser la configuracin de la direccin del puerto.

    14.- Transforme el nmero decimal 87, 104, 33 y 241 a valor binario.

    15.- Transforme el nmero binario 11011101, 10001011, 00110110 y 01010101 a valore decimal.

    16.- Que es una librera OCX.