Pages: [1]   Go Down
Author Topic: Schrittmotor ansteuern  (Read 862 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Für meine Abschlussprüfung möchte ich gerne mit einem Arduino Mega 2560 einen Schrittmotor ansteuern.

Ich habe dazu einen Pololu treiber mit dem Arduino verbunden.
Der Pololu hat 3 Eingänge (Step,Enable und Direction)
Jetzt habe ich folgende Void Funktion geschrieben:

Code:
int A_IST = 0;
int A_state = 0;
int A_SOLL = 0;
int A_speed = 4;
int A_way = 0;
int A_tick = 0;

void move_A(int A_deg){
  // State 0 / Setzten des SOLL Wertes , Berechnen des Wegs || Init
 
  if(A_state == 0){
   
    A_SOLL = A_deg;
   
    // Direction Auswahl
    A_way = A_SOLL - A_IST;
    // Negativer Weg
    if ( A_way < 0){
      A_way = A_IST - A_SOLL;
      digitalWrite(A_dir_pin,LOW);
      A_state = 2;
    }
    // Positiver Weg
    else{
      digitalWrite(A_dir_pin,HIGH);
      A_state = 1;
    }   
  }
  // State 1 /
  if(A_state == 1){
   
    if(A_IST < A_SOLL){
      Serial.println(A_IST);
      if (A_tick < 2){
        digitalWrite(A_step_pin,HIGH);   
      }
     
      else{
        digitalWrite(A_step_pin,LOW);
        if (A_tick >= A_speed){
          A_IST = A_IST + 1;
          A_tick = 0;
        }   
      }
      A_tick = A_tick + 1;       
    }   
  } 
 

Leider dreht sich der Motor zu langsam . Aber die Variable: A_speed kann ich nicht noch tiefer setzen. Ich suche jetzt eine Funktion die einen Impuls an einen Ausgang sendet  und in der man die Länge des Impuls sowie die Pausenzeit angeben kann .

Ich hätte auch gern mal ein paar tipps wie man die Funktion kürzer fassen könnte und übersichtlicher gestaltet.

MFG UEBE
 
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 272
Posts: 21940
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Schick den gesamten Sketch.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

An sich ist der gesamte sketch uninteressant im setup werden nur die ausgänge bestimmt und im loop wird nur diese funktion aufgerufen. Aber das langsame takten kam vom Serial.println dadurch wird das Arduino langsamer .

Ich habs jetzt mal mit delayMicroseconds gelöst funktioniert auch ziemlich gut.

Gibts es eine Möglichkeit wie man das arduino warten lassen kann ohne das der skript wartet ?

MFG UEBE
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

schau dir mal "blinkwithoutdelay" in den Examples an smiley-wink
« Last Edit: March 16, 2013, 11:41:58 am by Marcus W » Logged


Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 272
Posts: 21940
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

An sich ist der gesamte sketch uninteressant im setup werden nur die ausgänge bestimmt und im loop wird nur diese funktion aufgerufen. Aber das langsame takten kam vom Serial.println dadurch wird das Arduino langsamer .

Ich habs jetzt mal mit delayMicroseconds gelöst funktioniert auch ziemlich gut.

Gibts es eine Möglichkeit wie man das arduino warten lassen kann ohne das der skript wartet ?

MFG UEBE
Es ist schwer jemanden zu helfen, wenn er nur Teile seines Sketches preisgibt weil er denkt daß das Problem nur in den Teilen steckt.

Hättest Du den ganzen sketch gegeben hätte ich Dir sagen können die Baudrate auf 115200 zu erhöhen und darum den Sketch schneller zu machen.

Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: