- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 26

Thema: Anfängerprojekt Schrittmotor steuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Danke für deine Ausführung - macht Sinn!

    Also mit diesem kleinen Code läuft der Motor schon mal...

    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    'Programmkonfiguration
    
    Config Portb.4 = Output
    Config Portc.1 = Output
    Config Portb.1 = Output
    
    Config Pind.4 = Input
    
    Puls Alias Portb.1                                          'Pul
    Puls = 0
    
    Richtung Alias Portc.1                                      'Dir
    Richtung = 1
    
    Freigabe Alias Portb.4                                      'Ena
    Freigabe = 1
    
    S1 Alias Pind.4                                             'Taster
    S1 = 1
    
    'Hauptprogramm
    
    Do
    
       If S1 = 0 Then
    
          Waitms 1
          Puls = 0
          Waitms 1
          Puls = 1
    
       Else
    
          Puls = 0
    
       End If
    
    Loop
    
    End
    Den Schrittmotor habe ich parallel an den Treiber angeschlossen. Ansonsten wie im Code zu sehen:

    PinB.4 = Freigabe (obwohl der Motor auch ohne diesen Anschluss läuft - warum?)
    PinC.1 = Richtung (das klappt mit 1 = Linkslauf / 0 = Rechtslauf)
    PinB.1 = Puls (die Frequenz die hier einfach über ein waitms erzeugt wird - hier 2ms => 500Hz => 0.5kHz richtig?)
    PinD.4 = Taster S1 (die Frequenz soll erst erzeugt werden wenn Taster gedrückt wird)

    Den Treiber habe ich so eingestellt:
    Current RMS = 3A
    Puls / Schritte = 400
    400 Schritte finde ich recht wenig aber bei den anderen Einstellungen läuft er nur sehr viel langsamer - habt ihr irgendwelche Tipps dazu?

    ...und macht das denn überhaupt Sinn die Frequenz so zu erzeugen oder sollte man da besser eine PWM nutzen?

    Der nächste Schritt wäre die Geschwindigkeit über ein Poti zu steuern - aber da hört es jetzt erstmal völlig auf bei mir...

    Hab ja frei heute - ich probier mal rum!

    Danke für deine Unterstützung i_make_it

    - - - Aktualisiert - - -

    ...ok, hab mal ein wenig mit dem waitms gespielt - den 2. Wert durch 10 geteilt. Bei 400 Schritten läuft der Motor sehr viel schneller...



    Wenn ich die Schrittweite am Treiber von 400 auf z.B. 6400 umstelle läuft der Motor entsprechend langsamer. Klar, er muss ja mehr Schritte bei gleicher Frequenz machen. Ok, dachte ich Frequenz nochmals erhöhen - aber bringt nix - Geschwindigkeit bleibt gleich. Wenn man es mit der Frequenz übertreibt z.B. 0,2ms (5kHz) dann steht der Motor und Summt nur laut...



    ...irgendwelche Ideen wie ich es besser machen könnte?

    Greez,
    p@

    - - - Aktualisiert - - -

    ...hier mal der Code mit Schalter für Richtungswechsel...

    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    'Programmkonfiguration
    
    Config Portb.4 = Output
    Config Portc.1 = Output
    Config Portb.1 = Output
    
    Config Pind.4 = Input
    Config Pind.5 = Input
    
    
    Puls Alias Portb.1                                          'Pul
    Puls = 0
    
    Richtung Alias Portc.1                                      'Dir
    Richtung = 1
    
    Freigabe Alias Portb.4                                      'Ena
    Freigabe = 1
    
    T1 Alias Pind.4                                             'Taster zum Frequenzerzeugen
    T1 = 1
    
    S1 Alias Pind.5                                             'Schalter zum Richtungswechsel
    S1 = 1
    
    'Hauptprogramm
    
    Do
    
       If T1 = 0 Then
    
          Waitms 1
          Puls = 0
          Waitms 0.1
          Puls = 1
    
       Else
    
          Puls = 0
    
       End If
    
       If S1 = 1 Then
       Richtung = 1
    
       Else
    
       Richtung = 0
    
       End If
    
    Loop
    
    End

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    400 Pulse pro Umdrehung ist Halbschritt Betrieb.
    Der Motor hat ja eine feste Schrittzahl pro Umdrehung im Vollschritt.
    Üblicherweise 200 Schritte mit einem Schrittwinkel von 1,8° (ich habe jetzt nicht nach Deinem konkreten Stepper gesehen sondern nehme den Wert der am häufigsten vorkommt)

    Im Handbuch:
    http://www.leadshine.com/uploadfile/down/m542v2m.pdf
    Auf Seite 5-7 findet sich der Anschluß von 4 -Draht , 6-Draht und 8-Draht Steppern.
    Auf Seite 8 die Mikroschritt Einstellung basierend auf 1,8° Motoren.
    Bei Halbschritt, wie Du es eingestellt hast, läuft der Motor am schnellsten.
    Auf Seite 10 ist die Verdrahtung.
    Nach dem Timing Diagramm auf Seite 11 ist ENA High aktive. Der Motor sollte also nicht laufen wenn der Controller Pin auf Low geht.
    Da Du mit DIR arbeitest ist die linke Hälfte des Diagrams für Dich zutreffend.
    Dort siehst Du auch die von mir genannte Notwendigkeit des gemeinsamen GND.
    Ein low Signal wird von 0V bis 0,5V erkannt. Ein High Signal ab 3,5V aufwärts.
    Auch das Timing siehst Du in dem Diagram.
    Also DIR auf High, PUL auf High und ENA auf Low.
    Wenn ENA auf High geht mindestens 5µs warten bis DIR auf Low gehen darf.
    und wenn DIR den Pegel wechselt, mindestens 5µs warten bis Bei PUL ein Rechtecksignal anliegen darf.
    Die PWM Frequenz darf von 0Hz bis maximal 300kHz gehen.
    Die Austastung also auf 50% (genauso lang High wie Low)
    und zwichen 2 Pegelwechseln müssen minimal 1,6667µs vergehen.
    Das müssten die Grenzdaten sein.
    Die alternative Ansteuerung die der Treiber kann wäre anstelle von PUL(s) und DIR(ection) mit Clockwise (CW) und Counter Clockwise (CCW) zu arbeiten.
    Geändert von i_make_it (07.10.2016 um 14:08 Uhr)

  3. #3
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Danke dir für die Infos! 👍 Klasse!

    Jetzt muss ich nur noch mit meinen begrenzten Kenntnissen im proggen die passende Pwm erzeugen und aufpassen das ich beim umschalten der Richtung die nötigen Wartezeiten einhalte um den Motor nicht zu zerstören.... 😐

    Ich fange morgen an die Pwm in den Griff zu bekommen. Danke nochmal! 👍

    Gruß,
    p@

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Den Motor wirst du nicht zerstören, eher die Ansteuerung (Leistungshalbleiter) durch Kurzschluss.
    Und der Eingang ist kein PWM Eingang sondern ein Puls Eingang. Bei PWM stellst du das Verhältnis zwischen Einschalt- und Ausschaltzeit ein. Das hat mit der Pulsfrequenz nichts zu tun. Am leichtesten ist es wenn du dir Diagramme anschaust.

    MfG Hannes

  5. #5
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Hallo und Danke!

    Hat mich etwas weiter gebracht eure Infos!
    Hab mir alles (Treiber Spezi und Pwm Artikel in RN- Wissen) durchgelesen und gehe nochmal einen Schritt zurück.

    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    'Programmkonfiguration
    
    'Port/Pin Konfiguration
    
    Config Portb.1 = Output 
    Portb.1 Alias Pwm				    
    
    'PWM Konfiguration
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = clear Up , Prescale = 1
    '(16000000/1) / (256*2) = 31250Hz = 31,25kHz 
    'Jetzt soll also ein Puls (Rechtecksignal) von 31kHz am Portb.1 ankommen 
    
    'Hauptprogramm
    
    Do
    
    Pwm = 128 	'Compare1a = 128 also Tastverhältniss 50% 
    
    Loop
    
    End
    Alles richtig soweit für die Pwm eingegeben?
    Wenn ja dann sollte jetzt ein Tastverhältniss von 50% eingestellt sein und damit ein gleichmäßiges Rechtecksignal.
    Welcher Wert ist den nun aber für die Geschwindigkeit zuständig wenn das Tastverhältniss immer 50% sein soll?
    Dachte das wäre Compare1a = 0 - 255?
    Danke schon mal für die Infos!

    p@
    Geändert von p@ty (10.10.2016 um 11:46 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Die Frequenz des Rechtecksignals.
    Wenn PWM vom Controller eine Festfrequenz nutzt kann man es nicht nutzen.
    Dann muß man einen Rechteck-Signalgenerator programmierne der bis maximal 300kHz gehen darf.

  7. #7
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    ....das ist ja gar-nicht-mal so einfach fürn ollen Mechaniker...
    Dachte ich komm´ der Sache etwas näher.
    Also keine Hardware PWM sondern einen Softwaresignalgenerator proggen?
    ...jetzt fange ich wieder an mit waitms? Könnt ihr mir bitte noch etwas auf die Sprünge helfen wie sowas in Bascom ausehen könnte?
    Bin jetzt etwas verwirrt...

    Oder muss man irgendwie den Prescale mit einer Variablen verknüpfen...

Ähnliche Themen

  1. Schrittmotor zeitpräzise steuern
    Von Geistesblitz im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 12.07.2011, 23:07
  2. schrittmotor steuern
    Von watermelon im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 17.11.2010, 21:23
  3. Schrittmotor über Schrittmotor steuern?
    Von Tarribo im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 06.06.2010, 23:40
  4. Schrittmotor mit LPT steuern
    Von timo1105 im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 11.11.2006, 12:40
  5. Schrittmotor mit PC steuern
    Von SK112 im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 08.01.2005, 09:23

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test