Schritteite bei Encoder-Motor programmieren?

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 14 Jan 2025, 18:18

Liebe Community,

ich habe eine grundsätzliche Frage zur Funktion eines Encoder-Motors.
Ich bitte um Nachsicht, aber als Neuling bei der Thematik Robotics stellt man nun mal solche Fragen … ;-)

Ich hatte es so verstanden, daß man mit dem „setze Motor … “-Befehl nicht nur die Geschwindigkeit, sondern auch die Schrittweite vorgeben kann (z.B. „75“) – der Motor dreht dann 75 Schritte und hält dann an. Um mir das konkret in einem Programm anzusehen, habe ich in Anlehnung an „Einführung Robo Pro Coding“, S. 224, ein solches Programm auf den Controller geladen. Ich beobachte, dass der Motor zu drehen beginnt – aber nicht anhält, sondern munter weiterdreht.

Frage: ist mein Verständnis der Encoder-Motor-Funktion nicht richtig? Ist das Programm evtl. nicht korrekt?

Vielleicht erbarmt sich ein Mitglied aus der Community und hilft mir Grünschnabel bei den ersten Schritten.

Vielen Dank!

Philipp

P.S.: "Schrittweite = 75" steht für eine volle Umdrehung der Motorachse?

*https://www.ftcommunity.de/knowhow/comp ... gKlein.pdf
Dateianhänge
Test-Programm für Encoder-Motor mit Schrittweite 100
Test-Programm für Encoder-Motor mit Schrittweite 100
20250114_180140.jpg (621.35 KiB) 15015 mal betrachtet

werli
Beiträge: 85
Registriert: 25 Apr 2024, 10:42

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von werli » 14 Jan 2025, 20:25

Moin PhilippS,

du hast dein Programm in die Schleife "dauerhaft wiederholen" gepackt.
Das bedeutet, wenn dein Programm abgelaufen ist, dann startet es sofort wieder neu.
Das geht so schnell, dass du das Stoppen des Motors nicht merkst.

Setze hinter die Anweisung "stoppe Motor" z.B. eine Soundausgabe und eine Wartezeit, dann wird dir die Pause zwischen den Programmdurchläufen durch ein Geräusch angekündigt.

Wenn dein Programm nur einmal durchgeführt werden soll, dann musst du den dunkelgrünen Block "dauerhaft wiederholen" weg lassen.
lg werli

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schrittweite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 15 Jan 2025, 19:06

Danke Werli,
Dein Vorschlag mit Setzen eines Audio-Signals und der Pause hat meinem Verständnis sehr geholfen!

Ich muß aber nochmal hartnäckig sein, denn das Prinzip des Encoder-Motors scheint mir doch noch nicht so richtig klar zu sein.
Kannst Du evtl. folgende Fragen beantworten?
1) Grundsätzlich: ist ein Encoder-Motor so etwas wie ein „Schrittmotor“?
2) Bei dem Programm (s.u.) habe ich den Eindruck, dass die Dauer des Motorlaufs von der Wartezeit (hier: „ 5 s“) abhängig zu sein scheint. Sollte für die Dauer nicht die Schrittweite verantwortlich sein? Bei „5 s“ dreht die Welle 7 mal, bei „2 s“ 1,5 mal.
3) Würde der Wert für die Schrittweite „75“ für eine Umdrehung der Achse stehen?
Kannst Du hier nochmal helfen?

Vielen Dank im Voraus!

Philipp
Dateianhänge
Programm mit Schrittgeschwindigkeit und Wartezeit
Programm mit Schrittgeschwindigkeit und Wartezeit
20250115_131622.jpg (422.09 KiB) 14890 mal betrachtet

vleeuwen
Beiträge: 1609
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von vleeuwen » 15 Jan 2025, 23:06

(For translation you can use something like Google translate.)
A stepper is absolutely not the same as an encoder motor.
A stepper has no feedback sensor. However their are existing steppers with an integrated quadrature encoder (2 bit pulse, gray coded, direction info).
The encoder motor has a pulse sensor (incrementele encoder) and the combination of an encoder motor with the fast counter is a closed loop control black box.
The encoder motor works with an incremental counter (1 bit pulse, no direction info).

You can try something like this:
Configuration:
encoder02.JPG
encoder02.JPG (15.81 KiB) 14848 mal betrachtet
Don't forget to connect the encoder of M1 with the C1.
Program snip:
encoder01.JPG
encoder01.JPG (35.16 KiB) 14848 mal betrachtet
software enigineer/teacher/advisor
Google translate
http://tescaweb.nl/Carel/?p=713

werli
Beiträge: 85
Registriert: 25 Apr 2024, 10:42

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von werli » 15 Jan 2025, 23:44

Moin PhillipS,

zu 1)
Nein es ist kein Schrittmotor, es ist ein einfacher Universalmotor, der auf seiner Achse einen Encoder hat, dessen Impulse durch den Zähleingang am Controller bei Drehung gezählt werden.

zu 2)
Da ist irgendwas im Argen.
Als Programm nehme ich Programmstart, darin enthalten die Anweisung "setzte Motor M1 - Geschwindigkeit 150 - Schrittweite 75), dann "warte s 20", nur diese beiden Anweisungen in Programmstart.
Ich habe gerade 2 TXT40 Controller im Einsatz (mit gleicher FW3.1.8 - aktuelle FW):
Controller 1 lässt den Encodermotor eine ca. halbe Umdrehung machen
Controller 2 lässt den Encodermotor für 20 Sekunden im Dauerlauf
Beides passt nicht annähernd auf 75 Schritte = 1 Umdrehung, ich bin da gerade etwas ratlos.

Leider muss ich ab morgen für einige Tage ins Krankenhaus mit anschliessender Reha. Sorry, da muss ich dich leider auf deinem Problem sitzen lassen. Ich hoffe, dass dir ein anderes Forum-Mitglied weiterhilft.

zu 3)
Es gibt leider unterschiedliche Encodermotore von ft, die ältere Version hat 63,3333 Impulse pro Umdrehung, die neue Version hat 75 Impulse pro Umdrehung.
lg werli

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 16 Jan 2025, 20:23

Hallo Werli,

vielen Dank für Deine Antwort!

Bitte nicht falsch verstehen: ich bin "beruhigt", dass nicht nur ich solche Erfahrungen mit dem Encoder zu machen scheine ... ;-)

Dir einen guten Krankenhausaufenthalt und eine erfolgreiche Reha!

Bis zu einem späteren Zeitpunkt wieder!

Viele Grüße

Philipp

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 16 Jan 2025, 20:27

Hello vleeuwen,

Thank you for your elaborate explanation!

Please allow a couple of days for me to follow your suggestions myself.

Best regards,

Philipp

Benutzeravatar
fishfriend
Beiträge: 2218
Registriert: 26 Nov 2010, 11:45

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von fishfriend » 17 Jan 2025, 12:21

Hallo...
Es ist die Frage wer was macht.
Beim Schrittmotor macht man im Programm die Umschaltung der Ausgänge, die dann Schritte vom Schrittmotor machen.
Beim Encodermotor, gibt man einer weiteren "Motorsteuerung" im Interface vor, was sie machen soll.
Wenn man sagt dreh dich um soundsoviel, macht die Motorsteuerung es. Das Programm läuft dabei aber weiter.
Wenn man am Ende der Drehung was machen will, muss man dieses Ende abfragen oder bis dahin warten lassen.
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 18 Jan 2025, 15:58

Vielen Dank!
Trotz all der guten Beiträge, scheinen der Encodermotor und ich keine Freunde zu werden …

Es geht um den Stopp des Motors nach Erreichen der Anzahl der vorgegebenen Impulse/Schrittweite. Ich habe nun das offizielle ft-Programm „Boom_Gate_with_Pushbutton_Switch“ auf den Controller übertragen – zwar dreht der Motor nach Drücken des Schalters 2 (Bedarfsmeldung), stoppt dann aber nicht.

Da diese Beobachtung nun bei einem offiziellen ft-Programm vorfällt, bin ich ziemlich ratlos. Ich denke schon, dass ich die Kabel gemäß Anleitung (Robotics TXT 4.0 Base Set) verschaltet habe.

Kann mir da jemand helfen? Kann es doch an der Verschaltung liegen? Motor defekt?

Ich würde mich sehr freuen, wenn jemand zu meinem „Problem“ einen Kommentar abgeben würde – vielen Dank!
Philipp
Dateianhänge
Boom_Gate_with_Pushbutton_Switch
Boom_Gate_with_Pushbutton_Switch
20250118_155110.jpg (654.49 KiB) 14622 mal betrachtet

Benutzeravatar
EstherM
Beiträge: 1585
Registriert: 11 Dez 2011, 21:24

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von EstherM » 18 Jan 2025, 18:56

Hallo Phillip,
Hast Du den Motor richtig verkabelt? Stecken die Kabel für den Motor und die für den Zähler an der richtigen Stelle?
Stimmt die Konfiguration des Controllers (s. Carels Screenshot (posting.php?f=8&mode=reply&t=8762&sid=0 ... 8a#pr67454)) ?
Probiere mal das einfachste mögliche Beipiel:
Screenshot_20250118-184355~2.jpg
Screenshot_20250118-184355~2.jpg (19.5 KiB) 14581 mal betrachtet
Mit systematischer Suche sollte der Fehler zu finden sein.
Wenn Du vermutest, dass der Motor kaputt sein könnte: funktioniert ein anderer Motor des gleichen Typs?
Gruß Esther

Benutzeravatar
uffi
Beiträge: 413
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von uffi » 19 Jan 2025, 11:55

fehlt in Euren Programmen nicht noch der Stop des Motors, nachdem die Schrittweite getan wurde und die Position erreicht wurde?

Benutzeravatar
EstherM
Beiträge: 1585
Registriert: 11 Dez 2011, 21:24

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von EstherM » 19 Jan 2025, 12:01

Hallo zusammen,
uffi hat geschrieben:
19 Jan 2025, 11:55
fehlt in Euren Programmen nicht noch der Stop des Motors, nachdem die Schrittweite getan wurde und die Position erreicht wurde?
In meinem Progrämmchen hält der Motor nach dem Erreichen der Position von alleine an.
Gruß Esther

Karl
Beiträge: 2502
Registriert: 24 Sep 2016, 17:28

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von Karl » 19 Jan 2025, 12:24

Hallo,
habe zwar das bunte "Klicki-Micki" Programm schon praktisch seit Erscheinen auf einem Rechner.
Aus diversen Gründen aber immer noch keinen TXT4.0.
Da ja Fischertechnik als "hochwertiges" Lehrmittel für z. B. große und kleine Kinder angepriesen wird...,
ich vermisse eine ausführliche Hilfestellung bei dem Programm.
Da hapert es oft bei Anfänger-Anwendern beim Zerlegen von Tätigkeiten eines Gerätes oder Maschine
in einzelne Programmschritte.
So einen einfachen Hinweis finde ich noch nicht einmal bei "Coding". Dazu ein vernünftiges Tutorial zum
Programmieren mit vielen Muster-Beispielen. Normalerweise muß ein "kindgerechtes" Lehrheft, so für
ab 2 ;) Jahren, für das "Robo-Pro-Coding" vorhanden sein. Schätze mal..., so mit ein "kiloSeite" (Seite x 1000).
Gut, man könnte auf den "Python-Teil" verweisen und dazu noch auf externe Python-Literatur. Prinzipiell
kann ich dann doch auf den bunten Programmteil verzichten und spare mir den Stress mit dem Hin- und
Hergucken.
Habe früher SPS-Programme auch lieber in AWL geschrieben. Kurze Bemerkungen bei großen Programmen auf
einem danebenliegenden "Schmierzettel". KOP und FUP waren bei sehr vielen Bearbeitungsschritten für mich meist sehr
unübersichtlich, auch in Blöcken.

Benutzeravatar
fishfriend
Beiträge: 2218
Registriert: 26 Nov 2010, 11:45

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von fishfriend » 20 Jan 2025, 14:28

Hallo...
Nimm mal nur den Motor ohne weiteres Modell. So dass er frei drehen kann. Nicht das die eine Schranke mechanisch blokiert.
Geh mal auf den Schnittstellentest.
Wenn du den Regler von Motor M1 nach rechts rüberziehst oder drauf klickst, muss der Motr anfangen zu drehen.
Gleichzeitig kann man unten bei Zähler C1 sehen, wie er hochzählt.

Wenn nicht, ist was mit der Verkabelung.
Motor dreht nicht - falscher Ausgang z.B. M2 oder Kabelbruch/Kable in´m Stecker keinen Kontakt

Motor dreht - Zähler zählt nicht
Blauer Stecker richtig rum? (Ja sollte nicht gehen, aber trotzdem nachschauen)
Schwarz in den C1 (rechts)
Grün in die Masse links beim C1
Rot in 9V Out in der unteren Reihe

Dann sehen wir mal weiter.
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 20 Jan 2025, 16:20

Vielen herzlichen Dank für all die Kommentare!

Ich habe leider erst wieder in drei Wochen die Möglichkeit, Eure Kommentare bei meinem Modell umzusetzen - das stellt die Geduld schon auf eine große Probe ...

Ich werde mich dann in drei Wochen wieder melden. :-)

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 20 Jan 2025, 16:28

Doch noch eine Verständnisfrage an Esther:
"Schrittweite 200" sind dann so ungefähr 3 Umdrehungen (200/63,9 = 3,1)?
Vielen Dank!

Benutzeravatar
EstherM
Beiträge: 1585
Registriert: 11 Dez 2011, 21:24

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von EstherM » 20 Jan 2025, 17:25

Hallo Philipp,
PhilippS hat geschrieben:
20 Jan 2025, 16:28
Doch noch eine Verständnisfrage an Esther:
"Schrittweite 200" sind dann so ungefähr 3 Umdrehungen (200/63,9 = 3,1)?
Ich habe beim Ausprobieren des Progrämmchens einfach einen runden Wert genommen, der lange genug war, dass ich die Tätigkeit des Motors nicht verpasse, aber auch kurz genug, dass ich mich beim Durchlauf nicht langweile. Außerdem ist 200 so groß, dass die Hälfte davon ein deutlich merkbares Laufen und Stoppen des Motors bewirkt und der Unterschied in der Laufzeit zwischen beiden Werten deutlich zu merken ist, ohne dass ich die Zeit stoppen muss oder die Umdrehungen zählen muss.
Kurzum: der Wert ist eigentlich zufällig.
Gruß
Esther

werli
Beiträge: 85
Registriert: 25 Apr 2024, 10:42

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von werli » 22 Jan 2025, 21:38

Moin PhilippS,

ich bin bis zur Nachbehandlung etwas @home und habe meine Ungereimtheiten mit den beiden TXT40 beseitigen können. Nachdem ich beide Controller auf Werkseinstellung + Update auf aktuelle FW gebracht habe, passiert die Motorfunktion nun wie gewünscht/erwartet.

Grundsätzliche Funktion:
"setze Motor mit Geschwindigkeit und Schrittweite" wird nach Aufruf auf dem für die Motore zuständigen Co-Proz ausgeführt und wird unabhängig zum aufrufenden Programm ausgeführt. Der ausgewählte Motor wird gestartet, dreht mit vorgegebener Geschwindigkeit und wird durch die Motor-Routine auf dem Co-Proz zum vorgegebenen Schritt angehalten.
Das aufrufende Programm läuft dabei weiter. Dabei muss man beachten, dass eine neue Motorfunktion, die auf diesen Motor wirkt, die bisherige Funktion abbricht und die neue Funktion startet, so kann man z.B. den Motor vor erreichen der Schrittweite abschalten. Man muss aber durch die Programmierung verhindern, dass genau diese Motorfunktion nicht vor erreichen der Schrittweite zyklisch aufgerufen wird, denn sie würde mit jedem Aufruf den Schrittzähler wieder bei "0" starten und nie die Schrittweite erreichen - also den Motor endlos, bzw. bis zum PGM-Ende, drehen lassen.
Dieses zu realisieren gehört zur komplexen Programmierkunst, die einfachste Version ist die programmunterbrechende Wartezeit, die länger dauert wie der Motor benötigt, um die Schrittweite zu erreichen (andere Vorgehensweisen sollte in einem anderen Thema betrachtet werden).

Nimm bitte für deinen Versuch folgendes PGM:
ft-Motorbefehl_V1.jpg
ft-Motorbefehl_V1.jpg (28.7 KiB) 14213 mal betrachtet
  • mit PGM-Start wird der Motor gestartet
  • nahezu gleichzeitig startet die Wartezeit (in den grosszügigen 20 Sekunden schafft der Encodermotor die Schritte)
  • nach den 20 Sekunden wird der Wert des Encoders in der Konsole (unterer Bildschirmrand) ausgegeben (Dazu muss RPC den Controller mit Motor natürlich online steuern)
  • das PGM wird mit einem "Glockenton" beendet
Weil du erklärst, dass der Motor in deinem und auch in einem ft-Programm "nicht" stoppt, ist zu vermuten dass zum PGM-Ende eine "0" zur Anzeige kommt, weil der Encoder-Zähler nicht richtig arbeitet, oder ein Verdrahtungsproblem vorliegt, so wie Vleeuwen das zuvor schon aufgezeigt hat.

Prüfen kannst du das recht einfach über den "Schnittstellentest" (rechts oben, das zweite Icon links von "Controller verbinden").
  • In diesem Fenster den Slider für Motor 1 nach rechts schieben, der Motor dreht entsprechend Sliderstellung, die Drehrichtung ist egal, der Encoderzähler zählt immer nur vorwärts. Unten rechts solltest du nun sehen, das der benutzte Zähleingang seinen Wert inkrementiert. Die Motor-Nummer ist zwingend mit der Zähler-Nummer verknüpft.
  • Wenn ein anderer Zähler arbeitet dann hast du die falschen Buchsen erwischt, wenn kein Zähler arbeitet, dann ist der Encoder vielleicht eine Buchse zu hoch (auf M4) gesteckt.
  • Hast du die richtigen Buchsen benutzt, dazu prüfe die Drähte: roter Draht des Encoderkabels mit 9V-Buchse, grüner Draht mit Masse-Buchse (das "T", das auf dem Kopf steht, linke Buchsenspalte unter den Motor-Buchsen), schwarzer Draht mit C1-Buchse (rechte Spalte unter den Motor-Buchse).
  • Wenn das alles OK ist, dann gibt es noch eine gut versteckte Fehlemöglichkeit, das sind die aktuellen Schneidklemmenstecker. Die Litzendrähtchen der Encoderkabel werden durch die Schneidklemmen stark eingekerbt und reissen an diesen Stellen gerne im Stecker ab (besonders wenn man zum Steckerziehen am Draht zieht und nicht am Stecker selbst). Die Draht-Isolierung ist dann noch fest geklemmt, aber die elektrische Verbindung zwischen Draht und Stecker ist unterbrochen. Am besten hilft dazu ein Messgerät, um die Unterbrechung zu messen, wenn du sowas ncht hast, dann den Stecker öffnen und mit einer starken Lupe betrachten, ob man eine Unterbrechung erkennen kann.
  • Typischerweise sind immer mind. 2 Encodermotore im Baukasten enthalten, also auch 2 Encoder-Kabel, vielleicht mal die Kabel tauschen.
Ich hoffe, das war nicht zu ausführlich und hilft dir weiter, ansonsten gerne weiter fragen, wenn was unklar ist.
Viel Erfolg.
lg werli

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 23 Jan 2025, 14:45

Hallo Werli,
vielen Dank für Deine ausführliche Beschreibung zur Problembehebung! Ich hatte die letzten Tage Probleme mit dem Internet, deswegen habe ich Deinen Beitrag leider erst heute gesehen.

Wie oben bereits genannt, habe ich in den nächsten Wochen den Robotics-Kasten leider nicht zur Hand, weil beruflich unterwegs. Ich brenne aber schon, all die aus der Community genannten Vorgehensweisen umzusetzen.

Ich melde mich dann wieder!
Viele Grüße,
Philipp

PhilippS
Beiträge: 16
Registriert: 04 Jan 2025, 15:59

Re: Schritteite bei Encoder-Motor programmieren?

Beitrag von PhilippS » 19 Feb 2025, 14:02

Hallo werli,
endlich konnte ich mich um das Encoder-Problem kümmern.
Vorweg: vielen Dank für Deine Hinweise! Dem Schnittstellentest sei dank habe ich festgestellt, dass dort der Eingang C1 gar nicht mitzählte (mir war bis dato gar nicht bewusst gewesen, dass sich bei der Anzeige dort etwas angezeigt werden sollte). Ich habe dann das Encoder-Kabel gegen das zweite im Baukasten mitgelieferte ausgetauscht – und der Schnittstellentest zeigte, dass nun alle Verbindungen taten, was sie sollten 😊.

Ich werde nun das erste Encoder-Kabel reparieren (also die Steckverbindung prüfen – das schwarze Kabel evtl. etwas kürzen).

Einziger Wermutstropfen: leider will der Nachbau des von Dir vorgeschlagenen Programm nicht gelingen. Es geht um den grünen Block „hole Zähler Wert“. Ich kann dort die Eingabe „TXT_M1_C1“ nicht machen – bzw. diese ist beim Drop Down-Fenster gar nicht zur Auswahl gelistet (nur „-“). Nach dem Übertragen auf den Controller läuft das Programm gar nicht erst an (Anzeige auf dem Controller: „Programm angehalten“).

Könntest Du mir da noch einmal auf die Sprünge helfen? Vielen Dank!

Viele Grüße

Philipp

P.S.: ich hoffe, dass es Dir (wieder) gut geht!

Antworten