STM32 2-Motoren ansteuern

Hallo

ich wollte einen 2. Motor über einen STM32-F1 (Blue Pill) anschließen.

Bisher ich habe den Motor am A0,A1,A2 (über eine L293D) angeschloosen.
A4,A6,B5,B8,B9 sind für I/O Eingänge und B6,B7 für den I²C-Bus.
Welche Anschlüsse kam man für einen 2. Motor (auch über einen L293D) nehmen?
(Ich brauche hier auch eine PWM)

Viele Grüße
Martin

Kennst Du dieses Bildchen? Da kannst Du sehen, welche Pins PWM-fähig sind.

Vielen Dank
d.h. ich kann PP8 für PWM
und PB3 - PB4 für die Richtung nehmen?

Gruß Martin

Sollte gehen ( ich nehme an, Du meinst PB8 für PWM )

Hallo MicroBahner

ja genau.
aufgrund des Nickname nehme ich mal an, dass du auch eine Bahn hast/baust.
Brauche den 2. Motorausgang für ein Kirmeskarrussel (Top-Spin).

Gruß Martin

Martin-11:
aufgrund des Nickname nehme ich mal an, dass du auch eine Bahn hast/baust.

Er bietet auch eine sehr nützliche Bibliothek an.

Hallo,

Danke für den Tipp.
Die Lib DCC_Zubehoerdecoder ließt also das DCC Signal und man kann Servos's, LED und Relais Steuern?
Muß ich mir mal genauer ansehen (hab z.z. leider wenig Zeit).
Frage vorab: Die DCC Spannung muß aber Hardware mäßig noch angepasst werden?

Gruß Martin

Hallo Martin,
ja, Du hast meinen Nicknamen richtig interpretiert.

Der DCC-Zubehoerdecoder ist keine Lib, sondern ein vollständiger Sketch, den man mit HIlfe einer Konfigurationsdatei an die gewünschte Aufgabe anpassen kann. Und ja, man kann damit über DCC-Kommandos Servo's, Leds ( speziell auch Lichtsignale mit weichem Überblenden der Signalbilder ), Doppelspul-Weichenantriebe auch Relais ansteuern.
Das DCC-Signal muss man natürlich an die Eingangsspannung des Arduino anpassen. Im Manual ist eine Schaltung angegeben,wie man das machen kann. Wenn Du CV's auslesen willst, brauchst Du noch eine kleine zusätzliche Schaltung.

Die Lib, die auch im DCC-Decoder genutzt wird, sind die 'MobaTools'. Die kann man natürlich auch unabhängig vom DCC-Decoder nutzen.

Sowohl die Bibliothek, als auch der DCC-Decoder laufen auch auf den STM32F1 Prozessoren ( z.B. dem 'Blue Pill' )

@agmue: Danke für die Werbung :wink:

MicroBahner:
@agmue: Danke für die Werbung :wink:

Bitte gerne, tue ich aus Überzeugung!

Hallo Franz-Peter,

ich habe mir gestern die DCC Zubehoerdecoder angesehen.
Tolle Leistung, die du da gemacht hast.

Sehr gute Dokumentation und Zeichnungen (wir benutzen das selbe Programm).

Zur Hardware habe ich eine Frage:
Das DCC Signal wird über die Opto-Koppler getrennt und an D2 und D4 angeschlossen.
Muss man das für jeden Arduino machen oder kann man D2/D4 an mehreren parallel anschließen?
Speichert du die CV Werte im Flash?
Ich habe gelesen, dass man CV-Werte auslesen kann, wie ist das Vorgesehen?

Gruß Martin

Hallo Martin,
danke für die Blumen :slight_smile: .

Zu deinen Fragen:
D2 ist der Eingang für das DCC-Signal. Das kann man grundsätzlich auch an mehrere Arduinos anschließen.
D4 ist ein Ausgang für das Lesen von CV-Werten. Schon von daher kann man die also nicht parallel schalten. Dann muss man noch wissen, dass das Auslesen von CV-Werten bei DCC nur auf dem 'Programmiergleis' funktioniert - Und da darf dann sowieso nur ein Decoder angeschlossen sein.

Wenn Du auf das Auslesen der CV-Werte verzichtest, kann die Schaltung auch vereinfacht werden ( wie im Lichtsignalbeispiel auf der letzten Seite ). Dann hast Du nur noch einen Anschluß an D2. Wenn Du dann mehrere Decoder angeschlossen hast, musst Du für das CV-Programmieren die POM-Methode anwenden ( POM= Programming on the Main / Programmieren auf dem Hauptgleis ). Auslesen geht da dann aber wie gesagt nicht.

Die gesamte CV-Verwaltung übernimmt die NmraDcc-Library. Die Werte werden mit der EEPROM-Lib gespeichert. Bei den AVR-Arduinos ist das dann das integrierte EEPROM ( das verträgt mehr Schreiboperationen als das Flash ). Da die STM32 kein integriertes EEPROM haben, wird das im Flash emuliert. Das macht aber der Arduino-Core des STM32duino. Da merkt man als Anwender nichts von.

Danke für die Info.
Zu D2 und D4 hätte ich auch selber drauf kommen müssen, man sieht es an den Opto-Kopplern.
Das Auslesen ist manchmal nützlich, darauf sollte man nicht verzichten.

Ich steuere meine LCD-Anzeigen über den I²C Bus.
Vielleicht könnte man über den I²C-Bus und einem I/O Expander (MCP23017) die Anzahl der Ausgänge erhöhen?

Gruß Martin

Martin-11:
Vielleicht könnte man über den I²C-Bus und einem I/O Expander (MCP23017) die Anzahl der Ausgänge erhöhen?

Grundsätzlich schon. Allerdings unterstützen das derzeit die MobaTools und der DCC-Decoder nicht. Für einige der Funktionen ( Servo, Softleds ) wäre das auch zu langsam. Für z.B. Relaisausgänge oder das einfache Ein/Ausschalten von Leds wäre das aber denkbar.

Wobei so ein Expanderboard aber kaum billiger ist als z.B. eine komplette Blue Pill.