Passend zum L297/298 Kompletttreiber gibts natürlich auch einen programmierbaren Controller.
Dieser verfügt auch über eine RS232 mit der angesteuert werden kann..
Darwin
Das File habe ich in den Download-Bereich verschoben
https://www.roboternetz.de/phpBB2/dl...le&file_id=163
DEMO für Schrittmotoransteuerung:
Das Proggi läuft 10 verschiedene zufällige Positionen an, verharrt dann
an dieser kurz und läuft die komplette Strecke zurück. Dort "zittert der Motor kurz (Positio = 0) und das ganze Spiel geht von vorne Los.
Geschrieben für Bascom und AT90S2313 (8MHz) mit L297-298_4A-Driver.zip
https://www.roboternetz.de/phpBB2/viewtopic.php?t=2777
Das Proggie eignet sich auch gut gür einen Dauertest
Bascom Source:
Viel Spaß beim Spielen.Code:'******************************************************************************* ' "Protobed-AT90S2313" mit ' "2A Stepper Motor Controller / Driver (Platine L297-L298_V1.35) an Port B '******************************************************************************* $regfile = "2313def.dat" $crystal = 8000000 Config Portb = Output ' Hier Anpassung vornehmen: ' Schritt an den verwendeten Motor anpassen Const M_schritt = 1.8 ' Winkel für einen Schritt ' ======= Const M_pusdauer = 5000 ' Drehgeschindigkeit Const M_completeturn = 360 / M_schritt ' Alias für die Ports M_cw Alias Portb.0 ' Richtung: 1 = CW - 0 = CCW M_clk Alias Portb.1 ' Schritt (Negativer Puls) M_halfstep Alias Portb.2 ' Schritt: 0=voll; 1=halb M_noreset Alias Portb.3 ' 0 für Reset M_enable Alias Portb.4 ' 1 für Enable, 0 für Disable M_cyl Alias Portb.5 ' Rückmeldung 1 Zyklus Dim X As Integer Dim Y As Integer Dim Spd As Long Dim Awayfromhome As Integer Dim Homehelp As Integer Dim Rndwert As Long Dim Rndrichtung As Long ' Ports schalten Reset M_halfstep Set M_noreset Set M_cw Reset M_cyl Set M_clk Set M_enable ' MAIN() *********************************************************************** Print "Motor mit " ; M_completeturn ; Print " Schritten für eine Umdrehung (" ; Print M_schritt ; "°/Schritt)." Print Wait 1 Gosub Startup Wait 1 Gosub Indicate Waitms 250 Gosub Indicate Wait 3 Do Gosub Zufall Wait 1 Gosub Heimatposition Wait 1 Gosub Indicate Wait 3 Loop End 'end program ' SUBs ************************************************************************* Zufall: Awayfromhome = 0 For X = 1 To 10 Rndrichtung = Rnd(1000) Rndwert = Rnd(m_completeturn) If Rndrichtung > 500 Then Print "Pos: " ; Awayfromhome ; " + " ; Rndwert Awayfromhome = Awayfromhome + Rndwert Set M_cw Else Print "Pos: " ; Awayfromhome ; " - " ; Rndwert Awayfromhome = Awayfromhome - Rndwert Reset M_cw End If For Y = 1 To Rndwert Pulseout Portb , 1 , M_pusdauer Next Y Print "- Awayfromhome = " ; Awayfromhome Waitms 250 Next X Return End 'end program Heimatposition: If Awayfromhome > 0 Then Reset M_cw Do Pulseout Portb , 1 , M_pusdauer Awayfromhome = Awayfromhome - 1 Loop Until Awayfromhome = 0 Else Set M_cw Do Pulseout Portb , 1 , M_pusdauer Awayfromhome = Awayfromhome + 1 Loop Until Awayfromhome = 0 End If Return Startup: ' Ganze Umdrehung Set M_cw ' Clockwise For X = 1 To M_completeturn Pulseout Portb , 1 , M_pusdauer Next X ' Ganze Umdrehung Reset M_cw ' Counter Clockwise For X = 1 To M_completeturn Pulseout Portb , 1 , M_pusdauer Next X Pulseout Portb , 3 , 100000 'RESET Awayfromhome = 0 Return Indicate: Reset M_cw ' Clockwise For Y = 1 To 5 Pulseout Portb , 1 , M_pusdauer Next Y For X = 1 To 5 Set M_cw ' Clockwise For Y = 1 To 10 Pulseout Portb , 1 , M_pusdauer Next Y Reset M_cw ' Counter Clockwise For Y = 1 To 10 Pulseout Portb , 1 , M_pusdauer Next Y Next X Set M_cw ' Clockwise For Y = 1 To 5 Pulseout Portb , 1 , M_pusdauer Next Y Return End 'end program[/color][/size]







.
.
Zitieren
Lesezeichen