- LiFePO4 Speicher Test         
Seite 6 von 9 ErsteErste ... 45678 ... LetzteLetzte
Ergebnis 51 bis 60 von 88

Thema: Delta Roboter

  1. #51
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    60
    Beiträge
    1.080
    Anzeige

    Powerstation Test
    ich
    ich bin
    ich bin schwer
    ich bin schwer beeindruckt

    bravo, radbruch
    Mein Hexapod im Detail auf www.vreal.de

  2. #52
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo mic,

    sehr schönes und interessantes Projekt. Mich würd noch interessieren, wie du den Saugnapf für die Kugeln ansteuerst.

    grüsse,
    Hannes

  3. #53
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Es ist ein passiver Saugnapf (ein Werbeschlüsselanhänger von einem Lufthandlingfritzen) Deshalb auch die Wartezeit beim Bringen: Der Ball fällt einfach von alleine ab ;)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #54
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Danke für die Info, es sah mir danach aus, war aber nicht sicher, ob das tatsächlich so geht.

    grüsse, Hannes

  5. #55
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2009
    Beiträge
    29
    So ein Mist.
    Meinem Programmierwahn wurde ein jäher Einhalt geboten:
    DEMO/BETA only supports 4096 bytes of code

    Wo bekomm ich günstig eine BASCOM-Vollversion her? Möglichst natürlich mit Studenten-Rabatt....

    Grüße,
    Benjamin

  6. #56
    Neuer Benutzer Öfters hier
    Registriert seit
    19.11.2008
    Alter
    47
    Beiträge
    26
    Zitat Zitat von Bensch
    So ein Mist.
    Meinem Programmierwahn wurde ein jäher Einhalt geboten:
    DEMO/BETA only supports 4096 bytes of code

    Wo bekomm ich günstig eine BASCOM-Vollversion her? Möglichst natürlich mit Studenten-Rabatt....

    Grüße,
    Benjamin
    Elektor hätte momentan das Angebot noch: 69 statt 89 €uro

    http://www.elektor.de/products/offer...r.759187.lynkx

    Gruß Bajuvar
    Bitte habt Geduld mit mir, mit zunehmendem Alter lernt es sich schwerer

  7. #57
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2009
    Beiträge
    29
    Zitat Zitat von Bajuvar
    Zitat Zitat von Bensch
    So ein Mist.
    Meinem Programmierwahn wurde ein jäher Einhalt geboten:
    DEMO/BETA only supports 4096 bytes of code

    Wo bekomm ich günstig eine BASCOM-Vollversion her? Möglichst natürlich mit Studenten-Rabatt....

    Grüße,
    Benjamin
    Elektor hätte momentan das Angebot noch: 69 statt 89 €uro

    http://www.elektor.de/products/offer...r.759187.lynkx

    Gruß Bajuvar
    Ist bestellt, vielen Dank für den Tipp!

    Auch wenn ich mit der Demo noch nicht kompilieren kann, mach ich trotzdem am Code weiter. Ich bin jetzt soweit, dass die Endpunkte der Arme im Raum zu einer beliebigen Tool-Position T berechnet werden und anschließend geprüft wird, ob der Bot die Position erreichen kann. Wenn ja, wird ein Bit "Erreichbar" gesetzt.

    Code:
    '(
    ################################################################################
    Name : Delta-Ansteuerung.bas
    Zweck : Stellt Eine Rückwärtskinematik Für Einen 3 -armigen
                                   "Delta" -roboter Zur Verfügung.
    Mikroprozessor : : Atmega32 Auf Rn -control V1.4
    
     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 Update_ae()
    Declare Sub Change_t()
    Declare Sub Nix()
    
    
    $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 = = = ="
    
    ' 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 des Armanfangs (aa) vom Befestigungspunkt B auf der Befestigungsebene (parallel zur xy-Ebene)
    Dim Abst_b_aa_xy As Long
                               Abst_b_aa_xy = 70000000          '=7cm
    
    
    ' Abstand des Armanfangs (aa) von der Befestigungsebene
    Dim Abst_b_aa_z As Long
                               Abst_b_aa_z = 30000000           '=3cm
    
    
    ' Abstand des Armendes (ae) vom Tool auf der xy-Parallel-Ebene
    Dim Abst_t_ae_xy As Long
                               Abst_t_ae_xy = 40000000          '=4cm
    
    ' Abstand des Armendes (ae) von der xy-Parallel-Ebene
    Dim Abst_t_ae_z As Long
                               Abst_t_ae_z = 20000000           '=2cm
    
    '##### Berechne nun Konstruktionsabhängige 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
    
    'Maximale und minimale "Länge" des Arms (Abstand von Armanfang zu Armende)
    'jeweils mit sicherheitsabsatnd von 10% bzw 30%, um instabile Positionen zu vermeiden.
    Dim Abst_min As Long
    Dim Abst_max As Long
    Hilf2 = Oa - Ua
    Hilf2 = Abs(hilf2)
    Abst_min = Hilf2 * 1.3
    Hilf2 = Oa + Ua
    Abst_max = Hilf2 * 0.9
    
    
    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 "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 ; " )"
    
    'Deklariere restliche Variablen:
    'Tool-Punkt T (Dieser Punkt soll angefahren werden)
    Dim T_x As Long
    Dim T_y As Long
    Dim T_z As Long
    'Kontroll-Bits:
    Dim Erreichbar As Bit                                       'Ist 1, wenn der derzeitig geladene Toolpunkt erreichbar ist.
    Erreichbar = 0
    'Arm-Endpunkte
    'Arm1
    Dim A1e_x As Long
    Dim A1e_y As Long
    Dim A1e_z As Long
    'Arm2
    Dim A2e_x As Long
    Dim A2e_y As Long
    Dim A2e_z As Long
    'Arm3
    Dim A3e_x As Long
    Dim A3e_y As Long
    Dim A3e_z As Long
    'Abstände der Armenden:
    Dim Abst(3) As Long
    'Hilfsvariablen für Zwischenergebnisse
    Dim Hilf4 As Single
    Dim Hilf5 As Long
    Dim Hilf6 As Long
    Dim Hilf7 As Single
    Dim I As Integer
    
    Print "Tastenbelegung:"
    Print "1 = Armendpunkte berechnen + Pruefen, ob Punkt ereichbar"
    Print "2 = Tool-z-Koordinate testweise aendern"
    
    '
    '## ## ## ## ## ## ## ## ## Hauptprogramm-Schleife ## ## ## ## ## ## ## ## ##
    '
    Do
       Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                Call Update_ae
             Case 2
                Call Change_t
             Case 3
                Call Nix
             Case 4
                Call Nix
             Case 5
                Call Nix
          End Select
       End If
       Waitms 20
    Loop
    
    End
    
    
    Sub Update_ae()
    ' Berechnen der Arm-Endpunkte bei gegebenem Werkzeugpunkt W = ( W_x , W_y , W_z )
    ' und die Abstände der Arm-Enden "Abst1" bis "Abst3"
    ' Muss für jede Position natürlich neu vorgenommen werden!
    ' Arm1: (Der von oben gesehen hintere Arm, genau in y-Richtung)
    A1e_x = T_x
    A1e_y = T_y + Abst_t_ae_xy
    A1e_z = T_z + Abst_t_ae_z
    
    ' Arm2: (Der von oben gesehen linke Arm)
    Hilf4 = 0.866025403784435                                   '=Cos(30°)
    Hilf5 = Hilf4 * Abst_t_ae_xy
    A2e_x = T_x - Hilf5
    Hilf6 = Abst_t_ae_xy / 2
    A2e_y = T_y - Hilf6
    A2e_z = T_z + Abst_t_ae_z
    
    ' Arm3: (Der von oben gesehen rechte Arm)
    A3e_x = T_x + Hilf5
    A3e_y = T_y - Hilf6
    A3e_z = T_z + Abst_t_ae_z
    
    ' Debug-Ausgabe
    Print "Arm-Endpunkte:"
    Print "A1e = ( " ; A1e_x ; " , " ; A1e_y ; " , " ; A1e_z ; " )"
    Print "A2e = ( " ; A2e_x ; " , " ; A2e_y ; " , " ; A2e_z ; " )"
    Print "A3e = ( " ; A2e_x ; " , " ; A2e_y ; " , " ; A2e_z ; " )"
    
    ' Prüfen, ob der Punkt erreicht werden kann.
    Erreichbar = 0
    ' Arm1:
    Hilf2 = A1a_x - A1e_x
    Hilf1 = Hilf2 * Hilf2
    Hilf2 = A1a_y - A1e_y
    Hilf4 = Hilf2 * Hilf2
    Hilf2 = A1a_z - A1e_z
    Hilf7 = Hilf2 * Hilf2
    Hilf7 = Hilf7 + Hilf4
    Hilf7 = Hilf7 + Hilf1
    Abst(1) = Sqr(hilf7)
    ' Arm2:
    Hilf2 = A2a_x - A2e_x
    Hilf1 = Hilf2 * Hilf2
    Hilf2 = A2a_y - A2e_y
    Hilf4 = Hilf2 * Hilf2
    Hilf2 = A2a_z - A2e_z
    Hilf7 = Hilf2 * Hilf2
    Hilf7 = Hilf7 + Hilf4
    Hilf7 = Hilf7 + Hilf1
    Abst(2) = Sqr(hilf7)
    ' Arm3:
    Hilf2 = A3a_x - A3e_x
    Hilf1 = Hilf2 * Hilf2
    Hilf2 = A3a_y - A3e_y
    Hilf4 = Hilf2 * Hilf2
    Hilf2 = A3a_z - A3e_z
    Hilf7 = Hilf2 * Hilf2
    Hilf7 = Hilf7 + Hilf4
    Hilf7 = Hilf7 + Hilf1
    Abst(3) = Sqr(hilf7)
    
    Print "Abstaende der Armenden: Arm1: " ; Abst(1) ; " Arm2: " ; Abst(2) ; " Arm3: " ; Abst(3)
    
    Erreichbar = 0
    
    For I = 1 To 3                                              ' Teste Arme 1-3
       If Abst(i) < Abst_max And Abst(i) > Abst_min Then        ' Wenn der Abstand ok ist...
          Erreichbar = 1                                        ' Dann setze das erreichbar-bit
       Else                                                     ' Sonst
          Erreichbar = 0                                        ' Clear das Erreichbar-bit
          Exit For                                              ' Und verlasse sofort die Schleife
       End If
    Next I
    
    If Erreichbar = 1 Then
       Print "Punkt ist erreichbar!"
       Else
       Print "Punkt ist NICHT erreichbar! Fehler!"
    End If
    
    Waitms 500
    
    End Sub
    
    
    ' Ändert den Punkt T (zu Testzwecken) in z-Richtung, also nach oben/unten
    Sub Change_t()
       Select Case T_z
          Case 0
             T_z = -50000000
          Case -50000000
             T_z = -100000000
          Case -100000000
             T_z = -150000000
          Case -150000000
             T_z = -300000000
          Case -300000000
             T_z = 0
       End Select
    Print "T_z geändert auf " ; T_z
    
    Waitms 500
    
    End Sub
    
    Function Tastenabfrage() As Byte
    Local Ws As Word
    
       Tastenabfrage = 0
       Start Adc
       Ws = Getadc(7)
       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
    
    Sub Nix()
    End Sub
    Edit:
    Ich habe jetzt viele Deklarationen in Arrays gepackt, wodurch sich auch der rest des Codes deutlich verkürzt, weil ich vieles in "For I = 1 To 3" verpacken kann, wenn identische Berechnungen für alle 3 Arme gemacht werden.
    Morgen stell ich den neuen Code ein, is zur Zeit nicht sehr ansehlich

  8. #58
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    830
    unbedingt einstellen und die berechnung kommentieren, bin gerade am überlegen ob ich ein altes spielzeug wieder belebe und auch auf kipphebel umrüste.
    Bild hier  
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=9069

    mfg clemens
    Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris...

  9. #59
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2009
    Beiträge
    29
    wenn du auf kipphebel umrüstest, hast du auf jeden fall einen viel größeren Arbeitsraum. Ich halt dich auf dem laufenden, keine Sorge.

    Zur Zeit schreibe ich den Code nochmal komplett um. Ich mach wenig mit software, deshalb bin ich da nicht so bewandert, was strukturiertes Programmieren angeht. aber ich geb mit mühe

    Gruß,
    Ben

  10. #60
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    wozu willst du es benutzen?
    Problem bei Parallelkinematik ist, dass 1. die Regleung komplex ist, 2. der Arbeitsraum sehr klein ist, Vorteil ist hohe Steifigkeit, aber auch nur in einem kleinen bereich... macht also nur für sehr spezielle Anwendungen Sinn..
    meine projekte: robotik.dyyyh

Seite 6 von 9 ErsteErste ... 45678 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test