Forum: Mikrocontroller und Digitale Elektronik LED Blending


von Daniel Kümper (Gast)


Lesenswert?

Gute Nacht allerseits!

Bin seit kurzer Zeit dabei mit AVRs rumzuprobieren. Habe hier einen 8515 
und mir ist vor einiger Zeit die nette Eigenschaft aufgefallen, daß 
durch die hohen Frequenzen LEDs, die abwechselnd an und abgeschaltet 
werden halt dunkler erscheinen!
Nun beabsichtige ich im Ramen eines kleinen Projektes eine Ansteuerung, 
bei der der eine bestimmte LED-Kombination, die z.B. in rxx gespeichert 
ist und an PortX ausgegeben werden soll, langsam ausfaded (also langsam 
dunkler wird). Eigentlich wollte ich dies erst mit Hilfe von 
Kondensatoren machen, aber irgendwie erscheint mir die programmier 
(assembler) Methode sinniger. Hab auch schon die ganze Zeit diverse 
Schleifen probiert, hab aber immer wieder Probleme.

Nun habe ich dazu einige Fragen:
1. Hat jemand zufällig schon so eine Routine?
2. Ich 'Schleife' mich hier langsam aber sicher tod, gibt es eine 
Funktion die einfach ein simples warten für x Taktzyklen ermöglicht, 
oder liege ich richtig in der Annahme, daß ich sowas am besten mit 
verschachtelten Schleifen erreiche?

Out of this Topic:
3.Nichts hiermit zu tun, aber gibt es sinnvolle Möglichkeiten eine 8bit 
Zufallszahl zu bekommen?
4. Gibt es bei den Mikrocontroller eine Taktgrenze nach unten?
5. Was passiert wenn man ein zu schnelles Quartz dranhängt?

MFG
Danielk

von Jürgen (Gast)


Lesenswert?

Hi!

Das Prinzip ist folgendermaßen:
Ein Register kennzeichnet die Helligkeit der LEDs (0-255).
Die LED wird eingeschaltet, ein Register zählt hoch und bei Erreichen 
des Wertes des "Helligkeits-Registers" wird die LED ausgeschaltet und 
weitergezählt bis 255 und das ganze wieder von vorn. Ein weiterer Zähler 
zählt diese Zyklen und bei einer bestimmten Anzahl (je nach gewünschter 
Geschwindigkeit des Ausfadens) wird das "Helligkeits-Register" 
dekrementiert. Wird es Null, ist das Programm zu Ende.

Gruß

Jürgen Lang

von Holger Barske (Gast)


Lesenswert?

So isses. Man nennt das "Pulsbreitenmodulation". Der Trick ist, dass die 
steuernde Frequenz konstant gelassen und nur das Verhältnis zwischen An- 
und Ausschaltdauer variiert wird. Die Summe von beiden bleibt immer 
konstant. So etwas lässt sich sehr elegant mit der PWM (=puls width 
modulation, s.o.)-Funktion von Counter/Timer 1 realiseren.

Grüße: Holger

von Kai Kühle (Gast)


Lesenswert?

Hi.
Funktioniert das wohl auch mit 3 LED`s (rot, grün, blau) um Farben zu 
mischen?

von Jonas Diemer (Gast)


Lesenswert?

2. Für schleifen (auch in anderem zusammenhang) gibz tools. auf 
diemer.it-pc.de ist mein linux programm und ein link zu einem anderen 
windows programm.

3. In der Codesammlung steht ein pseudozufallszahlengenerator

4. Theoretisch nicht. (oder irre ich mich da?)

5. Wenn du die vom hersteller angegebene frequenz (zu weit) 
überschreitet, ist das verhalten des mikrocontrollers undefiniert. evtl 
wir er heiß und brennt durch, verrechnet sich, springt im programm usw.

gruß

Jonas

von Andreas (Gast)


Lesenswert?

4. Nein, du irrst dich nicht. Du kannst den Takt auch mit einem 
(entprellten!) Taster erzeugen.

5. Als erstes fällt das EEPROM aus habe ich gehört, aber wenn du das 
nicht verwendest kannst du schon 1 MHz oder so drüber gehen denke ich. 
Natürlich nicht bei Serienproduktion, da wäre das viel zu riskant.


MfG
Andreas

von Thomas (Gast)


Lesenswert?

Hallo,

ich hab ein asm-file hier das ich mal für ne Ladedruckregelung gemacht 
habe. Erzeugt 30 Hz und lässt sich über 5 Taster in verschiedene 
Pulsweiten umschalten. Also ca 20,40,60,80 und 100 schalten. Wenns dus 
brauchst kann ich es dir mailen. Basiert aber auf Schleifen und nicht 
auf Timer/Counter/PWM. Springt halt je nach gedrucktem Taster in die 
entsprechende Schleife. Kannste auch mit einen Drehschalter kombinieren 
damit du nicht immer die Taste gedrückt halten musst.
Aber eingentlich ganz einfach selber zu schreiben.
1. Led an
2. Schleife1 für Verweildauer
3. Led aus
4. Schleife2 für Verweildauer
5. Schleife1 reduzieren
6. Gehe zu 1

von Igor (Gast)


Lesenswert?

> Funktioniert das wohl auch mit 3 LED`s (rot, grün, blau) um Farben zu mischen?

Nein, dann bräuchtest Du 3 Counter. Aber Du kannst Dir die PWM ja auch 
selber schreiben, bei einer LED-Ansteuerung kommt es ja auch nicht so 
sehr auf die Genauigkeit an.

von Kai Kühle (Gast)


Lesenswert?

"3 Counter" ist schon klar.
Ich habe es jetzt, nach einigem Probieren, auch ans laufen bekommen.
Trotzdem habe ich noch ein Problem.
Wenn ich die 3 LED`s "schalte", funktionierts wunderbar.
Also die erste ein, dann die zweite dazu, u.s.w.
Nur bei PWM habe ich mein Problem.
Wenn die erste "hochfährt" und ich eine zweite dazu "einblenden" möchte, 
zack, schaltet sich die erste ab.
Wenn ich die LED`s einzeln, der Reihe nach "fade" funktionierts, nur 
wenn die eine gerade runter gefadet wird und die andere gerade hoch 
fadet, habe ich mein Problem.
Als ob die LED, die dazu kommt, der anderen den "Saft" nehmen würde.
Woran kann das liegen?
Reicht die mir zur verfügung stehende Ausgangsleistung der I/O Pins des 
Microcontrollers nicht aus?
Oder gibt es vielleicht einen Trick?
Oder mache ich, ganz einfach, etwas verkehrt?
Ich habe es auch schon mit nachgeschalteten BC546 versucht (externe 
Spannungsversorgung der LED`s).
Das gleiche Problem.
Mit freundlichem Gruss aus Paderborn, Kai

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.