[Elektronik] Sammlung von Lichtsteuerungen mit Arduino

Hier dreht sich alles um die Modellbahn
Herbert

[Elektronik] Sammlung von Lichtsteuerungen mit Arduino

Beitrag von Herbert »

Hi N-Bahner,

ich möchte hier ein Fass aufmachen, wo ich so nach und nach meine Lösungen für diverse Lichtsteuerungen vorstelle. So soll im Laufe der Zeit eine Sammlung an Ideen bzw Lösungen entstehen, von der wohl auch der eine oder andere von Euch profitieren kann.

Den Beginn mache ich mal mit einer Hausbeleuchtungssteuerung, die anders als viele fertige Lösungen nicht mit einem fixen Ablauf arbeiten, sondern wo die einzelnen LEDs zufallsgesteuert ein- bzw ausgeschaltet werden. Dadurch ergibt sich bei größeren Häuseransammlungen ein nicht nachvollziehbares Wechseln der Lichter in den Häusern. Im nachfolgenden Beispiel sind 5 LEDs im Einsatz.

Zum Nachbau benötigt man folgende Komponenten:

- Steckbrett
- 5 LEDs nach Wahl
- 5 Widerstände 1kOhm
- 1 Arduino mit mind. 5 digitalen Ausgängen
- Jumperkabeln in ausreichender Länge und Menge

Bild

Ich verzichte hier auf das Zeigen eines Schaltplans, da der oben gezeigte Aufbauplan in meinen Augen aussagekräftig genug sein und eh jeder wissen sollte, wie man eine LED mit Strom versorgt. Und hier noch der zugehörige Sketch:

Code: Alles auswählen

// ---------------------------------
// Hausbeleuchtung durch Zufallszahl
// ---------------------------------
int Anzahl=5;            // Anzahl angeschlossener LEDs
long Streckung=7000;     // Erhoeht die Wartezeit (in ms)
int Tab[]={0,0,0,0,0};   // Status-Tabelle der LEDs; 0=aus, 1=an
int Zufall;              // Wert der zufaellig ausgewaehlten LED
int Wartezeit;           // Wartezeit zwischen 2 Veraenderungen

void setup() {
// Zufallszahlengenerator Start
  randomSeed(analogRead(0)); 
// PINs auf OUTPUT setzen
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);  
}

void loop() {
// waehlt eine der 5 LEDs zufaellig aus
  Zufall=random(Anzahl);
// wenn die LED aus ist, setze Status in Tabelle auf 1 und schalte LED ein
  if (Tab[Zufall]==0) {
    Tab[Zufall]=1;
    digitalWrite(Zufall+8,HIGH);  }
// wenn die LED an ist, setze Status in Tabelle auf 0 und schalte LED aus
  else  {
    Tab[Zufall]=0;
    digitalWrite(Zufall+8,LOW);  }
// ermittle Zufallszahl fuer die Wartezeit setze delay
  Wartezeit=random(50);
  delay((Wartezeit*100)+Streckung);  
}
Im Sketch müssen lediglich 4 Änderungen vorgenommen werden:

int Anzahl=5;
long Streckung=7000;
int Tab[]={0,0,0,0,0};

Bei Anzahl ist die Anzahl der angeschlossenen LEDs anzugeben.
Bei long Streckung=7000; ist ein Wert bis 32000 einzugeben, um die die Wartezeit gestreckt wird, bis die nächste LED an oder aus geht.
Bei int Tab[].... muss für jede LED eine 0 eingeben werden.
Und im loop-Teil sind bei beiden digitalWrite Befehlen die PIN-Nummer, mit der begonnen wird, zu ändern (in meinem Fall beginne hängt die erste LED auf PIN 8).

Und hier ist auch das größte Problem: die Anzahl der steuernden LEDs ist am Arduino (egal, welchen man hat) begrenzt. Desweiteren ist man auch mit der Strommenge schnell am Limit. Die nächste Version wird diesbezüglich kein Limit haben, aber für Mehrparteienhäuser, wo nur einzelne Fenster zufallsgesteuert beleuchtet werden sollen, ist diese Lösung mit Sicherheit ausreichend.
Helmut
Site Admin
Beiträge: 1525
Registriert: 14 Jan 2019, 19:29

Re: [Elektronik] Sammlung von Lichtsteuerungen mit Arduino

Beitrag von Helmut »

Hallo Herbert,
ich bin jetzt etwas verwundert, dass die Strombelastung ein Problem ist. An dem PIC meines Autobahnmoduls habe ich 44 LED über 2,2 k Widerstände angeschlossen.
Ich bin gespannt, wie Du da mehr LEDs anschließen willst. Mir fällt da nur spontan ein, die Ausgänge als Datenbus zu nutzen. Bei 5 Leitungen sind das 31 LEDs (32 - 1 für alle aus). Allerdings musst Du die Datenleitungen irgendwie decodieren. Oder hast Du da noch was anderes vor.

Gruß aus KerpeN
Helmut
Herbert

Re: [Elektronik] Sammlung von Lichtsteuerungen mit Arduino

Beitrag von Herbert »

Hi Helmut,

keine Ahnung, was ein PIC kann, aber am Arduino ist die Gesamtbelastung auf allen PINs zusammen 200 mA.
Ich habe heute ein Paket mit 20 Shift-Registern bestellt. Pro Shift-Register kann man 8 LEDs steuern und man braucht nur 3 PINs am Arduino und die Spannungsversorgung erfolgt extern. Aber das Beste: Man kann beliebig viele solcher Shift-Register hintereinander setzen und braucht trotzdem nur 3 PINs.
MHAG
Beiträge: 2032
Registriert: 21 Jan 2019, 01:09

Re: [Elektronik] Sammlung von Lichtsteuerungen mit Arduino

Beitrag von MHAG »

Hallo Herbert,

gibt´s schon Erfahrungen mit den Shift-Registern? Ansteuerung, Praktikabilität, Beschränkungen,...

Neugierige Grüße 8-)
Michael
Antworten