- 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

    Anfängerprojekt Schrittmotor steuern

    Hallo zusammen!

    Nachdem ich einige neue Maschinen mein eigen nennen darf, darunter auch eine konventionelle Fräse von
    Optimum (MH 28V) und ich etwas Zeit im Alltag zur Verfügung gestellt bekomme (von meiner Chefin ), möchte ich gern ein "kleines?"
    Projekt starten.

    Ich möchte gerne an besagter Fräse eine Achse (X) mit einem Schrittmotor verfahren.
    Es geht hier nur um einen Achsvorschub und nicht um eine CNC Steuerung.
    (evtl. können auch mehrere Achsen vefahren werden aber ich will es ersteinmal nur mit einer testen)

    Sollte es solch ein Thema schon gegeben haben dann bitte ich um entschuldigung und um versetzung an die richtige Stelle. Danke!

    Mein größtes Problem ist wie immer die Programmierung...
    Da ich mit Bascom aber schon ein paar Erfahrungen sammeln konnte (danke Searcher, danke Kampi ) würde ich dieses Projekt auch gerne damit proggen.

    Zur Hardware...
    Es stehen zur Verfügung:
    1. Schrittmotor: Nema23 Stepper Motor 23HS8430, 3.0A
    2. Treiber: Nema23 Schrittmotor-Controller-Treiber 2M542 4.2A
    3. Atmega 168 (RN- Mini Control)
    4. Bascom (Demo)
    5. Fräse natürlich...

    Eine genauere Auflistung der Verwendeten Teile kommt am Ende des Projektes.

    Zur Funktion:
    Der Schrittmotor soll die Achse der Fräse antreiben.
    Die Geschwindigkeit des Schrittmotors wird über ein Poti gesteuert.
    Ein Taster läst beim schließen den Motor laufen, beim öffnen bleibt der Motor stehen (evtl. Bremsen)
    Ein Schalter zum umschalten links / rechtslauf
    Mehr erst einmal nicht.

    Natürlich habe ich keine Ahnung wie ich mit dem Code anfangen soll - werde aber heute Abend etwas probieren
    und euch den (schreckens-) Code zeigen.

    Vielen Dank für eure Unterstützung / Hilfe / Tipps / Infos!

    Viele Grüße,
    P@

  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
    Hm, Z-Achse fräst auch gerne mal in den Tisch rein (Erfahrung aus der Lehre).

    Als erstes mal einstellbare Stop Nocken und entsprechende Schalter als Öffner.
    (zusätzlich zu den Endschaltern in den Endlagen die die Spindel etc. schützen sollen)

    Eventuell geht analog zum Hebel an einerer Fräse mit mechanischem Vorschub ein Digitaler Joystik oder ein Tastschalter (ON OFF ON)
    Wobei ich nicht weis ob es sowas heute noch gibt.
    Das waren Schalter die aus beiden Stellungen zurück in Mittelstellung gefallen sind.
    Damit läuft der Vorschub solange man hält.
    Oder einfach ein Schalter (ON OFF ON) der fährt dann bis ein Endschalter ausgelöst wird oder er von Hand in Mittelstellung gebracht wird.
    Das Poti ist dann für die Geschwindigkeitsvorgabe.
    Und die beiden Schaltkontakte für die Richtung und Enable.

  3. #3
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Danke für dein Infos,

    da ich es aber alles erst einmal auf dem Tisch aufbauen möchte vernachlässige ich die End- und Referenzschalter fürs erste.
    Auch damit ich und andere den Code - das Ansteuern des Schrittis mit Bascom verstehen und es nicht schon von Anfang an zu überladen wird.

    Bin grade dabei mich wieder mit Bascom an zu freunden... Aber lange ist es her...
    Hier das Material...

    Klicke auf die Grafik für eine größere Ansicht

Name:	DSC_0252.jpg
Hits:	34
Größe:	52,1 KB
ID:	32076Klicke auf die Grafik für eine größere Ansicht

Name:	DSC_0253.jpg
Hits:	25
Größe:	56,5 KB
ID:	32077

    - - - Aktualisiert - - -

    So,
    erst mal alles angeschlossen. Sollte klappen.
    Klicke auf die Grafik für eine größere Ansicht

Name:	DSC_0254.jpg
Hits:	23
Größe:	64,1 KB
ID:	32078

    Hier mal ein Code den ich im Netz gefunden habe und ausprobieren wollte da kurz und "Übersichtlich". (Gibt´s aber noch ne Menge Fragezeichen )

    Läuft leider nicht - war ja klar!


    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    
    'Programmkonfiguration
    
                                                                 ' r16 laden
    !STS MCUCSR, R16                                            ' Zweimal wiederholen
    !STS MCUCSR, R16
    
    Config Portc = Output
    
    Dim Anzahl_s As Long                                        'Schritte (zähler)
    
                                                                 'Minus an GND oder frei lassen (läuft ohne.. )
    Puls Alias Portc.0                                          'Pul
    Richtung Alias Portc.1                                      'Dir
    Freigabe Alias Portc.2
    Freigabe = 0
                                                                 'Ena (es gibt noch die Möglichkeit, die Leistung über PWM zu steuern)
    
    
    'Programmkonfiguration
    Do
                                                                'Schleife oder mit Timer
    Puls = 1                                                    'Signal erzeugen
    
    Gosub Schritte                                              'Zählen
    
    Waitus 400                                                  'Impulsbreite
    
    Puls = 0
    Waitus 100                                                  'Abstand zwischen Impulsen
    Loop
    Schritte:
    
    If Anzahl_s > 400 Then
    If Richtung = 1 Then
    Gosub Links                                                 'Richtung wechseln
    Else
    Gosub Rechts
    End If
    Waitms 1
    End If
    
    Anzahl_s = Anzahl_s + 1                                     'Schritte addieren
    Return
    
    Rechts:                                                     ' Rechts drehen
    Richtung = 1                                                'Richtung auf 1 oder 0
    Anzahl_s = 0                                                ' Schritte Reset
    Waitms 100                                                  'Haltepause/Bremszeit Motor braucht mindestens 5-30 ms
    Return
    
    Links:                                                      'Links drehen
    Richtung = 0                                                'Richtung auf 1 oder 0
    Anzahl_s = 0                                                'Schritte/Bremszeit Reset
    Waitms 100
    Return
    
    End
    'Ende des Programms

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Ich habe zwar noch nie Bascom programmiert, aber ich würde im ersten Schritt mal folgenden Code testen.
    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    
    'Programmkonfiguration
    
                                                                 ' r16 laden
    !STS MCUCSR, R16                                            ' Zweimal wiederholen
    !STS MCUCSR, R16
    
    Config Portc = Output
    
    Dim Anzahl_s As Long                                        'Schritte (zähler)
    
                                                                 'Minus an GND oder frei lassen (läuft ohne.. )
    Puls Alias Portc.0                                          'Pul
    Richtung Alias Portc.1                                      'Dir
    Freigabe Alias Portc.2
    Freigabe = 0
                                                                 'Ena (es gibt noch die Möglichkeit, die Leistung über PWM zu steuern)
    
    
    'Programmkonfiguration
    Do
                                                                'Schleife oder mit Timer
      Puls = 1                                                    'Signal erzeugen
    
      Waitus 400                                                  'Impulsbreite
      Puls = 0
      Waitus 100                                                  'Abstand zwischen Impulsen
    Loop
    
    End
    Eventuell die Zeiten größer machen und mit einer LED ansehen ob da ein entsprechendes Rechtecksignal an Portc.0 raus kommt. Ansonsten per Osziloskop prüfen.

    Im zweiten Schritt dann:
    Code:
    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600
    
    
    
    'Programmkonfiguration
    
                                                                 ' r16 laden
    !STS MCUCSR, R16                                            ' Zweimal wiederholen
    !STS MCUCSR, R16
    
    Config Portc = Output
    
    Dim Anzahl_s As Long                                        'Schritte (zähler)
    
                                                                 'Minus an GND oder frei lassen (läuft ohne.. )
    Puls Alias Portc.0                                          'Pul
    Richtung Alias Portc.1                                      'Dir
    Freigabe Alias Portc.2
    Freigabe = 0
                                                                 'Ena (es gibt noch die Möglichkeit, die Leistung über PWM zu steuern)
    
    
    'Programmkonfiguration
    Do
                                                                'Schleife oder mit Timer
      Puls = 1                                                    'Signal erzeugen
      Gosub Schritte                                              'Zählen
      Waitus 400                                                  'Impulsbreite
      Puls = 0
      Waitus 100                                                  'Abstand zwischen Impulsen
    Loop
    
    Schritte:
      If Anzahl_s > 400 Then
        
        Anzahl_s = 0
        Waitms 100
      End If
      Anzahl_s = Anzahl_s + 1                                     'Schritte addieren
    Return
    
    End
    Natürlich mit der korrekten Fassung der DO LOOP Schleife die aus dem ersten Schritt entstehen müsste.
    Hier sollte ja nach 400 Pulsen eine Pause entstehen und dann wieder 400 Pulse kommen.
    Wenn das klappt. Kann man DIRection und Enable hinzunehmen.
    Kommen die Signale alle aus dem Controller, kann man den Motortreiber anschließen.
    Dazu dann aber mal bei verschiedenen CNC Threads reinschauen, mit diesem Typ Motortreiber gabs glaube ich schon öfters Probleme. Da kann etwas Nacharbeit erforderlich sein.

  5. #5
    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@

  6. #6
    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 21:37 Uhr)

Ä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. [ERLEDIGT] 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
  •  

fchao-Sinus-Wechselrichter AliExpress