Steuerung eines Kamerasliders

Ja, sowas wollte ich auch schon mehrfach anfangen ... bei mir scheitert's an der Mechanik :confused:

Die Lib bringt doch sicher Beispiele mit - schonmal reingeschaut?

Zur Technik meines Kamerasliders habe ich dir eine PM geschrieben :wink:

Mir geht es vorallem darum, zu verstehen, welche Accelstepper Befehle miteinander zusammenhängen und arbeiten. Die einzelnen Befehle verstehe ich einigermaßen, wenn ich mir die Anleitung angucke. Aber ich weiß nicht, wie ich die zusammen in einen Sketch bringe.

Von den Beispielen verstehe ich nur 2

Nimm doch mal die Beispiele aus der IDE, die tun's m.E. für den Slider und sind einfach zu durchschauen.
Umswitchen auf die Accelstepper kannste dann immer noch.

Welche Beispiele meinst du genau?

Na die Stepper Beispiele - verwendest Du nicht die arduini IDE?

Hi, so habe ich das Problem gelöst.
Ich habe mir den Code von Emotimo geholt und mir meine eigene Platine dazu gemacht.
Der Code ist open source und der Rest ergibt sich von selber.
Es kommt dann alles in ein eigenes Gehäuse und nur die Motoranschlüsse kommen raus.
wenn es fertig ist mache ich ein paar Bilder.
Muss die Platine nochmal machen, hatte ein paar sehr wichtige Sachen vergessen. :confused: :confused:

MfG Marco

Hallo,
ich würde am Ende der Schiene keine Taster (öffnen) nehmen.
Mit einem Umschalter bist Du dort besser bedient.
Beispiel:
Wenn beide Umschalter geöffnet sind, dann kann der Schlitten nach rechts/links fahren.
Ist der rechte Umschalter geschlossen, dann kann der Schlitten nur nach links rausfahren.
Ist der linke Umschalter geschlossen, dann kann der Schlitten nur nach rechts rausfahren.

Um rauszubekommen, was die "Accelstepper Library" denn macht, kannst Du die genutzten Variablen auf
den seriellen Monitor ausgeben. So kommst Du schnell dahinter, wer denn Deine Schritte zählt.
Gruß und Spaß
Andreas

Sorry, ich hatte gestern leider keine Zeit.

Einen fertigen Sketch möchte ich nicht übernehmen. Zum Üben ist alles okay, aber ich möchte später wissen, was ich programmiert habe und das Programm auch verstehen.

Zu den Endschaltern: Ich wollte nicht beide Endschalter mit einem Pin abfragen, sondern getrennt. Wenn sich der Schlitten nach links bewegt, soll auch nur der linke Endschalter abgefragt werden, damit ein Verfahren nach rechts noch möglich ist.

Ich habe mir nun die Stepper.h angeguckt. Ich bekomme den Motor auch mit einer schnellen Geschwindigkeit zum Laufen, bei langsamen Geschwindigkeiten rattert er sehr laut. Ich finde den Sketch zwar relativ einfach, aber der Motor sollte sich etwas langsamer drehen, ohne so laute Geräusche zu machen. Außerdem brauche ich jetzt (ohne Microstepping) 800 Schritte für eine Umdrehung. Wie kommt das?

Hier der Code, wie ich ihn benutzt habe:

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 3, 2);

void setup() {
  myStepper.setSpeed(600);
}

void loop() {
  // step one revolution  in one direction:
  myStepper.step(800);
  delay(500);
}

P.S.: Gibt es hier im Forum kein Highlighting im Code?

Hallo,
wenn mich nicht alles täuscht, dann nutzt Du doch einen gemeinen Schrittmotor.
In dem Datenblatt steht doch, was für eine Auflösung der hat.
Wenn der bei 800 Schritten eine Umdrehung macht, dann hat der eine Auflösung
von ca. 0,45 Grad.
Das alles sollte im Datenblatt stehen.
Die Schrittzahl, die der Motor für eine Umdrehung braucht, muß im Sketch
hinterlegt sein.

Macht er die ratterGeräusche wenn der Motor ausgebaut ist? Dann würde ich
sagen, das er falsch angesteurt wird. Normalerweise ist so ein Motor still.
Summt vielleicht leise vor sich hin, wenn der Schritt gehalten wird.
Gruß und Spaß
Andreas

Der Schrittmotor hat 200 steps/rev.

Der läuft ja leise, wenn ich die Geschwindigkeit erhöhe. Ich denke, wenn die Geschwindigkeit zu langsam ist, dann liegt eine zu große Zeit zwischen den einzelnen Steps (der Motor hält quasi immer kurz an und es entsteht keine flüssige Bewegung).

der motor ist noch eingebaut, es hängt aber nur die Gewindestange dran, welche unbelastet ist.

Hallo,
wenn es Motorwelle an Gewindestange ist, dann ist es der "falsche" Motor.
An der Gewindestange hast Du über einen Mitnehmer (der auf der Gewindestange läuft) Deinen Schlitten
verbunden. Dafür nimmt man eigentlich linear Motoren.
Wenn Du es mit einem Schrittmotor machst, dann würde ich Zahnriemen nehmen. Aber egal...

Ich würde die Steuerung nur mit ausgebautem Motor testen. Den mit DoppelKleberband befestigen und auf
die Welle eine "Zeiger" kleben.
So kannst Du prüfen ob alles richtig läuft.
Wenn dem so ist, dann einbauen. Alles was dann noch rattert ist deine Mechanik.
Hilft Dir aber jetzt auch nicht weiter.

Hast Du zufällig das Arduino Kochbuch? Dort wird ab Seite 317 der Umgang mit Schrittmotoren erklärt.
Die Sketche dazu sind völlig "einfach". Auch die ganze Verdrahtung wird sichtbar und man sollte erkenne
können, was passiert.
Die "Accelstepper.h" kennt wohl keiner, und wenn ich mir die "Example" anschaue, dann halte ich das alles
für zu umständlich, nicht einfach zu kapieren...

Wenn Dein Motor echte 200 Schritte für eine Umdrehung braucht, und Du hier:

// step one revolution in one direction:
myStepper.step(800);

800 eingetragen hast, dann vermurkst die Lib etwas.
Wenn Du dort nur 200 einträgst, läuft er dann nur 50 Schritte? Also ein Viertel Umdrehung?
Gruß und Spaß
Andreas

SkobyMobil:
wenn es Motorwelle an Gewindestange ist, dann ist es der "falsche" Motor.
An der Gewindestange hast Du über einen Mitnehmer (der auf der Gewindestange läuft) Deinen Schlittenverbunden. Dafür nimmt man eigentlich linear Motoren.

Sowas geht super mit Schrittmotoren. Auch über lange Strecken. Jedenfalls solange es nicht sehr schnell sein muss.

Ich habe den Sketch benutzt, der weiter oben steht. Dort sind 200 steps/rev. angegeben. Ich brauche dort aber 800 Schritte.

Mit einer anderen Lib oder mit meiner einfachen Steuerung über delays ist das nicht so. Muss also an der Stepper.h liegen.

Ich möchte die Steuerung erstmal fertig machen, ob Gewindestange oder Zahnriemen ist dafür erstmal egal. Langfristig werde ich aber wohl auf einen Zahnriemen umrüsten, da der Motor dort weniger Energie für eine Fahrt braucht, und man auch schnellere Kamerafahrten machen könnte.

Kannst du das Buch für Anfänger empfehlen? Ich dachte man lernt heutzutage alles im Internet :-[

Wenn der Stepper-Motor mehr Steps braucht als eigentlich notwendig, dann ist er überlastet. Entweder ist er überhaupt zu schwach, oder das Netzteil, oder er wird zu schnell oder zu hoch beschleunigt. Wie sieht es denn aus, wenn Du die Geschwindigkeit deutlich (4 mal) reduzierst? Erst wenn die Schrittzahl stimmt, kann die Beschleunigung und maximale Steprate optimiert werden.

Hallo,
"Kannst du das Buch für Anfänger empfehlen?"

Wenn Du in Elektronik ein wenig fit bist, und auch schon ein wenig
Kenntnisse im Programmieren hast, dann geht das.

Ich habe von Arduino keine Ahnung gehabt, habe mir einen Mega 2560 und diese
Buch gekauft. Erfolg kam sofort…

Die Grundlagen werden im Buch fast nicht erklärt, es geht sofort zur Sache.
Die Sketche laufen Fehlerfrei und man bekommt eine Menge Anregungen.
Es ist so erklärt, das man es verstehen kann. Ich habe bis heute jede Idee
damit erschlagen können. Die Sketche kann man alle downloaden.

Wenn mir heute etwas einfällt, dann schaue ich erst einmal ins Buch. Ich finde
dort immer etwas ähnliches. "Genau! So könnte es gehen"

Es hat den Vorteil, das du diesen ganzen "InternetScheiss" nicht probieren
mußt. Wenn es Probleme gibt, dann kannst Du hier im Forum Hilfe bekommen.
Und wenn du Glück hast, dann verfeinern dir die Profis den Sketch.
Mit dem Buch und diesem Forum kommst Du dann schon verdammt weit- du mußt
aber auch bereit sein, dich damit zu beschäftigen…
Gruß und Spaß
Andreas
P.S. bei googlebooks? kann man es anlesen, mußt mal schau´n, suchen

Wie soll der Motor überlastet sein, wenn keine Last dranhängt? Das ist einfach die Stepper Lib, welche genau 4x Mehr schritte Braucht.
Komisch: Wenn ich den StepPin und den DirPin tausche, macht der Motor genau das Selbe.

Aber ich versuche ja auch Accelstepper zu verstehen und nicht die Arduino Stepper Lib.

Hallo,
dann komme doch mal mit etwas mehr Info rüber…
Was ist es denn für ein Motor, bipolar oder unipolar?
Wie wird der denn angesteuert?
Ein geheimnisvolles Shield- oder direkt über einen ULN2003A, EasyDriver-Board,
L298 oder L293?

hier schon mal geschaut:

oder hier:

http://techref.massmind.org/techref/io/stepper/wires.asp

normalerweise braucht es nicht mehr als die Stepper.h. Die steckt mit
Beispielen in der IDE.

Der Sketch ist ziemlich einfach:

/*
 * Stepper sketch
 *
 * stepper is controlled from the serial port.
 * a numeric value followed by '+' or '-' steps the motor
 *
 *
 * http://www.arduino.cc/en/Reference/Stepper
 */

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 24

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(STEPS, 2, 3, 4, 5);

int steps = 0;


void setup()
{
  stepper.setSpeed(30);    // set the speed of the motor to 30 RPMs
  Serial.begin(9600);
}

void loop()
{
  if ( Serial.available()) {
    char ch = Serial.read();

    if(ch >= '0' && ch <= '9'){             // is ch a number?
      steps = steps * 10 + ch - '0';        // yes, accumulate the value
    }
    else if(ch == '+'){
      stepper.step(steps);
      steps = 0;
    }
    else if(ch == '-'){
      stepper.step(steps * -1);
      steps = 0;
    }
    else if(ch == 's'){
      stepper.setSpeed(steps);
      Serial.print("Setting speed to ");
      Serial.println(steps);
      steps = 0;
    }
  }
}

Gruß und Spaß
Andreas
P.S. hat dein Motor zufällig ein Getriebe- dann wär´s kein Wunder...

Ich habe ganz vergessen, die Infos zum Motor dazu zu schreiben. Mein Fehler :-[

Es ist ein Bipolarer 12V Schrittmotor mit 200 Schritten pro Umdrehung (Emis 547). Betrieben wird er über einen DRV8825, dort brauche ich nur signale für Step, Dir und später noch Enable.

Hallo,
wenn es dieser Motor ist, dann muß dein Schlitten ziemlich klein sein.
Das Ding hat keine Kraft, es sei denn, es hängt ein Getriebe an der Welle. Das würde auch Deine
falschen Schritte erklären.

Hast du das StepperDriver probiert.
Hier wäre auch noch eine Spielerei
Gruß und Spaß
Andreas

Ja, das ist dieser Motor. Ich finde, der hat genug kraft. Das Halte-Moment ist nicht wichtig, da im Stillstand Enable auf HIGH gesetzt wird und die Gewindestange selbsthemmend ist.

Ich habe den Motor mit der StepperDriver.h auch ganz gut zum Laufen bekommen. Aber ich kann dort keine Beschleunigung wie bei der Accelstepper.h realisieren.

Nochmal eine kurze Frage:
Was würdet Ihr nun als Endschalter empfehlen?
Umschalter sind ja entweder als Öffner oder Schließer eingebaut. Die Steuerung der Fahrtrichtung wird ja im Code programmiert.