Forum

Einloggen | Registrieren | RSS  

Offroad GTI(R)

19.11.2025,
11:20
(editiert von Offroad GTI
am 19.11.2025 um 15:07)


@ grindstone

Arduino Programmierung "speciale"

» » Das ist ein ganz klassischer BCD-Schalter (genau genommen drei Stück).
» Also drei Schalter mit je 4 Ausgängen und 10 Stellungen (von 0 bis 9), je
» einer für Hunderter / Zehner / Einer, so wie ich es verstehe.
Genau.

» Übertragungstechnisch braucht man für die Drehrichtung nicht unbedingt
» eine extra Leitung. Man kann das auch so lösen, dass man für die eine
» Drehrichtung positive Werte sendet und für die andere Drehrichtung
» negative (=höchstwertiges Bit gesetzt).
Das macht dann aber die Programmierung der SPS wieder komplizierter. Die Impulse erzeuge ich jetzt auch nur über einfache Timer-Bausteine und Zähler.

» verdrahtet sind. Könntest du eine Skizze hochladen?
Schaltplanseite 1 (der S12 ist hier nicht relevant, aus Ermangelung an Digitaleingängen habe ich hier schon den Umweg über einen Analogwert genommen):

Schaltplanseite 2:


Und so sieht der Versuchsaufbau aus. Irgendwo ist da bestimmt auch Chaos im System :-P Bevor der ganze Krempel in die Maschine kommt, müssen erst mal alle Funktionen erprobt werden.


Deine Programmierarbeit kommt also einem sehr guten Zweck zugute ;-)

grindstone(R)

E-Mail

Ruhrpott,
20.11.2025,
11:11
(editiert von grindstone
am 20.11.2025 um 11:20)


@ Offroad GTI

Arduino Programmierung "speciale"

» Irgendwo ist da bestimmt auch Chaos im
» System :-P

Da möchte ich jetzt nicht widersprechen :-D

Scheint ja Teil von etwas größerem zu sein, da spare ich mir wohl lieber meine Verbesserungsvorschläge. Nur einige Fragen zum Verständnis. Zu Schaltplanseite 2: Ich nehme an, -A300 im Rechteck +M1 ist der Schrittmotortreiber, PUL- ist der Takteingang, DIR- der Eingang für die Drehrichtung und die Anschlüsse PUL+ und DIR+ liegen permanent auf 5 V.
Das grüne Rechteck auf der Arduino-Platine dürfte der Arduino selbst sein. D7 ist der Taktausgang, D6 der Ausgang für die Drehrichtung. D9 und D10 sind die Rückmeldungen für ENDE und DREHRICHTUNG, da müsste ich dann noch wissen, was was ist.
Korrigiere mich bitte, wenn ich etwas falsch verstanden habe.
D11 gibt mir allerdings Rätsel auf.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

20.11.2025,
13:08
(editiert von Offroad GTI
am 20.11.2025 um 14:06)


@ grindstone

Arduino Programmierung "speciale"

» da spare ich mir wohl lieber meine Verbesserungsvorschläge.
Sag ruhig. Wobei Anpassungen nur noch in geringem Umfang ohne großen Aufwand möglich sind.

» Nur einige Fragen zum Verständnis. Zu
» Schaltplanseite 2: Ich nehme an, -A300 im Rechteck +M1 ist der
» Schrittmotortreiber, PUL- ist der Takteingang, DIR- der Eingang für die
» Drehrichtung und die Anschlüsse PUL+ und DIR+ liegen permanent auf 5 V.
» Das grüne Rechteck auf der Arduino-Platine dürfte der Arduino selbst
» sein. D7 ist der Taktausgang, D6 der Ausgang für die Drehrichtung.
Bis hier alles richtig.

Im Timing-Diagramm habe ich das mit vermerkt.
Eingang D9=Start
Eingang D10=Hand
Ausgang D11=Quittierung/Ende

Offroad GTI(R)

27.11.2025,
10:40

@ Offroad GTI

Arduino Programmierung "speciale"

Habe mal etwas mit dem Timing experimentiert.
Ein 250ms Zeitfenster für die Befehlsausgabe der LOGO läuft recht zuverlässig (Teilweise variieren die Breiten der Impulse aber schon recht deutlich, wie man sieht... )


Aber das sollte ja nicht weiter stören, da es nur um die Anzahl der Impulse geht.

grindstone(R)

E-Mail

Ruhrpott,
27.11.2025,
13:25

@ Offroad GTI

Arduino Programmierung "speciale"

» Habe mal etwas mit dem Timing experimentiert.
» Ein 250ms Zeitfenster für die Befehlsausgabe der LOGO läuft recht
» zuverlässig (Teilweise variieren die Breiten der Impulse aber schon recht
» deutlich, wie man sieht... )
»
»
» Aber das sollte ja nicht weiter stören, da es nur um die Anzahl der
» Impulse geht.
Na ja, die Torzeit -also die Zeit, in der das Programm auf eintreffende Impulse wartet- sollte lang genug sein, um das Signal sicher zu detektieren, aber auch nicht unnötig viel länger, weil das eine Ansprechverzögerung bedeutet.

Sehe ich das richtig? Signal 1 (in Gelb) ist das Eingangssignal für die LOGO, mit der der Arduino nicht direkt in Kontakt kommt, und Signal 2 (in Cyan) ist die Spannung an D9.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

27.11.2025,
14:03

@ grindstone

Arduino Programmierung "speciale"

» Na ja, die Torzeit -also die Zeit, in der das Programm auf eintreffende
» Impulse wartet- sollte lang genug sein, um das Signal sicher zu
» detektieren, aber auch nicht unnötig viel länger, weil das eine
» Ansprechverzögerung bedeutet.
Genau.

» Sehe ich das richtig? Signal 1 (in Gelb) ist das Eingangssignal für die
» LOGO, mit der der Arduino nicht direkt in Kontakt kommt
Nein, hatte das vergessen dazu zu sagen. Das ist der Eingang D10 "HAND".
Im Handbetrieb wird der etwa 50ms vor dem(n) Startimpuls(en) auf 1 gesetzt.

» und Signal 2 (in Cyan) ist die Spannung an D9.
Korrekt.

grindstone(R)

E-Mail

Ruhrpott,
27.11.2025,
14:44

@ Offroad GTI

Arduino Programmierung "speciale"

» » Na ja, die Torzeit -also die Zeit, in der das Programm auf eintreffende
» » Impulse wartet- sollte lang genug sein, um das Signal sicher zu
» » detektieren, aber auch nicht unnötig viel länger, weil das eine
» » Ansprechverzögerung bedeutet.
» Genau.
»
» » Sehe ich das richtig? Signal 1 (in Gelb) ist das Eingangssignal für
» die
» » LOGO, mit der der Arduino nicht direkt in Kontakt kommt
» Nein, hatte das vergessen dazu zu sagen. Das ist der Eingang D10 "HAND".
» Im Handbetrieb wird der etwa 50ms vor dem(n) Startimpuls(en) auf 1
» gesetzt.
»
» » und Signal 2 (in Cyan) ist die Spannung an D9.
» Korrekt.
Dann müsste nach meinem Verständnis das Signal "HAND" aber auch zur LOGO gehen, damit sie weiß, wann sie die Impulse senden muss.
Da wäre es (nur mal als Vorschlag und falls das entsprechende Umprogrammieren der LOGO möglich sein sollte) doch besser, wenn bei "HAND" D9 direkt das Richtungssignal darstellt (z.B L = linksrum, H = rechtsrum). Dann gäbe es im Handbetrieb auch keine Ansprechverzögerung.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

27.11.2025,
15:17

@ grindstone

Arduino Programmierung "speciale"

» Dann müsste nach meinem Verständnis das Signal "HAND" aber auch zur LOGO
» gehen, damit sie weiß, wann sie die Impulse senden muss.
Sicher doch :-)
Hier eine etwas ausführlichere Beschreibung.
Es ist nicht so, dass der HAND-Taster direkt auf den Arduino geht. Der Taster (wie alle anderen auch) ist an die LOGO angeschlossen und im Programm gibt es dann noch diverse Freigaben/Verriegelungen, bis der Befehl HAND tatsächlich an den Arduino ausgegeben wird.

» Da wäre es (nur mal als Vorschlag und falls das entsprechende
» Umprogrammieren der LOGO möglich sein sollte) doch besser, wenn bei "HAND"
» D9 direkt das Richtungssignal darstellt (z.B L = linksrum, H = rechtsrum).
Da die Codierung der Richtung (1 Impuls / 2 Impulse) schon für den Automatik-Modus verwendet wird, sollte der auch für den Handbetrieb übernommen werden. Das Programm in der LOGO ist jetzt schon unübersichtlich genug :-D

» Dann gäbe es im Handbetrieb auch keine Ansprechverzögerung.
250ms sind ja fast nicht zu merken und nicht weiter tragisch.

grindstone(R)

E-Mail

Ruhrpott,
27.11.2025,
18:25

@ Offroad GTI

Arduino Programmierung "speciale"

» Da die Codierung der Richtung (1 Impuls / 2 Impulse) schon für den
» Automatik-Modus verwendet wird, sollte der auch für den Handbetrieb
» übernommen werden. Das Programm in der LOGO ist jetzt schon
» unübersichtlich genug :-D
Das heißt also -wenn ich es richtig verstehe- der Start des Automatik-Modus erfolgt NUR über die Impulse auf D9, es gibt kein separates Signal dafür.

» » Dann gäbe es im Handbetrieb auch keine Ansprechverzögerung.
» 250ms sind ja fast nicht zu merken und nicht weiter tragisch.
Ungefähr soviel wie die Autorepeat-Verzögerung auf der Computertastatur.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

27.11.2025,
18:36

@ grindstone

Arduino Programmierung "speciale"

» » Da die Codierung der Richtung (1 Impuls / 2 Impulse) schon für den
» » Automatik-Modus verwendet wird, sollte der auch für den Handbetrieb
» » übernommen werden. Das Programm in der LOGO ist jetzt schon
» » unübersichtlich genug :-D
» Das heißt also -wenn ich es richtig verstehe- der Start des
» Automatik-Modus erfolgt NUR über die Impulse auf D9, es gibt kein
» separates Signal dafür.
Exactamente.

grindstone(R)

E-Mail

Ruhrpott,
29.11.2025,
12:52
(editiert von grindstone
am 29.11.2025 um 13:33)


@ Offroad GTI

Arduino Programmierung "speciale"

Eigentlich könntest du auf ein separates "Hand"-Signal verzichten, D9 könnte das ebenfalls übernehmen, indem du nach den Impulsen den Pegel auf H setzt.
Die erste positive Flanke von D9 startet die Torzeit, beispielsweise 250ms. Während der Torzeit zählt der Arduino die negativen (und NUR die negativen) Flanken des Signals. Wenn die Torzeit abgelaufen ist, wird DIR entspreched der Anzahl der negativen Flanken (eine oder zwei) gesetzt. Anschließend überprüft der Arduino den Pegel von D9. Ist er L, bedeutet das Automatikmodus, wie gehabt. Der Arduino liest die Codierschalter und gibt die entsprechende Anzahl von Taktimpulsen aus. Ist der Pegel H, bedeutet das Handmodus, und der Arduino sendet kontinuierlich Taktimpulse, bis D9 auf L wechselt.

Macht der Arduino noch andere Sachen, oder ist das hier seine einzige Aufgabe?

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

29.11.2025,
18:51

@ grindstone

Arduino Programmierung "speciale"

» Eigentlich könntest du auf ein separates "Hand"-Signal verzichten, D9
» könnte das ebenfalls übernehmen, indem du nach den Impulsen den Pegel auf
» H setzt.
Sehr gute Idee. Das müsste in der LOGO auch relativ einfach zu programmieren sein. Und ein weiterer freier Ausgang kann ja auch nicht schaden, vielleicht wird der nochmal für eine zukünftige Zusatzfunktion gebraucht.

» Macht der Arduino noch andere Sachen, oder ist das hier seine einzige
» Aufgabe?
Nein, der soll nur den Schrittmotor steuern.
Vermutlich hätte er auch die ganze SPS ersetzten können, aber dafür ist es nun wirklich zu spät :-D

grindstone(R)

E-Mail

Ruhrpott,
15.12.2025,
17:14

@ Offroad GTI

Arduino Programmierung "speciale"

Entschuldige, es hat etwas gedauert, aber ich habe dich nicht vergessen. Die Vorweihnachtszeit ist bei mir immer recht besinnlich, d.h. alle besinnen sich darauf, was sie mir noch aufhalsen könnten. :-D
Nach bestem Wissen und Gewissen, das Programm kompiliert fehlerfrei, ist aber ungetestet:

https://www.elektronik-kompendium.de/forum/upload/20251215171034.ino

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Offroad GTI(R)

16.12.2025,
13:45

@ grindstone

Arduino Programmierung "speciale"

» Entschuldige, es hat etwas gedauert, aber ich habe dich nicht vergessen.
Vielen Dank, dass du dich der Sache überhaupt angenommen hast :ok:

» https://www.elektronik-kompendium.de/forum/upload/20251215171034.ino
Werde ich mir ansehen, und dann berichten. Wird dieses Jahr (aus Gründen) aber nicht mehr :-D

Offroad GTI(R)

19.12.2025,
19:25

@ Offroad GTI

Arduino Programmierung "speciale"

» » Entschuldige, es hat etwas gedauert, aber ich habe dich nicht
» vergessen.
» Vielen Dank, dass du dich der Sache überhaupt angenommen hast :ok:
»
» » https://www.elektronik-kompendium.de/forum/upload/20251215171034.ino
» Werde ich mir ansehen, und dann berichten. Wird dieses Jahr (aus Gründen)
» aber nicht mehr :-D
Zumindest ansehen konnte ich mir das Programm jetzt.
Für den Automatik-Modus ist zwar der Kommentartext vorhanden, aber sonst nichts. Irgendwie muss dort ja noch sinnvoll das Auslesen des MCP23017 und die Verrechnung mit einem noch zu bestimmenden Faktor integriert werden. Da stellt sich mir die Frage, ob man das alles innerhalb von loop() macht, oder übergeordnet. Letzteres erachte ich für sinnvoller, da der BCD Schalter nicht pausenlos umgestellt wird :confused:
Der Binärausgang für die Quittierung fehlt auch, aber das bekomme ich bestimmt selbst dazu programmiert.