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.