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







Zitieren

Lesezeichen