Lichtsteuerung & mehr mit Arduino

  • Hallo Zusammen


    Auf Vorschlag des Users donaldsneffe eröffne ich diesen Thread um über Lichtsteuerungen auf Arduino-Basis zu berichten, welche ich nun in 2 Projekten genutzt habe. Dabei wird nicht nur das Licht gesteuert, sondern auch viele andere Dinge wie z. B. Lipo-Überwachung, Schaltgetriebe oder Sound. Das habe ich zwar nun schon in den Modell-spezifischen Threads beschrieben, aber bei über 100 Seiten (bei WPL) geht das einfach unter. Und das Prinzip ist ja auch für andere Modelle nutzbar.


    Ich werde also in den nächsten Posts hier in diesem Thread die Infos aus den Modell-spezifischen Threads zusammenfassen. Das wären dann die Steuerungen für den WPL C24 (Toyota Hilux) im Maßstab 1/16 und den Orlandoo Jeep Wrangler im Maßstab 1/35.


    Gruß

    RCfreund

  • Auswahl des Arduino Boards


    Für beide Projekte (WPL und Orlandoo) nutze ich das "Pololu A-Star 32U4 Micro" welches zur einfachen

    Programmierung eine Micro USB-Buchse drauf hat. Das Board ist incl. USB-Buchse nur 27 x 15 mm groß,

    bietet 18 frei programmierbare Ein-/Ausgänge und ist so super auch für kleine Modelle geeignet:

    https://www.pololu.com/product/3101


    Das Board kostet knappe 11€. Natürlich geht es auch noch billiger oder ohne USB-Anschluss noch kleiner.

    Aber mir war es wichtig, dass ein USB-Anschluss on board ist, die Qualität stimmt und ich es auch in

    Deutschland schnell bekommen kann. Die Firma Pololu stellt Bauelemente und Boards für Robotertechnik her.

    Damit habe ich mich das letze halbe Jahr intensiv beschäftigt und einige Pololu Produkte in einem kleinen

    Roboter verbaut. Insbesondere auch die umfangreiche Dokumentation der Produkte hat mich überzeugt.


    Das Arduino Board von Pololu kann man in Deutschland z. B. bei EXPtech beziehen:

    https://www.exp-tech.de/plattf…/pololu-a-star-32u4-micro


    Zur Programmierung ist die Standard Arduino Programmierumgebung (IDE) sowie ein spezieller boardspezifischer

    Treiber für den PC erforderlich.

    Wer sich noch nicht mit Arduino befasst hat, die Arduino IDE kann man sich hier herunterladen:

    https://www.arduino.cc/en/Guide/HomePage

    Den boardspezifischen Treiber für das Pololu Arduino Board gibt es hier:

    https://www.pololu.com/product/3101/resources


    Die Installation des Treibers und die Einbindung in die Arduino IDE ist im umfangreichen User Guide beschrieben:

    https://www.pololu.com/docs/0J61


    Von den 18 Ein- / Ausgängen können 7 Pins als PWM Ausgänge konfiguriert werden. D. h. damit können LEDs

    gedimmt, und mit unterschiedlichen Helligkeiten betrieben werden. Oder daran kann alles angeschlossen werden,

    was auch an einen normalen RC-Empfänger angeschlossen werden kann, z. B. Servos, RC-Switches, Soundmodule etc.

    8 Pins von den 18 Ein- / Ausgängen können auch als Analogpins fungieren. Damit kann man also Spannungen messen,

    was sich z. B. zur Überwachung der Akku-Spannung anbietet.


    Laut Angabe des Herstellers kann das Board mit +5V über die USB-Buchse oder mit 5,5V bis 15V über den Pin

    VIN betrieben werden. D. h. man kann es direkt an einen 2S oder 3S LIPO anschließen.

    Es hat einen 5V-Spannungswandler eingebaut, welcher maximal 100mA liefern kann. Diese 5V sind auch auf

    einen Pin herausgeführt. Der Eigenverbrauch liegt bei ca. 25mA. D. h. man könnte maximal noch 75mA für

    LEDs verwenden. Das ist natürlich nicht so toll. Man sollte seine LEDs also besser mit einem passenden

    Vorwiderstand an die +5V des BECs anschließen.


    Wichtig ist natürlich auch, wieviel Strom ein einzelner Ausgang liefern kann. Im Datenblatt des

    Microcontrollers steht dazu auf Seite 383ff:

    - DC Current per I/O Pin: 40.0mA

    - DC Current VCC and GND Pins: 200.0mA


    Einschränkend kommt aber noch hinzu:

    Although each I/O port can source more than the test conditions (20mA at VCC = 5V, 10mA at VCC = 3V) under

    steady state conditions (non-transient), the following must be observed:

    1)The sum of all IOH, for ports A0-A7, G2, C4-C7 should not exceed 100mA.

    2)The sum of all IOH, for ports C0-C3, G0-G1, D0-D7 should not exceed 100mA.

    3)The sum of all IOH, for ports G3-G5, B0-B7, E0-E7 should not exceed 100mA.

    4)The sum of all IOH, for ports F0-F7 should not exceed 100mA


    Was heißt das nun in der Praxis? Man liegt auf der sicheren Seite, wenn der Ausgangsstrom pro Pin mit einem

    passenden Vorwiderstand auf 12,5mA begrenzt wird. Möchte man mehr Strom ziehen, muss man sich genau anschauen,

    welche LEDs gleichzeitig eingeschaltet sind (pro Port nicht mehr als 100mA). Besser ist es aber in dem Fall

    das Signal mit Transistoren, FETs oder z.B. mit einem Darlington Array (z.B. ULN2003A mit 7 Darlingtons) zu

    verstärken.


    Bei meinen Projekten für den WPL C24 und den Orlandoo Jeep Wrangler habe ich die Vorwiderstände so bemessen,

    dass ich auf eine aktive Verstärkung verzichten konnte.


    Das Board wird ohne eingelötete Steckverbinder geliefert. Pfostenleisten sind aber im Lieferumfang mit drin.

    Je nach Platzverhältnissen kann man also die Kabel entweder direkt anlöten oder die mitgelieferten Leisten

    oder was ganz anderes verwenden.


    In den nächsten Postings gehe ich dann auf die Steuerungen für den Orlandoo Jeep und den WPL C24 ein.

    Sinngemäß läßt sich das natürlich auf andere Modelle übertragen und nutzen.



    Edited once, last by RCfreund: Hinweis auf User Guide zu diesem Board ().

  • Lichtsteuerung für den Orlandoo Jeep Wrangler


    Im Orlando Jeep Wrangler geht es bei einem Maßstab von 1/35 recht eng zu. Deshalb habe ich die Vorwiderstände

    für die LEDs direkt an die Anschlüsse des Boards gelötet; an die andere Seite "freihängend" die Zuleitungen

    von den LEDs (also keine Steckverbinder). Das Ganze in ein ein Stück Schrumpfschlauch eingeschrumpft und quer

    in den Jeep eingebaut. So ist nach Abnahme der Karo die USB-Buchse zur Programmierung gut zugänglich.


    Ich steuere damit Scheinwerfer und Rücklicht (per PWM kombiniertes Abblend-/Fernlicht, Rück-/Bremslicht),

    Zusatzscheinwerfer, separates Bremslicht (das über dem Jeep-Reserverrad) und Blinker/Warnblinker.

    Desweiteren wird die LIPO-Spannung permanent überwacht, welche dann mit einem kleinen Piezo-Beeper

    signalisiert wird. Der Beeper wird auch als "Blink-Summer" genutzt.


    Für akustische Signalisierungen habe ich diesen Piezo-Beeper hier verwendet:

    https://www.exp-tech.de/zubeho…ll-enclosed-piezo-w/wires


    Zur Steuerung werden die Kanäle von Lenkung Gas und Aux/CH3 ausgewertet. Zusatzfunktionen werden mit

    Mehrfachbetätigungen von Kanal 3 gesteuert:

    - 1 mal drücken > Licht an/aus,

    - 2 mal drücken > Zusatzscheinwerfer an/aus,

    - 3 mal drücken > Warnblinker an,

    - 4 mal drücken > LIPO-Restkapazität mit Blinker und Beeper signalisieren (5 Beeps = 100% ... 1 Beep = 20%).


    Automatische Funktionen:

    - Einschalten des Fernlichts (Scheinwerfer heller) beim Gas geben.

    - Automatisches Blinken beim Einlenken; Blinkerstop bei Geradeausfahrt.

    - 2 sec Bremslicht (helleres Rücklicht + Bremslicht am Reserverad) beim Anhalten.

    - Automatisches Warnblinken bei 15 sec Inaktivität.

    - Flackern der Blinker-LEDs bei Ausfall des Empfangssignals.


    Anbei im Zip-File der Arduino-Sketch und eine kleine Zeichnung für die Verdrahtung.



  • Lichtsteuerung mit Eigenbau-ESC für den Orlandoo Jeep Wrangler


    Der Olandoo ESC verhält sich im unteren Bereich leider nicht sehr "feinfühlig". Dies wurde auch schon

    von anderen Usern hier im Forum angemerkt. Ein optimaler alternativer Regler wurde meines Wissens

    aber noch nicht gefunden.


    Auch mich hat das insbesondere mit dem 500rpm Motor gestört. Mit diesem Motor kann man zwar recht zügig

    fahren, aber das langsame crawlen ist nicht ganz einfach. Ich habe mal bei vollem Akku die Radumdrehungen

    pro Minute gemessen: Vollgas = 280 rpm, niedrigstes Tempo = 155 rpm. Langsames Fahren ist also etwas mehr

    als die halbe Höchstgeschwindigkeit. Das ist natürlich nicht so toll.


    Mit Hilfe eines kleinen PWM-Motortreibers und der vorstehend vorgestellten Arduino-basierten

    Lichtsteuerung habe ich nun einen eigenen Regler aufgebaut der den Orlandoo Reglerteil ersetzt.

    Meine Messwerte sind nun: Vollgas = 260 rpm, niedrigstes Tempo = 20 rpm. Mit anderen Worten: Ich kann nun so

    langsam wie mit einem 80er Motor fahren, habe aber die Höchstgeschwindigkeit vom 500er :-)

    Dies funktioniert auch erstaunlich gut ohne "Gummibandeffekt". Ich war selbst überrascht.


    Als Motortreiber habe ich dieses winzige Board für knappe 6€ verwendet:

    https://www.exp-tech.de/module…tor-driver-carrier?c=1208


    Das Board hat keine eigene Intelligenz. Die Umsetzung des PWM-Signals vom Empfänger zum PWM-Signal für

    den Motor wird deshalb mit wenigen Zeilen Programmcode auf dem Arduino erledigt.


    Vom Orlandoo ESC benutze ich jetzt nur noch den BEC und die Pegelwandlung für das low voltage Servo.

    Motorregelung und Lichtsteuerung ist nun Marke Eigenbau.


    Auf den Fotos ist der Motortreiber über der Vorderradachse zu sehen.

    Der Arduino-Sketch und eine kleine Zeichnung für die Verdrahtung ist im nächsten Posting zu finden (mit Scale Mode).



  • Scale-Modus zum maßstabsgerechten Beschleunigen und Bremsen für den Orlandoo Jeep Wrangler


    Das Arduino-Programm habe ich nun so mit 2 Fahrmodies erweitert, dass in einem "Full Scale Modus" ein

    Maßstabsgerechtes (1:35) sanftes Beschleunigen und Abbremsen möglich ist. Ruckartige unnatürliche

    Fahrbewegungen werden unterbunden.


    Ausgangswerte und Annahmen für diesen Scale Modus:

    • 27mm Raddurchmesser und Raddrehzahl 250 U/min (500er Motor) entsprechen bei Maßstab 1:35 ca. 45 km/h.
    • Ein Jeep Wrangler beschleunigt in 3,5 sec. von 0 auf 45 km/h.
    • Einfache Bremswegformel = ((V / 10) x (V / 10)) / 35.
      Bei 45 km/h wären dies: ((45 / 10) x (45 / 10)) / 35 = 58 cm Bremsweg.
      Da ich aber keine Wegmessung vornehmen kann, habe ich die Zeit bis zum Stillstand einfach auf 1,5 sec gesetzt.

    Dieser Full Scale Mode ist nun aber so "scalig", das auch der Wunsch nach flotterer Fahrt aufkommen kann.

    Dafür habe ich noch einen "Semi Scale Mode" implementiert, der ruckartige Fahrbewegungen zwar verhindert,

    insgesamt aber eine flottere Fahrweise zulässt.


    Alle Features der Motorsteuerung in der Übersicht:

    • Mit Hilfe eines Pololu MAX14870 Motortreibers wird aus Kanal 2 das PWM-Signal für den Motor erzeugt.
    • Ermöglicht "feinfühliges" Fahren im unteren Bereich ab 20 Radumdrehungen / min mit einem 500er Motor.
    • Scale Modus zum maßstabsgerechten (1:35) Beschleunigen und Bremsen.
    • Da das Modell im Scale Modus bei Gaswegnahme nicht sofort anhält, gibt es auch die Funktion "Vollbremsung"
      (Gashebel schnell in andere Richtung bewegen).
    • Bei Rückwärtsfahrt wird die Geschwindigkeit auf etwa die halbe Höchstgeschwindigkeit beschränkt.
    • Da der Scale Modus nur relativ "unaufgeregtes" Fahren erlaubt, ist ein auch ein Semi Scale Modus implementiert.
      Der Semi Scale Modus erlaubt flotteres Fahren, verhindert aber ein ruckartiges Fahrverhalten beim Anfahren und Stoppen.
    • Die Scale Modies werden über Konstanten gesteuert (in zulässige Pulsweitenänderung pro sec), welche leicht anzupassen sind.
    • Im "Normal Modus" wird das Signal vom RC-Empfänger ohne Manipulation an den Motortreiber durchgereicht.
    • Umschaltung der Fahrmodies Normal, Semi Scale, Full Scale über Kanal 3.
    • Signalisierung des gewählten Fahrmodus über Zusatzscheinwerfer-LEDs und Beeper.
    • Die Nullstellung vom Gas (Kanal 2) wird beim Einschalten immer neu angelernt.
    • Bei LIPO-Unterspannung wird der Motor ausgeschaltet. Keine Weiterfahrt möglich.


    Unten stehend der Arduino-Sketch und ein Bild von der Verdrahtung.


    Ich habe hier auch mal 2 Videos gemacht. Im ersten Video wird mit dem Orlandoo ESC gefahren und im zweiten

    Video mit dem Fahrtregler Marke Eigenbau im Scale Modus. Ich glaube man kann ganz gut erkennen, dass das

    Fahrverhalten beim zweiten Video näher am Original dran ist. Keine ruckartigen unnatürlichen Fahrbewegungen

    mehr!



  • Lichtsteuerung mit Bedienung des 2-Gang Getriebeservos und Steuerung des Soundmoduls für den WPL C24 (Toyota Hilux)


    Hier möchte ich nun die Arduino-basierte Lichtsteuerung für den WPL C24 vorstellen, die auch zum Schalten

    des Getriebeservos und für das Orlandoo Soundmodul genutzt wird. So können alle "Spielereien" mit

    einer 3-Kanal Funke gesteuert werden.


    Als Arduino-Board habe ich wieder das oben beschriebene das "Pololu A-Star 32U4" Micro verwendet.

    Da im WPL C24 etwas mehr Platz zur Verfügung steht musste ich die Leitungen nicht wie im Orlandoo Jeep

    direkt anlöten, sondern habe aus einer Lötstreifen-Lochrasterplatine und Steckverbindern einen Adapter

    gebaut. Untenstehend 3 Fotos zu meiner aktuellen Lösung im WPL C24.


    Die Vorwiderstände für die LEDs habe ich aber nicht auf diese Adapterplatine gesetzt, sondern meist

    direkt an den LEDs angelötet. Die Stromaufnahme der LEDs ist durch entsprechende Bemessung der

    Vorwiderstände auf ca. 10mA pro LED begrenzt (220 Ohm für jede weisse LED, 330 Ohm für jede farbige LED).


    Wegen Kompatibilitätsproblemen der Arduino tone()-Funktion mit der Servo.h Library habe ich diesmal für

    Signalisierungen einen aktiven Piezo Beeper verwendet. Dieser piept selbstständig beim Anlegen von LOW an

    der Signalleitung:

    https://www.roboter-bausatz.de…9012-transistor-mit-kabel


    Folgendes ist mit dieser Steuerung möglich:

    Steuerung von Scheinwerfer und Rücklicht (per PWM kombiniertes Abblend-/Fernlicht, Rück-/Bremslicht),

    separates Bremslicht, Rückfahrscheinwerfer, Blinker/Warnblinker, sowie Innenbeleuchtung.

    Desweiteren wird die LIPO-Spannung permanent überwacht, welche dann mit Blinker und Piezo-Beeper

    signalisiert wird. Der Beeper wird auch als "Blink-Indikator" genutzt (klack, klack...).

    Steuerung des 2-Gang Getriebes über das Getriebe-Schaltservo. Steuerung des Soundmoduls (aktivieren/

    deaktivieren, Leerlaufsound bei aktivem bremsen, einstellbare Ausschaltzeit). Hierzu sind Schaltservo und

    Soundmodul direkt am Arduino-Board (und nicht am Empfänger) angeschlossen.

    Zur Steuerung werden die Kanäle von Lenkung, Gas und Aux/CH3 vom Arduino-Board ausgewertet.


    Manuelle Funktionen werden mit Mehrfachbetätigungen von Kanal 3 gesteuert:

    - 1 mal drücken > Umschaltung zwischen ersten und zweiten Gang mittels Getriebeservo,

    - 2 mal drücken > Licht an/aus,

    - 3 mal drücken > Warnblinker an,

    - 4 mal drücken > Soundmodul deaktivieren / aktivieren

    - 5 mal drücken > LIPO-Restkapazität mit Blinker und Beeper signalisieren (5 Beeps = 100% ... 1 Beep = 20%).


    Automatische Funktionen:

    - Einschalten des Fernlichts (Scheinwerfer heller) beim Gas geben.

    - Einschalten des Rückfahrscheinwerfers bei Rückwärtsfahrt.

    - Automatisches Blinken und "Klicken" beim Einlenken; Blinkerstop bei Geradeausfahrt.

    - 2 sec Bremslicht (helleres Rücklicht & ggf. separates Bremslicht) beim Gas wegnehmen.

    - Bremslicht, solange aktiv gebremst wird (erste Gashebelbewegung zurück)

    - Während dem aktiven Bremsen wird das Soundmodul auf "Leerlauf" gestellt

    - Frühere Abschaltung des Motorsounds im Stillstand (über Konstante einstellbar)

    - Verzögertes hochdimmen der Innenbeleuchtung beim Anhalten. Ausschalten beim Losfahren.

    - Warnblinken bei 15 sec Inaktivität.

    - Flackern der Blinker-LEDs bei Ausfall des Empfangssignals.

    - Signalisierung des Akku-Füllstands beim Einschalten via Blinker und Beeper

    - Alarmblinken und piepen bei LIPO-Unterspannung.

    - Verhinderung des Einlegens des ersten Gangs bei Motorstillstand

    (weil die Zahnräder sonst u.U. nur seitlich aufeinander drücken, aber nicht ineinander greifen)

    - Die Nullstellung vom Gas (Kanal 2) wird beim Einschalten immer wieder neu angelernt.


    Anbei im Zip-File der Arduino-Sketch für diese Lichtsteuerung. Verdrahtungsplan siehe Post #12.



  • Lichtsteuerung mit Bedienung des 2-Gang Getriebeservos und Steuerung des Soundmoduls für den WPL C24 (Toyota Hilux)


    Zur Veranschaulichung der Funktionen habe ich hier noch ein kleines Video gemacht:


  • Hallo,


    saubere Arbeit, werde meinen Hilux mal damit ausstatten, vielen Dank ! :respekt::respekt::respekt::respekt:



    Viele Grüße aus Thüringen

    Ralph

  • Danke!

    Ich stelle heute noch ein paar Infos zur Verdrahtung hier ein.

    Gruß

    RCfreund

  • hi RCfreund (gibt's auch 'nen richtigen Namen?hmm),


    vielen Dank für Dein Bemühen! :respekt: Die Aufgaben, die Du hier dem Arduino überträgst, gefallen mir sehr gut!!! :jaja:


    Besonders die Darstellung der Akkukapazität und der Warnblinker bei Inaktivität finde ich sehr sinnvoll! Eine Frage


    habe ich noch zur Innenraumbeleuchtung nach dem Anhalten. Kann man das auch an den Motorsound koppeln?


    Das heißt, wenn sich der Motor abstellt, das dann die Innenbeleuchtung angeht? Das wäre für mich noch etwas


    realistischer und könnte mir so etwas bei meinen Modellen gut vorstellen!


    Apropos vorstellen, fertigst Du auch Auftragsarbeiten? :whistling:

  • Hallo Ralph,


    Klar habe ich auch einen richtigen Namen. Aber nicht hier im Forum wo theoretisch Milliarden von Menschen mitlesen können mit denen ich überhaupt nichts zu tun habe ;-)


    Freut mich, wenn du etwas von dem ich hier veröffentlicht habe gebrauchen kannst. Zu deiner Frage: sämtliche Zeitangaben sind Angaben in Millisekunden die du einfach im Programm ändern kannst. Die Zeiten für "Motorsound aus" und "Innenbeleuchtung an" brauchst du nur auf den selben Wert zu setzen. Dann kann die Innenbeleuchtung angehen, wenn der Sound aus geht. Der Trigger ist "Gas auf Neutralposition".


    Ich werde eventuell noch was dazu schreiben, wie man das Programm am besten an seine eigenen Bedürfnisse anpassen kann (an einigen wenigen Stellen sogar anpassen MUSS, z.B. Endstellungen des Getriebe-Schaltservos).


    Auftragsarbeiten mache ich nicht. Das Rumgebastel hier ist nur mein Hobby. Und für mich lukrative Auftragsarbeiten würdest du nicht bezahlen wollen :-)

    Aber ich mache mir gerade schon Gedanken darüber, wie so eine Lichtsteuerung jemandem ohne Arduino-Kenntnisse nutzbar gemacht werden kann.


    Gruß

    RCfreund

  • Lichtsteuerung mit Bedienung des 2-Gang Getriebeservos und Steuerung des Soundmoduls für den WPL C24 (Toyota Hilux)


    Nachstehend der Verdrahtungsplan, so wie ich bei mir das Arduino-Board im WPL C24 eingebaut habe.




    Das andere Bildchen zeigt das Adapterboard zum Verbinden des Arduinos mit den LEDs und allen anderen beteiligten Komponenten. Die orange-farbigen Streifen sollen die Lötstreifen auf der Lochrasterplatine sein. Diese Streifen müssen wie dort dargestellt aufgetrennt werden. Fotos des Boards siehe Post #6.



  • Hallo RCfreund,

    vielen Dank für die Antwort, demnächst steht die Elektronik von einem King Hauler an, da werde ich mich damit befassen müssen..... ( und vermutlich mit Fragen nerven :whistling:)


    Nochmals : großen:respekt::respekt:


    Viele Grüße aus Thüringen

    Ralph