• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Anleitung Komplexe Lichtsteuerung für unter 5 EUR (Arduino)

Rockracer

Mitglied
Ich bin in jüngster Zeit in die Welt der Scaler vorgedrungen (SCX10 mit Sawback-Karo) und wenn man ein Modell realistischer machen möchte, ist eine möglichst naturgetreue Beleuchtung natürlich ein wichtiges Thema. Wie man sich eine Beleuchtung aus LEDs selbst zusammenlötet, ist schon in anderen Berichten hier im Forum geschildert, deswegen schreibe ich jetzt nichts dazu. In diesem Bericht geht es um die Steuerung der LEDs.

Edit BAX:
Wichtiger Hinweis! Dieses Projekt ist nicht für Personen geeignet, die eine schnelle Lösung suchen, bei der sie nur einfach Stecker anstöpseln brauchen. Dafür muß man in den suaren Apfel beißen und fertige Lösungen kaufen, die dann natürlich etwas teurer sind.

Um diese Beleuchtungssteuerung zu bauen ist es empfehlenswert, auch ein paar Werkzeuge und Kleinmaterial zur Hand zu haben. Anzuraten wäre ein Lötkolben, Kabel (Servokabel, Y-Servokabel, einpolige Kabel aus dem Arduinozubehör), Pfostenleisten und wenn möglich, ein einfaches Multimeter, um auch mal Spannungen messen zu können. Natürlich braucht man auch handwerkliches Geschick und die Bereitschaft, sich einfache elektrotechnische und Programmierkenntnisse anzueignen.

Wenn man aber bereit ist, etwas Eigenleistung zu erbringen, wird man mit einer sehr flexiblen und ausbaufähigen Beleuchtungssteuerung belohnt.
Hier noch ein paar Ablegerthemen, die hier herausgelöst bzw. gesondert behandelt wurden:

Ab hier geht es jetzt mit dem eigentlichen Bericht los

Mein Ziel für das laufende Projekt ist folgende Steuerung
  • Ein-/Ausschalten der gesamten Lichtanlage über einen Schalter an der Fernsteuerung
  • Front- und Rücklicht über Schaltkanal
  • Bremslicht bei Stillstand
  • Warnblinker nach x Sekunden Stillstand
  • Hupe (später)
Es gibt zwar fertige Steuerungsmodule zu kaufen, aber die sind erstens für meinen Geschmack recht teuer und zweitens nur bis zu einem gewissen Grad konfigurierbar. Bei der Recherche bin ich sehr schnell beim Arduino gelandet. Das ist eine Art „Mini-Computer“, auf dem ein Programm in einer Endlosschleife läuft. Dieses Programm kann man selbst frei programmieren und damit auch komplexe Steuerungen realisieren. Man kann Inputs abfragen (z.B. Gas, Lenkung, Schalter, etc.) und damit Outputs steuern (z.B. Rücklicht, Bremslicht, Blinker, Hupe, etc.).

Hardware

Den Arduino gibt es in unterschiedlichen Versionen (uno, nano, etc.). Im Original sind die Teile jetzt auch nicht richtig günstig, es gibt aber Klone, die es schon für sehr kleines Geld gibt. Ich habe für mein Projekt den Arduino Nano gewählt. Der ist recht klein und den gibt’s als Klon in der Bucht schon für unter 5 EUR. Kleiner Tipp: bei den günstigsten Angeboten sind oft die Pin-Leisten noch nicht verlötet. In Anbetracht meiner bescheidenen Löt-Fähigkeiten habe ich direkt ein Modell mit verlöteten Leisten gewählt :)



Einen Überblick gibt folgendes Schaltbild:



Dazu noch ein paar kurze Erläuterungen:
  • (1) – (30) --> Die Ziffern in Klammern von 1 – 30 dienen nur der technischen Nummerierung der Pins, sie spielen bei der Programmierung keine Rolle und können ignoriert werden.
  • D0 - D13 --> digitale Pins, Nutzung als Input oder Output, liefern als Output 5 Volt, empfohlene Stromstärke 20mA (max. 40mA), werden im Programm nur mit Ihrer Nummer angesprochen (z.B. digitalWrite(2, 0) für Pin D2).
  • A0 – A7 --> analoge Pins, Nutzung als Input oder Output, liefern als Output 5 Volt, empfohlene Stromstärke 20mA (max. 40mA), werden im Programm mit A und der entprechenden Nummer angesprochen (z.B. analogWrite(A2, 0) für A2).
  • GND --> Masse (GrouND)
  • VIN --> Stromversorgung Input (VoltageINput), empfohlen 7 – 12 Volt, maximal 6 – 20 Volt
  • +5V --> Stromversorgung mit konstant 5V (Input oder Output)
  • 3V3 --> Stromversorgung für Verbraucher mit konstant 3,3 Volt (Output)
Anschlüsse und Verkabelung

Die Stromversorgung des Arduino kann im laufenden Betrieb entweder über den +5V-Pin erfolgen oder mit 7 – 12 Volt über den VIN-Pin. Wenn man den +5V-Pin nutzt, sollten dort auch konstant 5 Volt anliegen (z.B. über ein 5-Volt-BEC). Ich habe mich für den VIN-Pin entschieden und versorge den Arduino aus dem 2S-Fahrakku. Dazu habe ich eine „Versorgungsleitung“ an den Akkustecker des Fahrtreglers angelötet, die mit dem Arduino verbunden wird.

Hinweis: der Arduino kann auch über den USB-Anschluss (USB-Mini-B am Board) mit Strom versorgt werden (5 Volt). Wenn man den Arduino programmiert und danach testen will, braucht man also keine zusätzliche externe Stromversorgung, sondern kann einfach das USB-Kabel angesteckt lassen und der Arduino startet das übertragene Programm und führt es aus.

Beim Anschluss von Verbrauchern an den Arduino muss man beachten, dass die einzelnen Pins nicht überlastet werden. Empfohlen sind pro Pin 20mA, Maximum sind 40mA. Auf LEDs übertragen entspricht das einer LED pro Pin. Natürlich gibt es auch diverse Lösungen, um diese Beschränkung zu umgehen, aber für meine Zwecke kann ich gut mit 1 LED pro Pin leben.

Um die In- und Outputs mit dem Arduino zu verbinden, kann man sehr gut die „Weibchen“ von JR-Steckern („Servo-Stecker“) benutzen, die passen genau auf die Pins. Bei der Verbindung der Inputs (Gas, Schalter) ist zu beachten, dass es nicht ausreicht nur die Impulssignale abzugreifen, sondern man muss auch die Masse vom Empfänger mit dem Masse-Anschluss vom Arduino verbinden, sonst bekommt man kein vernünftiges Signal ausgelesen.

Und damit sind wir auch schon beim nächsten Thema, denn der nano hat nur zwei Masse-Pins (GND). Das ist natürlich zu wenig, denn ich benötige schon allein für die LEDs 8 mal Masse. Eine einfache Lösung besteht darin, alle Masse-Kabel zusammen zu löten und dann an einen GND-Pin anzuschließen. Das ist für meinen Geschmack aber nicht flexibel genug. Eine andere Lösung besteht in einem sogenannten BreadBoard mit Masse Bus. Das ist ein Steckbrett, auf das der Nano aufgesteckt wird und das schon zu jedem Pin einen Masse-Anschluss zur Verfügung stellt. Auch das habe ich verworfen, weil die Boards mehr kosten als der nano selbst und weil ich auch nicht so viel Platz unter der Karo habe.

Ich habe stattdessen eine 20er-Pin-Leiste mit 2,54 mm Raster (gibt’s für kleines Geld in der Bucht) auf 15 Pins gekürzt und die Pins zusammen gelötet. Um das Löten zu vereinfachen, habe ich eine Leiste genommen, bei der die Pins am unteren Ende um 90 Grad abgewinkelt sind.



Die Pin-Leiste habe ich dann mit Sekundenkleber von außen an die Pin-Leisten des nano geklebt. Zwei der oben schon erwähnten JR-Stecker verbinden nun die beiden GND-Pins mit den Masse Bussen, so dass ich jetzt direkt neben jedem Pin auch einen Masse-Pin habe:



Ja, ich weiß, mit dem Lötergebnis gewinne ich keinen Schönheitspreis, aber ich habe immerhin einen funktionierenden Masse-Bus ;)

Ich habe Stecker mit 3 Anschlüssen genommen, weil ich die noch da hatte. Ich habe später gesehen, dass es solche Stecker auch mit 2 Anschlüssen gibt. Die werde ich dann für das nächste Projekt verwenden:rolleyes:

Es war zwar ein wenig Arbeit, alle In- und Outputs mit den Steckern zu versehen, aber nun kann ich alle Verbindungen einfach aufstecken und auch leicht wieder ändern.

Nun musste ich noch über die finale Verkabelung nachdenken. Da ich sowohl eine Verbindung zum Chassis (Akku, Empfänger) als auch zur Karo (LEDs) benötige, musste leider eine Steckerlösung her, damit ich Karo und Chassis komplett trennen kann. Ich habe mich für die Befestigung des nano an der Karo entschieden, da dort mehr Anschlüsse notwendig sind (8 LEDs und 1 Hupe, jeweils Plus und Minus --> 18 Verbindungen). Vom Chassis aus sind es deutlich weniger (Strom, Gas, Licht, Hupe). Ich habe lange nach einem Stecker mit 8 Pins gesucht, der sicher schließt und leicht wieder zu öffnen ist. Im Bereich der PC-Stromversorgung bin ich fündig geworden:



Das Gesamtergebnis sieht dann so aus:



Ist zwar immer noch nicht super-übersichtlich, aber ich musste ja auch einige Verbindungen unterbringen ...

Programmierung (Sketches)

Nachdem die Verkabelung stand, habe ich mich um das Programm gekümmert (welches beim Arduino übrigens Sketch genannt wird, warum auch immer ...) Die Entwicklungsumgebung für die Programmierung kann man auf der Arduino-Homepage kostenlos runterladen. Ich habe unter Windows 10 gearbeitet. Dort muss man noch nicht mal einen Treiber installieren, einfach den nano per USB-Kabel mit dem PC verbinden und schon wird er erkannt und man kann loslegen, zumindest, dachte ich das, bei mir hat es natürlich so erst mal nicht funktioniert :(

Ich habe einiges ohne Erfolg ausprobiert und mich dann an den ebay-Verkäufer gewendet. Der kam zu dem Schluss, dass der nano wohl defekt sei und hat mir direkt einen anderen zugesendet. Und siehe da! Dieser funktionierte auf Anhieb :)

Ein bisschen blöd ist, dass man beim Arduino nicht debuggen kann, also das Programm schrittweise ausführen, um Fehler zu finden. Die Fehlersuche wird aber immerhin durch einen seriellen Monitor unterstützt, auf dem man die Werte der Variablen ausgeben kann.

Für das Steuerungsprogramm gibt es diverse Vorlagen in den einschlägigen Foren. Ich habe eines der Programme kopiert (ich weiß leider nicht mehr genau wo, deswegen kann ich den Urheber nicht lobend erwähnen) und es für meine Zwecke angepasst.

Bevor ich Euch den Programmcode gebe, noch ein paar Hinweise:
  • Für eine LED gibt es nur „an“ oder „aus“, d.h. man kann sie nicht im klassischen Sinne dimmen. Da das menschliche Auge träge ist, gibt es aber trotzdem eine Möglichkeit. Wenn eine LED schnell genug hintereinander an- und ausgeschaltet wird, dann erkennt das menschliche Auge die einzelnen Schaltvorgänge nicht und nimmt die LED als gedimmt wahr. Dieses Verfahren nennt man Pulsweitenmodulation (PWM). Der Arduino beherrscht PWM, allerdings nur an den PINs 3,5,6,9,10,11. Ich habe diese PINs für Frontlicht und Rücklicht benutzt. So kann ich eine LED gleichzeitig als Rücklicht (gedimmt) und Bremslicht (nicht gedimmt) nutzen. Man kann so auch Fern- und Abblendlicht über eine LED realisieren, das habe ich aber nicht umgesetzt.

  • Wenn man den Gaskanal des Empfängers über pulseIn() ausliest bekommt man typischerweise Werte zwischen ca. 1000 und ca. 2000 zurück, wobei 1000 = Vollgas rückwärts, 2000 = Vollgas vorwärts und 1500 = kein Gas ist. Auf einem 2-Positions-Schalter bekommt man dann typischerweise 1000 für „aus“ und 2000 für „ein“. Das sind aber nur grobe Richtwerte. Man sollte über den seriellen Monitor die tatsächlichen Werte prüfen.

  • Während der Entwicklung wurde zwischenzeitlich wurde beim Hochladen des Sketches die folgende Fehlermeldung angezeigt:
avrdude: stk500_getsync(): not in sync: resp=0x00​
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51​
Ich habe dank Internet die Ursache gefunden. Pin 0 darf nicht mit einem Kabel belegt sein, wenn man den Arduino an den PC angeschlossen hat, weil dieser Pin für die USB-Kommunikation genutzt wird. Wenn man Pin 0 nutzen möchte (so wie ich), dann muss man einfach das Kabel entfernen, während man mit dem PC arbeitet.​

  • Das Programm enthält einige Hilfen zur Fehlersuche. Diese kann man nutzen, indem man die passenden Variablen in der Deklaration ändert.

  • Die Ansätze, die sich zur Hupe im Code finden, sind noch nicht ausgereift. Derzeit würde die Programmausführung angehalten, solange die Hupe an ist. Ich muss die Code-Stellen dazu später noch weiter oben integrieren (analog zur Steuerung der Warnblinker).
Das Programm findet ihr unter den Ressourcen hier im Forum: Rockracers_Lichtsteuerung_V_1_0.zip
Natürlich kann man noch viel mehr realisieren. Sehr einfach umzusetzen sind z.B. automatische Blinker abhängig vom Servokanal. Es gibt auch Kollegen, die autonomes Fahren ausprobieren. Das ist gar nicht so weit hergeholt, denn es gibt für ein paar Euro alle möglichen Zusatzmodule (Infrarot-, Ultraschall-, Temperatur-, Helligkeitssensoren), der Fantasie sind also keine Grenzen gesetzt;)

Ich werde auf jeden Fall noch etwas in Richtung Hupe ausprobieren, aber dazu später mehr. Ich denke, dass es dann auch noch ein kurzes Video geben wird, ist ja sonst doch etwas trocken das Thema;)

Edit BAXL:
Es gibt in den Ressourcen noch einen weiteren Sketch, dessen Anwendung hier aber nicht beschrieben wurde, mit den Kommentaren im Sketch ist die Verkabelung aber quasi selbsterklärend.

Autolichtsteuerung für Arduino Sketch
 
Zuletzt von einem Moderator bearbeitet:

BAXL

Admin
Mitarbeiter
Anschlußerklärung der Hardware

(Achtung, sehr simpel geschrieben, darum nicht spitzfindig die Erklärungen zerflücken. Ich weiß selbst dass einiges, technisch sehr "unscharf" geschrieben ist)


In dem verfügbaren Sketch für dieses Projekt,in den Ressourcen, werden bestimmte Anschlußpins des Arduinos für die verschiedenen Funktionen und Lichter festgelegt. Man kann die Anschlußbelegung mit klarem Blick und frischem Verstand zwar aus dem Programmlisting herauslesen, es ist aber komfortabler wenn das direkt im Anschluß an das Startthema zu sehen ist.

Die Pins am Arduino Nano sind alle beschriftet. Mit Zahlen, Buchstaben und beides in Kombination. Die Beschriftung hat dabei eine Bedeutung. Alle Pins, bei denen ein A vor der Zahl steht, ist ein analoger Kanal, mit dem man Spannungen bis 5V messen kann. Pins mit einem D vor der Zahl, sind digitale Kanäle, die sowohl eine 5V Spannung ausgeben, als auch Spannungen zwischen 0 und 5V als Eingangssignale (An, Aus / High, Low / oder 1, 0) erkennen können.

Einige der digitalen Kanäle können programmgesteuert auch automatisch ganz schnell ein und ausgeschaltet werden. Je nachdem wie schnell das passiert, erscheint es am Verbraucher, als würde man eine Spannung zwischen 0 und 5V ausgeben können. Mit der Funktion kann man LEDs dimmen, oder eine LED für das Rück- und Bremslicht wie eine Bilux-Birne funktionieren lassen.

Der Sinn dieses Projektes ist es, Steuersignale des Empfängers, die an Gas und Lenkung gehen und evtl. noch ein zusätzlicher Funktionskanal, für die Steuerung der Lichter mitzugebrauchen. D.h. z.B., dass das Steuersignal für das Lenkservo "angezapft" wird und der Arduino dann weis, ob das Auto rechts- oder linksrum fährt und mit dieser Information die Blinker an der richtigen Seite einschaltet. Wenn das Gassignal für Rückwärtsfahren gesendet wird, erkennt der Arduino das auch und schaltet die Rückfahrscheinwerfer ein. Mit dem 3. Funktionskanal ist es dann möglich die Beleuchtung ein- und wieder auszuschalten.

Von diesen drei Steuerkanälen benötigt man das Empfängersignal, das auf das gelbe bzw. weiße Kabel zum Servo oder Motorregler, ausgegeben wird.

Damit man nicht soviel fummeln muß, nimmt man ein Y-Servokabel. Einer der Stecker kommt in dem Empfängeranschluß (z.B. für das Lenkservo), Das Lenkservo steckt man dann in die Buchse und der andere Stecker hat dann auf dem weißen (gelben) Kabel dann das Steuersignal, dass der Arduino benötigt. Damit man keinen Kurzschluß baut, sollte man das rote + Kabel aus dem Stecker, der zuim Arduino geht, herausziehen oder abkneifen. (siehe rechts oben im Bild



Das macht man dann auch mit dem Kabel für den Motorregler. Für den dritten Schaltkanal benötigt man nur ein einfaches Servokabel mit zwei Steckern, auch Patchkabel genannt. Und das sieht so aus:


Aber auch hier bitte das rote Kabel kappen. Das gelbe ist übrigens das Signalkabel.

Man kann den Kontakt such aus dem Stecker ziehen und in sowas reinstecken:



Bekommt man bei Amazon und nennt sich Pinheader:
https://www.amazon.de/Pinheader-Buc...pfostenstecker&qid=1578771640&s=ce-de&sr=1-44

man kann auch Jumperkabel aus dem Arduino Breadboardzubehör zweckentfremden.



https://www.amazon.de/AZDelivery-Ju...1N9PTDCH00VSFFXX&psc=1&qid=1578771569&s=ce-de


Um etwas Basteln kommt man allerdings nicht herum. Wer ein Fertigprodukt sucht, plug and play, für den ist dieses Projekt nichts. Und mit den 5€ kommt man auch nicht ganz hin. :)

Kommen wir nun zu den Pinbelegungen. Die Pinbelegung ergibt sich eigentlich aus dem Programmlisting. Dort werden gleich ganz oben, im Vereinbarungsteil, die Pins für die einzelnen Funktionen definiert. Für jede Funktion gibt es eine Variable, deren Name auch die Funktion beschreibt, dahinter, also hinter dem Gleichheitszeichen, steht dann als Zahl die Pinnummer.

// Input-Pins also Eingagspins
const int PIN_schalter = 0; // Hauptschalter
const int PIN_gas = 2; // Gaskanal
const int PIN_hupe_in = 3; // Schaltkanal für Hupe

// Output-Pins also Ausgangspin, an dem die LED oder Hupe angeschlossen wird
const int PIN_blinker_hinten_links = 4; // digital mit Digital-Output
const int PIN_ruecklicht_links = 5; // digital mit PWM und Analog-Output
const int PIN_frontlicht_links = 6; // digital mit Digital-Output
const int PIN_blinker_vorne_links = 7; // digital mit Digital-Output
const int PIN_blinker_vorne_rechts = 8; // digital mit Digital-Output
const int PIN_hupe_out = 9; // digital mit PWM und Analog-Output
const int PIN_ruecklicht_rechts = 10; // digital mit PWM und Analog-Output
const int PIN_frontlicht_rechts = 11; // digital mit Digital-Output
const int PIN_blinker_hinten_rechts = 12; // digital mit Digital-Output




Verbraucher (LED, Hupe) anschließen

Nun fällt dem aufmerksamen Leser auf, dass für die Blinker, Rücklicht und Scheinwerfer jeweils ein Pin für Vorne und Hinten genommen wird. Da stellt sich die Frage, warum einzelne Pins, weil doch die Rücklichter, Scheinwerfer und Blinker für eine Seite immer gleichzeitig angehen. Warum kann man die dann nicht auf einen Pin legen?

Von der Funktion her geht das, das Problem liegt an der Belastbarkeit der Pins, die können nicht unendlich viel Strom abgeben. In den technischen Daten des Nanos steht, dass pro Pin maximal 40mA fließen dürfen, womit man sich aber schon an der Belastungsgrenze eines Ausganges befindet. Davon ist abzuraten, weil der Arduino dadurch Schaden nehmen kann. Insgesamt kann der Arduino auf allen Pins zusammen maximal 200mA liefern.

Eine übliche 5mm LED benötigt einen Strom von ca. 20mA. Schließt man zwei LEDs gleichzeitig an einen Ausgang an, fließen 40mA und man könnte den Arduino beschädigen.

Man darf beim Anschließen auch nicht den Vorwiderstand vergessen, weil sonst die LED kaputt geht. An den Ausgängen liegt im eingeschalteten Zustand eine Spannung von 5V an. Gehen wir davon aus, dass die normalen LEDs ( rot, gelb grün), eine Betriebsspannung von ca. 2V haben, müssen 3V am Vorwiderstand abfallen. Rein rechnerisch sind das 150 Ohm Widerstände, ich empfehle aber die etwas größer zu nehmen, z.B. 220 Ohm pro LED, um eine gewisse Sicherheit zu haben.

Weiße und blaue LEDs haben eine etwas höhere Betriebsspannung, die bei ca. 3V liegt (und teilweise etwas mehr, Datenblatt prüfen). Da benötigt man einen Vorwiderstand von ca. 100 Ohm pro LED.

Es hat aber keinen Zweck, die Widerstände beliebig groß zu machen, weil man auf Nummer sicher gehen will, die LEDs benötigen eine gewisse Mindestspannung um überhaupt leuchten zu können. Ist der Vorwiderstand zu groß, reicht die verbleibende Spannung für die LED nicht aus und die LED bleibt dunkel.

So sieht die Verschaltung einfach dargestellt aus:
(ich habe aber nur für eine Blinkerseite gemalt, die andere wird genauso angeschlossen, nur an andere Pins am Nano) Achtung, bei diesem Schaltbeispiel legt man den Pluspol über den Widerstand an den Ausgang des Nanos.




Größere Ströme mit einem Pin schalten


Möchte man dennoch größere Ströme mit einem Pin schalten, wird man nicht um eine "Verstärkerschaltung" herumkommen. Das klingt erstmal sehr kompliziert, ist aber eigentlich relativ einfach. Für Arduinos gibt es bereits fertige kleine Zusatzplatinen, für die man keine besonderen Kenntnisse in Schaltungstechnik benötigt.

Dazu eigenen sich z.B.ULN2803 Darlingtontransistor Treiber, die man auch schon fertig als Platine bekommt. Oder hier "im Dutzend billiger"rund 2,10€ pro Stück.



Mit ULN-Modul sieht die Schaltun so aus:
Man braucht dann nur noch einen Arduinopin für zwei LEDs. In diesem Schaltbeispiel wird aber der Vorwiderstand direkt an die +5V vom Nano angeschlossen. Die ULN-Platine schaltet jetzt den Masseanschluß (GND) durch. D.h., dass die LEDs dauerhaft an Plus anliegen und erst durch das Durchschalten auf Masse der Stromkreis geschlossen wird, damit die LEDs leuchten.



Mit der ULN-Platine hat man sogar noch die Möglichkeit, die LEDs über eine getrennte Spannungsversorgung anzuschließen, z.B. 9V oder 12V. Das hätte den Vorteil, dass man LEDs, die gleichzeitig leuchten sollen, direkt hintereinander (Reihenschaltung) mit nur einem Vorwiderstand anschließen kann. Bei 9V wäre es durchaus möglich, sogar 3 LEDs gleichzeitig mit einem Vorwiderstand leuchten zu lassen.

Das sähe ungefähr so aus:



Bin noch nicht fertig :)

In dem Arduino-Sketch wird das Blinken der LEDs, also das An und Ausgehen, per Software realisiert. D.h., dass der Arduino die Ausgänge, an denen die LEDs angeschlossen sind, immer wieder schaltet, während er noch weitere Funktionen erledigt. Weil besonders das Abfragen der RC-Fernsteuerkanäle sehr viel Rechenleistung abfordert und das ständige Schalten der Ausgangspins ebenfalls, könnte das Programm etwas ins Straucheln geraten, je mehr RC-Kanäle ich abfragen will.

Es gibt die Möglichkeit, die Arbeit des Ein- und Ausschaltens der LEDs quasi auszulagern und von einer selbstständigen Schaltung machen zu lassen. Dazu habe ich, als eine mögliche Lösung, mit einer Blink-LED als Taktgeber experimentiert und das funktionioert sogar. Blink LED als Taktgeber für Blinker

Das Arduinoprogramm kann dann an den jeweiligen Stellen so modifiziert werden, dass der Steuerausgang nur noch solange ein, bzw. ausgeschaltet ist, wie die Funktion es erfordert. Ein permanentes Takten der Ausgänge entfällt damit und somit auch die zusätzlich benötigte Rechenleitung.
 
Zuletzt bearbeitet:

Rockracer

Mitglied
Hupe

Durch eine "singende" Geburtstagskarte bin ich auf die Idee gekommen, eine Hupe in den Sawback einzubauen. Dazu gibt unterschiedliche Möglichkeiten. Die ganz einfachen Piezo-Lautsprecher (wie in den Karten) kosten ca. 50 Cent und benötigen einen Resonanzkörper (z.B. die Karosserie oder Karte), damit man überhaupt etwas hört.



Die nächste Stufe sind die folgenden Teile:



Diese benötigen keinen Resonanzkörper, sind aber auch nicht lautern ;) Dafür benötigen sie weniger Strom (Anschluss an 3,3V-Pin des Arduino), was aber für meine Zwecke keine Rolle spielt. Der Vorteil der beiden Lautsprecher ist, dass sie so wenig Strom benötigen, dass man sie ohne Verstärker an den Arduino anschließen kann, dafür sind sie eben auch nicht besonders laut.

Ich habe mich deswegen für einen „richtigen“ Lautsprecher entschieden (8 Ohm, 2 Watt), die gibt es bei Amazon oder in der Bucht.



Dafür habe ich folgenden Verstärker bestellt, gibt's in der Bucht für unter 5 EUR (LM 386)



Nun muss man den Lautsprecher noch passend füttern. Die einfache Möglichkeit besteht darin, den Lautsprecher direkt mit dem Arduino über den Befehl tone() anzusprechen. Damit lassen sich einfache Melodien erzeugen oder auch eine Polizeisirene. Das habe ich in dem oben erwähnten Programm realisiert. Dazu noch mal der folgende Hinweis: wie bereits oben erwähnt, ist das Programm an der Stelle noch nicht vollständig korrekt, es wird zwar die Sirene abgespielt, aber währenddessen werden keinen anderen Befehle ausgewertet, d.h. alle anderen Parameter verbleiben in dem aktuellen Stand, bis die Sirene wieder aus ist. Da muss ich später noch mal ran.

Die Lautstärke ist übrigens beachtlich. Man muss den Verstärker schon zurückdrehen, weil einem sonst die Ohren abfallen ;)

Eigentlich habe ich aber ein ganz anderes Ziel und zwar die Verwendung eines MP3-Moduls mit Kartenleser, die es auch schon für 1 EUR in der Bucht gibt.



Damit kann man jedes beliebige mp3-File abspielen (z.B. die Aufnahme einer 1:1 Hupe). Das habe ich allerdings noch nicht ganz zum Laufen gebracht. Ich schaffe es zwar über ein Programm die mp3-Files auf der Karte abzuspielen (auch hier ist die Lautstärke sehr beachtlich:rolleyes:), aber die gezielte Steuerung klappt noch nicht. Ich dachte, dass ich dazu die unten im Bild zu sehenden "Schalter" nutzen kann, über die man angeblich durch das Anlegen einer Spannung "Start" und "Pause" auslösen kann, aber das klappt nicht. Da muss ich noch mal ein wenig tüfteln ...
 

yoshi

Betreiber
Mitarbeiter
aber die gezielte Steuerung klappt noch nicht. Ich dachte, dass ich dazu die unten im Bild zu sehenden "Schalter" nutzen kann, über die man angeblich durch das Anlegen einer Spannung "Start" und "Pause" auslösen kann, aber das klappt nicht.
Normal legt man dort keine Spannung an. Normal liegt auf einem Pad die Spannung und auf dem anderen der Ground. Der Taster zieht dann die Spannung auf den Ground, also auf 0 V.

Das geht auch mit einem µC-Ausgang. Der wird ja entweder gegen VCC oder GND geschaltet. Dafür muss aber der GND von MP3-Player und µC verbunden sein. Und VCC von MP3-Player und µC sollten möglichst gleich sein.
 

wupperson

Mitglied
@Rockracer

Hey ho, Cooles Program. hab vor dieses in meinen Landrover Crawler zu bauen. Leider gehen bei mir die Bremslichter und Warnblinker nicht wenn der schaltkanal aus ist. Kann man das aktivieren? Wenn ja wie? Liebe Grüße und vielen Dank für die Bereitstellung
Axel
 
Zuletzt von einem Moderator bearbeitet:

Rockracer

Mitglied
Hallo Wupperson,

willkommen im Forum ;)

Ich habe das Programm so konzipiert, dass es einen Hauptschalter gibt, mit dem man alle Lichtfunktionen ausschalten kann. Einen sparaten Lichtschalter habe ich nicht implementiert, das kann man aber ändern.

Die Frage ist nun, was Du haben möchtest:
a) Geht es nur darum, dass der Hauptschalter zum reinen Lichtschalter wird?
b) Oder möchtest Du zusätzlich zum Hauptschalter einen Lichtschalter haben?

Viele Grüße,
rockracer
 

wupperson

Mitglied
Hey rockracer,
danke für die Antwort. Das nut dem Hauptschalter stimmt nicht ganz. Die hupe geht ja immer noch. Ich fänd den Hauptschalter Als Lichtschalter cool. Das heißt er schaltet nur Licht vorn und hinten. Bremsluchtfunktion und warnblinker sollten trotzdem funktionieren. Das wäre mega.
Mit freundlichen Gruß Axel
 

Rockracer

Mitglied
doch, das stimmt genau so, wie ich es geschrieben habe; es ist der Hauptschalter für die Lichtfunktionen und die Hupe zählt nicht zum Licht;)

Ich habe das Programm so modifiziert, dass der Schaltkanal 0 ein reiner Lichtschalter ist; Bremslicht und Warnblinker bleiben nun immer an.

Das Programm liegt unter den Ressourcen als Version 1.0.b. Ich kann es derzeit leider nicht testen, aber ich denke, das sollte so funktionieren. Falls nicht, bitte melden.
 

wupperson

Mitglied
Ja her, du hast Recht ich hab das überlesen,sorry. Aber danke das du so schnell warst. Ich guck mir gleich den Code an. hab am Wochenende meinen scaleCrawler komplettiert und muss nun gucken wie ich an den Nano komme. Ich danke dir ganz doll.
Gruß Axel

Hi, habs noch nicht probiert aber im Arduino IDE überprüfen lassen. Da ist ein Fehler drin. Hab nen Foto mit Markierung und Verbesserung angehängt. MFG Axel
 

Anhänge

Zuletzt von einem Moderator bearbeitet:

wupperson

Mitglied
Hab es heute ausprobiert. Läuft super. Warnblinker und Bremslicht funktionieren jetzt auch ohne das das Licht an ist. Danke

hi du, ich hab da nen Problem. hab jetzt einen Lenkungskanal eingebunden und eine Blinkerfunktion eingebaut. Läuft auch super aber ich kriege nicht die gleiche Fequenz wie der Warnblinker hin und ich hätte gerne nur die Blinkfunktion wenn ich stehe und lenke. ich kann den Blinker auch nur starten wenn ich stehe aber er blinkt weiter wenn ich fahre und lasse ich das lenkrad los linkt die richtung weiter bis ich gas in nullstellung mache. das nervt. kannst du mal bitte rübergucken? Wunder dich nicht , hab die Duke of Hazzard Melodie als Hupe :)
Danke Gruß Axel

Son kack. Da ist noch nen Fehler drin. Wenn ich Licht eingeschaltet habe und einmal Blinker rechts betätigt hab geht er in Nullstellung Lenkung immer selbstständig an. Wähle ich Blinker links geht er zwar aus aber sobald wieder in Nullstellung geht er wieder an. Mache ich Licht aus ist alles wieder gut. Kein plan warum
 

Anhänge

Zuletzt von einem Moderator bearbeitet:

BAXL

Admin
Mitarbeiter
@Rockracer

Hallo Stefan, Dein Projekt fand ich schon immer erstklassig, ich muss aber zugeben, dass ich den Umfang und die Qualität erst jetzt richtig zu würdigen weiß, nachdem ich selbst intensiv eingestiegen bin.
 

DFENCE

Mitglied
Ich könnte euch die Schaltung erweitern um ein Paar Transistoren, damit könnt ihr auch Lichter und co dran klemmen die mehr verbrauchen, wie z.b nen Cree LED Scheinwerfer der seine 2-3watt Brauch ( ich könnte gleichzeitig auch die Konstantstromquelle als Stromversorgung für die LEDs und Arduino mit einplanen, der ist es vollkommen egal wie viel Spannung anliegt, die gibt immer die Spannung aus die man entweder einstellt, oder man kann es so konstruieren das die Spannung sich an den Verbraucher anpasst. Das sind Bauteile von 2-3€ maximal je nach Leistungsfähigkeit und man muss sich nicht mehr drum kümmern ob man jetzt 2S 3S 4S oder und co fährt, das kann man so Konstruieren das man bis zu 40V reingeben kann, was dabei auch noch praktisch ist das sich die Spannungschwankungen an der Eingangsseite nicht auswirken auf den Ausgang, D.h das Licht bleibt immer Gleich Hell bis der Lipo Cutoff eintritt und wird nicht dunkler mit abnehmender Spannung, das ist auch ganz gut für den Arduino.

Falls ich nen Denkfehler hab irgendwo, bitte mit bescheid geben :)
 

Rockracer

Mitglied
Ich könnte euch die Schaltung erweitern um ein Paar Transistoren, damit könnt ihr auch Lichter und co dran klemmen die mehr verbrauchen, wie z.b nen Cree LED Scheinwerfer der seine 2-3watt Brauch ( ich könnte gleichzeitig auch die Konstantstromquelle als Stromversorgung für die LEDs und Arduino mit einplanen, der ist es vollkommen egal wie viel Spannung anliegt, die gibt immer die Spannung aus die man entweder einstellt, oder man kann es so konstruieren das die Spannung sich an den Verbraucher anpasst. Das sind Bauteile von 2-3€ maximal je nach Leistungsfähigkeit und man muss sich nicht mehr drum kümmern ob man jetzt 2S 3S 4S oder und co fährt, das kann man so Konstruieren das man bis zu 40V reingeben kann, was dabei auch noch praktisch ist das sich die Spannungschwankungen an der Eingangsseite nicht auswirken auf den Ausgang, D.h das Licht bleibt immer Gleich Hell bis der Lipo Cutoff eintritt und wird nicht dunkler mit abnehmender Spannung, das ist auch ganz gut für den Arduino.

Falls ich nen Denkfehler hab irgendwo, bitte mit bescheid geben :)
Ich merke schon, dass Du im Thema Elektronik viel tiefer verwurzelt bist als ich ;) Im Moment habe ich mich in andere RC-Projekte "verbissen" und das Thema Arduino liegt auf Eis. Aber danke für Dein Angebot :thumbsup: Falls ich bei dem Thema wieder einsteige und Bedarf entsteht, komme ich gern darauf zurück ...
 

BAXL

Admin
Mitarbeiter
Ich habe mir zwischenzeitlich auch mal Dein Programm angesehen, sieht sehr gut aus. :thumbsup:
So ein Nano hat auch was, für eine fliegende testverdrahtung benötigt man allerdings ein Breadboard, was in vielen Uno-Starterpacks dabei ist, oder für ein paar Euros bei Amazon zu kriegen ist. Für 12€ drei Breadboards mit 120 Steckverbindern, da kann man nicht meckern, die Nanos (Nachbauten) gibts im 5er Pack für knapp 17€, also zirka 3,20€ pro Stück. Je nachdem wo man bestellt wird es auch günstiger gehen, aber die Versandkosten beachten, die waren bei mir schon inkl..
 

Gurke

Mitglied
Hallo @ all

Danke erst einmal an Rockracer:thumbsup:

Frecher Weise habe ich für mein Projekt "Ural" den Sketch gemopst ;)
Die Lichtsteuerungen die es auf dem Markt gibt, entsprechen nicht ganz meinen Vorstellungen:thumbsdown:
Einfach und funktioniert und vor allem unkopliziert.
Vorraussetztung ist man hat an der Funke das Trimming der Lenkung- und des Gaskanals auf 0 - sollte so sein bei genauer mechanischer Einstellung und
die Leistungseinstellung der Kanäle sollte nicht unter 75% liegen. Dann ist alles Super ( für den anderen Fall hab ich auch noch keine Lösung :D )
Ich habe einfach den oberen und unteren Wert der Kanäle verändert (900, 2100) und schon spielen alle Funken mit ohne noch einmal eingreifen zu müssen.
@wupperson - binde einfach ein "delay (500)" ein und schon blinkt er mit gleicher Geschwindigkeit wie der Warnblinker.
Irgendwo hatte ich mal gelesen man sollte die I/O`s immer mit Vorwiederstände betreiben um den Chip zu schonen.
Und um die Last von dem Chip zu nehmen, betreibe ich die Verbraucher an den I/O`s wahlweise mit Transistoren , Optokopplern oder Mosfets.
Step by Step passe ich nun den Sketch an.

Vielen Dank noch einmal,
wenn meine Vorstellungen umgesetzt sind - melde ich das Ergebnis.:D
Gruß Gurke
 

BAXL

Admin
Mitarbeiter
Wie ich an den Zugriffszahlen sehe, erfreut sich dieses Thema einer sehr großen Beliebtheit - auch bei unseren Gästen. Ich möchte es darum nicht versäumen, ebenfalls auf die übrigen Themen in der Arduinoecke hinzuweisen. Gerade wenn man noch keine Erfahrungen mit diesen kleinen, aber sehr leistungsfähigen Microcontrollern hat, könnte so manches der anderen Themen hilfreich sein. Insgesamt ist die Sache aber gar nicht so schwierig, man muß sich nur darauf einlassen wollen. Bei Problemen haben wir hier einige Kollegen, die sicher weiterhelfen können und wollen.
 

DFENCE

Mitglied
Sowas hab ich doch auch schon gebastelt, mit Steuerung für Blinker und Bremslicht und der möglichkeit aus dem dritten Kanal zusätzlich 8 steuerbare kanäle zu machen.
WhatsApp Image 2019-06-01 at 02.37.01.jpeg WhatsApp Image 2019-06-01 at 02.38.22.jpeg WhatsApp Image 2019-06-01 at 03.57.21.jpeg WhatsApp Image 2019-06-01 at 05.08.10.jpeg WhatsApp Image 2019-06-01 at 05.05.25.jpeg
 
Top Bottom