• Herzlich willkommen!

    Das Team von »Doctor Brick« heißt Euch herzlich willkommen und wünscht Euch viel Spaß hier!
    »Doctor Brick« ist eine anerkannte Community (RLOC) für erwachsene LEGO Enthusiasten, auch AFOLs (= Adult Fans Of LEGO) genannt.
    Wir können uns hier über alle Belange des LEGO Hobbys austauschen wie z.B. Set- und Teilefragen, Vorstellung und Rezensionen von Legobauten.
    Bitte beachtet die Nutzungsbedingungen und den Verhaltensleitfaden.

Custom RC Steuerung auf Basis eines Arduino

s4scha

Mitglied
Registriert
23 Aug. 2021
Beiträge
37
Werte Mitstreiter,

da es neben den LEGO-eigenen Lösungen zur Steuerung und Motorisierung von Modellen hier in der Community zahlreiche Alternativlösungen gibt, wollte ich auch mal meinen Lösungsansatz vorstellen. Nicht unbedingt, um jemanden davon zu überzeugen, sondern eher als weitere Inspiration (oder Abschreckung) für Euch. Es gibt hier also nichts zu kaufen. ;)

Angefangen hat mein Wunsch, ein Technic Modell zu bauen und gebührend zu elektrifizieren, schon vor drei Jahren. Die Ausgangslage war ein doch ansehnlicher Fundus aus Power Functions Motoren. Aber leider blieb uns ja der SBrick nicht lange erhalten, um eine ordentliche Steuerung zu realisieren. Lösungen wie der BuWizz haben mich preislich abgeschreckt. So bin ich dann nach mehreren Iterationen von Modell und Technik beim Arduino und der RC Technik hängen geblieben, um die Elektronik zu realisieren. Mit Arduinos hatte ich schon getüftelt und die RC Technik ist ja gut verfügbar. Programmierung und Elektrotechnik sind mir keine Fremdwörter, weswegen das überhaupt als Lösung in Frage kam.

Das vorläufige Resultat ist eine komplette Steuerungseinheit auf Basis eines Arduino Nano:

20240501_114244181_iOS.jpg

20240501_114252791_iOS.jpg

20240501_114957758_iOS.jpg

Funktionen:
- 7-23V Eingangsspannung
- 16 Kanäle für den Anschluss von LEDs
- 10 Kanäle für Motoren
- 4 Kanäle für Servo Motoren bzw. ESCs
- UART Schnittstelle
- 2,4GHz Funkmodul

Hardware:
- 1x Arduino Nano
- 1x NRF24L01 Funkmodul
- 3x PCA9685 PWM Treiber
- 5x TB6612FNG Motortreiber
- 3x 74HC595 Schieberegister
- 1x Step-Down Converter auf 5V
- 1x Step-Down Converter auf 3,3V
- Etliche Widerstände und Kondensatoren

An den 16 LED Kanälen können die im LEGO Umfeld bekannten Mini SMD LEDs mit einer maximalen Aufnahme von 25mA je Kanal angeschlossen werden. Zwei Stück an einem Kanal gehen problemlos. Für mehr reicht die Leistung aber nicht mehr aus, um dann auch alle auf die maximale Helligkeit zu bekommen. Regeln lassen sich die LEDs annähernd stufenlos.
Die zehn Kanäle für Motoren können alle individuell angesteuert werden und verkraften jeweils einen durchgehenden Ausgangsstrom von 1,2A. Ich nutze für die Funktionen 12V N20 Motoren und dafür sind die Motor Treiber mehr als ausreichend.
Mithilfe von vier Servo Kanälen können beliebige Servo Motoren (ich verwende z.B. die Geekservo Servos) und ESCs angesteuert werden. Für den Antrieb nutze ich einen ESC, der zwei Motoren antreibt.
Die UART Schnittstelle muss man sich von der Funktion her wie einen USB Port vorstellen, mit dem man mehrere solcher Einheiten miteinander koppeln kann. Der Anwendungszweck hierfür ist irgendwann mal die Ansteuerung eines Anhängers.

Die einzelnen Hardwarekomponenten sind über zwei Trägerplatinen miteinander verbunden. Die Platinen habe ich nach stundentagewochenlanger Recherche selbst entworfen und über einen Anbieter aus Fernost herstellen lassen. Mein erster Ansatz war, die einzelnen Komponenten jeweils als fertige Boards zu kaufen und miteinander zu verbinden. Das ist auch problemlos möglich, kollidiert dann allerdings ab einem gewissen Umfang mit den Freiräumen, die man bei 1:16,6 so hat :). Deswegen sind es in der aktuellen Version dann die professionell teil-bestückten Platinen geworden. An die Technik vom Arduino, des Funkmoduls und dem Spannungsregler habe ich mich nicht rangetraut, deswegen sind das fertige Boards, die ich lediglich auf meine Platinen gelötet habe. Aus Platzgründen gibt es leider nur Dupont Pins und keine LEGO-kompatiblen Buchsen. Der Plug&Play Faktor, wenn es hier überhaupt einen gibt, ist also auf RC Technik geschränkt.

Dank des Arduino kann man alle Funktionen nach Belieben programmieren, wie z.B. eine gleichmäßige Beschleunigung des Modells, beliebige Ansteuerung der LEDs (Blinker, Blaulicht, Bremse, Rückfahrscheinwerfer, Standlicht, Scheinwerfer, usw.), Eingrenzung des Spannungsberichs für die Motoren, schaltbare Anhängerkupplung per Servo, etc. Der Kreativität sind eigentlich keine Grenze gesetzt. So etwas triviales wie, dass die vorderste Seitenmarkierungsleuchte gleichzeitig als Blinker fungiert, beispielsweise. Die erforderlichen Programmierkenntnisse sind auch nochmal eine Hürde bei der Verwendung dieser Komponenten. Mir war es aber recht wichtig, die einzelnen Funktionen auch ordentlich steuern bzw. anpassen zu können. Der Code ist auf der Fahrzeugeite derzeit fast 500 Zeilen lang und noch längst nicht fertig.

Passend zur Steuerungseinheit habe ich mir eine Fernsteuerung gebaut. Mithilfe von zwei 4D-Joysticks und neun Buttons kann ich alle Funktionen in Form von mehreren Modi (Fahren, Stützen, Ladekran und Anhänger) durchschalten und steuern. Mit dem 2" LCD Display kann man die Funktionen bequem den Buttons zuordnen und ein SD-Kartenleser ist für alle Fälle auch mit von der Partie.

20240501_114543707_iOS.jpg

Ich würde sagen, dass die Lernkurve ziemlich steil ist. Das Ganze ist sicherlich nichts, was man sich freitags überlegt und dann am Sonntag damit fertig ist. Es lassen sich etliche Funktionen abbilden, die nicht unbedingt für jeden wichtig/notwendig sind. Und es gehörte zumindest in meinem Fall ein gewisser Grad an Detailverliebtheit (man könnte auch Sturköpfigkeit sagen) dazu, überhaupt in Erwägung zu ziehen, die extra Meilen zu gehen, anstatt etwas fertiges zu nehmen und irgendwo Abstriche zu machen. Unzählige lange Abende und Rückschläge gehören dazu aber ich bin mit dem Endergebnis sehr zufrieden :)

Viele Grüße aus dem sonnigen Ruhrpott
Sascha
 

Pottbrick

Neumitglied
Registriert
25 Sep. 2021
Beiträge
9
Ort
Dortmund
Tolle Sache! Ich beschäftige mich eher mit Robotern, aber dafür arbeite ich auch den von dir erwähnten Komponenten. Versuche, das alles mit Micropython zu programmieren. Stellst Du das Basisboard auch anderen zur Verfügung?

Ebenfalls Gruß aus dem Pott, Werner
 

HauntedHouse

Hausgeist
Registriert
12 Aug. 2015
Beiträge
196
Ort
Wülfrath
Hast du das Basisboard selbst bestückt oder hat dein Lieferant die SMD-Teile verarbeitet?
Würde mich interessieren, wo du das hast machen lassen.
 

s4scha

Mitglied
Registriert
23 Aug. 2021
Beiträge
37
Die SMD Bauteile habe ich löten lassen, das wäre mir viel zu fummelig :wsntme: Ich habe die Platinen bei JLCPCB bestellt. Da habe ich mit der Software (EasyEDA) direkt die SMD Bauteile auf der Platine positioniert und bei der Bestellung "PCB Assembly" gewählt. Hat hervorragend funktioniert. Bei JLCPCB geht die Bestückung nur einseitig aber das hat für meine Zwecke ausgereicht. Die Platinen kommen dann so an:



20240503_055943689_iOS.png
20240503_055950524_iOS.png
 

Ts__

Eisenbahner
Registriert
6 Jan. 2016
Beiträge
2.942
Ort
Zwickau / Sachsen
Ich habe die Platinen bei JLCPCB bestellt. Da habe ich mit der Software (EasyEDA) direkt die SMD Bauteile auf der Platine positioniert und bei der Bestellung "PCB Assembly" gewählt.

Das klingt echt spannend und wäre was für meine Lichtplatinen. Die löte ich bisher selbst aus Lochrasterplatten, mit normalen Bauteilen (also kein SMD) bestückt. Als geätzte Platine mit SMD müsste das ganze auch kleiner ausfallen und wäre eben auch verkaufbar / weitergebbar.

Thomas
 
Oben