Bueno pues yo quiero crear este tema en vista de que observando los temas que hablan de un brazo robot solamente se concentran en la mecanica... y esta bien, pero quiero integrar la parte de la electronica y de la programacion de un brazo robotico
Consiste en un circuito digital de control (
Sin nada de pic ni de microcontroladores) y un programita creado en visual basic .NET 2005. Les dejo el diagrama.
El circuito consta de tres etapas:
1- El circuito de control de los motores Paso a Paso, compuertas X-Or (74LS86), Flip-Flop JK(74LS76) y un 555 con un rele para hacer el cambio de izquierda a derecha o viceversa.
2- El circuito para el multiplexado, como son 6 motores y controlados individualmente entonces se utilizan Flip-Flop D de 8 entradas (74LS373 o 74LS374, o tambien pueden utilizarse flip-flop D de 4 entradas 74LS173 o 74LS174) y utilizando sus enables podemos habilitar los motores que nosotros queramos.
3- Finalmente el circuito de Potencia, en este caso para evitar utilizar los transistores de potencia y como es una demostracion pequeña se han utilizado ULN2803 que son 8 compuertas Not tipo darlington o como quien dice los transistores de potencia encapsulados Aclaro que si se necesita mas potencia pues solo se van agragando entradas y salidas en paralelo de los ULN2803 y asi vamos obteniendo mas potencia.
Este es el codigo de programa
Este es el codigo de la clase para enviar los pulsos por medio del puerto paralelo
Cualquier duda haganla saber que si esta dentro de mi capacidad la voy a resolver con el mayor de los gustos ademas dejo la imagen del brazo que logre controlar por medio de la pc y el circuito.
Consiste en un circuito digital de control (
El circuito consta de tres etapas:
1- El circuito de control de los motores Paso a Paso, compuertas X-Or (74LS86), Flip-Flop JK(74LS76) y un 555 con un rele para hacer el cambio de izquierda a derecha o viceversa.
2- El circuito para el multiplexado, como son 6 motores y controlados individualmente entonces se utilizan Flip-Flop D de 8 entradas (74LS373 o 74LS374, o tambien pueden utilizarse flip-flop D de 4 entradas 74LS173 o 74LS174) y utilizando sus enables podemos habilitar los motores que nosotros queramos.
3- Finalmente el circuito de Potencia, en este caso para evitar utilizar los transistores de potencia y como es una demostracion pequeña se han utilizado ULN2803 que son 8 compuertas Not tipo darlington o como quien dice los transistores de potencia encapsulados Aclaro que si se necesita mas potencia pues solo se van agragando entradas y salidas en paralelo de los ULN2803 y asi vamos obteniendo mas potencia.
Este es el codigo de programa
Código:
Imports Brazo.Libreria
Public Class Form1
Dim p9 As Class1
Dim b1, b2, b3, b4, b5, b6 As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Timer2.Enabled = False
Dim p1 As Class1
p1 = New Class1
p1.Puerto = &H378
p1.Forma = 1
p1.Pin = 1
p1.EnviarPulso()
b1 = True
b2 = False : b3 = False : b4 = False : b5 = False : b6 = False
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Timer2.Enabled = False
Dim p2 As Class1
p2 = New Class1
p2.Puerto = &H378
p2.Forma = 1
p2.Pin = 2
p2.EnviarPulso()
b1 = False
b2 = True : b3 = False : b4 = False : b5 = False : b6 = False
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Timer2.Enabled = False
Dim p3 As Class1
p3 = New Class1
p3.Puerto = &H378
p3.Forma = 1
p3.Pin = 4
p3.EnviarPulso()
b1 = False
b2 = False : b3 = True : b4 = False : b5 = False : b6 = False
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Timer2.Enabled = False
Dim p4 As Class1
p4 = New Class1
p4.Puerto = &H378
p4.Forma = 1
p4.Pin = 8
p4.EnviarPulso()
b1 = False
b2 = False : b3 = False : b4 = True : b5 = False : b6 = False
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Me.Timer2.Enabled = False
Dim p5 As Class1
p5 = New Class1
p5.Puerto = &H378
p5.Forma = 1
p5.Pin = 16
p5.EnviarPulso()
b1 = False
b2 = False : b3 = False : b4 = False : b5 = True : b6 = False
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Me.Timer2.Enabled = False
Dim p6 As Class1
p6 = New Class1
p6.Puerto = &H378
p6.Forma = 1
p6.Pin = 0
p6.EnviarPulso()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If (Me.ProgressBar1.Value < 200) Then
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 10
Else
Me.Timer1.Enabled = False
End If
End Sub
Private Sub Button7_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Me.Timer2.Enabled = False
Dim p7 As Class1
p7 = New Class1
p7.Puerto = &H378
p7.Forma = 1
p7.Pin = 32
p7.EnviarPulso()
b1 = False
b2 = False : b3 = False : b4 = False : b5 = False : b6 = True
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Me.Timer2.Enabled = True
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If b1 = True Then
p9.Pin = 1 + 64
p9.EnviarPulso()
End If
If b2 = True Then
p9.Pin = 2 + 64
p9.EnviarPulso()
End If
If b3 = True Then
p9.Pin = 4 + 64
p9.EnviarPulso()
End If
If b4 = True Then
p9.Pin = 8 + 64
p9.EnviarPulso()
End If
If b5 = True Then
p9.Pin = 16 + 64
p9.EnviarPulso()
End If
If b6 = True Then
p9.Pin = 32 + 64
p9.EnviarPulso()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim p5 As Class1
p5 = New Class1
p5.Puerto = &H378
p5.Forma = 1
p5.Pin = 0
p5.EnviarPulso()
p9 = New Class1
p9.Puerto = &H378
End Sub
End Class
Código:
Namespace Libreria
Public Class Class1
Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Cpuerto As Integer
Private Cpin As Byte
Private Cforma As Integer
Public Property Puerto()
Get
Return Cpuerto
End Get
Set(ByVal value)
Cpuerto = value
End Set
End Property
Public Property Pin()
Get
Return Cpin
End Get
Set(ByVal value)
Cpin = value
End Set
End Property
Public Property Forma()
Get
Return Cforma
End Get
Set(ByVal value)
Cforma = value
End Set
End Property
Sub EnviarPulso()
If Cforma = 1 Then
If Cpuerto = &H378 Then
If Cpin = 0 Or Cpin = 1 Or Cpin = 2 Or Cpin = 4 Or Cpin = 8 Or Cpin = 16 Or Cpin = 32 Or Cpin = 64 Or Cpin = 128 Then
PortOut(Cpuerto, Cpin)
End If
Else
If Cpin = 0 Or Cpin = 1 Or Cpin = 2 Or Cpin = 4 Or Cpin = 8 Or Cpin = 16 Or Cpin = 32 Or Cpin = 64 Or Cpin = 128 Then
PortOut(Cpuerto, Cpin)
End If
End If
Else
If Cpuerto = &H378 Then
PortOut(Cpuerto, Cpin)
End If
End If
End Sub
End Class
End Namespace
Cualquier duda haganla saber que si esta dentro de mi capacidad la voy a resolver con el mayor de los gustos ademas dejo la imagen del brazo que logre controlar por medio de la pc y el circuito.