Guten Morgen zusammen, da ich nicht nur die "fortgeschrittenen" Sachen machen, sondern alles bis ins Detail korrekt verstehen will, habe ich mir folgende Minischaltung zusammengelötet: RGB-LED via 150 Ohm-WIderstand auf GND, einzelne Farben an Pins B0-B2 des ATtiny85. Pin B3 hat einen 10kOhm-Pulldown, daran hängt ein schön prellender Taster/Schließer, der den Pin auf Vcc zieht. Da endlich meine SMD-On-Off-Schalter angekommen sind, habe ich beim sauberen Neuaufbau gestern auch gleich mal versucht, den zu integrieren und schalte damit Vcc am µC von der CR2032-Speisung (man sind die bekloppt für Lochraster ... siehe Lötkatastrophe am Schalter auf dem Foto). An so etwas einfachem kann man einiges lernen - mein erster Versuch mit Taster war noch ohne Pulldown, zum Beispiel. Meine erste Version des Programms war ein simpler PoC, der in der Main endlos die Animationsroutine aufruft und via Interrupt den Taster abfragt. Jetzt wollte ich auch das Programm neu und "richtig" aufbauen, sodass ich die RGB-LED auch richtig als solche ansteuere - also mit richtiger (Software-)PWM und nicht via Proof-of-Concept-Schnellschuss-Direkt-Code. Eigentlich funktioniert das auch, nur folgender erstaunlicher Effekt tritt ein und ich sehe und verstehe nicht, warum: In meinem Programmcode blende ich alle Farben und deren Kombinationen einmal durch. Das klappt für: Rot, Grün, Blau, Grün+Blau. Die anderen Kombinationen Rot+Grün, Rot+Blau und Rot+Grün+Blau hingegen dimmen nur Rot. Seht ihr irgend etwas, was das verursacht? Habe das auch mal umgestrickt, nicht direkt die Port-Bits zu beschreiben, sondern eine tmp-Variable eingeführt und das jetzt damit gelöst, das Ergebnis bleibt jedoch gleich. Volatile will der Compiler für mein LED-struct/die my_led-Variable nicht. Wie so etwas Triviales nicht klappen kann, ist doch erstaunlich. Von diesem kleinen Schei*ding, das ich nur mal so als Spaßdingen gelötet habe, bin ich hellauf begeistert. So viele Dinge, die unerwartet nicht klappen und einem die Grundlagen verdeutlichen! :) Danke schon mal für eure Zeit!
:
Bearbeitet durch User
Dirk K. schrieb: > RGB-LED via 150 Ohm-WIderstand auf GND Ein Vorwiderstand für alle Farben. Das ist der Fehler. Denk mal über der Begriff "Durchlasspannung" nach. Und zeichne dann das Ersatzschaltbild nach, wenn z.B. alle drei Pins des uC eingeschaltet sind. Und dann merkst du dir: jede LED braucht ihren individuellen Vorwiderstand.
:
Bearbeitet durch Moderator
Bau doch mal noch den HSV Farbraum ein ;) Dann ist das einfacher die passende Farbe und Helligkeit zu finden.
Martin Wende schrieb: > Bau doch mal noch den HSV Farbraum ein ;) > Dann ist das einfacher die passende Farbe und Helligkeit zu finden. Was hat das mit dem Problem zu tun.
Das Problem hat Lothar doch schon aufgelöst, war also nurn Tip fürn weiteren Lerneffekt ;)
Danke für die Antworten! Lothar: Das hatte ich auch erst überlegt - nur klappt das mit dem "PoC-Direkt-Code" einwandfrei. Habe das daher von der ersten Lötübung so übernommen. Edit: Und jetzt fällt mir auf - im PoC-Code habe ich sauberer gearbeitet als gedacht - quasi im Multiplex; da war nur eine LED zur Zeit an ... ok, Fehler eingesehen! Das mit den unterschiedlichen Durchlassspannungen sollte für unterschiedliche Helligkeiten sorgen im Wesentlichen? Man müsste natürlich, um es richtig sauber zu machen, noch die maximale Duty-Cycle nachregeln, um auch bei allen LEDs gleiche Helligkeit zu erzeugen. Aber andimmen müssten durch diesen Code eigentlich alle LEDs, ich müsste also mindestens "etwas" Grün und Blau sehen, auch wenn ich Rot mit ansteuere. Das dimmt aber nur Rot. Martin: Farbraum bauen und so kommt dann noch beim Weiterbasteln. Erstmal ganz sauber und klein anfangen und alle Fehler bis dahin mitnehmen - wenn du dir das Programm anguckst, das ist noch ganz klein und harmlos ;)
:
Bearbeitet durch User
Dirk K. schrieb: > ... ok, Fehler eingesehen! Für alle, die sich jetzt noch Fragen: und welcher war das? Hier die Antwort: wenn alle LED an sind,vdann sind Sie praktisch an einem einzigen Vorwiderstand parallel geschaltet und es leuchtet nur die LED mit der kleinsten Uf: die Rote...
Dirk K. schrieb: > Das mit den unterschiedlichen Durchlassspannungen sollte für > unterschiedliche Helligkeiten sorgen im Wesentlichen? Nein, wenn die rote LED leuchtet, stellt sie fast soetwas wie eine Kurzschluss für die grüne und die blaue dar. Zeig mal deinen Schaltplan. Das Problem läßt sich natürlich umgehen, indem jede LED-Farbe ihr eigenes Zeitfenster bekommt, so dass immer maximal eine gleichzeitig angesteuert wird. Das schlägt mit einem Faktor 1:3 auf die Maximalhelligkeit, dürfte aber wegen der logatihmischen Helligkeitsempfindung nicht so schlimm sein. Die PWM-Modulation für jede LED findet dann immer nur in dem Zeitfenster der Farbe statt, also z.B. für Orange (100% Rot, 60% Grün):
1 | ... | R | G | B | R | G | B | ... |
2 | _____ _____ ___ |
3 | R _| |___________| |___________| |
4 | ___ ___ |
5 | G _______| |_____________| |____________ |
6 | |
7 | B __________________________________________ |
Danke Lothar für die Bestätigung, dass ich den "richtigen" Fehler verstanden habe :) Stelle mir das nur eher so vor, dass die Spannung bei den ~1,9V der roten LED "sättigt" und daher einfach Grün und Blau (Durchlassspannung ~3,0V) nicht losglimmen können. Falscher Gedankengang? Mike: So habe ich das unbewusst ja in meinem ersten, "hingerotzten" Programm gehandhabt. Jetzt wollte ich das halt so richtig richtig machen und habe meine Elektronik-Unkenntnis schamlos ausgenutzt, das zu vereiteln :D
:
Bearbeitet durch User
Korrektur per Code endete bei meinem einfachsten Ansatz bei 1/6 der Leuchtkraft, das ist zuwenig und nur Nacht-tauglich. Habe meine kleinstmöglichen SMD-Widerstände gesucht und paar 470Ohm gefunden. Das heißt doch "Senkrecht Montiertes Ding" (SMD) ;) q.e.d. - läuft jetzt korrekt! :)
:
Bearbeitet durch User
Dirk K. schrieb: > Stelle mir das nur eher so vor, dass die Spannung bei den ~1,9V der > roten LED "sättigt" und daher einfach Grün und Blau (Durchlassspannung > ~3,0V) nicht losglimmen können. Falscher Gedankengang? Richtiger Gedankengang, aber noch das falsche Wort. Die LED sind (über einen kleinen Umweg=Portpin) alle parallel geschaltet und die rote LED begrenzt die Vorwärtsspannung auf unter 2V. Das ist zuwenig für die blaue und die grüne LED.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.