find ich super. wie hast du die Positionen geteacht? du hast doch gar keine Sensorik?!
Ich code Grad eine Ansteuerung, hier mein Stand der Dinge:
Leider fehlt noch alles, was kompliziert ist
Code:
'
' Alle Berechnungen gehen von Folgendem aus:
' Der Bot ist an einer Ebene befestigt, die parallel zur xy-Ebene liegt
' Der Arm 1 liegt in y-Richtung.
' Der Arm 2 liegt, von oben gesehen, 120° links gedreht (Negative y- und x-Richtung).
' Der Arm 3 liegt, von oben gesehen, 120° rechts gedreht (Negative y-, positive x-Richtung).
' Alle Werte für Längen, Abstände und Positionen werden in Nanometern (nm) angegeben!
'
Declare Function Tastenabfrage() As Byte
Declare Sub Eins()
Declare Sub Zwei()
Declare Sub Drei()
Declare Sub Vier()
Declare Sub Fuenf()
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
' Deklaration der Variablen, die die Proportionen des Roboters beschreiben
' Alle Angaben in nm und als "Long" (32bit genauigkeit)
' Zulässig sind Werte zwischen -2147483648 und +2147483647
Print
Print "= = = = Delta-Steuerung = = = ="
Print
Print "Lade Konstruktionsparameter..."
' Fixer Befestigungspunkt B im Raum
Dim B_x As Long
Dim B_y As Long
Dim B_z As Long
B_x = 0
B_y = 0
B_z = 0
' Länge des Servoseitigen Armteils ("Oberer Armteil" -> Oa)
Dim Oa As Long
Oa = 100000000 '=10cm
' Länge des Servofernen Armteils ("Unterer Armteil" -> Ua)
Dim Ua As Long
Ua = 200000000 '=20cm
' Abstand der Armservoachsen vom Befestigungspunkt B auf der xy-Ebene
Dim Abst_b_aa_xy As Long
Abst_b_aa_xy = 70000000 '=7cm
' Abstand der Armservoachsenvom von der xy-Ebene
Dim Abst_b_aa_z As Long
Abst_b_aa_z = 30000000 '=3cm
' Abstand der Armenden vom Tool auf der xy-Ebene
Dim Abst_t_ae_xy As Long
Abst_t_ae_xy = 40000000 '=4cm
' Abstand der Armenden von der xy-Ebene
Dim Abst_t_ae_z As Long
Abst_t_ae_z = 10000000 '=1cm
Print "Konstruktionsparameter geladen"
Print
Print "Montagepunkt = (" ; B_x ; "," ; B_y ; "," ; B_z ; ")"
Print "Armanfangs-Versatz:"
Print Abst_b_aa_xy ; "nm vom Montagepunkt in xy-Ebene"
Print "und " ; Abst_b_aa_z ; "nm in z-Richtung"
Print "Armende-Versatz:"
Print Abst_t_ae_xy ; "nm vom Toolpunkt in xy-Ebene"
Print "und " ; Abst_t_ae_z ; "nm in z-Richtung"
Print
Print "Berechne Konstruktionsabhaengige Fixwerte"
' Arm-Anfangspunkte:
' Arm1: (Der von oben gesehen hintere Arm, genau in y-Richtung)
Dim A1a_x As Long
Dim A1a_y As Long
Dim A1a_z As Long
A1a_x = B_x
A1a_y = B_y + Abst_b_aa_xy
A1a_z = B_z - Abst_b_aa_z
'Arm2: (Der von oben gesehen linke Arm)
Dim A2a_x As Long
Dim A2a_y As Long
Dim A2a_z As Long
Dim Hilf1 As Single 'Hilfsvariable für Zwischenergebnisse
Dim Hilf2 As Long
Dim Hilf3 As Long
Hilf1 = 0.866025403784435 '=Cos(30°)
Hilf2 = Hilf1 * Abst_b_aa_xy
A2a_x = B_x - Hilf2
Hilf3 = Abst_b_aa_xy / 2 '=Sin(30°)*Abst_b_aa_xy = Abst_b_aa_xy / 2
A2a_y = B_y - Hilf3
A2a_z = B_z - Abst_b_aa_z
'Arm3: (Der von oben gesehen rechte Arm)
Dim A3a_x As Long
Dim A3a_y As Long
Dim A3a_z As Long
A3a_x = B_x + Hilf2
A3a_y = B_y - Hilf3
A3a_z = B_z - Abst_b_aa_z
Print "Fixwert-Berechnung abgeschlossen."
Print "Arm1-Anfang = ( " ; A1a_x ; " , " ; A1a_y ; " , " ; A1a_z ; " )"
Print "Arm2-Anfang = ( " ; A2a_x ; " , " ; A2a_y ; " , " ; A2a_z ; " )"
Print "Arm3-Anfang = ( " ; A3a_x ; " , " ; A3a_y ; " , " ; A3a_z ; " )"
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Eins
Case 2
Call Zwei
Case 3
Call Drei
Case 4
Call Vier
Case 5
Call Fuenf
End Select
End If
Waitms 1000
Loop
End
Sub Eins()
Print "Sub 1"
End Sub
Sub Zwei()
Print "Sub 2"
End Sub
Sub Drei()
Print "Sub 3"
End Sub
Sub Vier()
Print "Sub 4"
End Sub
Sub Fuenf()
Print "Sub 5"
End Sub
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Case 330 To 380
Tastenabfrage = 2
Case 260 To 305
Tastenabfrage = 3
Case 180 To 220
Tastenabfrage = 4
Case 90 To 130
Tastenabfrage = 5
End Select
End If
End Function
Lesezeichen