PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED Steuerung



Audiraudi
28.11.2007, 05:30
Hi,

ich fange gerade an, mich mit dem schönen Gebiet der Elektronik auseinanderzusetzten. Nun habe ich folgende Idee:

Ich möchte mehrere LED-Reihen mit den Funktionen Lauflicht, Blinken und Dauer an bauen. Die Reihen sollen zwischen 6 und 60 LEDs lang sein und das ganze noch dimmbar.
Später soll das ganze über den PC angesteuert werden.

Ich dachte mir, um das zu realisieren Setze ich eine Analog Ausgangskarte (Marke Conrad) ein, und steuere das an/aus jeder Reihe über einen Kanal an und die Programmsteuerung ganz einfach pro Programm einen Kanal.
Die Dimmung steuere ich über die Spannung an.

Allerdings breitet mir die Schaltung noch gewisse Probleme.
Was hättet ihr denn für Vorschläge?

mfG

Audiraudi

thewulf00
28.11.2007, 09:18
Ich würde, unabhängig davon, was Du jetzt bereits an Teilen da hast, einen einen µC nehmen, der kann ja mit dem PC verbunden sein, und der steuert alle LEDs. Und zwar nicht mit seinen Ports, weil dafür sind es zu wenig, sondern mit Portexpandern, beispielsweise dem 4094-Schieberegister. Ich habe hier auch eine LED-Matrix rumliegen, etwa 12x5 "Pixel", also LEDs, und die sind über 6x 4049 angeschlossen, dass funktioniert einwandfrei.
Dazu braucht der µC nur 3 Ports, und man kann das auch jederzeit erweitern, wenn man hinten einfach weitere 4094 anhängt, denn die schaltet man in Reihe.

Audiraudi
28.11.2007, 12:34
Hi Wulf,
Danke erstmal für die schnelle Antwort.


Dazu braucht der µC nur 3 Ports, und man kann das auch jederzeit erweitern, wenn man hinten einfach weitere 4094 anhängt, denn die schaltet man in Reihe.

Die 3 Ports steuern dann den DI, Clock und Enable des Schieberegisters an und die Ausgabe an die LEDs dann über seriell bei Lauflicht und parallel bei Blink bzw Daueran, welches über einen Taktgeber gesteuert wird oder?

thewulf00
28.11.2007, 13:20
Ne :-)
Das mit dem Lauflicht KANNST Du so machen. Aber ich empfehle den "Bildmodus" (so nenne ich es).
Funktioniert in etwa so:
1. OE auf low (Output Enable = Ausgänge nicht benutzen)
2. Das gesamte "Bild" (daher der Name) in alle Register "reinschieben". (Bsp. Alle LEDs aus, 3. LED an)
3. OE wieder auf high, damit wird das angezeigt.
4. Eine Zeit warten, so dass der Benutzer das "Bild" sehen kann. (100ms - 300ms, je nach Flüssigkeit und Anwendung)
5. OE wieder low
6. Nächstes Bild reinschieben (im Beispiel von oben: Alle LEDs aus, 4. LED an)
7. OE wieder high
.
.
.


Das lässt sich gut in Funktionen verpacken. Bei mir mach ich das immer so, dass mein Hauptprogramm ein paar Register füllt (Du kannst ja auch SRAM nehmen, wenn Du eine Hochsprache benutzt), und dann lediglich die Funktion "senden" ausführt. Und "senden" setzt sich wiederum aus "bit_HIGH_senden" und "bit_LOW_senden" und "CLOCK" zusammen.
Das funktioniert einwandfrei.

Audiraudi
29.11.2007, 22:39
Das lässt sich gut in Funktionen verpacken. Bei mir mach ich das immer so, dass mein Hauptprogramm ein paar Register füllt (Du kannst ja auch SRAM nehmen, wenn Du eine Hochsprache benutzt), und dann lediglich die Funktion "senden" ausführt. Und "senden" setzt sich wiederum aus "bit_HIGH_senden" und "bit_LOW_senden" und "CLOCK" zusammen.


Hierbei sprichst du jetzt von der Programmierung des µC wenn ich das richtig versteh.

Mit welchen Controllern und Sprachen arbeitest du denn da?

thewulf00
30.11.2007, 08:53
Ich habe das mal mit einem AT90s2313 umgesetzt. (Nachfolger: ATTiny2313) Das geht aber ebenso mit allen anderen Controllern (von Atmel und nicht von Atmel).

Ich hab das mit Assembler gemacht. Das geht aber ebensoeinfach mit C oder BASCOM. Mit BASCOM für Anfänger vielleicht am einfachsten.

Besserwessi
30.11.2007, 12:55
Bis etwa 60 Leds geht das auch noch ohne Portexpander, wenn man die LEDs als Matrix (z.B. 8x8) verschaltet. Allerdings wird man dann eventuell noch Treiber für etwas mehr Strom brauchen. Bei wesentlich mehr LEDs muß man dann die Helligkeitsregelung in Assembler Programmieren.

Audiraudi
28.12.2007, 08:23
So ich mal wieder.
Die Arbeit lässt mir endlich mal wieder Zeit.

Also, wenn ich das jetzt richtig verstehe, setze ich über den DI die Daten in die Register und geh dann parallel auf die LEDs.
Allerdings müsste ich dann ja jede LED mit dem jeweiligen Ausgang verlöten oder?

Ich strebe eigentlich eine 2-wire Lösung an, wie es bei den fertigen LED-Leuchten für Dekorzwecke verwendet wird.

Oder liege ich jetzt ganz falsch?