PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor verliert systematisch zwei Schritte



roboflop
07.08.2018, 11:02
Hallo,

ich bin dabei eine abgespeckte und vereinfachte Version einer CT aufzubauen. Dafür habe ich für das Laser-Detektor-System zwei Motoren angebracht, die beide an einer Signalleitung liegen, damit die gleichzeitig losfahren und anhalten. Das ganze wird per LabVIEW programmiert und über Arduino angesteuert. Nun habe ich folgenedes Problem. Das Beispiel mache ich mal mit 10 Schritten. Die Motoren sollen einmal 10 Schritte im Uhrzeigersinn drehen und danach entgegen und nach jedem Richtungswechsel dreht sich ein Gestell. Das ganze 180 mal. Nun passiert aber Folgenedes: Erst drehen die Motoren +10 Schritte. Danach erfolgt der Richtungswechsel, allerdings dreht der Motor trotzdem +1 Schritt und erst dann -9 Schritte. Sprich insgesamt trotzdem 10 Schritte aber einer geht in die falsche Richtung. Folglich habe ich einen Gesamtverlust von 2 Schritten. Danach fährt er übrigens wieder +10 Schritte und dann wieder +1 -9. Ist also nur einseitig. Nach 180 Wiederholungen kann ich mit meiner Messung natürlich nichts mehr anfangen. Kennt hier einer das Problem? Könnte es an den Motoren liegen? Am Programm? Kennt sich einer mit LabVIEW aus und kommt auch mit einer chaotischen Benutzeroberfläche klar(Anfänger, mit sehr wenig Zeit sich kurzfristig einzuarbeiten->Thesis).
Ich wäre für jede Hilfe dankbar.

Mit freundlichen Grüßen
roboflop

Che Guevara
07.08.2018, 15:01
Hi,

ist mir nur auf die schnelle eingefallen, aber das hört sich so an, als ob das Richtungssignal bei deinem 11. Schritt noch nicht umgeschaltet hat. Hast du ein Oszilloskop? Damit könntest du das überprüfen.

Gruß
Chris

roboflop
07.08.2018, 15:45
Hallo Chris,

aktuell habe ich leider keines zur Verfügung. Allerdings habe mir das auch gedacht. Mich aber auch gleich gewundert warum das nur einseitig passieren sollte. Theoretisch müsste der dann doch bei jedem Umschalten noch einmal ein Schritt in die falsche Richtung machen oder?

Holomino
07.08.2018, 15:58
Wenn ein Arduino zwischen Applikation und Stepperendstufe sitzt, sollte hier der Fehler liegen.

Schau doch mal bitte im DB der Stepperendstufe nach, welche Eingangssignale das Teil hat. Wahrscheinlich Takt und Richtung neben noch einigen anderen Nebenleitungen (Mikroschritt, Strom, …).

Ich meine, mich erinnern zu können, dass der Schritt am Motor üblicherweise entweder auf die fallende oder die steigende Flanke des Taktes ausgelöst wird.




_ _ _ _
T_| |_| |______| |_| |
_____
R______________|




Beispiel oben: Wenn's die fallende Flanke ist, sollte das Richtungssignal bei steigender Flanke umgeschaltet werden. Sonst isses zu spät.

roboflop
08.08.2018, 16:07
Ich benutze folgende Stepperendstufe: https://www.amazon.de/Quimat-Schrittmotor-stepper-56-2oz-Segmente/dp/B06XSBB45M/ref=sr_1_2?ie=UTF8&qid=1533736343&sr=8-2&keywords=nema+17+driver
Ich kann aus der Programmierung heraus nicht ablesen wo und wann der Schritt ausgelöst wird.
Hier habe ich mal zwei Screenshots gemacht. In Stepper Motor werden die ganzen Werte eingespeist und dann an Stepper Write übergeben. Stepper To Go überprüft dann ob die Zahl der Schritte ausgeführt wurde.
Nach erneutem Testen habe ich festgestellt, dass dieser Fehler egal in welche Richtung ich anfange immer nur gegen den Uhrzeigersinn auftritt, sprich wenn Direction auf +1 gesetzt ist.
33562 33563 33564

Holomino
09.08.2018, 09:52
Klingt so, als ob ein übervorsichtiger Programmierer am Ende eines Fahrbefehls die Richtungsleitung auf einen festen Pegel setzt und zusätzlich die falsche Taktflanke zur Umschaltung nutzt.

Wie ist das jetzt bei Dir? Steuert der Arduino die Stepperendstufen an? Wer hat den programmiert? Hast Du Zugriff auf die Quellen?

Aus Deinem Link auf die Endstufen werde ich auch nicht ganz klug (kein Datenblatt?). Jeweils +/- für EN/DIR,.. kann heißen:
- Da sitzt nen Optokoppler als Schutz am Eingang
- Die Minuseingänge sind optionale Anschlussmöglichkeiten mit Signalinvertern

Kannst Du mal schauen, was davon wie bei Dir verdrahtet ist?

Wenn's nen Inverter ist, kann man das Taktsignal vielleicht an den Minuseingang anschließen.
Bei nem Optokoppler würde man die Logik drehen, indem man den Plus auf Logikspannung und den Minus auf das Taktsignal schaltet (oder eben Masse auf Minuseingang und Takt auf Plus).