Sei sulla pagina 1di 66

UNIVERSIDAD TECNOLOGICA NACIONAL

FACULTAD REGIONAL SAN NICOLAS


INGENIERIA EN ELECTRONICA

PROBLEMA DE INGENIERA
TECNICAS DIGITALES III

IMPRESORA BRAILLE
Integrantes:
- Chiconi, Juan Pablo
- Gimnez, Matas
- Heis, Juan Gabriel
- Lzzari, Claudio

Docentes:
- Profesor: Ing. Poblete, Felipe
- Auxiliar: Ing. Gonzalez, Mariano

AO 2009

Tcnicas Digitales III Problema de ingeniera

INDICE
OBJETIVOS DEL TRABAJO

MATERIAS INTEGRADAS

POSIBLES APLICACIONES

PROFESORES ENTREVISTADOS

BIBLIOGRAFA

INTRODUCCIN:

EL CDIGO BRAILLE:

Louis Braille
Sistema Braille

DESARROLLO

4
7

10

PARTE ELECTRO-MECNICA
Iniciacin del proyecto:
PARTES QUE SE RETIRARON DE LA IMPRESORA ORIGINAL
Piezas que se colocaron

10
10
11
12

PARTE ELECTRNICA
Comunicacin bidireccional mediante puerto paralelo
Confeccin de Placa controladora.
Control del motor PAP

23
23
26
31

TEORA DE FUNCIONAMIENTO

33

CIRCUITOS O DIAGRAMAS

34

EJECUCION DEL PROGRAMA


Programacin
Ejemplos de impresin:

35
37
40

PRESUPUESTO

41

RESULTADOS Y FOTOS DE LAS IMPRESIONES BRAILLE

42

IMGENES (ANEXO)

43

PROGRAMA

44

Tcnicas Digitales III Problema de ingeniera

OBJETIVOS DEL TRABAJO


Como objetivo principal de este trabajo podemos destacar la actividad que vincula diferentes
especialidades de las ramas tcnicas y tecnolgicas, interactuando en un grupo de trabajo con
diversas posturas y puntos de vista.
Un objetivo muy importante es el de autosatisfaccin, por ser un trabajo que puede ser
perfectamente aplicado a la sociedad, ms precisamente a personas con dificultades visuales y de
escasos recursos econmicos.

MATERIAS INTEGRADAS
Informtica 2 - Ingeniera Industrial.
Informtica 1 y 2 - Ingeniera electrnica.
Control.
Electrnica de Potencia.
Instrumentacin.

POSIBLES APLICACIONES
Implementacin de un perifrico poco comn pero de suma importancia para las personas con
deficiencias visuales.
Base para un proyecto a gran escala y aplicable a un mercado real.

PROFESORES ENTREVISTADOS
Lic. Juan Arce - Consulta: Threads - Multithreads.
Ing. Lucas Guadagnolli - Consulta: Visual Basic.
Ing. Hugo Francini - Consulta: Optoacoplador de precisin.
Ing. Marcelo Monjes

BIBLIOGRAFA
Sitios de Internet.
www.Braille.org
www.biografiasyvidas.com/biografia/b/Braille.htm
Libros.
Visual Basic 6 - Matas Blzquez Iglesias

Tcnicas Digitales III Problema de ingeniera

Introduccin:
El cdigo Braille:
Un poco de historia:

Louis Braille
(Coupvray, Francia, 1809 - Pars, 1852) Educador e inventor francs del sistema de lectura y
escritura tctil para invidentes que lleva su nombre, basado en un mtodo de representacin que
utiliza celdas con seis puntos en relieve. El mtodo Braille es en la actualidad el sistema de lectura y
escritura punteada universalmente adoptado en los programas de educacin de invidentes. Braille
aplic su novedoso mtodo al alfabeto, a los nmeros y a la notacin musical.

A los tres aos de edad sufri un accidente que le priv de la vista: trataba de imitar la labor de su
padre en el taller familiar de talabartera y se da uno de los ojos con el punzn que utilizaba para
perforar el cuero. Algn tiempo despus, el ojo enfermo infect el ojo sano y el pequeo Louis
perdi la vista para siempre. A pesar de su deficiencia fsica, Braille asisti durante dos aos a la
escuela de su localidad natal, y aunque demostr ser uno de los alumnos ms aventajados, su
familia crey que el muchacho nunca podra aprender a leer y escribir, ni acceder a travs de la
educacin a un prometedor futuro.
Cuando cumpli los diez aos ingres en la escuela para chicos ciegos de Pars, una de las primeras
instituciones especializadas en este campo que se inauguraron en todo el mundo. Las condiciones
del centro eran muy duras; se impona a los alumnos una severa disciplina que, sin embargo, no
amedrent el fuerte carcter del joven Braille. En el centro, los pupilos aprendan algunos oficios
sencillos y reciban la mayor parte de su instruccin de forma oral.
Tambin asistan a clases de lectura porque el fundador de la escuela, Valentin Hay, haba
conseguido desarrollar un sistema de impresin de libros con los caracteres en relieve para permitir
la lectura tctil. El mtodo era muy rudimentario: exiga una impresin individualizada en cobre
4

Tcnicas Digitales III Problema de ingeniera


para cada una de las letras y, aunque los alumnos podan tocarlas e identificarlas con las yemas de
los dedos, no eran capaces de reproducirlas por s mismos mediante la escritura.
En 1821, un oficial del ejrcito llamado Charles Barbier de la Serre visit la escuela para presentar
un nuevo sistema de lectura y escritura tctil que poda introducirse en el programa educativo del
centro. Barbier haba inventado una tcnica bsica para que los soldados pudieran intercambiarse
mensajes en las trincheras durante la noche sin necesidad de hablar, evitando as que el enemigo
descubriera su posicin. Su invento de escritura nocturna, bautizado con el nombre de Sonography,
consista en colocar sobre una superficie plana rectangular doce puntos en relieve que, al
combinarse, representaban sonidos diferentes.

El joven Louis Braille, que haba conseguido avanzar notablemente en sus estudios y desarrollar un
considerable talento para la msica, percibi inmediatamente que las posibilidades del Sonography
para la educacin de invidentes pasaban por simplificar el sistema aportado por Barbier. En los
meses siguientes experiment con diferentes posibilidades y combinaciones hasta que encontr una
solucin idnea para reproducir la fontica bsica que slo requera la utilizacin de seis puntos en
relieve. Continu trabajando varios aos ms en el perfeccionamiento del sistema y desarroll
cdigos diferentes para la enseanza de materias como la msica y las matemticas.
A pesar de las indudables ventajas que ofreca para el desarrollo educativo de los nios ciegos, el
mtodo inventado por el joven francs no se implant de forma inmediata. Existieron reticencias
entre los docentes sobre la utilidad del sistema, y un profesor de la escuela lleg incluso a prohibir a
los chicos su aprendizaje. Afortunadamente, el veto caus un efecto alentador entre los alumnos,
que, a escondidas, se esmeraban por estudiar las composiciones de puntos ideadas por su
compaero Louis y descubran que no slo eran capaces de leer textos sino tambin de escribirlos
ellos mismos con un simple mtodo de fabricacin de puntos en relieve. Por primera vez los
invidentes disfrutaban de una autonoma que hasta entonces les haba sido vedada.
Braille se convirti en profesor de la escuela y se gan la admiracin de todos sus alumnos.
Desgraciadamente, no vivi lo bastante para ver cmo su sistema se adoptaba en todo el mundo.
Enfermo de tuberculosis, muri a los 43 aos con el pesar de que probablemente su revolucionario
invento desaparecera con l. No se cumplieron los malos presagios del pedagogo francs, porque
ya eran muchos los que haban descubierto la eficacia de su mtodo. En 1860, el sistema Braille se
introdujo en la escuela para ciegos de San Luis (Estados Unidos).
En 1868, un grupo de cuatro invidentes, liderado por el doctor Thomas Armitage, fund en el Reino
Unido una sociedad para impulsar el perfeccionamiento y la difusin de la literatura grabada en
relieve para ciegos. Este pequeo grupo de amigos creci hasta convertirse en el Instituto Nacional
de Ciegos, el mayor editor de textos en Braille en Europa y la mayor organizacin britnica para
personas con discapacidad visual. En el siglo XX, el mtodo Braille se haba implantado en casi
todos los pases del mundo.
La gran aportacin de Louis Braille a la educacin y a la calidad de vida de la poblacin invidente
fue finalmente reconocida en su pas: en 1952, cuando se cumpla el centenario de su muerte, su
cuerpo fue trasladado al Panten parisino donde reposan los restos de los hroes nacionales. Aquel
mismo ao, la Asociacin Amigos de Louis Braille compr la casa de Coupvray donde en 1809
haba nacido el educador, y poco despus el Consejo Mundial para la Promocin Social de los
Ciegos se encarg de su administracin a travs del Comit Louis Braille. En 1966, el estado
francs inscribi la casa natal en el inventario de monumentos histricos. En 1984, cuando el

Tcnicas Digitales III Problema de ingeniera


Consejo se fusion con la Federacin Internacional de Ciegos y surgi la actual Unin Mundial de
Ciegos, la casa natal y el Comit Braille pasaron a formar parte de la Unin.

El sistema Braille
El sistema Braille consiste en un cdigo de 69 caracteres, constituidos por un rectngulo de seis
puntos que conforman una figura determinada. Estos caracteres Braille estn unidos en lneas sobre
el papel y pueden leerse pasando las yemas de los dedos suavemente sobre el escrito.
Durante el siglo XIX se haban realizado otros intentos para conseguir que los invidentes pudieran
leer y escribir, aunque ninguno de los proyectos anteriores al Braille fue lo bastante satisfactorio.
Braille decidi utilizar el sistema de grabacin de los signos en relieve sobre un papel, ya utilizado
anteriormente, pero usando un cdigo alfabtico distinto del latino y del griego.

El alfabeto Braille
La escritura se realizaba mediante impresiones en relieve sobre planchas, lo cual permita un tipo de
lectura analtica y tctil a la velocidad de 125 a 175 palabras por minuto. Las matrices que dise
no slo representaban letras sino tambin los nmeros, los signos de puntuacin y acentuacin y
algunas de las contracciones ms usuales de los idiomas occidentales. Este sistema se public por
primera vez en 1829 y fue presentado en su modelo ms completo en 1837. No fue aceptado como
oficial por la Institution des Aveugles hasta 1854, dos aos despus de la muerte de LouisBraille, y
en 1878 se aprob en el Congreso Internacional de Pars como sistema universalista de enseanza
de los invidentes.
Las combinaciones de puntos en relieve estn ordenadas en una tabla de ocho lneas horizontales;
las dos primeras contienen diez matrices, y las seis restantes, nueve, ocho, siete, once, siete y siete
respectivamente. Las matrices de las tres primeras lneas indican letras; las de las tres siguientes
nmeros y signos gramaticales. En la sptima lnea se incluyen caracteres que permiten emplear
adecuadamente los anteriores: contracciones, maysculas, etc., as como un indicador de que el
siguiente carcter es numrico. La octava lnea indica las notas musicales. En 1965 se realiz una
adaptacin del sistema Braille al lenguaje anglosajn, aadiendo smbolos de utilidad para las
matemticas superiores y otras disciplinas tcnicas.
El sistema Braille tambin permite la escritura, que se realiza gracias a dos planchas metlicas entre
las cuales se coloca el papel; una de las ellas tiene seis agujeros para meter el punzn y horadar
segn el signo que se desea emplear. Actualmente el sistema Braille puede escribirse tambin con

Tcnicas Digitales III Problema de ingeniera


mquinas con seis llaves, una para cada punto de matriz Braille. La primera mquina para escribir
en Braille la invent Frank H. Hall en 1892.

Sistema Braille
El cdigo Braille se basa en una matriz de seis puntos distribuidos en dos columnas de tres puntos
cada uno, dependiendo de la presencia o la ausencia de esos puntos, se obtienen 64 combinaciones
diferentes con las cuales se pueden representar varias letras del alfabeto y signos de puntuacin. A
esta matriz de puntos se la conoce como smbolo generador, el cual tiene las siguientes
especificaciones: La altura del punto (relieve) es de 0,508 mm; la separacin entre los centros de los
puntos de un mismo smbolo generador es de 2,5 mm (tanto horizontal como verticalmente). La
distancia horizontal entre dos smbolos adyacentes es de 3,75mm (medida desde el centro del punto
4 del primer smbolo y el centro del punto 1 del segundo smbolo) y la distancia vertical entre dos
smbolos generadores es de 5 mm (medida desde el centro del punto 6 del smbolo superior y el
centro de del punto 4 del smbolo inferior).

Matriz generadora braille

Dimensiones de las celdas Braille

El sistema Braille utiliza diez smbolos esenciales, que representan las diez primeras letras del
alfabeto latino ( desde la A hasta la J), cuyas combinaciones slo emplean los puntos 1, 2, 4 y 5
(puntos superiores del smbolo generador). Para representar las letras de la K a la T, es igual que
para las primeras diez pero agregando el punto inferior izquierdo (punto 3), a excepcin de la letra
que es un carcter especial propio del idioma espaol, y para las letras de la U a la Z se agregan

Tcnicas Digitales III Problema de ingeniera


los dos puntos inferiores (puntos 3 y 6), excepto para la W que tambin tiene una representacin
especial.

Alfabeto Braille

En algunos casos se recurre a la utilizacin de dos smbolos generadores para representar un solo
carcter. Un ejemplo de esto son las letras maysculas y los nmeros.
Para lograr una letra mayscula se antepone un smbolo especial (cuya combinacin son los puntos
4 y 6) delante de la letra que se quiere representar, y para lograr una palabra completamente en
maysculas se anteponen a la palabra dos de estos smbolos.

Representacin de la mayscula

Para lograr nmeros se antepone un smbolo generador con la combinacin 3, 4, 5 y 6 y luego se


utilizan las letras de la A a la J para representar los nmeros, dnde desde la letra A hasta la I le
corresponden a los nmeros del 1 al 9 respectivamente y la J coincide con el 0.

Tcnicas Digitales III Problema de ingeniera

Representacin en cdigo Braille de un nmero

Tambin existe la representacin para smbolos de puntuacin y letras acentuadas.


Para los signos de interrogacin, admiracin y comillas no hay diferencias entre los que abren y
cierran, en cambio para los parntesis existen dos smbolos diferentes.

Signos de puntuacin y vocales acentuadas

Tcnicas Digitales III Problema de ingeniera

DESARROLLO
PARTE ELECTRO-MECNICA
Iniciacin del proyecto:
Cuando se escogi el proyecto de Impresora Braille instantneamente surgi como duda principal
qu y cmo se hara la parte mecnica. La deliberacin fue unnime: "Utilizar como base una
impresora ya existente y modificarla acorde a nuestro prototipo".
En ese momento el reto fue encontrar una impresora que tenga ciertas caractersticas que permitan
modificaciones acordes a nuestros conocimientos y que, a la vez, satisfagan las necesidades de la
impresora Braille.
Como parmetros fundamentales se busco que posea los siguientes:
a) Robustez: La impresora debe ser resistente a los golpes que marcan la hoja.
b) Sencillez: Debido a que hay que realizar modificaciones, es mejor trabajar con sistemas que no
poseen una complejidad avanzada.
c) Espacio: Como hay que aadir un elemento punzante con un electroimn, es conveniente que el
lugar no sea reducido.
d) Estndar: La impresora debe ser comn y corriente, de esta manera se asegura que los repuestos
se consiguen y permite una produccin de varias Impresoras Braille.
Llegado el momento de la eleccin se contaba con 4 impresoras. De HEWLET PACKARD el
modelo HP 640C y de la marca EPSON una Stylus 440, una LX 300 y una LX 800. Las LX 300 y
LX 800 son matriz de punto, la distancia entre el cabezal de impresin y donde pasa la hoja es
reducida, por lo que se descartaron. En cuanto a la HP y la EPSON 440 la eleccin fue a favor de la
HP por presentar mayor distancia entre el cabezal y la hoja, permitiendo un trabajo ms simple,
sencillo y eficiente.
HP 640 C

EPSON 440

EPSON LX 800

10

Tcnicas Digitales III Problema de ingeniera

EPSON LX 300

PARTES QUE SE RETIRARON DE LA IMPRESORA ORIGINAL


A la impresora original se le retiraron algunas piezas que no se necesitaban o molestaban al nuevo
mecanismo de impresin.
Algunas de esas piezas son las siguientes:
-Plsticos exteriores.
-Motor Paso a Paso del sistema de limpieza de cabezal.
-Plaqueta controladora, sta fue reemplazada por una nueva de diseo propio.
-Sensores de Hoja y finales de carrera, los pticos fueron reemplazados por mecnicos y
distribuidos de manera diferente.
-Sistema de posicionamiento Grilla-Optoacoplador, fue removido completamente y se coloc un
sistema diseado en funcin a las dimensiones del Cdigo Braille Estndar.

Impresora HP640C original

11

Tcnicas Digitales III Problema de ingeniera

Despiece Impresora

Aqu se ve que se retir la plaqueta controladora, para dar lugar a la de diseo propio.

Piezas que se colocaron


Que se agreg a la impresora original.
Al modelo de la impresora HP 640C se le realizaron una serie de cambios necesarios para que la
misma funcione como impresora Braille.
-Lomo de apoyo de la hoja donde se efectan los golpes del Electroimn.

12

Tcnicas Digitales III Problema de ingeniera

Como segundo paso se adapto una barra metlica la cual cumple la funcin de apoyo de los golpes
del electroimn, la misma corrige la precisin de los golpes, obteniendo los resultados buscados.

sta pieza pertenece a una impresora EPSON, en la parte superior se coloc una goma a modo de
amortiguar el golpe del punzn.

Soporte anti cabeceo


Una vez que ya tuvimos el electroimn y la barra adaptada surgi el inconveniente del cabeceo del
electroimn, el cual se corrigi adaptndole un dispositivo metlico en la parte posterior del
cabezal, el cual detiene su cabeceo.
El soporte evita el movimiento del cabezal al golpear a lo largo de todo el ancho de la impresora.

13

Tcnicas Digitales III Problema de ingeniera

Grilla
Como la impresora original tiene una grilla demasiado fina, lo que se hizo fue cambiar el conjunto
grilla-optoacoplador. El optoacoplador es un estndar, ste resulto de precisin aceptable y costo
reducido. La grilla fue creada a partir de una filmina sobre la cual se imprimieron las lneas con una
impresora laser. Se probaron 3 grillas de distintos tamaos de lnea y separacin.

Todas las grillas se hicieron con una parte negra del mismo tamao que la transparente. En el caso 1
la medida de cada lnea fue de 0.312 mm, en la 2 fue de 0.625 mm y en la 3 de 1.25 mm. La 1 era la
ms precisa que las otras, pero al ser tan pequeas el optoacoplador poda perder la lectura de
alguna en cualquier momento. La 3 permita trabajar con mas velocidad que las anteriores pero
careca de precisin.
Solucin: la 2
Es la relacin justa entre precision y velocidad, ademas se asegura una correcta lectura del
optoacoplador. Como la grilla es mas larga que el tamao de una hoja tamao oficio (el mximo
tamao que aceptaba la impresora laser) se tuvieron que pegar 2 grillas.

Esta es la plantilla sobre la cual se escribe en Braille, de esta plantilla se sacaron las medidas
correspondientes a la separacin, tamao del punto, rengln, etc.

14

Tcnicas Digitales III Problema de ingeniera

Errores comunes de grilla


Hay 2 tipos de errores en la impresin que son fcilmente identificables y muy diferenciados entre
s. El error de la fig. 1 no tiene un patrn, por lo que es del tipo aleatorio. Este error se debe a una
mala lectura del optoacoplador, posiblemente una mala polarizacin o luz que entra en el recinto
donde se encuentra el mismo causando una seal con mucho ruido.
En la fig. 2 se ve que el error es en una zona, esto se debe a que la grilla tiene deficiencias, puede
ser suciedad o que la grilla no tiene las lneas bien marcadas o gastadas.

fig. 1

fig. 2

Elemento Percutor
ste elemento fue uno de los grandes retos a cumplir, ya que tuvimos diferentes opciones y distintos
puntos de vista. Se probaron diferentes elementos como rels, contactores, electroimanes de
diversos tamaos inclusive de fabricacin casera.
Los ms probados fueron:
-Electroimn pequeo:
El primer mecanismo probado fue un electroimn pequeo, el cual tena una punta que pasaba por
el centro del bobinado y realizaba un movimiento cuando ste se accionaba. Este dispositivo no
tuvo xito debido a que la fuerza aplicada a la punta no era suficiente para lo que se requera.

15

Tcnicas Digitales III Problema de ingeniera


-Electroimn mediano
Al no obtener buenos resultados con el primer electroimn se opt por un segundo, el cual tena un
tamao levemente superior al anterior pero los resultados tambin fueron negativos.

fig. 1 Electroimn pequeo.


fig. 2 Electroimn mediano.
-Electroimn casero
Como tercera opcin se decidi armar un electroimn. Los clculos necesarios para poder realizarlo
dieron como resultado que se necesitaran 3000 vueltas de alambre de cobre de 0,30mm de
dimetro. Si bien ste dispositivo funcion, la fuerza del mismo segua siendo insuficiente para
nuestra aplicacin.
Explicacin de la eleccin de 3000 vueltas:
El alambre de cobre utilizado tiene 0.30 mm de dimetro. Si calculamos su seccin:
2

0.30mm
2
S .r .
0,07068583470577034786540947612379 0.0707mm
2

S: Seccin en milmetros cuadrados.


r: Radio del alambre en milmetros.

Clculo trmico
Ser el que determine en principio la seccin del conductor. El valor eficaz de la intensidad de
corriente nominal del circuito no tendr que ocasionar un incremento de temperatura superior a la
especificada para cada tipo de cable. Para los conductores aislados y sin envoltura de proteccin,
la norma IRAM 2183 refiere las intensidades mximas admisibles para cables instalados en

16

Tcnicas Digitales III Problema de ingeniera


caeras, servicio continuo, con temperaturas lmites de 40C para el ambiente, 70C en el
conductor y 160C en caso de cortocircuito, tal como se muestra en la tabla siguiente: Seccin
del conductor de cobre segn IRAM 2183
S (mm2)
1
1,5
2,5
4
6
10
16
25
35
50
70

I (A)
9,6
13
18
24
31
43
59
77
96
116
148

Estos datos tienen el siguiente grfico:

Ampliando la regin inicial:

17

Tcnicas Digitales III Problema de ingeniera


Como se ve para 0.7 mm 2 de seccin da entre 6.5 y 7.5 A. Supongamos 6.5 A, y como es
prcticamente lineal, podemos deducir que para nuestro alambre (0.0707 mm 2 ) el lmite ser de
aproximadamente 0.65 A, tomemos nuestro valor mximo de corriente en 0.55 A para no correr
riesgos ni sobrecalentar demasiado el electroimn .

El alambre de cobre de 0,30mm de dimetro tiene como resistencia promedio 0.2418 / m .


Para obtener mayor induccin se pens en alimentar el electroimn con tensiones cercanas a los
24V. Con lo que el clculo de metros necesarios ser de :
V
R.I
N: Longitud del alambre en metros.
V: Tensin aplicada en voltios.
R: Resistencia del alambre por metro.
I: Corriente aplicada en amperios.
N

N m

24V
180m

0.2418 .0.55 A
m

Como eje del electroimn utilizamos una lapicera de aproximadamente 10 mm de dimetro. La


longitud de cada vuelta sobre el eje es de:

Lm 2. .0.01 0.0624m
L: Permetro de una circunferencia.
Con lo que obtenemos:

N m 180m

2892vueltas 3000vueltas
Lm 0.0624
El bobinado se realiz colocando la lapicera en una agujereadora de bajas revoluciones. Para
mantener el alambre dentro del rango deseado se colocaron arandelas de mica como tope. Se
eligi este material por no presentar problemas frente al campo magntico del arrollamiento.

18

Tcnicas Digitales III Problema de ingeniera

19

Tcnicas Digitales III Problema de ingeniera

Pese a nuestros esfuerzos, ste electroimn no fue lo suficientemente potente como para marcar la
hoja, por lo que se descart.
-Electroimn de impresora laser.
Finalmente se consigui un electroimn de tamao y fuerza adecuado, el cual se adaptaba
perfectamente a nuestros requisitos. El mismo era controlado con 12V de CC.
Una vez obtenido el electroimn se adapto ste a la impresora, en el cual no tuvimos mayor
inconveniente.

20

Tcnicas Digitales III Problema de ingeniera

El soporte plstico perteneca a la impresora original, estaba dispuesto de forma tal que brindaba
soporte al motor que efecta la limpieza de cabezales de impresin (pieza removida, ya que para
nuestro uso fue innecesaria).
Como no coincida la distancia del electroimn a la barra donde se producen los golpes se le coloc
una especie de suplemento formado por un acrlico de 5 mm de espesor, de forma tal que se acople
entre el electroimn y el soporte, permitiendo una sujecin fuerte y a su vez retirando el electroimn
lo deseado.

21

Tcnicas Digitales III Problema de ingeniera

1 - soporte acrlico.
2- soporte electroimn.
3- electroimn.

22

Tcnicas Digitales III Problema de ingeniera

PARTE ELECTRNICA
Comunicacin bidireccional mediante puerto paralelo
En este proyecto se elige utilizar puerto paralelo debido a que la transferencia de datos y las
velocidades en las que stas se realizan son adecuadas para nuestras necesidades, destacndose
adems la sencillez del protocolo de transmisin.
Tambin se elige esta opcin por ser uno de los puertos ms utilizados para la comunicacin entre
las PCs y las impresoras comunes. Esto quiere decir que la mayora de las PCs que existen hoy en
da poseen puerto paralelo y de esta manera nuestro proyecto podr adaptarse a casi cualquier
computadora personal que posea este tipo de puerto (que hoy en da son la mayora).
El nico problema que se encontr para la correcta configuracin del puerto paralelo fue que el Sistema
Operativo XP lo bloqueaba de manera tal que no poda ser accedido por el usuario. Por lo tanto para
solucionar este inconveniente debi copiarse el archivo inpout32.dll en el directorio
C:\Windows\System32.
Se trabaja la computadora en modo bidireccional ECP (Enhanced Capability Port) que puede,
como el EPP, leer y escribir a la velocidad del bus. Fue desarrollado por Microsoft y HewlettPackard. Se distingue por poseer capacidad de DMA, FIFO y compresin de datos RLE.
El puerto paralelo mediante el conector DB-25 provee la lectura-escritura (entrada-salida de
datos) con un nivel lgico de datos TTL, debemos saber como es la conexin porque el puerto
paralelo se puede daar y dejar daos irreparables en la Placa Madre de la PC.
El hardware del puerto paralelo est muy limitado en cuanto a su capacidad de manejo de corriente
y debemos cuidar la elevacin de la misma. Para que esto no suceda se utiliz un 74HCT245 que
ayuda a aislar el puerto y no permite retorno de corriente daina o superior a las que maneja el
puerto paralelo que son unos cuantos miliamperes.

23

Tcnicas Digitales III Problema de ingeniera


Este puerto dispone de tres registros de 8 bit cada uno (un byte), los cuales se denominan puertos o
PORT, y cada uno de sus bits representa un pin determinado del puerto. Los pin's que van del 18 al
25 (ambos inclusive): Son para masa, y sirven para conectar las descargas de los circuitos.
Puerto de datos (Pin 2 al 9): Es el PORT 888 y es de solo escritura, por ste registro enviaremos
los datos al exterior de la PC.
Puerto de estado (Pin 15, 13, 12, 10 y 11): Es el PORT 889 y es de solo lectura, por aqu
enviaremos seales elctricas al ordenador, de este registro solo se utilizan los cinco bits de ms
peso, que son el bit E7, E6, E5, E4 y E3 teniendo en cuenta que el bit E7 funciona en modo
invertido.
Puerto de control (Pin 1, 14, 16 y 17): Es el correspondiente al PORT 890, y es de lectura
/escritura, es decir, podremos enviar o recibir seales elctricas, segn nuestras necesidades. De los
8 bits de este registro solo se utilizan los cuatro de menor peso o sea el C0, C1, C2 y C3, con un
pequeo detalle, los bits C0, C1, y C3 estn invertidos.
En la siguiente imagen se pueden ver los tres registros, sus bits y los pines asignados a cada uno de
ellos. La imagen corresponde a un conector DB-25 (Hembra).

La tensin de trabajo del puerto es de 5 voltios, por lo que necesitamos una fuente estabilizada o
regulada de tensin, esto es importante tenerlo en cuenta, ya que estaremos enviando seales al
puerto. Por otro lado, si bien se puede utilizar la PC para enviar seales al exterior sin necesitad de
una fuente externa, es recomendable utilizarla y as no se exige demasiado al puerto y se evitan
problemas.
Como se dijo antes, para proteger el puerto de corrientes dainas se utiliz el integrado 74HCT245
cuyos datos son los siguientes:

24

Tcnicas Digitales III Problema de ingeniera

Este integrado tiene la ventaja de ser bidireccional, es decir todos los pin's A pueden
ser entradas y los B salidas si DIR (pin1 DR) se encuentra a nivel bajo (L), el modo
invertido se obtiene con DR a nivel alto. Si el terminal OE (pin 19) se encuentra a
nivel alto (H) el integrado pone los pin's A y B con alta impedancia, es decir ni entra
ni sale seal alguna, en ese caso el estado de DR no tiene importancia. En la
siguiente tabla se observan los nombres de los pines y sus funciones correspondientes.

En el siguiente esquema se puede observar la conexin entre el puerto paralelo y el buffer N1. En
dicho esquema no se representaron todos los pines del puerto, sino los correspondientes al puerto de
datos y los de masa, que son los que utilizamos para enviar datos desde la PC hacia el circuito de la
impresora

25

Tcnicas Digitales III Problema de ingeniera

Confeccin de Placa controladora.

26

Tcnicas Digitales III Problema de ingeniera

Con la parte electrnica no tenamos ms opcin que crear una plaqueta que tenga distintas
funciones:

27

Tcnicas Digitales III Problema de ingeniera


a) Drive para el motor de continua.
b) Drive para el motor paso a paso.
c) Comunicacin bidireccional mediante puerto paralelo.
d) Aislar la PC de la impresora.
Explicacin detallada de los tems anteriores:
a) Drive para el motor de continua.
Esto se logr con un puente H, el cual permite mover el motor en ambos sentidos. Para obtener el
mximo rendimiento de torque-- de este motor sin rescindir precisin se necesit excitarlo con un
tren de pulsos con modulacin por ancho de pulsos o PWM.
Conceptos bsicos de PWM
Supongamos alimentar a un motor con estos tipos de seales

El motor trabaja a mitad de velocidad.

El motor trabaja a mnima velocidad

El motor trabaja a mxima velocidad


Motor de Continua

28

Tcnicas Digitales III Problema de ingeniera

b) Drive para el motor paso a paso.


Breve introduccin a los motores paso a paso
Los motores paso a paso, son un caso particular dentro de los motores en general.
La seal elctrica de alimentacin no es ni CC ni CA como en otros casos, sino un tren de pulsos
que se suceden con una secuencia, previamente definida, a cada una de las bobinas que componen
el estator. Cada vez que a alguna de estas bobinas se les aplica un pulso, el motor se desplaza un
paso, y queda fijo en esa posicin.
Dependiendo de las caractersticas constructivas del motor este paso puede ser desde 90 hasta
incluso 0,9. Por lo tanto, si somos capaces de mover el motor en pequeos pasos, esto nos va a
permitir controlar su posicin, con mayor o menor precisin dependiendo del avance de cada paso.
Adems, variando la frecuencia con la que se aplican los pulsos, tambin estaremos variando la
velocidad con que se mueve el motor, lo que nos permite realizar un control de velocidad.
Por ltimo si invertimos la secuencia de los pulsos de alimentacin aplicados a las bobinas,
estaremos realizando una inversin en el sentido de giro del motor.
Resumiendo, definimos el motor paso a paso, como aquel motor cuyas bobinas del estator son
alimentadas mediante trenes de pulsos, con una determinada frecuencia, y que permite:
controlar la posicin, controlar la velocidad y controlar el sentido de giro.
Para nuestro proyecto se utiliz un motor paso a paso de imn permanente unipolar modelo
PM55L-048 como el que muestra la siguiente figura:

29

Tcnicas Digitales III Problema de ingeniera

Los motores paso a paso de imn permanente tienen las siguientes caractersticas constructivas:
El rotor est formado por un imn permanente, en forma de disco, y en cuya
superficie se encuentran mecanizados un determinado nmero de dientes.
El estator tienen forma cilndrica, y en su interior se encuentran diversos bobinados, que
al ser alimentados secuencialmente generan un campo magntico giratorio.
Como resultado de las fuerzas de atraccin-repulsin, el rotor se orientar dentro de este
campo magntico giratorio, lo que provocar su movimiento.
La conmutacin en la alimentacin de las bobinas tiene que ser manejada por un
controlador externo.
Los motores de imn permanente pueden ser clasificados en funcin del sentido de la intensidad que
recorre los bobinados en dos grupos:
1. MOTORES PAP BIPOLARES: estn formados por dos bobinas, y la intensidad que circula
por ellas invierte su sentido sucesivamente (de ah surge el nombre de bipolares). Se pueden
reconocer externamente porque presentan cuatro conductores, uno para cada extremo de una
bobina.
2. MOTORES PAP UNIPOLARES: en este caso el estator est formado por dos bobinas con tomas
intermedias, lo que equivale a cuatro bobinas. Las tomas intermedias de las dos bobinas pueden estar
interconectadas en el interior o no. Externamente se apreciarn cinco conductores en el primer caso, y
seis en el segundo. La forma de alimentar este motor consiste en poner a masa la toma central e ir
aplicando segn una secuencia determinada pulsos de valor +V a un extremo de la bobina y al otro. De
tal manera que la intensidad que circula por cada media bobina siempre lo hace en el mismo sentido, por
eso se denominan unipolares.

A continuacin se muestra la secuencia de excitacin de bobinas para el funcionamiento de un


motor unipolar en modo paso completo.

30

Tcnicas Digitales III Problema de ingeniera

Se puede conseguir una resolucin mayor si entre paso y paso dejamos una bobina sin alimentar. A
continuacin se muestra la secuencia de excitacin de bobinas para el funcionamiento de un motor
unipolar en modo medio paso.

Control del motor PAP


Para poder manejar el motor paso a paso que controla el movimiento de las hojas que ingresan a la
impresora, se sigui la secuencia como lo indica la tabla de pasos completos. Esto se realiz
enviando datos desde la PC, los cuales pasan por un buffer (cuyo nico propsito es proteger el
puerto de la PC) y de all se dirigen al integrado ULN2003, el cual en su interior posee un conjunto
de Darlingtons, lo que hace que las corrientes de las seales que se encuentran en su entrada (las
cuales son muy bajas) sean amplificadas hasta 500mA, corriente suficiente para mover el motor PP
y excitar el electroimn de tal forma que su movimiento tenga una fuerza adecuada para marcar la
hoja con el punzn adherido a l.

31

Tcnicas Digitales III Problema de ingeniera


En el siguiente grfico se puede observar la conexin de pines del integrado ULN2003.

Motor Paso a Paso

32

Tcnicas Digitales III Problema de ingeniera

TEORA DE FUNCIONAMIENTO
La impresora Braille consiste de dos partes fundamentales: el software de control y la impresora
propiamente dicha.
El software de control, realizado en Visual Basic 6, es un programa que consta de una pantalla
principal que permite ingresar un texto ya sea ingresndolo por teclado o bien cargando un archivo
.txt con el texto que se desee imprimir, el cual puede ser creado con cualquier edito de texto.
Una vez ingresado el texto que se quiere imprimir, se procede a presionar un botn, incluido en el
programa tambin, el cual pasa el texto por un filtro que elimina los caracteres no contemplados
en el cdigo Braille. Luego se le agregan los caracteres especiales de cdigo Braille como por
ejemplo los caracteres que anteceden las letras maysculas, nmeros, etc.
En el siguiente paso se divide el texto modificado en renglones que permiten solo 31 caracteres,
donde las palabras nunca se cortan en el final de dicho rengln para una mejor interpretacin del
lenguaje. Por lo tanto las palabras que deberan ser cortadas pasan al siguiente rengln. A
continuacin el programa invierte el texto haciendo un espejado del mismo. Esto se debe a que la
impresin Braille se realiza del lado opuesto al de la lectura del texto. Luego de esto a cada uno de
los caracteres del texto le corresponde una matriz de 2 columnas y 3 filas, la cual est compuesta
por ceros (0) y unos (1) ubicados en dicha matriz segn le corresponda a cada carcter. Esto se hace
para lograr una equivalencia con el cdigo Braille ya que ste est compuesto por matrices de 2x3
cuyas componentes son puntos con relieve para que puedan ser interpretadas por las personas con
dificultades visuales severas. En nuestro caso un cero indicar que el electroimn no debe actuar y
un uno que si debe actuar. Por lo tanto luego de haber cambiado cada uno de los caracteres por su
correspondiente matriz se procede a agrupar todos los ceros y unos del primer rengln, segundo
rengln, etc. segn corresponda. Una vez codificado el texto en ceros y unos se envan estos datos y
algunos otros agregados por el puerto paralelo hacia la impresora propiamente dicha.
El software tambin consta de una barra de herramientas y un botn que detiene la ejecucin del
programa en caso de existir algn error.
EL hardware recibe los datos enviados por el puerto paralelo y stos pasan por un buffer de entrada.
De stos datos se podrn interpretar los que son seales para el motor paso a paso, el motor de
corriente continua y el electroimn.
Los datos que van al motor paso a paso, salen del buffer de entrada y entran en un amplificador de
corriente. Esto se hace para que la corriente que entra al motor sea la suficiente para que ste se
mueva con un torque adecuado, el cual se traduce en el movimiento del rodillo que mueve las hojas
a travs de la impresora.
Los datos correspondientes al motor de CC son enviados directamente a un puente H donde se
controla el sentido de giro del motor segn sea necesario. Este movimiento, mediante modulacin
por ancho de pulso se aplica a un carro donde se encuentran la punta y el electroimn que marcaran
las hojas. Dicho carro se mueve a lo largo de la impresora. Asi se completa la secuencia de unos y
ceros para terminar la impresin y girar el rodillo hasta sacar la hoja. Una vez que se termina la
extraccin de la hoja impresa se dispone del programa para, de ser necesario, realizar otra
impresin.

33

Tcnicas Digitales III Problema de ingeniera

CIRCUITOS O DIAGRAMAS

34

Tcnicas Digitales III Problema de ingeniera

EJECUCION DEL PROGRAMA


Se elige desde el menu principal la opcion archivo-abrir. Se abre una pantalla como la que se
muestra en la imagen donde uno elige unidad, carpeta y nombre de archivo.

Se elige el archivo y se pone aceptar.


En este caso el archivo dice "IMPRESORA BRAILE" y en el segundo renglon tambien dice
"IMPRESORA BRAILE".

Se puso esta "vista preliminar" para corroborar que el archivo abierto es el que realmente se quiere
imprimir.
Abajo del texto aparecen 3 botones. Imprimir, Volver (vuelve al menu anterior) y PARAR (el boton
se activa solamente cuando se da la orden de imprimir).
En esta imagen est imprimiendo. En el extremo inferior derecho aparece "IMPRIMIENDO" como
indicador.

35

Tcnicas Digitales III Problema de ingeniera

Boton PARAR
Esta funcin es vital para interrumpir la ejecucin de la impresin. Esta funcin se activa cuando se
presiona un botn llamado "PARAR" que se encuentra en la parte inferior del men de impresin.

Una vez presionado este botn se pausa la impresin y aparece un cartel que dice
EL PROCESO SE DETUVO. Desea interrumpir la operacin?
Si uno acepta se saca la hoja y la impresin termina. Si uno cancela la operacin se retoma la
impresin en el punto donde estaba y contina normalmente.

IMPRESION SATISFACTORIA
Si la impresion termina sin inconvenientes lo indica como se ve en la imagen.

Al presionar el boton Aceptar se vuelve al menu principal por si el usuario desea realizar otra
impresin o salir del programa.

36

Tcnicas Digitales III Problema de ingeniera

Programacin
En modulo1.bas se puede ver la declaracin de variables pblicas usadas en varios formularios
como as tambin la utilizacin de diferentes libreras necesarias para el funcionamiento de algunas
funciones.
Ver anexo (programa).
Principal.bas contiene las sentencias para que los datos se conviertan en movimientos de motores y
electroimn.

Se pueden destacar los siguientes puntos:


1) Busca el archivo de la ruta seleccionada.
2) Carga lnea por lnea hasta el final del archivo.
3) Busca la ltima letra.
4) Implementa la funcin filtro, la cual solamente deja pasar los caracteres del cdigo Braille.
5) Coloca # cuando se trata de un nmero.
6) Coloca $ cuando la palabra empieza con mayscula.
7) Coloca $$ si la palabra est escrita en maysculas.
8) Separa en renglones de 29 caracteres c/u. (Como se escribe con la plantilla). Si el rengln no
tiene 29 posiciones lo rellena con espacios.
9)Invierte el texto de manera que la posicin 30 queda en la 1, la 29 en la 2 y as sucesivamente.
Esto se hace as porque la escritura se hace de derecha a izquierda y la lectura del revs de la hoja y
de izquierda a derecha.
10)Se llama a la funcin codificacin. Lo que sta funcin hace es partir cada rengln en 3 y as
obtener la codificacin de cada elemento del cdigo en parte superior, media e inferior por
separado. Bsicamente es una tabla con la codificacin de cada elemento, como ser minsculas,
maysculas, caracteres especiales y nmeros. Tambin se agregan caracteres para sealar fin de
lnea y fin de archivo.
11) Se llama a la funcin generador. Aqu se copian los primeros 30 caracteres pero con los
cdigos de la parte superior, luego el medio y finalmente la inferior; as se prosigue con los 30
caracteres restantes. O sea que los 30 primeros caracteres se convirtieron en 180 "1" o "0".
Luego se revisa cada uno de estos "1" o "0" y si corresponde a "1" equivale a un punto con el
electroimn, si es "0" es un espacio vaco, si es "*" es un cambio de lnea y si es "/" es fin de la
impresin.
12) Se llama a la funcin correspondiente a cada caracter(1,0,*,/).
Aqu se detallan brevemente:

"0" Funcin vaco


Se mueve el carro hasta que el opto(que se encuentra posicionado en una posicin de negro-fig. 1-)
obtenga un blanco y luego encuentre otro negro, se hace as por si quedase posicionado en un
37

Tcnicas Digitales III Problema de ingeniera


blanco -fig. 2- se mueve hasta obtener el negro, luego el blanco y luego se detiene en el negro. Si en
cambio el opto se encuentra posicionado en un negro se mueve hasta el blanco y luego al negro.

De esta manera (que se cuenten las transiciones de negro a blanco y no solamente de cambio de
estado alto a bajo) se lograron corregir los pequeos errores de posicionamiento. Cabe destacar que
este fino control se realiza en un motor de corriente continua, mediante una modulacin por ancho
de pulso. Se plante una relacin de compromiso con el fin de sacrificar velocidad y obtener el
mximo rendimiento en control minimizando el error de posicionamiento. Esto se logr con un
ciclo de trabajo menor al 10 %.

t on
4ms
4ms

0.0909 9%
t on t off
4ms 40ms 44ms

"1" Funcin marca


Es el mismo funcionamiento que vacio, lo nico que vara es que al finalizar ejecuta un punto con el
electroimn.

"*" Funcin nueva lnea


Mueve el carro en direccin opuesta a marca y vaco (se mueve hacia la derecha), al finalizar hace
avanzar el papel, esto se logra mediante el motor paso a paso, alimentando individualmente cada
una de las bobinas con la secuencia correcta y con pulsos de 5 ms.

38

Tcnicas Digitales III Problema de ingeniera

Las bobinas corresponden a los valores 8, 16, 32 y 64 del puerto paralelo.


Para darle el tamao de rengln se repite 5 veces este paso.

"/" Funcin final:


Se mueve el carro hacia la derecha hasta el sensor (posicin de inicio) y luego se excita el motor
paso a paso con el fin de que se extraiga la hoja. Al terminar enva un cartel que la impresin se
realiz correctamente.
Tambin hay que destacar la funcin posicin inicial que incluye tomar hoja y la funcin detener.

Funcin posicin inicial:


Se mueve el carro hacia la izquierda con velocidad un instante (para separarlo del sensor si es que
qued contra el borde), luego lo hace hasta la derecha hasta tocar el sensor y luego vuelve hacia la
izquierda con velocidad hasta el sensor izquierdo (se hace as para activar una traba mecnica que
permite que con el mismo motor que avanza la hoja se puedan levantar las hojas de la bandeja y las
tome correctamente), toma una hoja, luego el cabezal se mueve hacia la derecha y vuelve hasta la
izquierda para liberarse de la traba mecnica; ahora coloca la hoja a la atura de la primer lnea de
impresin, el cabezal avanza 80 lneas para posicionarse en el punto donde se comienza a golpear.

Funcin detener:
Esta funcin es vital para interrumpir la ejecucin de la impresin. Esta funcin se activa cuando se
presiona un botn llamado "PARAR" que se encuentra en la parte inferior del men de impresin.
Una vez presionado este botn se pausa la impresin y aparece un cartel que dice
EL PROCESO SE DETUVO. Desea interrumpir la operacin?

39

Tcnicas Digitales III Problema de ingeniera


Si uno acepta se saca la hoja y la impresin termina. Si uno cancela la operacin se retoma la
impresin en el punto donde estaba y contina normalmente.
Ver anexo (programa).

Funcin TESTEO:
Esta funcin se cre con el fin de comprobar el funcionamiento correcto de la impresora, prueba los
sensores de fin de carrera, la grilla, el electroimn, el motor paso a paso y el motor de corriente
continua. El proceso es muy sencillo. Primero se mueve el carro hacia la izquierda brevemente, esto
lo hace para separarlo del sensor por si se encontrara en contacto. Luego se posiciona contra el
sensor derecho, y despus vuelve hacia la izquierda con velocidad hasta el sensor izquierdo (se hace
as para activar una traba mecnica que permite que con el mismo motor que avanza la hoja se
puedan levantar las hojas de la bandeja y las tome correctamente), toma una hoja, luego el cabezal
se mueve hacia la derecha y vuelve hasta la izquierda para liberarse de la traba mecnica; ahora
coloca la hoja a la atura de la primer lnea de impresin, el cabezal avanza 80 lneas para
posicionarse en el punto donde se comienza a golpear. Comienza a golpear en cada lnea de la grilla
encontrada y cuenta 60 posiciones, finalizado esto avanza la hoja un rengln y golpea de izquierda a
derecha con cada lnea 60 veces, llega al final, avanza un rengln y vuelve a repetir el proceso. Esto
lo repite 5 veces con el fin de encontrar algn punto fuera de la lnea del margen, de ser as indica
que la grilla no se pudo leer correctamente.

Mientras se realiza el testeo el programa muestra esta pantalla para indicarlo.

Ejemplos de impresin:

40

Tcnicas Digitales III Problema de ingeniera

En la fig.1 se ve una impresion correcta, en la fig. 2 se ve que al volver de un rengln fall un punto
(circulo rojo -posiblemente no se distingue un negro en la grilla-). Al finalizar el rengln se ve que
pone 1 punto fuera de lugar (crculo azul), como el error es acumulativo se mantiene al bajar al
rengln siguiente.
Para corroborar el correcto funcionamiento, al finalizar el test, los puntos del primer rengln y del
ltimo deben estar alineados.

PRESUPUESTO
Los datos fueron recopilados de Internet (deremate.com, mercadolibre.com), service oficial (Carlos
Amor Servicio Tcnico), Negocio de Computacin (Rei).
Item
Impresora HP 640 c
Kit de mantenimiento
Barilla tensora
goma
tornillos/arandelas/tuercas
sensores
optoacoplador
plaqueta
punzn
grilla impresa
lapicera
cinta/termocontrable
total

Costo
140
1150
45
20
12
21
2
72
12
2
2,5
9
1487,5

41

Tcnicas Digitales III Problema de ingeniera

RESULTADOS Y FOTOS DE LAS IMPRESIONES BRAILLE


En una visin general del proyecto se ve claramente que cumple con los objetivos propuestos, si
bien sus prestaciones no se pueden comparadas con una impresora Braille profesional, deja en claro
que a la hora de transmitir un mensaje va cdigo Braille lo hace muy bien, destacando un punto
notorio pero nunca marcado de ms (figs. 2 y 3), ya que sto perjudica la sensibilidad de la yema
del dedo. La velocidad de escritura es muy buena, aproximadamente 100 puntos por minuto y el
costo de fabricacin no super los $ 1500.

fig. 1
En la fig. 1 dice BRAILLE!

fig. 2

fig. 3

42

Tcnicas Digitales III Problema de ingeniera

IMGENES (ANEXO)

43

Tcnicas Digitales III Problema de ingeniera

PROGRAMA
---------------MODULO1.BAS----------------------Public
Public
Public
Public
Public
Public
Public
Public
Public
Public
Public
Public
Public
Public

ruta As String
renglon As Integer
textoagregado1 As String
textoagregado2 As String
espaciado As String
invertido As String
linea1 As String
linea2 As String
linea3 As String
bandera As Integer
detiene As Integer
detenertest As Integer
volver As Integer
llama_final As Integer

Public Declare Function Inp Lib "inpout32.dll" _


Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

--------------FIN-MODULO1.BAS-----------------------

---------------PRINCIPAL.BAS----------------------Private Sub Form_activate()


Dim textolinea As String
Dim textoleido As String
Open ruta For Input As #1
Do Until EOF(1)
Line Input #1, textolinea
textoleido = textoleido + textolinea + vbCrLf
Loop
Close #1
'-----------------------------longitud = Len(textoleido)
For a = 1 To longitud
individual = Mid$(textoleido, a, 1)
If (individual <> Chr$(10) Or individual <> Chr$(13)) Then
ult_letra = a
End If
Next a
texto_aux = Mid$(textoleido, 1, ult_letra - 2)
Text1.Text = texto_aux
'------------------------------

End Sub
Private Sub Command1_Click()
StatusBar1.Panels.Add , "Impresion", "Imprimiendo trabajo.....", sbrText, LoadPicture(App.Path &
"\imagenimpresora2.jpg")
StatusBar1.Panels(1).AutoSize = sbrContents
label1.Caption = "IMPRIMIENDO"

44

Tcnicas Digitales III Problema de ingeniera


Call filtro
End Sub
Private Function filtro()

mayusculas = 0
numero = 0
For b = 1 To Len(Text1.Text)
X = Mid$(Text1.Text, b, 1)
If (X >= "a" And X <= "z") Or (X >= "A" And X <= "Z") Or (X >= "0" And X <= "9") Or (X = "
") Or (X = "") Or (X = "") Or (X = "") Or (X = "") Or (X = "") Or (X = "") Or (X = "") Or (X
= "") Or (X = "") Or (X = "") Or (X = "") Or (X = ".") Or (X = ",") Or (X = ";") Or (X = ":") Or
(X = "-") Or (X = "(") Or (X = ")") Or (X = "") Or (X = "?") Or (X = "") Or (X = "!") Or (X = "'")
Or (X = Chr$(10)) Or (X = Chr$(13)) Then
filtro_caracter = filtro_caracter + X
End If
Next b

cant_caracteres = Len(filtro_caracter)
texto = filtro_caracter
For a = 1 To cant_caracteres
letra = Mid(texto, a, 1)
Select Case letra
Case "a" To "z"
If numero = 1 Then
textoagregado1 = textoagregado1 + "%"
mayusculas = 0
numero = 0
cont_mayusculas = 0
End If
textoagregado1 = textoagregado1 + letra
Case "A" To "Z"
cont_mayusculas = cont_mayusculas + 1
If mayusculas = 1 Then
textoagregado1 = textoagregado1 + letra
End If
If mayusculas = 0 Then
textoagregado1 = textoagregado1 + "$"
textoagregado1 = textoagregado1 + letra
posicin = a
mayusculas = 1
numero = 0
End If
Case " "
textoagregado1 = textoagregado1 + letra
mayusculas = 0
numero = 0
cont_mayusculas = 0
Case "0" To "9"
If numero = 1 Then
textoagregado1 = textoagregado1 + letra
End If
If numero = 0 Then
textoagregado1 = textoagregado1 + "#"
textoagregado1 = textoagregado1 + letra
mayusculas = 0
numero = 1
End If
cont_mayusculas = 0
Case Chr$(10)
textoagregado1 = textoagregado1 + Chr$(10)
mayusculas = 0
numero = 0
Case Chr$(13)
textoagregado1 = textoagregado1 + Chr$(13)

45

Tcnicas Digitales III Problema de ingeniera


mayusculas = 0
numero = 0
Case Else
textoagregado1 = textoagregado1 + letra
End Select
Next

Call mayuscula
End Function
Private Function mayuscula()
For a = 1 To Len(textoagregado1)
X = Mid$(textoagregado1, a, 1)
If X = "$" Then
Y = Mid$(textoagregado1, a + 1, 1)
z = Mid$(textoagregado1, a + 2, 1)
If Y <> " " And (z >= "A" And z <= "Z") Then
X = X + "$"
End If
End If
textoagregado2 = textoagregado2 + X
Next a
Call separarenglon
End Function
Private Function separarenglon()
cont_30 = 0
ult_esp = 0
a = 0
cant_caracteres3 = Len(textoagregado2)
pri_esp = 0
mul = 0
mitexto = ""
dif_esp = 0
a = 0
If cant_caracteres3 <= 30 Then
For d = 1 To cant_caracteres3
X = Mid$(textoagregado2, d, 1)
If X = Chr$(13) Then
cont_enter = d
dif_esp = d - pri_esp - 1
textomacho = Mid(textoagregado2, (pri_esp + 1), dif_esp)
espaciado = espaciado + textomacho

For c = Len(textomacho) To 30
espaciado = espaciado + " "
Next c
espaciado = espaciado + Chr$(13) & Chr$(10)
pri_esp = d + 1
End If
Next d
dif_esp_fin = cant_caracteres3 - cont_enter
If dif_esp_fin >= 1 Then
textomacho = Mid(textoagregado2, (cont_enter + 1), dif_esp_fin)
espaciado = espaciado + textomacho
For e = Len(textomacho) To 30
espaciado = espaciado + " "
Next e
End If

End If

46

Tcnicas Digitales III Problema de ingeniera


If cant_caracteres3 > 30 Then
Do
a = a + 1
X = Mid$(textoagregado2, a, 1)
cont_30 = cont_30 + 1
If X = " " Then
ult_esp = a
End If

If X = Chr$(13) Then
dif_esp = a - pri_esp - 1
textomacho = Mid(textoagregado2, (pri_esp + 1), dif_esp)
espaciado = espaciado + textomacho

esp_faltantes = 31 - Len(textomacho)
For b = 1 To esp_faltantes
espaciado = espaciado + " "
Next b
espaciado = espaciado + Chr$(13) & Chr$(10)
pri_esp = a + 1
cont_30 = 0
ult_esp = a + 1
final_esp = ult_esp
End If

If cont_30 >= 31 Then


final_esp = ult_esp
dif_esp = ult_esp - pri_esp
textomacho = Mid(textoagregado2, (pri_esp + 1), dif_esp)
espaciado = espaciado + textomacho

esp_faltantes = 31 - Len(textomacho)
For b = 1 To esp_faltantes
espaciado = espaciado + " "
Next b

espaciado = espaciado + Chr$(13) & Chr$(10)


pri_esp = ult_esp
cont_30 = a - ult_esp
End If

Loop Until a >= cant_caracteres3


If ult_esp < a Then
dif_esp = cant_caracteres3 - final_esp
textomacho = Mid(textoagregado2, (final_esp + 1), dif_esp)
espaciado = espaciado + textomacho
esp_faltantes = 30 - Len(textomacho)
For b = 1 To esp_faltantes
espaciado = espaciado + " "
Next b
End If
End If

Call inversor
End Function
Private Function inversor()
re = ""
For a = 1 To Len(espaciado)
X = Mid$(espaciado, a, 1)

47

Tcnicas Digitales III Problema de ingeniera


If X = Chr$(10) Then X = ""
If X = Chr$(13) Then
For b = Len(re) - 1 To 1 Step -1
invertido = invertido + Mid$(re, b, 1)
Next b
re = ""
invertido = invertido + Chr$(13) + Chr$(10)
End If
re = re + X
Next a
If re <> "" Then
For b = Len(re) To 1 Step -1
If (Mid$(re, b, 1) <> Chr$(13)) And (Mid$(re, b, 1) <> Chr$(10)) Then
invertido = invertido + Mid$(re, b, 1)
End If
Next b
End If
Call codificacion
End Function
Private Function codificacion()
linea1 = ""
linea2 = ""
linea3 = ""
long5 = Len(invertido)
cont_31 = 0
mitexto = invertido
renglon = long5 / 31
For a = 1 To long5
letra2 = Mid$(mitexto, a, 1)
Select Case letra2
'MINUSCULAS
Case "a"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "00"

Case "b"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "c"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "00"
Case "d"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "e"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "f"
linea1 = linea1 + "11"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "g"
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "00"

48

Tcnicas Digitales III Problema de ingeniera

Case "h"
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "i"
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "j"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "k"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case "l"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "m"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case "n"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "01"
Case ""
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "10"

Case "o"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "01"
Case "p"
linea1 = linea1 + "11"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "q"
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "r"
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "s"
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "t"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "u"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "11"

49

Tcnicas Digitales III Problema de ingeniera


Case "v"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "11"
Case "w"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "10"
Case "x"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "11"
Case "y"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "11"
Case "z"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "11"

'MAYUSCULAS
Case "A"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "00"

Case "B"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "C"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "00"
Case "D"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "E"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "F"
linea1 = linea1 + "11"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "G"
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "H"
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "I"
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "J"
linea1 = linea1 + "10"
linea2 = linea2 + "11"

50

Tcnicas Digitales III Problema de ingeniera


linea3 = linea3 + "00"
Case "K"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case "L"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "M"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case "N"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "01"
Case ""
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "10"

Case "O"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "01"
Case "P"
linea1 = linea1 + "11"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "Q"
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "R"
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "S"
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case "T"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "U"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "11"
Case "V"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "11"
Case "W"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "10"
Case "X"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "11"

51

Tcnicas Digitales III Problema de ingeniera

Case "Y"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "11"
Case "Z"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "11"
'OTROS
Case Chr$(10) '
linea1 = linea1
linea2 = linea2
linea3 = linea3

Case "
linea1
linea2
linea3

ENTER
+ "-*"
+ "-*"
+ "-*"

"
= linea1 + "00"
= linea2 + "00"
= linea3 + "00"

Case "$"
linea1 =
linea2 =
linea3 =

'simbolo
linea1 +
linea2 +
linea3 +

mayus
"10"
"00"
"10"

Case "#"
linea1 =
linea2 =
linea3 =

'simbolo
linea1 +
linea2 +
linea3 +

numero
"10"
"10"
"11"

Case ","
linea1 = linea1 + "00"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "."
linea1 = linea1 + "00"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case ";"
linea1 = linea1 + "00"
linea2 = linea2 + "01"
linea3 = linea3 + "01"
Case ":"
linea1 = linea1 + "00"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "-"
linea1 = linea1 + "00"
linea2 = linea2 + "00"
linea3 = linea3 + "11"

Case ""
linea1 = linea1 + "00"
linea2 = linea2 + "01"
linea3 = linea3 + "10"
Case "?"
linea1 = linea1 + "00"
linea2 = linea2 + "01"
linea3 = linea3 + "10"
Case ""
linea1 = linea1 + "00"
linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "!"
linea1 = linea1 + "00"

52

Tcnicas Digitales III Problema de ingeniera


linea2 = linea2 + "11"
linea3 = linea3 + "01"
Case "'"
linea1 = linea1 + "00"
linea2 = linea2 + "01"
linea3 = linea3 + "11"
Case "("
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "10"

Case ")"
linea1 = linea1 + "10"
linea2 = linea2 + "10"
linea3 = linea3 + "01"

'NUMEROS
Case "1"
linea1 = linea1 + "01"
linea2 = linea2 + "00"
linea3 = linea3 + "00"

Case "2"
linea1 = linea1 + "01"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "3"
linea1 = linea1 + "11"
linea2 = linea2 + "00"
linea3 = linea3 + "00"
Case "4"
linea1 = linea1 + "11"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "5"
linea1 = linea1 + "01"
linea2 = linea2 + "10"
linea3 = linea3 + "00"
Case "6"
linea1 = linea1 + "11"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "7"
linea1 = linea1 + "11"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "8"
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
Case "9"
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "00"
Case "0"
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "00"
'letras con acento
Case ""

53

Tcnicas Digitales III Problema de ingeniera


linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "11"

Case ""
linea1 = linea1 + "10"
linea2 = linea2 + "01"
linea3 = linea3 + "11"
Case ""
linea1 = linea1 + "10"
linea2 = linea2 + "00"
linea3 = linea3 + "01"
Case ""
linea1 = linea1 + "10"
linea2 = linea2 + "00"
linea3 = linea3 + "11"
Case ""
linea1 = linea1 + "10"
linea2 = linea2 + "11"
linea3 = linea3 + "11"
Case ""
linea1 = linea1 + "01"
linea2 = linea2 + "11"
linea3 = linea3 + "10"

End Select
Next a

linea1 = linea1 + "-*"


linea2 = linea2 + "-*"
linea3 = linea3 + "-/"
'linea1 = linea1 + "//"
Call generador
End Function
Private Function generador()
Call posic_ini
Texto1 = linea1
texto2 = linea2
texto3 = linea3

cant_caracteres = Len(Texto1)
a = 0
noentra = 0
mitexto = Texto1
texto = ""
'-------------------------------b = 1
For a = 1 To renglon
X = Mid$(Texto1, b, 62)
texto = texto + X
X = Mid$(texto2, b, 62)
texto = texto + X
X = Mid$(texto3, b, 62)
texto = texto + X
b = b + 62
DoEvents
If detiene = 1 Then

54

Tcnicas Digitales III Problema de ingeniera


Call detener
End If
Next a
'------------------------a = 0
rng = 0
cant_caracteres2 = Len(texto)
For a = 1 To cant_caracteres2
Sleep 2
lt = Mid(texto, a, 1)
Sleep 2
Select Case lt
Case "0" 'AVANZA MOTORCC 1
DoEvents
If detiene = 1 Then
Call detener
End If
Call vacio
Case "1" 'ACTIVA ELECTROIMAN - AVANZA MOTORCC 1
DoEvents
If detiene = 1 Then
Call detener
End If
Call marca
Case "*" 'CAMBIA DE LINEA DE LECTURA(AVANZA MOTORPP 2)
DoEvents
If detiene = 1 Then
Call detener
End If
Call nueva_linea
rng = rng + 1
If rng = 3 Then
For r = 1 To 5
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5
Next r
rng = 0
End If
Case "/" 'FIN DE LA IMPRESION
DoEvents
If detiene = 1 Then
Call detener
End If
Call final
End Select
Next a
End Function

Private Function vacio()


'izquierda (888) 1
'derecha (888) 2
opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(1)
Sleep 4
Out Val(888), Val(0)
Sleep 40
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1

55

Tcnicas Digitales III Problema de ingeniera


End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If
Loop Until cont >= co
End Function
Private Function marca()
'izquierda (888) 1
'derecha (888) 2
opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(1)
Sleep 4
Out Val(888), Val(0)
Sleep 40
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
Out Val(888), Val(0)
Sleep 100
Out Val(888), Val(4)
Sleep 10
Out Val(888), Val(0)
Sleep 100
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co


End Function

Private Function nueva_linea()


'izquierda (888) 1
'derecha (888) 2
opt1 = 0
opt2 = 0
cont = 0
co = 60
Do
Out Val(888), Val(2)
Sleep 4
Out Val(888), Val(0)
Sleep 40
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then

56

Tcnicas Digitales III Problema de ingeniera


opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co


a = 0
For a = 1 To 5
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5
DoEvents
If detiene = 1 Then
Call detener
End If
Next a
Out Val(888), Val(0)
Sleep 10
End Function

Private Function final()


'izquierda (888) 1
'derecha (888) 2
opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(2)
Sleep 4
Out Val(888), Val(0)
Sleep 2
opto2 = Inp(889)
opto3 = opto2 And 64
If opto3 = 0 Then
opt1 = 1
End If
If (opto3 = 64) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5

Val(16)
Val(32)
Val(8)
Val(64)

cont = cont + 1
End If

57

Tcnicas Digitales III Problema de ingeniera


DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co

For a = 1 To 350
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5
DoEvents
If detiene = 1 Then
Call detener
End If

Next a
Out Val(888), Val(0)
Sleep 10
cartel = MsgBox("El Proceso de impresion se realizo correctamente", vbInformation + vbOKOnly,
"Informacion")

End Function
Private Function posic_ini()
'izquierda (888) 1
'derecha (888) 2
' --------------------------------------------------------------------------Out Val(888), Val(1)
Sleep 50
Out Val(888), Val(0)
Sleep 10

'--------------------------------------------------------------------------'Avanza hasta el sensor derecho


opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(2)
opto2 = Inp(889)
opto3 = opto2 And 64
If opto3 = 0 Then
opt1 = 1
End If
If (opto3 = 64) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co


' ---------------------------------------------------------------------------

58

Tcnicas Digitales III Problema de ingeniera


'Avanza hasta el sensor izquierdo
opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(1)
opto2 = Inp(889)
opto3 = opto2 And 32
If opto3 = 0 Then
opt1 = 1
End If
If (opto3 = 32) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co


' --------------------------------------------------------------------------'Toma la hoja

Out Val(888), Val(0)


Sleep 10
a = 0
For a = 1 To 200
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5

Val(17)
Val(33)
Val(9)
Val(65)

DoEvents
If detiene = 1 Then
Call detener
End If

Next a
Out Val(888),
Sleep 10
Out Val(888),
Sleep 500
Out Val(888),
Sleep 10
Out Val(888),
Sleep 500
Out Val(888),
Sleep 100

Val(0)
Val(2)
Val(0)
Val(1)
Val(0)

Out Val(888), Val(2)


Sleep 10
Out Val(888), Val(0)
Sleep 10

For a = 1 To 80
Out Val(888), Val(16)

59

Tcnicas Digitales III Problema de ingeniera


Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5
DoEvents
If detiene = 1 Then
Call detener
End If
Next a
Out Val(888), Val(1)
Sleep 20
Out Val(888), Val(0)
Sleep 10
' --------------------------------------------------------------------------'Avanza 80 pasos hacia la derecha y se posiciona para empezar
cont = 0
co = 80
Do
Out Val(888), Val(2)
Sleep 5
Out Val(888), Val(0)
Sleep 10
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detiene = 1 Then
Call detener
End If

Loop Until cont >= co

End Function
Private Function detener()
label1.Caption = ""
a = MsgBox("
EL PROCESO SE DETUVO" + vbCrLf + vbCrLf + "Desea interrumpir la operacin?",
vbExclamation + vbOKCancel, "Salir")
DoEvents
If a = 1 Then
Command1.Enabled
Command2.Enabled
Command3.Enabled
label1.Caption =

= False
= False
= False
"ESPERE MIENTRAS SACA LA HOJA"

StatusBar1.Panels.Clear
StatusBar1.Panels.Add , "Impresion Abortada", "Sacando hoja.....", sbrText,
LoadPicture(App.Path & "\imagenimpresora3.jpg")
StatusBar1.Panels(1).AutoSize = sbrContents
For l = 1 To 400
Out Val(888), Val(16)
Sleep 10
Out Val(888), Val(32)

60

Tcnicas Digitales III Problema de ingeniera


Sleep 10
Out Val(888), Val(8)
Sleep 10
Out Val(888), Val(64)
Sleep 10
DoEvents
Next l
Out Val(888), Val(0)
Sleep 10
End
Unload Me
detiene = 0
Form1.Show
Form1.Enabled = True
Form1.SetFocus
DoEvents
Else
detiene = 0
DoEvents
label1.Caption = "IMPRIMIENDO"
StatusBar1.Panels.Add , "Impresion", "Imprimiendo trabajo.....", sbrText, LoadPicture(App.Path &
"\imagenimpresora2.jpg")
StatusBar1.Panels(1).AutoSize = sbrContents
End If
End Function

------------------FIN-PRINCIPAL.BAS------------------

----------------FUNCION-PRIVADA-TESTEO---------------

Private Function testeo()


detenertest = 0
'izquierda (888) 1
'derecha (888) 2
' --------------------------------------------------------------------------Out Val(888), Val(1)
Sleep 50
Out Val(888), Val(0)
Sleep 10

'--------------------------------------------------------------------------'Avanza hasta el sensor derecho


opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(2)
'Sleep 5
'Out Val(888), Val(0)
'Sleep 10
opto2 = Inp(889)
opto3 = opto2 And 64
If opto3 = 0 Then
opt1 = 1
End If
If (opto3 = 64) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If

61

Tcnicas Digitales III Problema de ingeniera


DoEvents
If detenertest = 1 Then
Call detener_test
End If
Loop Until cont >= co
' --------------------------------------------------------------------------'Avanza hasta el sensor izquierdo
opt1 = 0
opt2 = 0
cont = 0
co = 1
Do
Out Val(888), Val(1)
'Sleep 10
'Out Val(888), Val(0)
'Sleep 2
opto2 = Inp(889)
opto3 = opto2 And 32
If opto3 = 0 Then
opt1 = 1
End If
If (opto3 = 32) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
End If
DoEvents
If detenertest = 1 Then
Call detener_test
End If
Loop Until cont >= co
' --------------------------------------------------------------------------'Toma la hoja

Out Val(888), Val(0)


Sleep 10
a = 0
For a = 1 To 200
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5
Out Val(888),
Sleep 5

Val(17)
Val(33)
Val(9)
Val(65)

DoEvents
If detenertest = 1 Then
Call detener_test
End If
Next a
Out Val(888),
Sleep 10
Out Val(888),
Sleep 500
Out Val(888),
Sleep 10
Out Val(888),
Sleep 500
Out Val(888),
Sleep 100

Val(0)
Val(2)
Val(0)
Val(1)
Val(0)

62

Tcnicas Digitales III Problema de ingeniera


Out Val(888), Val(2)
Sleep 10
Out Val(888), Val(0)
Sleep 10

For a = 1 To 80
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5
DoEvents
If detenertest = 1 Then
Call detener_test
End If
Next a
Out Val(888), Val(1)
Sleep 20
Out Val(888), Val(0)
Sleep 10
' --------------------------------------------------------------------------'Avanza 80 pasos hacia la derecha y se posiciona para empezar
cont = 0
co = 80
Do
Out Val(888), Val(2)
Sleep 5
Out Val(888), Val(0)
Sleep 10
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
'Sleep 100
'Out Val(888), Val(4)
'Sleep 10
'Out Val(888), Val(0)
'Sleep 100
cont = cont + 1
End If
DoEvents
If detenertest = 1 Then
Call detener_test
End If
Loop Until cont >= co
For vuelta = 1 To 5
'---------------------------------------------------------------'izquierda (888) 1
'derecha (888) 2
'avanza hacia la izquierda golpeando 60 veces
opt1 = 0
opt2 = 0
cont = 0
co = 60
Do
Out Val(888), Val(1)

63

Tcnicas Digitales III Problema de ingeniera


Sleep 5
Out Val(888), Val(0)
Sleep 10
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
'----' golpea
Sleep 100
Out Val(888), Val(4)
Sleep 10
Out Val(888), Val(0)
Sleep 100
'-----

End If
DoEvents
If detenertest = 1 Then
Call detener_test
End If

Loop Until cont >= co


a = 0
For a = 1 To 5
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5

DoEvents
If detenertest = 1 Then
Call detener_test
End If

Next a
Out Val(888), Val(0)
Sleep 10

'--------------------------------------------------------------------'---------------------------------------------------------------'izquierda (888) 1
'derecha (888) 2
'avanza hacia la derecha golpeando 60 veces
opt1 = 0
opt2 = 0
cont = 0
co = 60
Do
Out Val(888), Val(2)
Sleep 5

64

Tcnicas Digitales III Problema de ingeniera


Out Val(888), Val(0)
Sleep 10
opto2 = Inp(889)
opto3 = opto2 And 16
If opto3 = 16 Then
opt1 = 1
End If
If (opto3 = 0) And (opt1 = 1) Then
opt2 = 1
End If
If (opt1 = 1) And (opt2 = 1) Then
opt1 = 0
opt2 = 0
cont = cont + 1
'----' golpea
Sleep 100
Out Val(888), Val(4)
Sleep 10
Out Val(888), Val(0)
Sleep 100
'-----

End If
DoEvents
If detenertest = 1 Then
Call detener_test
End If

Loop Until cont >= co


a = 0
For a = 1 To 5
Out Val(888), Val(16)
Sleep 5
Out Val(888), Val(32)
Sleep 5
Out Val(888), Val(8)
Sleep 5
Out Val(888), Val(64)
Sleep 5

DoEvents
If detenertest = 1 Then
Call detener_test
End If

Next a
Out Val(888), Val(0)
Sleep 10

'--------------------------------------------------------------------Next vuelta

For l = 1 To 200
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
DoEvents

Val(16)
Val(32)
Val(8)
Val(64)

Next l
Out Val(888), Val(0)
Sleep 10

65

Tcnicas Digitales III Problema de ingeniera

End Function
Private Sub Command1_Click()
detenertest = 1
End Sub
Private Sub Form_activate()
Form4.SetFocus
Call testeo
'Do While bandera = 0
'Sleep 100
'ProgressBar1.Value = ProgressBar1.Value + 1
'If ProgressBar1.Value >= 20 Then ProgressBar1.Value = 0
'DoEvents
' Loop
a = MsgBox("El Proceso de testeo se realizo correctamente", vbInformation + vbOKOnly,
"Informacion")
Unload Me
Form1.SetFocus
End Sub
Private Function detener_test()
For l = 1 To 400
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
Out Val(888),
Sleep 10
DoEvents

Val(16)
Val(32)
Val(8)
Val(64)

Next l
Out Val(888), Val(0)
Sleep 10
End
Unload Me
detiene = 0
Form1.Show
Form1.Enabled = True
Form1.SetFocus
DoEvents

End Function

----------------FIN-FUNCION-PRIVADA-TESTEO---------------

66

Potrebbero piacerti anche