Professional Documents
Culture Documents
INDICE
1. INTRODUCCION
2. OBJETIVOS
3. JUSTIFICACION
4. MARCO TEORICO
4.2.2. TRANSISTORES.
4.2.3. FLIP-FLOPS.
4.2.5. OPTOCOUPLERS
5.1.3. CALCULOS
6. CONCLUSIONES.
7. BIBLIOGRAFIA
8. ANEXOS
ROBOT FRESADOR
1. INTRODUCCION.
2. OBJETIVOS.
Objetivo general
Objetivos especficos
3. JUSTIFICACION
La necesidad principal para que se realice este diseo, se debe al tiempo de fabricacin
que implican las geometras complejas, este tiempo, dependen mucho de la habilidad de
la persona que va a realizar la pieza y de la dificultad en el diseo de la misma. Con la
fresadora Router las formas ms difciles podrn ser realizadas en el tiempo ms ptimo,
y con una precisin alta.
Introduccin
Principio de Funcionamiento
Bsicamente, estos motores estn constituidos normalmente por un rotor sobre el que van
aplicados distintos imanes permanentes y por un cierto nmero de bobinas excitadoras
bobinadas en su estator. Las bobinas son parte del estator y el rotor es un imn
permanente. Toda la conmutacin (o excitacin de las bobinas) deber ser externamente
manejada por un controlador.
Estos tienen generalmente, cuatro cables de salida (ver figura 3). Necesitan ciertos trucos
para ser controlados, debido a que requieren del cambio de direccin del flujo de corriente
a travs de las bobinas en la secuencia apropiada para realizar un movimiento. En la
figura 5A podemos apreciar un ejemplo de control de estos motores mediante el uso de un
puente en H (H-Bridge).
Como se aprecia, ser necesario un H-Bridge por cada bobina del motor, es decir que
para controlar un motor paso a paso de 4 cables (dos bobinas), necesitaremos usar dos
H-Bridges iguales al de la figura 5. El circuito de la figura 5 es a modo ilustrativo y no
corresponde con exactitud a un H-Bridge. En general, es recomendable el uo de H-Bridge
integrados, como son los casos del 1293 (ver figura 5B).
Unipolar:
En la figura 7 se puede ver la tabla con la secuencia necesaria para controlar motores
paso a paso del tipo Bipolares.
Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a
continuacin. Todas las secuencias comienzan nuevamente por el paso 1 una vez
alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se de ejecutar
las secuencias en modo inverso.
Secuencia del tipo medio paso; En esta secuencia se activan las bobinas de tal forma de
brindar un movimiento igual a la mitad del paso real. Para ello se activan primero 2
bobinas y luego slo 1 y as sucesivamente.
Como comentario final, cabe destacar que debido a que los motores paso a paso son
dispositivos mecnicos y como tal deben vencer ciertas inercias, el tiempo de duracin y
la frecuencia de los pulsos aplicados es un punto muy importante a tener en cuenta. En tal
sentido el motor debe alcanzar el paso antes que la prxima secuencia de pulsos
comience. Si la frecuencia de pulsos es muy elevada, el motor puede reaccionar en
alguna de las siguientes formas:
Cuando se trabaja con motores P-P usados o bien nuevos, pero de los cuales no tenemos
hojas de datos. Es posible averiguar la distribucin de los cables a los bobinados y el
cable comn en un motor de paso unipolar de 5 o 6 cables siguiendo las instrucciones
que se detallan a continuacin:
Como se aprecia en las figuras anteriores, en el caso de motores con 6 cables, stos
poseen dos cables comunes, pero generalmente poseen el mismo color, por lo que es
mejor unirlos antes de comenzar las pruebas. Usando un multmetro para verificar la
resistencia entre pares de cables, el cable comn ser el nico que tenga la mitad del
valor de la resistencia entre ella y el resto de los cables.
Esto es debido a que el cable comn tiene una bobina entre ella y cualquier otro cable,
mientras que cada uno de los otros cables .tienen dos bobinas entre ellos. De ah la mitad
de la resistencia medida cable comn.
Recordar
Un motor de paso con 5 cables es casi seguro de 4 fases y unipolar.
Un motor de paso
con 6 cables tambin puede ser de 4 fases y unipolar, pero con 2 cables comunes
para
alimentacin, pueden ser del mismo color.
4.2.2.-Transistores.-
Existen dos tipos transistores: el NPN y el PNP, y la direccin del flujo de la corriente en
cada caso, lo indica la flecha que se ve en el grfico de cada tipo de transistor.
El transistor es un dispositivo de 3 patillas con los siguientes nombres: base (B), colector
(C) y emisor (E), coincidiendo siempre, el emisor, con la patilla que tiene la flecha en el
grfico de transistor.
Segn la frmula anterior las corrientes no dependen del voltaje que alimenta el circuito
(Vcc), pero en la realidad si lo hace y la corriente Ib cambia ligeramente cuando se
cambia Vcc. Ver figura.
En el segundo grfico las corrientes de base (Ib) son ejemplos para poder entender que a
ms corriente la curva es ms alta.
(2) Cuando J=1 y K=0, al ir la entrada C de 1 a0 el flip-flop J-K tomar el estado Q=1
independientemente del estado en el que se encontraba anteriormente.
(3) Cuando J=0 y K=1, al ir la entrada C de 1 a 0 el flip-flop J-K tomar el estado Q=0
independientemente del estado en el que se encontraba anteriormente.
(4) Cuando J=0 y K=0, al ir la entrada C de 1 a 0 el flip-flop J-K tomar un estado opuesto
a aqul en el cual se encontraba anteriormente. Esto quiere decir que si antes de la
transicin en la terminal C de 1 a 0 el flip-flop J-K se encontraba en el estado Q=1,
entonces tomar el estado Q=0 despus de la transicin. Asimismo, si se encontraba en
el estado Q=0 antes de la transicin, entonces tomar el estado Q=1 despus de la
transicin.
Existen tambin en el mercado flip-flops J-K en los cuales la transicin que produce la
accin en la terminal de salida Q es una transicin positiva de 0 a 1 y no la transicin
negativa de 1 a 0 (precaucin: aqu no hay voltajes negativos involucrados). Estos flip-
flops J-K son conocidos en el mercado como flip-flops accionados por una seal de reloj
positiva.
Obsrvese cuidadosamente que es nicamente una transicin en la terminal C la que
puede producir accin alguna a la salida del flip-flop J-K. Si la entrada en la terminal C
permanece constante, cualesquier variacin en las terminales J yK no podr producir
efecto alguno en la salida Q del flip-flop J-K.
En forma similar al flip-flop R-S, el flip-flop J-K tambin posee dos salidas
complementarias, Q y Q, con la diferencia de que el filp flop j k no posee estados no
definidos.
El flip-flop J-K, al igual que todos los bloques fundamentales dentro de los circuitos
lgicos, se construye utilizando funciones lgicas bsicas.
En la electrnica digital hay unas compuertas que no son comunes. Una de ellas es la
compuerta XOR compuerta O exclusiva compuerta O excluyente.
X = A.B + A.B
A diferencia de la compuerta OR, la compuerta XOR tiene una salida igual a "0" cuando
sus entradas son iguales a 1.
X = A.B + A.B
De la misma manera que el caso anterior se puede ver que se cumple que X = 1 slo
cuando la suma de las entradas en "1" sea impar
Circuito equivalente.-
Si la tensin de entrada vara, la cantidad de luz tambin lo har, lo que significa que la
tensin de salida cambia de acuerdo con la tensin de entrada. De este modo el
dispositivo puede acoplar una seal de entrada con el circuito de salida, aunque hay que
tener en cuenta que las curvas tensin/luz del LED no son lineales, por lo que la seal
puede distorsionarse. Se venden optoacopladores especiales para este propsito,
diseados de forma que tengan un rango en el que la seal de salida sea casi idntica a
la de entrada.
Terminologa:
El uso de ciertos trminos deben ser considerados.
Bit 1 : Significa que la salida de esta puerta es 5V.
Bit 0 : Significa que la salida es 0v.
Bit X : Significa que no importa el valor de este bit, puede ser 1 o 0
Bit ~X : Significa que este dato es negado.
Registro: Arreglos de 8 Bits, que sirven para la configuracin del Puerto Paralelo
Un Poco de Teora.
Ejemplo:
Para comenzar, he hecho un pequeo programa. En visual Basic.
Bueno, Sabemos que Visual Basic no permite manejar el Puerto Paralelo, pero
nuestra DLL S, ES por eso que lo adjuntaremos, mediante un archivo obj:
InpOut32.bas
'Declaramos las Variables de la Dll
'Aqu declaramos como funcin a Inp32
'Ya q lo que hace es devolvernos el valor q indica la direccin que se le Asigne.
Public Declare Function Leer Lib "Inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Byte
'Aqu declaramos como una Subrutina a Out32
'Ya que no devuelve ningun valor.
Public Declare Sub Escribir Lib "Inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Byte)
'Aqu estoy declarando esta Api de Windows, para usarlo en los retardos.
Public Declare Sub Sleep Lib "Kernel32.dll" (ByVal PortAddress As Integer)
Nuestro Programita tiene la Forma:
Las caracteristicas basicas de los controles son:
Control Nombre Caption
Form FrmLeds Prendiendo Leds
Button CmdD0 D&0
Button CmdD1 D&1
Button CmdD2 D&2
Button CmdD3 D&3
Button CmdD4 D&4
Button CmdD5 D&5
Button CmdD6 D&6
Button CmdD7 D&7
Button CmdEfe1 &Derecha
Button CmdEfe1 &Izquierda
Button CmdAbout &About
Donde su Cdigo Correspondiente es:
Form1.frm
'Declaramos las variables generales
Dim Dato As Byte 'Dato es usado por todos las Subrutinas
Private Sub CmdAbout_Click()
'Muestro Mensaje en Pantalla: el vbCrLf es equivalente a ENTER
MsgBox "Prendiendo Leds " + vbCrLf + vbCrLf + " por:" + vbCrLf + " Yoel Ocmin " +
vbCrLf + vbCrLf + "yoelocmin@hotmail.com" + vbCrLf + "http://proyectosfie.tk",
vbQuestion, "Acerca..."
End Sub
Private Sub CmdD0_Click()
Dato = Leer(&H378) Xor &H1 'Cambio el Bit 1=Lsb=D0
Envia
End Sub
Private Sub CmdD1_Click()
Dato = Leer(&H378) Xor &H2 'Cambio el Bit 2
Envia
End Sub
Private Sub CmdD2_Click()
Dato = Leer(&H378) Xor &H4 'Cambio el Bit 3
Envia
End Sub
Private Sub CmdD3_Click()
Dato = Leer(&H378) Xor &H8 'Cambio el Bit 4
Envia
End Sub
Private Sub CmdD4_Click()
Dato = Leer(&H378) Xor &H10 'Cambio el Bit 5
Envia
End Sub
Private Sub CmdD5_Click()
Dato = Leer(&H378) Xor &H20 'Cambio el Bit 6
Envia
End Sub
Private Sub CmdD6_Click()
Dato = Leer(&H378) Xor &H40 'Cambio el Bit 7
Envia
End Sub
Private Sub CmdD7_Click()
Dato = Leer(&H378) Xor &H80 'Cambio el Bit 8 =MsB=D7
Envia
End Sub
Private Sub CmdEfe1_Click()
'Efecto '1':
'Rotamos un Bit del LSB -> MSB
'VB, no tiene la funcion rotar Bit, haci que lo q
'Colocar en Dato=00000001 y multiplicarlo por 2
' Dato=00000010 ->Roto un Bit
'Si lo multiplico nuevamente.
' Dato=00000100 ->Roto un Bit
'Y asi sucesivamente hasta q llega al Octavo Bit.
Dato = 1
While Dato < &H80
Envia
Sleep 250 'Ocaciono un retardo de 250 milisegundos
Dato = Dato * 2
Wend
Envia ' como no se envio el ultimo bit se lo envia recien
Sleep 250 '
Dato = 0 'Reseteamos el Puerto.
Envia
Sleep 250
End Sub
Private Sub CmdEfe2_Click()
'Efecto '2':
'Rotamos un Bit del MSB -> LSB
'VB, no tiene la funcion rotar Bit, haci que lo q
'Colocar en Dato=10000000 y Dividimos por 2
' Dato=01000000 ->Roto un Bit
'Si lo multiplico nuevamente.
' Dato=00100000 ->Roto un Bit
'Y asi sucesivamente hasta q llega al Primer Bit.
Dato = &H80
While Dato > &H1
Envia
Sleep 250
Dato = Dato / 2
Wend
Envia
Dato = 0
Sleep 250
Envia
Sleep 250
End Sub
Private Sub Form_Load()
'Al iniciar a cargar el Form, reiniciamos el Puerto
Escribir &H378, 0
End Sub
Private Sub Envia()
'Solo envia el Dato al Pueto Paralelo
Escribir &H378, Dato
End Sub
Bueno Eso es Todo con Respecto a Visual Basic.
5.1.3. CALCULOS
Fc = ks * Ac Ac = e*b Ks = 37 N/mm2
Fr Fr
F
+
F
Fr X
Fx=Fr+ sen ( 60 )Fc+cos ( 60 )Frcos ( 60 )Fr + sen ( 60 )Fc
( 60 )18.25= 38.9[ N ]
Fx=Fr +2 sen ( 60 )Fc=7.3+2sen
( 60 )7.3=5.6[ N ]
Fy=Fc +2 sen ( 60 )Fr=18.25+ 2sen
Mt
F=
dm
2
+
F=Fa( )
dm
Mt=F
2
+
Mt=Fa
( )
MT = 215,49 [N*mm]
5.2. PARTE ELECTRONICA
Function llevar_posicion_inicial()
VAR = 1
num = 0
'M_CONT = 0
If fc1 = 1 Then
giro1 = 0
reset_cont()
ax = 10000
'Timer1.Interval = 25
reloj1_intervalo = 1
'Timer1.Enabled = True
reloj1_activar = "verdad"
End If
If fc2 = 1 Then
giro2 = 0
reset_cont()
by = 10000
'Timer2.Interval = 25
reloj2_intervalo = 1
'Timer2.Enabled = True
reloj2_activar = "verdad"
End If
End Function
Function ABC()
If cambio = 1 Then
numero = 0
cambio = 0
End If
Else
letra = "ESPACIO"
End If
End If
Case "A"
codigo_A()
Case "B"
codigo_B()
Case "C"
codigo_C()
Case "D"
codigo_D()
Case "E"
codigo_E()
Case "F"
codigo_F()
Case "G"
codigo_G()
Case "H"
codigo_H()
Case "I"
codigo_I()
Case "J"
codigo_J()
Case "K"
codigo_K()
Case "L"
codigo_L()
Case "M"
codigo_M()
Case "N"
codigo_N()
Case ""
codigo_()
Case "O"
codigo_O()
Case "P"
codigo_P()
Case "Q"
codigo_Q()
Case "R"
codigo_R()
Case "S"
codigo_S()
Case "T"
codigo_T()
Case "U"
codigo_U()
Case "V"
codigo_V()
Case "W"
codigo_W()
Case "X"
codigo_X()
Case "Y"
codigo_Y()
Case "Z"
codigo_Z()
Case "ESPACIO"
codigo__()
Case "por_puntos"
codigo__por_puntos()
End Select
End If
End If
End Function
Function alternador1()
If ALTX = 0 Then
ALTX = 1
Timer4.Enabled = True
End If
End Function
Function alternador2()
If ALTY = 0 Then
ALTY = 1
Timer6.Enabled = True
End If
End Function
Function contador1()
If cont_ax = ax Then
'Timer1.Enabled = False
reloj1_activar = "falso"
End If
'End If
'Else
'Timer1.Enabled = False
'End If
'End If
'End If
cont_ax = cont_ax + 1
End Function
Function contador2()
If cont_by = by Then
'Timer2.Enabled = False
reloj2_activar = "falso"
End If
'End If
'Timer1.Enabled = False
'Timer2.Enabled = False
'End If
'Else
'If cont_by = by Then
'Timer2.Enabled = False
'End If
'End If
'End If
cont_by = cont_by + 1
End Function
Function inicio1()
'M_CONT = 0
giro1 = 1
ax = 3
giro2 = 1
by = 39
reset_cont()
'Timer1.Enabled = True
reloj1_activar = "verdad"
'Timer1.Interval = 50
reloj1_intervalo = 1
'Timer2.Enabled = True
reloj2_activar = "verdad"
'Timer2.Interval = 50
reloj2_intervalo = 1
int_palab = 2
condicion = 1
Timer3.Enabled = True
End Function
Function reset_cont()
cont_ax = 1
cont_by = 1
End Function
Function codigo_A()
Case 1
bajar_m3()
Case 2
ALTX = 0
giro1 = 1
ax = 2 * modo
ALTY = 0
giro2 = 1
by = 8 * modo
reset_cont()
'Timer1.Interval = 4000
reloj1_intervalo = 4
'Timer2.Interval = 1000
reloj2_intervalo = 1
'Timer1.Enabled = True
reloj1_activar = "verdad"
'Timer2.Enabled = True
reloj2_activar = "verdad"
cambio = 0
condicion = 1
Case 3
ALTX = 0
giro1 = 1
ax = 1 * modo
ALTY = 0
giro2 = 0
by = 4 * modo
reset_cont()
'Timer1.Enabled = True
reloj1_intervalo = 4
reloj2_intervalo = 1
reloj1_activar = "verdad"
reloj2_activar = "verdad"
'Timer1.Interval = 100
'Timer2.Enabled = True
'Timer2.Interval = 25
condicion = 1
Case 4
ALTX = 0
giro1 = 0
ax = 2 * modo
reset_cont()
'Timer1.Enabled = True
'Timer1.Interval = 25
reloj1_intervalo = 1
reloj1_activar = "verdad"
condicion = 1
Case 5
ALTX = 0
giro1 = 1
ax = 2 * modo
reset_cont()
'Timer1.Enabled = True
'Timer1.Interval = 25
reloj1_intervalo = 1
reloj1_activar = "verdad"
condicion = 1
Case 6
ALTX = 0
giro1 = 1
ax = 1 * modo
ALTY = 0
giro2 = 0
by = 4 * modo
reset_cont()
'Timer1.Enabled = True
'Timer1.Interval = 100
'Timer2.Enabled = True
'Timer2.Interval = 25
reloj1_intervalo = 4
reloj2_intervalo = 1
reloj1_activar = "verdad"
reloj2_activar = "verdad"
cambio = 0
condicion = 1
Case 7
subir_m3()
Case 8
ALTX = 0
giro1 = 1
ax = 3 * modo
reset_cont()
'Timer1.Enabled = True
'Timer1.Interval = 25
reloj1_intervalo = 1
reloj1_activar = "verdad"
condicion = 1
Case 9
cambio = 1
num = num + 1
condicion = 1
End Select
End Function
Function codigo__por_puntos()
ALTX = 0
ALTY = 0
If numero = 0 Then
giro1 = 1
ax = lista1(numero) * 100
giro2 = 1
by = lista2(numero) * 100
End If
giro1 = 1
Else
giro1 = 0
End If
Else
End If
giro2 = 1
Else
giro2 = 0
End If
Else
End If
End If
reset_cont()
If ax = 0 And by <> 0 Then
reloj2_intervalo = 1
reloj2_activar = "verdad"
cambio = 0
condicion = 1
End If
reloj1_intervalo = 1
reloj1_activar = "verdad"
cambio = 0
condicion = 1
End If
If ax = 0 And by = 0 Then
reloj1_intervalo = 1
reloj1_activar = "falso"
reloj2_intervalo = 1
reloj2_activar = "falso"
End If
If lista3(numero) = 0 Then
reloj1_intervalo = 1
reloj2_intervalo = 1
reloj1_activar = "verdad"
reloj2_activar = "verdad"
cambio = 0
condicion = 1
Else
If ax >= by Then
numerador = ax
denominador = by
k=0
Else
numerador = by
denominador = ax
k=1
End If
For l = 2 To denominador
numerador = numerador / l
denominador = denominador / l
l=l-1
End If
Next
If k = 0 Then
reloj1_intervalo = denominador
reloj2_intervalo = numerador
reloj1_activar = "verdad"
reloj2_activar = "verdad"
cambio = 0
condicion = 1
Else
reloj1_intervalo = numerador
reloj2_intervalo = denominador
reloj1_activar = "verdad"
reloj2_activar = "verdad"
cambio = 0
condicion = 1
End If
End If
End If
Else
If lista3(numero) = 1 Then
bajar_m3()
comparador = lista3(numero)
numero = numero - 1
numero = 0
End If
Else
subir_m3()
comparador = lista3(numero)
numero = numero - 1
numero = 0
End If
End If
End If
num = numero - 1
TextBox16.Text = lista1(numero)
TextBox17.Text = lista2(numero)
TextBox18.Text = lista3(numero)
End Function
Function bajar_m3()
Timer5.Enabled = True
Timer3.Interval = 2000
Timer3.Enabled = True
m3 = 1
End Function
Function subir_m3()
Timer5.Enabled = True
Timer3.Interval = 2000
Timer3.Enabled = True
m3 = 0
End Function
Out(&H378, 0)
End Sub
giro1 = 1
p1 = 1
giro2 = 1
p2 = 1
modo = 50
cont_ax = 1
cont_by = 1
Out(&H378, 0)
fin1 = 1
fin2 = 1
reloj1_activar = "falso"
reloj2_activar = "falso"
Timer3.Enabled = True
Reloj_puerto_paralelo.Enabled = True
End Sub
Kx = 0
Ky = 0
numero = 0
ALTX = 0
Tamao = Len(Trim(TextBox1.Text))
frase = UCase(Trim(TextBox1.Text))
letra = "INICIANDO"
End If
int_palab = 1
llevar_posicion_inicial()
Timer1.Enabled = True
Timer3.Enabled = True
Reloj_puerto_paralelo.Enabled = True
End Sub
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer3.Tick
If Kx = 0 Then
'Timer1.Enabled = False
reloj1_activar = "falso"
VAR = VAR + 1
X=0
Kx = 1
fin1 = 1
End If
End If
If Ky = 0 Then
'Timer2.Enabled = False
reloj2_activar = "falso"
VAR = VAR + 1
Y=0
Ky = 1
fin2 = 1
End If
End If
End If
Case 1
'M_CONT = 0
inicio1()
End If
Case 2
If condicion = 1 Then
numero = numero + 1
End If
' M_CONT = 10
ABC()
End If
End Select
TextBox2.Text = X
TextBox3.Text = Y
TextBox4.Text = VAR
TextBox5.Text = Timer1.Interval
TextBox6.Text = Timer2.Interval
TextBox7.Text = numero
TextBox8.Text = condicion
TextBox9.Text = int_palab
TextBox12.Text = letra
TextBox13.Text = giro1
TextBox21.Text = modo
int_palab = 0
Kx = 0
Ky = 0
VAR = 1
llevar_posicion_inicial()
End If
End If
End If
If posc_origen = 1 Then
Button3.PerformClick()
posc_origen = 0
End If
End Sub
If giro1 = 1 Then
X=X+1
Else
X=X-1
End If
alternador1()
contador1()
reloj1 = 0
End If
reloj1 = reloj1 + 1
Else
reloj1 = 0
End If
If giro2 = 1 Then
Y=Y+1
Else
Y=Y-1
End If
alternador2()
contador2()
reloj2 = 0
End If
reloj2 = reloj2 + 1
Else
reloj2 = 0
End If
timer22 = timer22 + 1
End Sub
'Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
' Y=Y+1
' Else
' Y=Y-1
' End If
' alternador2()
' contador2()
'End Sub
Kx = 0
Ky = 0
llevar_posicion_inicial()
int_palab = 10
Reloj_puerto_paralelo.Enabled = True
Timer3.Enabled = True
subir_m3()
End Sub
ALTX = 0
Timer4.Enabled = False
End Sub
Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer5.Tick
Timer3.Interval = 100
Timer5.Enabled = False
End Sub
If ALTX = q1 Then
If ALTX = 0 Then
bit = bit - 1
End If
q1 = 1
Else
bit = bit + 1
q1 = 0
End If
End If
If giro1 = p1 Then
If giro1 = 0 Then
bit = bit - 2
End If
p1 = 1
Else
bit = bit + 2
p1 = 0
End If
End If
If ALTY = q2 Then
If ALTY = 0 Then
bit = bit - 4
End If
q2 = 1
Else
bit = bit + 4
q2 = 0
End If
End If
If giro2 = p2 Then
If giro2 = 1 Then
bit = bit - 8
End If
p2 = 0
Else
bit = bit + 8
p2 = 1
End If
End If
If m3 = qm3 Then
If m3 = 0 Then
bit = bit - 16
End If
qm3 = 1
Else
bit = bit + 16
qm3 = 0
End If
End If
Out(&H378, bit)
ingreso = Inp(&H379)
fc1 = 0
Else
fc1 = 1
End If
fc3 = 0
Else
fc3 = 1
End If
fc2 = 0
Else
fc2 = 1
End If
fc4 = 0
Else
fc4 = 1
End If
If fc3 = 1 Then
FIN3 = 0
End If
If FIN3 = 0 Then
If fc3 = 0 Then
'Timer1.Enabled = False
reloj1_activar = "falso"
Timer3.Enabled = False
Reloj_puerto_paralelo.Enabled = False
FIN3 = 1
End If
End If
If fc4 = 1 Then
FIN4 = 0
End If
If FIN4 = 0 Then
If fc4 = 0 Then
reloj2_activar = "falso"
Timer3.Enabled = False
Reloj_puerto_paralelo.Enabled = False
FIN4 = 1
End If
End If
If fc4 = 1 Then
FIN4 = 0
End If
TextBox10.Text = bit
TextBox11.Text = ingreso
End Sub
ALTY = 0
Timer6.Enabled = False
End Sub
modo = TextBox14.Text
End Sub
ALTX = 0
giro1 = 1
ax = 200
ALTY = 0
reloj1_intervalo = 1
reloj1_activar = "verdad"
End Sub
Form2.Show()
End Sub
Out(&H378, 0)
End
End Sub
If iniciartoma = 1 Then
MATRIZ_X(MATRIZ) = X
MATRIZ_Y(MATRIZ) = Y
MATRIZ = MATRIZ + 1
ListBox1.Items.Add(X)
ListBox2.Items.Add(Y)
End If
TextBox19.Text = num
TextBox20.Text = Tamao
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button7.Click
iniciartoma = 1
End Sub
iniciartoma = 0
End Sub
For i = 1 To MATRIZ
Print(1, MATRIZ_X(i))
FileClose(1)
Print(2, MATRIZ_Y(i))
FileClose(2)
Next i
End Sub
fin1 = 0
End Sub
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button11.Click
fin2 = 0
End Sub
Timer1.Interval = HScrollBar1.Value
End Sub
modo = ComboBox1.Text
End Sub
End Sub
End Class
Public Class Form2
Dim i3 As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
list1.Items.Add(TextBox1.Text)
list2.Items.Add(TextBox2.Text)
list3.Items.Add(ComboBox1.Text)
TextBox1.Clear()
TextBox2.Clear()
Me.TextBox1.Focus()
End Sub
DirListBox1.Path = DriveListBox1.Drive
err:
End If
End Sub
FileListBox1.Path = DirListBox1.Path
End Sub
TextBox3.Text = ruta_del_documento
Ub_listas(0) = 0
Ub_listas(1) = 0
Ub_listas(2) = 0
Ub_listas(3) = 0
i3 = 0
datos(contador) = LineInput(1)
N_digitos = Len(datos(contador))
Ub_listas(i3) = i2
i3 = i3 + 1
End If
Next i2
contador = contador + 1
End While
FileClose(1)
If list1.Items.Count = -1 Then
error1:
MsgBox("INGRESAR UN ARCHIVO COMPATIBLE")
End If
End Sub
For i = 0 To list1.Items.Count - 1
lista1(i) = list1.Items(i)
lista2(i) = list2.Items(i)
lista3(i) = list3.Items(i)
Next i
VAR = 1
Kx = 0
Ky = 0
condicion = 0
comparador = 0
num = 0
numero = 0
int_palab = 2
Tamao = list1.Items.Count - 1
letra = "por_puntos"
End Sub
Me.TextBox1.Focus()
End Sub
If Asc(e.KeyChar) = 13 Then
Me.TextBox2.Focus()
End If
End Sub
If Asc(e.KeyChar) = 13 Then
Me.ComboBox1.Focus()
End If
End Sub
If Asc(e.KeyChar) = 13 Then
Me.Button1.Focus()
End If
Else
MsgBox("INGRESAR 1 0")
End If
End Sub
posc_origen = 1
End Sub
list1.Items.Clear()
list2.Items.Clear()
list3.Items.Clear()
End Sub
End Sub
End Class
Module Module1
Public k As Integer
Public sd As Object
Public q1 As Integer
Public p1 As Integer
Public q2 As Integer
Public p2 As Integer
Public m3 As Integer
Public Kx As Integer
Public Ky As Integer
Public X As Integer
Public Y As Integer
Public ax As Integer
Public by As Integer
Public o As Integer
End Module
6. CONCLUSIONES.
*Se ha podido observar que es posible alcanzar una buena precisin y repetividad con los
motores paso a paso.
7. BIBLIOGRAFIA