- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: SCHLEIFE 3 MAL WIEDERHOLEN???aber wie???--unten gucken!!--

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.03.2004
    Beiträge
    201

    SCHLEIFE 3 MAL WIEDERHOLEN???aber wie???--unten gucken!!--

    Anzeige

    Praxistest und DIY Projekte
    ich wollte das hier :

    Code:
    'Schrittmotor-Interface für die C-Control
    '-----Unipolare-Ansteuerung------
    '------Für AEG SO26/48------------
    'Treiber IC: L298N
    '           an jedem Output 1 Diode (Bo580)
    'Phasenbelegung am IC:
    'Out1 -->-Phase 3
    'Out2 -->-Phase 4
    'Out3 -->-Phase 1
    'Out4 -->-Phase 2
    
    
    'Definition der Schrittmotor-Ansteuerung des Fahrwerkes
    
    Define MotA1          Port[2]      'Motor A - Phase 1
    Define MotA2          Port[4]      'Motor A - Phase 2
    Define MotA3          Port[1]      'Motor A - Phase 3
    Define MotA4          Port[3]      'Motor A - Phase 4
    Define MotB1          Port[5]      'Motor A - Phase 1
    Define MotB2          Port[6]      'Motor A - Phase 2
    Define MotB3          Port[7]      'Motor A - Phase 3
    Define MotB4          Port[8]      'Motor A - Phase 4
    
    'Deffinition der Variablen für die Schrittmotor-Ansteuerung
    
    Define VarMF            1          'Motor Frequenze
    
    #Main              'Hauptprogramm
    
    Schleife1
    Goto Main
    
    
    
    
    
    
    #Schleife1    'Motor A und B Vorwärts
    MotA1 = OFF
    MotA2 = ON
    MotA3 = OFF
    MotA4 = OFF
    MotB1 = OFF
    MotB2 = ON
    MotB3 = OFF
    MotB4 = OFF
    Pause VarMF
    MotA1 = ON
    MotA2 = OFF
    MotA3 = OFF
    MotA4 = OFF
    MotB1 = ON
    MotB2 = OFF
    MotB3 = OFF
    MotB4 = OFF
    Pause VarMF
    MotA1 = OFF
    MotA2 = OFF
    MotA3 = OFF
    MotA4 = ON
    MotB1 = OFF
    MotB2 = OFF
    MotB3 = OFF
    MotB4 = ON
    Pause VarMF
    MotA1 = OFF
    MotA2 = OFF
    MotA3 = ON
    MotA4 = OFF
    MotB1 = OFF
    MotB2 = OFF
    MotB3 = ON
    MotB4 = OFF
    Pause VarMF
    GoTo Schleife1
    
    #Schleife2                  'Schleife 1 Invertieren -- Rückwärts
    
    GoTo Schleife2
    
    #Schleife3                  'Motor A Vorwärts Motor B Rückwärts
    
    Goto Schleife3
    
    #Schleife4                  'Schleife 3 Invertieren -- Motor A Rückwärts Motor B Vorwäts
    
    Goto Schleife4
    
    #Schleife5                  'Motor A Vorwärts Motor B STOP
    
    Goto Schleife5
    
    #Schleife6                  'Schleife 5 Invertieren -- Motor B Vorwärts Motor A Stop
    
    Goto Schleife6
    
    #Schleife7                  'Motor A Rückwärts Motor B Stop
    
    Goto Schleife7
    
    #Schleife8                  'Schleife 7 Invertieren -- Motor B Rückwärts Motor A Stop
    
    Goto Schleife8
    als basis für eine Fahrregelung benutzen....

    so jetzt mein problem.. ich kenn mich kein bischen mit der c control aus... das was ihr da seht is alles was ich kann...
    ich wollte es so machen das ich das hier :
    Code:
    #Schleife1    'Motor A und B Vorwärts
    MotA1 = OFF
    MotA2 = ON
    MotA3 = OFF
    MotA4 = OFF
    MotB1 = OFF
    MotB2 = ON
    MotB3 = OFF
    MotB4 = OFF
    Pause VarMF
    MotA1 = ON
    MotA2 = OFF
    MotA3 = OFF
    MotA4 = OFF
    MotB1 = ON
    MotB2 = OFF
    MotB3 = OFF
    MotB4 = OFF
    Pause VarMF
    MotA1 = OFF
    MotA2 = OFF
    MotA3 = OFF
    MotA4 = ON
    MotB1 = OFF
    MotB2 = OFF
    MotB3 = OFF
    MotB4 = ON
    Pause VarMF
    MotA1 = OFF
    MotA2 = OFF
    MotA3 = ON
    MotA4 = OFF
    MotB1 = OFF
    MotB2 = OFF
    MotB3 = ON
    MotB4 = OFF
    Pause VarMF
    GoTo Schleife1
    in eine art von dem hier packe....
    Code:
    Table TabStepMode
      'Halbschritt-Modus (A-AB-B-BC-C-CD-D-AD)
      &B0001 &B0011 &B0010 &B0110 &B0100 &B1100 &B1000 &B1001
      'Vollschritt-Modus (A-A-B-B-C-C-D-D)
      '&B0001 &B0001 &B0010 &B0010 &B0100 &B0100 &B1000 &B1000
    TabEnd
    und dann abrufen kann. so spar ich ja speicherplatz..


    wie man dann sieht im prob wollt ich cih dann ab und zu eine schleife invertieren so das die motoren gegeneinander laufen können..

    d.h.

    jeder motor bekommt für jeweils 1 richtung 1 tabelle

    das ergebniss:

    4 tabellen
    2 befehle die den motor zum festhalten bringen.




    ich hab das im 2ten code von ner seite kopiert.. mit dem prog laufen meine motoren auch aber der eine hat weniger drehmoment.. wenn ich mein prog neh m (code1) haben beide einen sehr hohen Drehmoment und eine sehr flüssige übergangspahse von spule zur spule.. das ist beim code 2 nicht so da ruckelt der eine motor.....


    wie wandel ich das jetzt so um?

    und wie öffne ich so eine tabelle das der motor auch das macht was er soll...

    wichtig ist das ich motor a umgepolt habe so das er wie in der schleife die gleiche richtung fährt wie motor b! das ist also per software gelöst!

    bei dem 2ten code bringt selbst pahsen vertauschen niX! hab alle 16 steckmöglichkeiten ausprobiert...

    also so wie der 1ste code ist soller nachher sehr kurz sein damit ich speicherplatz spare..

    wie krig ich das hin?


    wäre super von euch wenn ihr mir bischen helft!
    wenn ihr n beispiel habt wie ich sowas umsetze und definiere und so dann stellt das bitte hier rein....

    ei prog mit dem ich zeilen invertieren kann.. gibt es sowas oder muss ich das alles tippen?



    vielen vielen dank

  2. #2
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Hallo hoer173,

    ich mich mich ja wirklich ungerne in Deine Threads ein, aber es wäre schon schön wenn Du diese, wie schon mal gesagt, etwas bündelst und nicht für jede neue Fragestellung zum ähnlichen Thema einen neuen Thread öffnest. Man hat das Gefühl das sich die letzten 100 Threads von Dir alle um deine Schrittmotorexperimente handeln.
    Bislang gehts du einfach viel zu viel nach der Methode ausprobieren und fragen vor. Wichtig ist aber auch das du wirklich einen Lerneffekt erzielst, dann könntest du vieles selber lösen. Ein bisschen muß man halt auch selbst suchen, lesen und lernen um weiter zu kommen.
    Ich hoffe ich hab dir damit nicht auf den Schlipps getreten. Aber es nützt dir wirklich nix wenn du nach jedem Lötvorgang eine neue Frage stellst - wie du sicher gemerkt hast bekommst du dann auch nicht mehr so viele Antworten von anderen Useren.
    Also einfach ähnliche Threads zusammenfassen und auch mal selbst etwas recherchieren. In dem Forum haben wir soviele Infos über Schrittmotoren das nun wirklich kaum noch eine Fragen offen bleibt.

    Gruß Frank

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.03.2004
    Beiträge
    201
    hab gestern den nachmittag damit verbracht zu googlen und hier zu suchen...

    ich seh immer nur fertige progs aber weis nich wie ich das in diese tabelle umwandel...............ansteuern wäre ja wohl Goto...

    aber wie invertiere ich eine komplette zeile oder ein ganzen Abschnitt einer Schleife.. und ist das überhaupt möglich?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    37
    Beiträge
    578

    wichtig ist das ich motor a umgepolt habe so das er wie in der schleife die gleiche richtung fährt wie motor b! das ist also per software gelöst!
    Ist genau falsch!
    Wenn du es mit dem Programm gemacht hast, ist es Software.
    Das, was du gemacht hast, ist Hardware.
    http://www.roboterbastler.de
    endlich wieder online

  5. #5
    Gast
    Auf Wolgang Backs Seite findest Du ein Programm. Link müsste hier auf der Seite unten irgendwo stehen https://www.roboternetz.de/schrittmotoren.html

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.03.2004
    Beiträge
    201
    ...soo alle befehle funktionieren wunderbar..ist ja noch in der testphase alles.

    wie kann ich jetzt den befehel VORWÄRTS z.b. 3 mal wiederholen?
    hab das gelsen mit der for next schleife.. probiert.. aber ghet net..
    was ist falsch?bzw wie muss ich das angehen?



    Code:
    'Schrittmotor-Interface für die C-Control
    '-----Unipolare-Ansteuerung------
    '------Für AEG SO26/48------------
    
    'Definition der Schrittmotor-Ansteuerung des Fahrwerkes
    Define Motorport    Byteport [1] 'Motor A und B
    
    'Phasen und Portbelegung der Motoren A und B
    Define MotA1          Port[1]      'Motor A - Phase 1
    Define MotA2          Port[2]      'Motor A - Phase 2
    Define MotA3          Port[3]      'Motor A - Phase 3
    Define MotA4          Port[4]      'Motor A - Phase 4
    Define MotB1          Port[5]      'Motor B - Phase 1
    Define MotB2          Port[6]      'Motor B - Phase 2
    Define MotB3          Port[7]      'Motor B - Phase 3
    Define MotB4          Port[8]      'Motor B - Phase 4
    
    'Definition der Variablen für die Schrittmotor-Ansteuerung
    
    Define VarMF            2          'Motor Frequenze
    define schritt       word[1]
    define SolPos        word[2]
    define IstPos        word[3]
    
    
    #Main
    Bewegungen
    Goto Main
    
    
    
    #Hauptprogramm
    
    Return
    
    #Bewegungen              'Bewegungen der Motoren
    
    VORWÄRTS
    'RUECKWÄRTS
    'VORWAERTSRECHTS
    'VORWAERTSLINKS
    'RUECKWÄRTSRECHTS
    'RUECKWÄRTSLINKS
    'TURNRECHTS
    'TURNLINKS
    Goto Main
    
    
    
    
    '-----------------------SCHRITTMOTOR FUNKTIONEN-------------------------------------
    #VORWÄRTS
    schritt = schritt - 1
    Looktab SchrittVor , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #RUECKWÄRTS
    schritt = schritt + 1
    Looktab SchrittVor , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #VORWAERTSRECHTS
    schritt = schritt - 1
    Looktab SchrittRECHTS , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #RUECKWÄRTSRECHTS
    schritt = schritt + 1
    Looktab SchrittRECHTS , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #VORWAERTSLINKS
    schritt = schritt + 1
    Looktab SchrittLINKS , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #RUECKWÄRTSLINKS
    schritt = schritt - 1
    Looktab SchrittRECHTS , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #TURNRECHTS
    schritt = schritt - 1
    Looktab SchrittTURNR , schritt AND 3 , motorport
    pause VarMF
    goto Main
    
    #TURNLINKS
    schritt = schritt + 1
    Looktab SchrittTURNR , schritt AND 3 , motorport
    pause VarMF
    goto Main
    '----------------------------------------------------------------------------
    
    '----------------------------------------------------------------------------
                           'Schrittmotor-Tabelle für den Vollschritt
    
    Table SchrittVOR        'Motor A und Motor B Vorwärts
    68 136 17 34
    Tabend
    
    Table SchrittRECHTS     'Motor A Vorwärts Motor B Stop
    1 2 4 8                 'Stopbefehl für Motor B fehlt d.h. bitmuster ändern
    Tabend
    
    Table SchrittLINKS      'Motor A Stop Motor B Vorwärts
    32 16 128 64            'Stopbefehl für Motor A fehlt d.h. bitmuster ändern
    Tabend
    
    Table SchrittTURNR      'Motor A Vorwärts Motor B Rückwärts
    66 129 24 36
    Tabend
    '----------------------------------------------------------------------------

  7. #7
    Gast
    wie kann ich jetzt den befehel VORWÄRTS z.b. 3 mal wiederholen?
    hab das gelsen mit der for next schleife.. probiert.. aber ghet net..

    wie hast du die "For - Next" Schleife den in deinem Programm aufgebaut?

    "for next go vorwärts vorwärts vorwärts" ?

    Guck doch einfach mal wieder in die C-C Basic Hilfe rein.
    Da steht die korrekte Syntax für die For Next Schleife drin und du musst nur noch statt den 3 Pünktchen deinen Befehl für "Vorwärts" eintragen.

    Wenn du deine Befehle für "Vorwärts" nicht komplett in die Schleife reinschreiben willst, sondern "Vorwärts" als Routine aufrufen willst, kannst du allerdings dein "goto Main" knicken. Damit springst du immer an den Anfang zurück und nicht dahin wo du her gekommen bist.

    Wenn du schon mal in der C-Basic Hilfe bist, würde ich auch glaich mal "Goto", "Gosub" und "return" nachschlagen.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.03.2004
    Beiträge
    201
    ja jetzt macht er die schleifen.. aber wenn ich die mit step -1 umdreh ist die umgedrehte schleife viel länger... und hab jetz noch rumprobiert aber krig das nich hin das der genau die gleiche drehngszahl macht wie der andere

    motor a macht 1 umdrehung genauso wie motor b wenn ich vorwärts mach

    wenn ich rückwärts mach drehen beide motoren 5mal...

    kann man das irgendwie gleichstellen?
    weil wenn das klappt hrrrr dann kann mein roboter schon bald rumheizen..

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    ja jetzt macht er die schleifen.. aber wenn ich die mit step -1 umdreh ist die umgedrehte schleife viel länger...

    klar, "For i = 0 to 3 Step -1" dürfte ziemlich lange dauern

    Ist ungefähr so sinnvoll wie wenn du von Hamburg nach München willst und immer Richtung Norden fährst. Vorausgesetzt du säufst unterwegs nicht ab, kommst du irgendwan an, aber es dauuuert

    Bei step -1 werden nicht die Befehle in der Schleife rückwärts abgearbeitet, sondern der Schleifenzähler wird runter statt rauf gezählt.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.03.2004
    Beiträge
    201
    ja hab ich auch grad bemekrt aber ich hab das prob jetzt gelöst hat mich 75 bytes gekostet aber es funktioniert.. jetz muss ich nurnoch das so hinkriegen das wenn daten per rxd reinkommen die darauffolgenden befehle in einen puffer kommen wo von dem aus weitergeleitet wird wenn der/die motoren feritg sind mit dem befehel der davor reinkam.

    d.h. ein befehel nach dem anderen so das der roboter nicht doof im raum steht..

    das würde doch aber nur auf byteport[1] so sein oder wäre das auch so wenn auf byteport[2] noch andere sachen liegen geraten die dann auch in verzug wenn ich daten per rs323 an byteport 2 schicke das trotzdem byteport 1 weitermacht?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiTime Speicher und Akkus