Hast du die Pins denn auch in der richtigen Reihenfolge angeschlossen? Wenn da ein paar Pins vertauscht sind, dann kann da auch nichts sinnvolles herauskommen. Wie genau du die einstecken musst, das musst du aber selber herausfinden.
Moin Moin
Ich bin Filme Macher und neu auf dem Gebiet
ich möchte eine Kamera für eine Zeitrafferaufnahme mit einem Schrittmotor so langsam wie möglich drehen
ich habe mir diesen hier gekauft http://www.ebay.de/itm/2in1-DC-5V-St...item3ccf1584a9
und dazu ein adruino uno
ich möchte ihn mit dem unten angegebenen Programmcode steuern, wenn ich ihn anschalte beginnt er auch zu vibrieren dreht sich aber, egal was ich eingebe nicht! weiß jemand was fehlt? oder gibt es irgendjemanden der den code vervollständigen kann?
der Code stammt von
http://www.geeetech.com/wiki/index.p...rd_for_Arduino
Viele Grüße und schon mal vielen dank
Marc
int Pin0 = 10;
int Pin1 = 11;
int Pin2 = 12;
int Pin3 = 13;
int _step = 0;
boolean dir = true;// gre
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
Hast du die Pins denn auch in der richtigen Reihenfolge angeschlossen? Wenn da ein paar Pins vertauscht sind, dann kann da auch nichts sinnvolles herauskommen. Wie genau du die einstecken musst, das musst du aber selber herausfinden.
Bist du sicher, dass du nur rund 1ms warten solltest? Dann müsstest du in 7ms eine Umdrehung gemacht haben -> 142 U/s => ~8500 U/min
Ich denke nicht, dass das deine gewünschte Drehzahl ist
Stimmt nicht ganz, dann macht er in 8ms eine elektrische Umdrehung, also 4 Vollschritte. Bei 64 Schritten pro Umdrehung wäre das also 128ms für eine Umdrehung, womit man dann eine Drehzahl von ~469 U/min erhält (bzw. 7,3 U/min hinter dem Getriebe). Sollte also eigentlich im Rahmen liegen. Ich frag mich nur, warum die Schaltfolge für den Schrittmotortreiber vom µC generiert werden soll, denn für diese Aufgabe gibts doch auch schon fertige ICs (zB. den L297). Aber wenn der µC nicht so viel anderes machen braucht ist es durchaus gerechtfertigt, sich das Geld so für ein zusätzliches Bauteil zu sparen.
Ok, dann hab ich das falsch verstaden...
Lesezeichen