Hallo,
"3 Motoren gleichzeitig ansteuern"
wohl überhaupt nicht- einen nach dem anderen.
"von einem Motor hatte"
an der von Dir genannten Karte?
Wenn ja, dann brauchst Du doch nur mit C&P den Code erweitern und die
Adressen der Treiber-IC´s ändern.
Nicht mit der Karte?
Dann wird das ohne ausführliches Datenblatt wohl nichts werden?
Das Ding ist ziemlich einfach gestrickt, es sieht so aus, als wenn für jeden
Motor ein Treiber-IC mit Leistungsendstufe vorhanden ist.
Du brauchst also von diesen Ic´s das Datenblatt, dann kannst Du auch feststellen
wie genau die angesteuert werden.
Gruß und Spaß
Andreas
Dass ich sie nicht wirklich "gleichzeitig" ansteuern kann ist mir schon klar. Ich möchte die 3 Motoren gleichzeitig laufen lassen.
Auf der Karte ist für jeden Motor ein L297 in Verbindung eines L298 verbaut.
Um den Motor zum laufen zu bekommen, wird nur die Richtung und der Tackt vom Arduino benötigt.
Hier ist der Code den ich verwendet habe um einen Motor mit der Karte zu betreiben:
Wenn du keinen besonders großen Aufwand betreiben möchtest, kann ich dir die AccelStepper Library empfehlen. http://www.airspayce.com/mikem/arduino/AccelStepper/
Dort ist meines Wissens nach auch ein Beispiel-Sketch dabei, bei dem mehrere Motoren gleichzeitig bewegt werden. Schau dir den einfach mal an, vielleicht hilft es dir weiter
Hallo,
das mit der Lib würde ich erst einmal lassen. Wenn Du sie so zum laufen
bekommst, dann weißt Du auch was passiert.
Wenn das dann mal alles läuft, kannst Du die Lib immer noch anwenden.
Du mußt die drei Motoren ja trennen, Ich habe aber keine Ahnung, ob das so
einfach funktioniert: z.B.
int pinDirM1 = 11;
int pinStepM1 = 12;
int pinDirM2 = 13;
int pinStepM2 = 14;
int pinDirM3 = 15;
int pinStepM3 = 16;
void setup()
{
pinMode(pinDirM1, OUTPUT);
pinMode(pinStepM1, OUTPUT);
pinMode(pinDirM2, OUTPUT);
pinMode(pinStepM2, OUTPUT);
pinMode(pinDirM3, OUTPUT);
pinMode(pinStepM3, OUTPUT);
}
Dann hättest Du sie getrennt.
Nun sagst Du Ihnen was Sie machen sollen
void drehenM1(int schritteM1, int tempoM1)
Erst zum schluss läßt Du sie dann drehen. Wenn Dein Sketch so läuft, dann
würde ich da einfach mal ein M1, M2 und M3 dranhängen.
Hier müßte EVA sehr gut funktionieren
Gruß und Spaß
Andreas
Danke für den Tipp mit der AccelStepper Library. Alle 3 Motoren laufen gleichzeitig
Wie kann Ich denn dort Pausen einbauen?
Zum Beispiel, dass der Motor 9000 Schritte dreht, 8s wartet und dann mit verringerter Drehzahl nochmal 2000 Schritte dreht?
@Andreas: Mit der Lib ist es glaub ich um einiges einfacher. Das Problem mit dem Code zuvor ist dass durch das "Delay" der komplette Systemablauf unterbrochen wird...
// MultiStepper.pde
// -*- mode: C++ -*-
//
// Shows how to multiple simultaneous steppers
// Runs one stepper forwards and backwards, accelerating and decelerating
// at the limits. Runs other steppers at the same time
//
// Copyright (C) 2009 Mike McCauley
// $Id: MultiStepper.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::FULL2WIRE, 6, 7);
AccelStepper stepper2(AccelStepper::FULL2WIRE, 8, 9);
AccelStepper stepper3(AccelStepper::FULL2WIRE, 10, 11);
void setup()
{
stepper1.setMaxSpeed(200.0);
stepper1.setAcceleration(100.0);
stepper1.moveTo(24);
stepper2.setMaxSpeed(300.0);
stepper2.setAcceleration(100.0);
stepper2.moveTo(1000000);
stepper3.setMaxSpeed(300.0);
stepper3.setAcceleration(100.0);
stepper3.moveTo(1000000);
}
void loop()
{
// Change direction at the limits
if (stepper1.distanceToGo() == 0)
stepper1.moveTo(-stepper1.currentPosition());
stepper1.run();
stepper2.run();
stepper3.run();
}
Also Ich muss sagen, dass durch die Library der Motor um einiges schöner läuft. Dort habe ich im Gegensatz zu dem vorherigen Code, die Möglichkeit, die Beschleunigung anzupassen.
Durch das Einsetzen von millis(); bekomme ich beim neuen Code eine Fehlermeldung.
Ich hab im Internet leider nicht viel zu der Funktionsweise des MultiStepper Programmes gefunden.
Kennt jemand eine I-net Seite, auf der Ich nachlesen kann, welche Funktionen dort möglich sind?
Oder hat schon jemand Erfahrungen mit der AccelStepper Lybrary gemacht?