Schrittmotor ansteuern mit matlab GUI, Code für Tempo kontrollieren

Hallo zusammen, ich mache momentan eine Projektarbeit und eine wichtige Aufgabe dazu ist die Ansteuerung von einem Schrittmotor(Tempo und Richtung) mit Arduino Board und Matlab GUI.

Hardwaren: ein Schrittmotor; L297; Arduino Mega 2560

Hier ist die Arduino IDE Code, mit der der Motor gut funktioniert

#define stepPin 5
#define dirPin 6

int pauseje2Schritte = 400;
int zahlderSchritte = 1000;
  
void setup() { 
  Serial.begin(9600); 
  Serial.println("Starting stepper exerciser."); 

  pinMode(stepPin, OUTPUT); 
  pinMode(dirPin, OUTPUT); 

  digitalWrite(dirPin, HIGH); 
  digitalWrite(stepPin, LOW); 
  

} 

    void loop() { 
 
      digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction 
      // Makes 200 pulses for making one full cycle rotation 
      for(int x = 0; x < zahlderSchritte; x++) { 
        digitalWrite(stepPin,HIGH); 
        delayMicroseconds(pauseje2Schritte); 
        digitalWrite(stepPin,LOW); 
        delayMicroseconds(pauseje2Schritte); 
      } 
      delay(1000); // One second delay 
      
      digitalWrite(dirPin,LOW); //Changes the rotations direction 
      // Makes 400 pulses for making two full cycle rotation 
      for(int x = 0; x < zahlderSchritte; x++) { 
        digitalWrite(stepPin,HIGH); 
        delayMicroseconds(pauseje2Schritte); 
        digitalWrite(stepPin,LOW); 
        delayMicroseconds(pauseje2Schritte); 
      } 
      delay(1000); 
      
      digitalWrite(stepPin,LOW);
      delay(3000);
      
    }

Dann ich hab Matlab GUI Code geschrieben:

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
clear all;
global a;
a = arduino('COM7');
a.digitalWrite(6,1);
pauseje2Schritte = 0.01; %pause between 2 steps
zahlderSchritte= 200;       %number of steps

for x = 1:zahlderSchritte
    a.digitalWrite(5,1);
    pause(pauseje2Schritte);
    a.digitalWrite(5,0);
    pause(pauseje2Schritte);

end

Dies ist ein Teil der GUI COde, und durch sie kann ich die Drehrichtung kontrollieren
Jetzt kommt die Frage, wie schreib ich die Code um das Tempo zu kontrollieren?
Besten Dank für die Hilfe.

Da musst du bei matlab fragen, was für die ein arduino ist.

a = arduino('COM7');

Bestimmt setzt das auf Arduino-Seite einen "firmata"-ähnlichen Universal-Sketch voraus, der über die serielle Schnittstelle ferngesteuert wird..

Der L297 kann keinen Schrittmotor ansteuern. Es fehlt die Leistungsendstufe in Form eines L298, L293 oder ähnlichem wobei ich Dir keinen Ratschlag geben kann welcher der richtige ist da Du keine Daten des Schrittmotor veröffentlicht hast..

Grüße Uwe

uwefed:
Der L297 kann keinen Schrittmotor ansteuern. Es fehlt die Leistungsendstufe in Form eines L298, L293 oder ähnlichem wobei ich Dir keinen Ratschlag geben kann welcher der richtige ist da Du keine Daten des Schrittmotor veröffentlicht hast..

Grüße Uwe

hallo Uwe, ich kenne L298,L293 nicht. Aber L297 ist doch ein Schrittmotor Kontroller(soweit weiss ich) und ich kann mit L297 on Arudino IDE den Motor(die Geschwindigkeit und Drehrichtungen) ansteuern. Das einzige Problem ist wie ich das Tempo von Motor on Matlab ansteuern.

Der Schrittmotor: SY42STH47-1684A

Könnten Sie mir ein paar Tips geben?

michael_x:
Da musst du bei matlab fragen, was für die ein arduino ist.

a = arduino('COM7');

Bestimmt setzt das auf Arduino-Seite einen "firmata"-ähnlichen Universal-Sketch voraus, der über die serielle Schnittstelle ferngesteuert wird..

Ja, das bestimmt. Der Schrittmotor wird durch Digitalpins statt Analogpins ferngesteuert. Die von mir geschriebene Code funktioniert schon. Aber ich weiss nicht wie ich Code für Tempoänderungen weiter schreiben soll.

LG

Aber ich weiss nicht wie ich Code für Tempoänderungen weiter schreiben soll.

int pauseje2Schritte = 400; // Da ist deine Geschwindigkeit

Probier es mit dem Arduino aus.

Ob du mit matlab im Microsekundenbereich glücklich wirst, ist allerdings ein Matlab-Problem.

Der L297 ist ein Schrittmotor Controller. Das heißt er macht aus Signalen wie Enable und Takt die Schrittfolge für den eigentlichen Treiber (an seinen 4 Steuerpins), i.d.R. ein L298 oder L293. Für einfache Anwendungen kann man die Treiber aber auch direkt Ansteuern. Aber der L297 für sich macht nicht den Strom den ein Motor braucht! Er erzeugt nur Logik-Signale

Schau mal ins Datenblatt auf Seite Seite 1 unten: