Sonntag, 14. Juli 2013

Steuerung von RGB LED strip

Also wie versprochen kommt nun mit meinem zweiten Post, eine Anleitung um mit dem Arduino eine 12V GRB-LED zu betreiben.

Der Aufbau

 

Benötigte Bauteile 

 

Für den Aufbau braucht man folgende Bauteile:

  3x Transistor MOSFET IRL540N (Conrad)
  3x Diode 1N4007 (Conrad)
  1x RGB-Strip (z.B. Conrad mann kan auch eine längere Strip benutzen)
  1x 12V Netzteil (Conrad ich benutze ein altes Computernetzteil)
  1x Taster (Schließer)
  1x Widerstand 10kΩ
  1x Arduino Board (bei mir Arduino UNO)

Außerdem sollte man ein Steckboard besitzen (Conrad) da man so ohne zu Löten Schaltungen aufbauen kann. Desweiteren benötigt man einer Leitung, dafür eignet sich am besten Klingeldraht (Conrad).


Der Stromlaufplan

Der Stromlaufplan sieht wie folgt aus:
 
Stromlaufplan

Wie schließe ich den Transistor richtig an?

In dem nächsten Bild wird gezeigt wo man das Gate [G], Drain [D] und Source [S] findet:
Transistor
Bei Fragen wie ein MOSFET Transistor funktioniert kann ich diesen Artikel empfehlen.

Was ist eine RGB-Strip

Am besten fange ich damit an was eine RGB-LED ist. Bei dieser LED handelt es sich im Grunde um drei LEDs in einer, nämlich eine Rote, eine Grüne und eine Blaue. Diese drei LEDs besitzen in der RGB-LED gemeinsame +12V. Folglich hat einer RGB-LED 4 Pinne einen für +12V, einen für die Rote LED, eine für die Grüne LED und einen für die Blaue LED. Eine RGB-Strip ist nichts anderes als, einige RGB-LEDs die auf einem Band hintereinander Gelötet wurden. Diese haben die Anschlüsse +12V, Rot [R], Grün [G] und Blau[B]. die Vorwiederstände für die LEDs sind bereits draufgelötet.

So sieht mein Aufbau der Schaltung aus:


Der Code

Ich hab zwei Programme hochgeladen. Siehe hier. Bei beiden Programmen habe ich einen neuen Befehlverwendet.

analogWrite(LED_R, DIM_R);

Denn digitalWritr() Befehl habe ich ja schon vorgestellt. Diesen Benutzt man um einen Pin auf HIGH oder LOW zu schalten also 5V oder 0V. Arduino besitzt auch Analogeausgänge, diese werden mit diesem Zeichen ~ gekennzeichnet und stehen vor der Pin Nummer, z.B. ~11. Das besondere an Analogenausgängen ist diese einen Wert zwischen HIGH und LOW annehmen können also einen Wert zwischen 5V und 0V. Bei Arduino beträgt die Stückelung 255, dass bedeutet das die 5V durch 255 geteilt wurden. Mann kann deshalb mit dem analogWrite() eine Zahl zwischen 255 und 0 ausgeben, bei der Zahl 200 würden so ca. 3,9V am Ausgang anliegen. In dem oben gezeigten Beispiel steht das LED_R für den Pin der als Ausgang fungieren soll. Bei DIM_R handelt es sich um eine Variable die den Wert enthält der ausgegeben werden soll.

Ich hoffe ihr könnt die Programme verstehen ansonsten schickt mir einfach eure Fragen mit dem Kontaktformular oder direkt an pilot.arduino@gmail.com

In meinem Nächsten Beitrag werde ich zeigen wie ich die Bauteile auf eine Platine Löte und diese dann in ein altes PC-Gehäuse einbaue.

Samstag, 6. Juli 2013

Wie alles begann

Während meiner Ausbildung zum EAT (Elektroniker für Automatisierungstechnik) kam ich das erste Mal mit Arduino in Kontakt. Meine Aufgabe lautete damals, dass ich 3 Analogwerte von Sensoren (ein Fotowiderstand für Helligkeit, ein Feuchtigkeitssensor und ein Wärmesensor) auswerten soll, um dann ein Signal an eine SPS (Speicherprogrammierbare Steuerung) zu schicken.


Bei der Ausbildung Kamm ich auch mit Homeautomatisierung zusammen, nur diese finde ich einfach zu teuer. So bin ich dann auf die Idee gekommen mit einem Arduino dieses Problem zu lösen. Als Erstes habe ich mir das Set "Arduino Starterset" bei SEGOR electronics GmbH bestellt, den Link gibt es Hier. Ich habe mich für dieses Set entschieden, weil es viele verschiedene Elektrobauteile enthält. Ein weiterer Grund war das Buch "Arduino für Einsteiger" von Massimo Banzi das dem Set beiliegt. In dem Buch wird die Grundliegende Programmierung von Arduino beschrieben. Das Buch ist wirklich sehr einfach gehalten und jemand der Erfahrung in Elektrotechnik und anderen Programmiersprachen hat wird sich schnell unterfordert füllen. Aber für Einsteiger ist es genau das richtige Buch. Ich würde den Kauf allein wegen der Elektrobauteile jedoch nicht bereuen.


Das erste Projekt


Ich möchte bei meinem ersten Post auch die reckt ein Projekt mit Liefern.
In dem Projekt geht es nur darum mithilfe eines Tasters NO (normally open das heißt es ist ein Schließer) eine LED ein und aus zu schalten.

Als Erstes braucht Ihr die Arduino Software, diese könnt Ihr unter diesem Link herunterladen. Als Nächstes braucht ihr den Anschlussplan und den Code dies findet ihr hier, des Weiteren ein Bild von meinem Aufbau.


Code

Zu beginn werden die Variablen zugewiesen.

const int LED = 13;

Hier wird eine Konstante (const) Integer (int) Variable erzeugt die LED heißt und den Wert 13 zugewiesen bekommt. Das Zeichen " ; " ist sehr wichtig und bedeutet das mein Befehl hier aufhört, z.B. wie bei einem Satz der Punkt.

int VAL = 0;

 
Hier wird eine Variable des Typs Integer (int) erzeugt (diese ist nicht konstant) die den Name VAL trägt ihr Wert ist 0.


void setup() {
   pinMode(LED, OUTPUT);
   pinMode(SCHALTER, INPUT);
}


Nach void setup() { beginnt das Programm. Der Teil, der zwischen den geschweiften Klammern steht, wird nur einmal durchlaufen. Durch pinMode() wird ein PIN als Eingang oder Ausgang festgelegt. LED steht für eine Variable, die zugeordnet werden soll. OUTPUT und INPUT stehen dafür ob es ein Ausgang oder ein Eingang sein Soll. 


void loop() {
...
}


Hier beginnt das Hauptprogramm. Alles was nach void loop() {...} in den geschweiften Klammern steht wird immer wiederholt.

VAL =digitalRead(SCHALTER);

Hier wird nun der Wert von SCHALTER (PIN 12) ausgelesen (digitalRead) und in die Variable VAL geschrieben.


if ((VAL == HIGH) && (VAL_old == LOW)) {
   STATE = 1 - STATE;
   delay(10);
   }
VAL_old = VAL


Hier passirt nichts anderes als das wenn der Schalter betätigt wird die Variabele STATE den Wert 1 bekommt. Wird der Schalter losgelassen bleibt der Wert von STATE auf 1. Wird der Schalter ein weiteres Mal betätigt erhält STATE den wert 0. Nun wird der Schalter losgelassen bleibt der wert auf 0. Für alle die wissen wollen wie genau dies funktioniert habe ich hier eine Anleitung.


if (STATE == 1) {
   digitalWrite(LED, HIGH);
   {
   else {
   digitalWrite(LED, LOW);
   }


Wenn STATE == 1 ist dann schreibe LED also Pin 13 auf HIGH. Wenn STATE keine 1 hat dann schreibe LED also Pin 13 auf LOW. Mit dem Befehl digitalWrite() kann nur HIGH oder LOW schreiben also +5V oder 0V.


delay();

Zum Abschluss möchte ich noch kurz den delay Befehl erklären. Dabei wird das Programm für eine Zeit unterbrochen, diese Zeit steht in Millisekunden in der Klammer. Zum Beispiel bei einer 10 wird erst nach 10ms der nächste Befehl bearbeitet.



So das war dann auch schon mein erstes Postieg auf diesem Blog ich hoffe das liest auch der ein oder andere. Mein nächstes Projekt besteht darin eine RGB-LED Strippe in verschiedenen Farben zum Leuchten zu bringen.

Bis dahin könnt Ihr ja mit dem heute gelernten Rumspielen z.B. mithilfe des delay Befehls eine LED zum Blinken zu bewegen.

Bei Fragen benutzt einfach das Kontaktformular oder schreibt direkt eine E-Mail an pilot.arduino@gmail.com