ein User hat mich gefragt ob ich dazu nicht mal ein paar Hinweise geben kann und ein paar Bauteile beim Namen nennen könnte. Habe mich heute Mittag mal drann gesetzt und eine Kleinigkeit gebastelt.
Inhalt ist:
Ein freier Empfängerkanal wird verwendet um über einen Schieber/Drehrad am Sender eine LED, oder LED-Kette im Modell zu dimmen, oder auszuschalten. Bei der vorgeschlagenen Schaltung ist die LED(Kette) am Flugakku verbunden. Es steht also die volle Spannung des Flugakkus für LEDs zur Verfügung.
WICHTIG: Beachtet das ihr entsprechende Vorwiderstände verwendet. Ist euch die Spannung zu hoch und ihr wollt sie einfach dimmen, dann gibt es hier auch eine Lösung. Fangen wir also mal bei 0 an...
Hier mal als erstes ein Foto einer Beispielschaltung die ich eben aufgebaut habe:
Ich hab das große Arduino Board (Arduino Uno) genommen, weil ich nur dieses hier habe. Das Ganze ist aber auch auf die kleinen Boards ohne USB-Anschluss übertragbar, die viele ja schon aus ihren Coptern kennen.
Das Ganze ist im Beispiel so aufgebaut, dass ich über den Gas-Schieber eine LED dimmen kann von aus, bis ganz hell. Stufenlos... ok, in 256 Stufen Aber optisch scheint das stufenlos.
Benötigte Bauteile für den Versuch: (Ihr müsst das dann für eure Ansprüche abwandeln... hier ging es mir darum eine LED u dimmen).
- 2x Widerstand 470 Ohm
- 1x LED rot
- 1x Transistor BC 550 B Datenblatt
- 1x Sender + Emfpänger
- 1x LiPo 2S
- Steckbrett
- Steckbrücken
Die Schaltung ist wie folgt aufgebaut:
ACHTUNG: An die LED muss auch ein Widerstand. Ich hab da jetzt mal in der Zeichnung nur ein einfaches Symbol für eine Glühlampe eingezeichnet
Ihr seht, es ist recht wenig Aufwand da was zu basteln und das Ganze ist beliebig erweiterbar.
Wichtig ist, dass ihr genau darauf achtet an geeigneter Stelle Vorwiderstände einzusetzen (das müsst ihr z.B. an jeder Basis von jedem Transistor machen und solltet es auch an den LEDs machen!) da euch sonst die Teile überhitzen und durchbrennen können. Bestellt am Besten schonmal gleich mehr Bauteile, als ihr einplant
Der Arduino ist NICHT dafür ausgelegt, hohe Lasten zu schalten. ein LED-Stripe direkt am Arduino zu betreiben endet für den Kleinen leider mit Rauchzeichen. Darum ist der Transistor erforderlich. Dieser dient als Schalter und kann eine große Last schalten. Der hier verwendete Typ kann nur 0,1A schalten, was aber schon wesentlich mehr ist als ein einzelner Ausgang am Arduino. Der Transistor kann auch durch stärkere Transistoren die 1A oder auch Hochleistungstransistoren die viele A schalten können ersetzt werden. Achtet dann aber auch auf ausreichende Kühlung und das die erforderlichen Daten im Datenblat passen.
Wie funktioniert die Schaltung?
Ganz einfach... habt ihr den Senderknüppel oder einen Schieber oder Drehrad auf voll negativ stehen, wird am Empfänger am entsprechenden Kanalausgang ein High-Signal mit einer Dauer von 1 - 2 ms ausgegeben. 1ms = Servo auf Anschlag eine Seite (0°), 2ms = Servo auf Anschalg andere Seite (270° bis 280°).
Dieses Signal lest ihr mit dem Arduino an einem Ditigalpin (hier Pin 12) ein. Schon ist es im Controller und ihr könnt damit arbeiten.
Für die LED anzusteuern benötigt ihr am Ausgang auch wieder ein gepulstes Signal. Ihr regelt also nicht direkt die Spannung die an eurer LED ankommt, sondern die Dauer, wie lange diese Spannung anliegt. Beispiel: Ein schnelles Blinken der LED bei dem sie zu 1/3 aus und 2/3 an ist, lässt bei einer sehr schnellen Blinkfolge für das menschlische Auge die LED nur zu 66% hell leuchten
Diese Eigenschaft nutzen wir und unterteilen die Leuchtdauer (also die optisch wahrgenommene Helligkeit) in 256 Schritte. Diese Impulse müssen am Ausgang ankommen das die LED (bzw. genau genommen der davor geschaltete Transistor) das so umsetzen kann.
Wie macht man das am einfachsten? Es gibt dafür eine Methode die das Leben sehr leicht macht und zuverlässig funktioniert. Sie heißt "map()" und hat die Parameter 'value', 'min-Input', 'max-Input', 'min-Output', 'max-Output'.
'value' ist das Signal, das wir vorher vom Empfänger über dne Pin 12 des Arduino eingelesen haben.
'min-Input' ist der niedrigste Wert der vom Empfänger kommen kann - 1ms = 1000
'max-Input' ist der höchste Wert der vom Empfänger kommen kann - 2ms = 2000
'min-Output' ist der niedrigste Wert der für die Helligkeit der LED an Pin 6 vom Arduino ausgegeben werden soll - 0
'max-Output' ist der höchste Wert der für die Helligkeit der LED an Pin 6 vom Arduino ausgegeben werden soll - 255
Der Rest im Code ist Konfiguration und Standardgeplänkel. Der Code ist auch soweit kommentiert.
Der Code:
Code: Alles auswählen
/*
"Mode-Switch" für RC-Anlagen (in dem Fall ein einzelner Kanal)
Pinbelegung:
Kanal 3 vom Emfpänger an Digit 12 //noch frei
Schalt-Ausgang an Digit 6
*/
const int kanal3 = 12; //hier können weitere Emfpängerkanäle den Digitalports des Arduinos zugeordnet werden
const int out6 = 6;
#include <Servo.h> //Wichtig. Muss includiert werden, um die Empfängerausgänge auszulesen
int inputValueKanal3 = 0; //In dieser Variable wird der Wert von Kanal 3 am Empfänger gespeichert
void setup() {
//Input- und Output-Pins setzen...
pinMode(kanal3, INPUT);
pinMode(out6, OUTPUT);
//Output über serielle Schnittstelle starten (optional, aber praktisch zur Fehlersuche)
Serial.begin(9600);
}
void loop(){
inputValueKanal3 = pulseIn(kanal3, HIGH); //Auslesen vom Emfpängersignal
analogWrite(out6, map(inputValueKanal3, 1000, 2000, 0, 255));
Serial.println(map(inputValueKanal3, 1100, 1900, 0, 255));
}
Einfaches Schalten von LEDs und LED-Stripes ohne Dimmen und ohne Arduino:
Angenommen ihr wollt jetzt einfach nur an/aus von Licht und nicht dimmen, dann braucht ihr auch keinen Arduino!
Für den Fall reicht ein altes Servo. Dort lötet ihr das Poti aus (oder stellt es auf Neutralposition, aber auslöten ist sauberer...) und ersetzt das Poti durch 2 Widerstände mit gleichem Wert. Ein Poti hat 3 Anschlüsse. Es geht je ein Widerstand auf der Servoplatine von den beiden äußeren Lötpunkten des Potis zum Mittleren. Anstelle des Motors im Servo schließt ihr jetzt entweder
- für eine einzelne LED die LED (mit Vorwiderstand!) direkt an (ich rede hier von standard-LEDs die nur ihre ca. 20mAh benötigen )
- oder an den Motorkabeln ein Relais für große Lasten (damit schatet ihr nur das Relais und die Spannung für eure Last kommt vom Flugakku)
- oder die elgante Lösung: Wieder mit einem Transistor. Den schließt ihr genau so an wie oben geschrieben das Arduino-Board. Ground (Der Collector, im Datenblatt mit C oder K gekennzeichnet) ist dann die Minus-Leitung an der Servoelektronik wo vorher der Servomotor angeschlossen war, die Basis vom Transistor an die Plus-Leitung vom Servomotor und den Rest wie oben auf der Zeichnung vom Anschluss mit dem Arduino-Board. - fertig.
Schließt ihr das umgebaute Servo jetzt an einem Emfpänger an und daran wie oben gezeichnet die Last, dann könnt ihr mit einem einfachen Kanalschalter (ohne Dimmen) die Last an und aus schalten.
So das wars jetzt erst mal von meiner Seite. Ich hoffe das hilft dem Ein oder Anderen.
Empfehlenswerte Literatur von meiner Seite: "Die elektronische Welt mit Arduino entdecken". Da wird sowohl auf E-Technik, wie auch auf die Programmierung eingegangen. Leider hab ich das Ganze auch nicht professionell gelernt und deswegen sind alle hier gemachten Angaben aufgrund meiner bisher angelesenen und durch Ausprobieren erlangten Erfahrungen gemacht. Kann sein das so mancher der sich damit wirklich auskennt die Hände überm Kopf zusammenschlägt wenn er das sieht, aber so habe ich schon einige Schaltungen erfolgreich zu ihrer Funktionalität verholfen.