- Labornetzteil AliExpress         
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
    Hey i_make_it,

    danke für dein geprogge - werde ich heute Nachmittag ausprobieren. Morgen hab ich frei da kann
    ich schön den ganzen Tag zum testen investieren!

    Ein Osziloskop habe ich leider nicht - die Led muss reichen.
    Danke für die Tips und deine Unterstützung!

    Viele Grüße,
    p@

  2. #2
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Noch ne kleine Frage...

    Müssen der Treiber und der Atmega eigentlich gleiches Potenzial / Spannungsversorgung haben?

    Hab alles zusammen gerödelt aber der Motor Summt nur leise vor ich hin...

    Hab Enable, Direction, und Puls in Bascom erzeugt.
    Enable steht auf 0 aber ob ich 0 oder 1 setzte interessiert den Treiber nicht...Motor Summt weiter.

    Direction steht auf 0 = Linkslauf / 1 = Rechtslauf

    S1 ist ein Taster um den Puls ein / aus zu schalten.

    Kontrol- Led für Puls Blinkt bei Tasterdruck lustig alle 50ms. Liegt hier der Fehler?

    Zum Testen mal diesen ganz einfachen...
    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 Pinc.0 = Input
    Config Pind.4 = Input
    
    
    Puls Alias Portb.1 'Pul
    Puls = 0
    
    Richtung Alias Portc.1 'Dir
    Richtung = 0
    
    Freigabe Alias Portb.4 'Ena
    Freigabe = 0
    
    S1 Alias Pind.4
    S1 = 1
    
    'Hauptprogramm
    
    Do
    
    If S1 = 0 Then
    
    Waitms 40
    Puls = 0
    Waitms 10
    Puls = 1
    
    Else
    
    Puls = 0
    
    End If
    
    Loop
    
    End
    Vielen Dank für eure Unterstützung!
    p@
    Geändert von p@ty (06.10.2016 um 20:37 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Eine gemeinsame Masse braucht es schon.
    Wenn der GND vom Atmega z.B. 2V niedriger liegt wie der GND vom Motortreiber, wird dieser bei 5V niemals ein High Signal bekommen, da das ja mehr wie 3,7V braucht.

  4. #4
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Ok, das war mir jetzt etwas zu schnell...

    Habe ein Netzteil 48V für den Treiber und ein Netzteil 5V für den Atmega...

    GND vom Atmega mit GND vom Treibernetzteil verbinden?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Zitat Zitat von p@ty Beitrag anzeigen
    GND vom Atmega mit GND vom Treibernetzteil verbinden?
    Ja, genau das.

    Alle Masse bezogenen Signale müssen ein gemeinsames Bezugspotential (GND) haben sonst wird das nichts.

    Nur differentielle Signale sind bezugslos. und nur durch die Spannungsdifferenz zwichen der positiven und der negativen Leitung definiert.
    Wobei es egal ist ob so ein Signal dann symetrisch z.B. +15V - -15V ist oder +30V - 0V oder 0V - -30V ist, in allen Fällen ist die Differenz 30V.
    Ein Massebezogenes Signal wie ein 5V Logikpegel, hat bei unterschiedlichen Bezugspotentialen an verschiedenen Schaltungsteilen halt nur da 5V wo das Bezugspotential genau 5V negativer als das Signal ist.
    Stell es Dir vor wie ein Fluß der an verschiedenen Stellen unterschiedlich Tief ist (Ground). Der Wasserspiegel ist zwar von oben gesehen überall gleich, aber spätestens da wo ein Schiff auf Grund läuft, reicht die Wassertiefe (Signalpegel) nicht aus damit das Signal (Schiff) durch kommt.
    Das Bespiel ist nicht richtig zutreffend und etwas blöd, aber was anderes ist mir auf die Schnelle nicht eingefallen.

  6. #6
    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

  7. #7
    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 13:08 Uhr)

Ähnliche Themen

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

Stichworte

Berechtigungen

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

Labornetzteil AliExpress