mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED Blending


Autor: Daniel Kümper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Holger Barske (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Kühle (Gast)
Datum:

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

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Igor (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai Kühle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.