puerto paralelo vb6

36
MANEJO DE PUERTO PARALELO EN VISUAL BASIC 6.0 EL PUERTO PARALELO OBJETIVOS: 1.- Saber que función tiene la librería DLL. 2.- Saber que es la Codificación Binaria. 3.- Reconocer al puerto paralelo. 4.- Escritura y Lectura de Datos. 5.- Armar la Interfaz Electrónica. 6.- Instalación del Archivo Ntport 7.- Ejercicios de Aplicación. 8.- Ejercicios Propuestos. 9.- Auto evaluación. 1.- NTPORT.DLL Es un conjunto de librerías 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 librerías son un archivo. Para la implementación de un proyecto en código es necesario contar con una librería que trabaje con el puerto paralelo. Las razones se dan a continuación: - 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 través de una librería DLL, esto es, una librería de enlace dinámico porque Visual Basic no cuenta con instrucciones propias para escribir o leer datos del puerto, las librerías de enlace dinámico, forman parte de los elementos primordiales del sistema operativo de Windows. Básicamente las librerías 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

Upload: espigy

Post on 03-Jan-2016

93 views

Category:

Documents


2 download

TRANSCRIPT

MANEJO DE PUERTO PARALELO EN VISUAL BASIC 6.0

EL PUERTO PARALELO

OBJETIVOS: 1.- Saber que función tiene la librería DLL. 2.- Saber que es la Codificación Binaria. 3.- Reconocer al puerto paralelo. 4.- Escritura y Lectura de Datos. 5.- Armar la Interfaz Electrónica. 6.- Instalación del Archivo Ntport 7.- Ejercicios de Aplicación. 8.- Ejercicios Propuestos. 9.- Auto evaluación.

1.- NTPORT.DLL Es un conjunto de librerías 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 librerías son un archivo. Para la implementación de un proyecto en código es necesario contar con una librería que trabaje con el puerto paralelo. Las razones se dan a continuación:

- 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 través de una librería DLL, esto es, una librería de enlace dinámico porque Visual Basic no cuenta con instrucciones propias para escribir o leer datos del puerto, las librerías de enlace dinámico, forman parte de los elementos primordiales del sistema operativo de Windows.

Básicamente las librerías 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 librería. El hecho de que sea una librería de “enlace dinámico”, hace referencia al código 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 ejecución. Dentro de la librería DLL existen funciones para controlar el puerto paralelo y desde Visual Basic puede ser fácilmente llamada. En esta ocasión un proyecto se trabajara con la librería 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.- CODIFICACIÓN BINARIA 2.1.- QUE ES UN ARCHIVO: Es un conjunto de información binaria; es decir, un conjunto que va de 0 a 1. Este archivo puede almacenarse para mantener un registro de esta información. 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 extensión, la cual constituye una manera de reconocer el tipo de programa que se necesita para abrir el archivo (nota: esto no ofrece garantías respecto del tipo de archivo, ya que cuando se modifica la extensión, el tipo de archivo no cambia). El largo del nombre y de la extensión puede variar según el sistema operativo: 8 caracteres para el nombre y 3 para la extensión. 2.2.- INTRODUCCIÓN AL SISTEMA BINARIO. - Hay 2 condiciones, es decir dos estados (desde un punto de vista lógico). - En el mundo real el 0 y 1 son representados por voltaje. El número 0 representa cero voltios, y el número 1 representa 5 voltios. - Sistema de Codificación Binario = funcionamiento de la computadora Tipos de Sistemas: Sistema decimal (1, 2, 3…9,0). Sistema sexagesimal (60) sumerios. Sistema Vigesimal (20) mayas. Sistema Duodecimal (12) Reino Unido. 2.3.- El BIT (Dígito Binario): Corresponde a cero ò 1 en numeración binaria, es la unidad de información más pequeña que puede manipular una máquina digital, es posible representar esta información binaria:

- Con una señal eléctrica o magnética que, más allá de un cierto nivel representa el 1.

- Utilizando circuitos eléctricos, componentes electrónicos 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 número binario, el valor de un bit depende de su posición, empezando desde la derecha. Como las decenas, centenas y millares en un número 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: Número 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 Conversión: Para convertir una cadena binaria en un número decimal se debe multiplicar cada bit por su valor, y luego sumar los productos. De esta forma, la cadena binaria 0101 en número decimal sería:

= 2^3 x 0 + 2^2 x 1 + 2^1 x 0 + 2^0 x 1 = 8x0 + 4x1 + 2x0 + 1x1 = 5 Ejemplos: Convertir un Número Binario a Decimal o viceversa. Convertir el número decimal 77: a número binario. Convertir el número binario: 11011001 a número decimal. 2.4.- El BYTE El byte (abreviado con la mayúscula B) es una unidad de información compuesta por 8 bits. Se puede utilizar para almacenar, entre otras cosas, un carácter, como por ejemplo una letra o un número. Agrupar números en cúmulos de 8 facilita su lectura, así como agrupar números en grupos de tres hace más legibles los millares cuando se trabaja en base decimal. Por ejemplo, el número "1.256.245" se lee mejor que "1256245". Por lo general, una unidad de información de 16 bits se denomina palabra. Una unidad de información de 32 bits se denomina palabra doble (o también, dword). Para un byte, el menor número posible es 0 (representado por ocho ceros: 00000000), y el mayor número es 255 (representado por ocho unos: 11111111), que permite la creación de 256 valores diferentes.

Número 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 informática fue una ciencia inusual ya que utilizaba diferentes valores para sus unidades, diferentes a las del sistema métrico (también llamado "sistema Internacional"). Los usuarios de ordenadores aprendían 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 (DISEÑO DEL SOFTWA RE) Recibe el nombre de paralelo porque tiene un bus de datos de 8 líneas y además es posible escribir en el 8 bits al mismo tiempo, se encuentra atrás del computador y es un conector DB25 hembra generalmente, en donde normalmente se conecta la impresora, o algunos otros dispositivos como los escáneres. CONECTOR CENTRONICS HEMBRA

Por las características que tiene el puerto paralelo se le puede sacar provecho en muchas aplicaciones electrónicas 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 señal de los dos dispositivos que se interconectan de modo que puedan compartir una tierra común como referencia para la señal.

• La segunda es que, puesto que, la conexión entre los dos dispositivos se realiza a

menudo mediante un cable tipo cinta, las tierras (llamadas muchas veces retornos de tierra) actúan como blindajes de las líneas más importantes.

• Las salidas de datos mandan información 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 más significativo (MSB). A este conjunto de pines se le denominan “Salidas de Datos”.

• A estas cuatro líneas de salida (STROB, AUTOFEED, SELECT, INITIALIZE)

son conocidas como “salidas de dialogo” y manda señales determinadas al dispositivo electrónico, interactuando para cumplir su labor.

• Cinco líneas de entrada (SEL, PE, OCUPADO, ACK, FAULT), son conocidas

como ”entradas de dialogo” y, estas líneas junto con las “salidas de dialogo” cumplen con el dialogo entre la computadora y el dispositivo electrónico. Es

importante mencionar que el pin ACK (línea 10) trabaja como pulso negativotes decir que se encuentra negado).

• Con todo lo anterior resumimos que contamos con 12 líneas 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 información o escribir en el puerto se necesitan dos parámetros. El dato y la dirección, la dirección 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 común 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 sólo se utilizan para manejar “las Salidas de datos” (Pin 2 – Pin 9). Sintaxis:

NTPORT.VALUE = “dato a asignar” Se debe tener presente que la dirección en las propiedades del puerto para salida de datos debe configurarse: con el número 888. Ejemplo:

NTPORT1.VALUE = 8 NOTA:

• El otro parámetro de la instrucción es el dato, corresponden a la combinación de unos y ceros que serán 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.

• Además es importante tener presente que la salida de cada pin máxima 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 dirección en las propiedades del puerto para la entrada de datos debe configurarse: con el número 889.

Ejemplo: Text1.text = NTPORT2.VALUE El objeto texto recibe un número que va a depender de la entrada desde la interfaz electrónica. 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. Nótese que el circuito tiene en cuenta la línea negada, lo que "normaliza" la lectura.

• Ejemplo: Lectura de datos hacia el puerto.

6.- INSTALACIÓN DEL ARCHIVO NTPORT: Archivo NTPORT:

Doble click en setup.exe

Pulsamos OK

Icono: Click this button to install NTPORT 1.21

Botón: 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 instalación 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

Señalamos con un visto bueno en donde dice NTPORT_Custom_Control y pulsamos el botón Aplicar, luego el botón 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 número 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 dirección: Address =889.

7.- EJERCICIOS DE APLICACIÓN: 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 Botón: 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

Botón = 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 contraseña. (Texto y botón): 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 través de contraseña:

Private Sub cmdcontraseña_Click() If txtcontraseña.Text = "nombre" Then

tmptiempo.Enabled = False NTPORT1.Value = 0

End If End Sub

7.1.3.-Ejercicio 3 Utilizando una función de tipo cadena determinar el número de caracteres ingresados en una caja de texto. Ingresar una palabra o números no mayor a 8 dígitos y encender los leds según el número 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 Visualización gráfica 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 automáticamente durante un tiempo determinado: Cuando se cargue el formulario las propiedades del reloj 2 debe ser: Enabled = false Interval = 100 Boton: Encendido y Apagado Automático

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 Automàtico:

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

7.1.5.- Ejercicio 5 Movimiento de leds. Debemos pulsar el botón para dar movimiento a los leds, al pulsar el botón se deben encender los leds en forma ordenada desde el led número uno hasta el leds número 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 electrónica. Ejercicio 6 En un objeto text1 verificar los valores para los diferentes ingresos activados desde el dip switch (anotar el número 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 número cualquiera según la interfaz, dicho número será cuando los interruptores del dip switch se encuentran en una mismo posición es decir en su estado de reposo. Ejecutamos el programa y obtendremos un número como sale en el ejemplo a continuación:

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 número que ha variado en el objeto texto. Estos números serán diferentes según pulsemos cada interruptor o una combinación de interruptores que estén activos.

7.2. Tarea 6.1 Al activar un interruptor hacer que se enciendan los leds de la interfaz electrónica. 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 número envía desde la entrada de la interfaz hacia el software utilizamos este número 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 electrónica al accionar el interruptor previamente identificado.

Private Sub Timer1_Timer() Text1.Text = NTPORT1.Value 'Señales de entrada If Text1.Text = 56 Then NTPORT2.Value = 255 'Para activar los leds, señal de salida End If End Sub Para apagar los leds utilizaremos un botón apagado.

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

En el procedimiento anterior al pulsar el botón apagado vemos como los leds se apagaran porque el objeto NTPORT2.value = 0 las salidas se hacen cero, también debo mandar a deshabilitar el objeto timer1 para que no se vuelvan a encender los leds y finalmente debo regresar a su posición 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 gráfico 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 diseño.

AL cargar el programa con F5,

La puerta se presenta cerrada, para esto tenemos el código siguiente: Private Sub Form_Load()

'Aqui se asigna un valor decimal desde el puerto (señal 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 gràfico la puerta cerrada. Text1 = NTPORT2.Value ‘Puerto de entrada. If Text1 = 120 Then puertaabierta.Visible = False puertacerrada.Visible = True End If

End Sub

Ahora envío la señal activando un contacto desde el dip swicth, (Solo envió la señal enseguida regreso el contacto a su posición 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 señal es el número 56 como se observa en el text1 y este número será el que se utilice dentro de la programación para lograr nuestro propósito que es abrir la puerta y encender los leds. (Enseguida debo regresar el dip switch a su posición inicial).

Para apagar los leds y cerrar la puerta debo ingresar una contraseña en el text2 que será la siguiente: (ctsprogramacion) y pulso el botón Contraseña, de esta manera se apaga los leds y regreso la puerta a su posición 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 todavía tiene activa la señal desde el dip switch, regrese el contacto a su posición inicial para ejecutar nuevamente todo el programa.

Ejercicio 8 Mando de un Motor a Pasos

Los motores de paso están 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 aplicación 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

Determinación de los Cables para el Motor Paso a Paso Unipolar A continuación se representa la conexión 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 determinación 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 común que va conectado a la Fuente de 5 Vcc Determinar si contiene 5 o 6 cables, para el primer caso contiene un cable común y en el siguiente 2 comunes que por lo general son del mismo color de aislante. Utilizando un multímetro medir la resistencia entre todos los cables de par en par. El cable común será el que contenga la mitad de resistencia entre ellas y el resto de los cables.

2.- Identificación de los cables para las bobinas (ABCD) Conectar el cable común a 5 Vcc Seleccionar un cable y conectar a gnd (Tierra); este será llamado A.

Manteniendo el cable A conectado a gnd probar cuál 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 cuál de los otros cables producen un giro horario al conectarlo a gnd; este será llamado D. El último cable debería ser el cable C. Para comprobar deberíamos conectarlo a gnd y no debería 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 conexión en el proto board. • Multìmetro. • Pinzas. • Alicate. • Cuchilla.

Circuito Elèctrico:

R1

1k

R2

1k

Q22N3904

Q32N3904

Q12N3904

Q42N3904

R3

1k

R4

1k

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 señales 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 Botón 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 Botón 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 botón Girar Motor Derecha, obsérvese en la programación 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 botón Girar Motor Izquierda, obsérvese que en la programación 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 estén dando: Botón, 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: (Variación de la Velocidad)

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

8.- EJERCICIOS PROPUESTOS: 1.- Leer un número comprendido entre el 1 y el 8, de acuerdo al número se deberá encender el led de la interfaz electrónica correspondiente al número. 2.- Ingresar 2 números 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 función de la cantidad del valor de b. (el número b no debe ser mayor a la cantidad de leds que existen en la interfaz electrónica). 3.- Leer un número entero de 4 dígitos y determinar a través de la interfaz electrónica haciéndose que se prenda el led equivalente a la posición donde esta el mayor digito. 4.- Leer un número entero máximo de 5 dígitos y deben encenderse los leds de la interfaz en función de la cantidad del último digito del número ingresado. Si el número termina en 9 o cero, deben titilar solo los dos leds centrales además de enviar un mensaje por pantalla indicando que el número es termina en cero o en nueve.

5.- Leer un número y determinar si es número primo se debe utilizar el bucle for, y la salida de emergencia. Si es número primo deben permanecer encendidos todos los diodos leds, si no es primo deben titilar los diodos (led número 4 y led número 5) durante tres segundos y apagarse. Para ingresar un nuevo número debe haber un botón de apagado de los diodos leds. 6.- Leer un número entero (máximo 8 dígitos) y determinar a cuanto es igual la suma de sus dígitos pares y encender los diodos leds en función de la cantidad de dígitos 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 número de leds esta encendido a través de un mensaje. (Utilice la función: Randòmica). 8.- Ingresar un número de dos dígitos y a través de un procedimiento determinar si es múltiplo de 2, si es verdadero debe prenderse todos los leds y empezar a titilar hasta que se le pueda apagar utilizando una contraseña que será su respectivo nombre, si el número ingresado es múltiplo de 3, se deben encender los tres últimos leds de la interfaz y la clave para apagarlos debe ser su número de cédula, si no es múltiplo de ninguno de los números indicados envié un mensaje de información 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 número 1 al 7 son los días de la semana. Además debe salir un mensaje indicando el día que corresponde, si no corresponde a ninguno de los días ingresados debe salir un mensaje de aviso y deberá encenderse el led número 8. 10.- Hacer un procedimiento para encender el led 1 y 2, después de dos segundo el led 3 y 4, después de dos segundo el 5 y 6 y finalmente después de dos segundos el 7 y 8. Al final todos deben quedar encendidos durante 4 segundos. Para apagar se debe pulsar otro botón y empiezan a apagarse en forma descendente cada par de leds que fue encendido después de 2 segundos, hasta que todos se encuentren apagados. 11.- Diseñar el espacio físico de una casa que conste de sala, comedor, cocina, dormitorio y baño dichos espacios físicos deben constar en un vector. A través de una caja de texto en donde debo ingresar el nombre de cualquiera de los espacios físicos se debe abrir la puerta correspondiente a este espacio físico 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 diseñador y se apagaran los leds y se cerrara la puerta del espacio abierto.

9.- AUTOEVALUACION: 1.- Que son las librerías DDL. 2.- Cual es el motivo principal de controlar los puertos a través de la librería DDL. 3.- Que es un Archivo. 4.- Que significa enlace dinámico. 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 función tiene un compilador. 11.- Cual es la corriente máxima de salida de un pin. 12.- Cual es la razón para que en el diseño de la interfaz electrónica se debe poner resistencias de 220 ò 330 ohmios. 13.- Enumere cuales son los pines de entrada del puerto y cuanto debe ser la configuración de la dirección del puerto. 14.- Transforme el número decimal 87, 104, 33 y 241 a valor binario. 15.- Transforme el número binario 11011101, 10001011, 00110110 y 01010101 a valore decimal. 16.- Que es una librería OCX.