Lösungen für Wohnzimmerdeckenbeleuchtung gesucht

Jarny: Finde PWM beim steuern von LEDs sehr ungenau.

Das liegt an deinen Augen. Die arbeiten nicht linear, sondern logarithmisch.

Das kann man aber in Software mit Hilfe einer Tabelle ausbessern: http://www.mikrocontroller.net/articles/LED-Fading

Serenifly: Das liegt an deinen Augen. Die arbeiten nicht linear, sondern logarithmisch.

Ja, ich weiss. Hab schon so ziemlich alle Seiten diesbezüglich durch. Im Endeffekt läuft natürlich alles darauf hinaus, sich ne Tabelle zu machen wo man alles auf gerade mal 5 Bit Auflösung reduziert und selbst dann noch Werte doppelt und dreifach vorkommen. Gerade im dunklen Bereich hat ne Mischfarbe fast nichts mehr mit dem zu tun was man eigentlich darstellen möchte. Aber das ist hier im Thread offtopic.

Gruß Jarny

Die Tabelle macht man, da diese deutlich "schonender" für den MCU ist, als diesen zu berechnen. Es gibt eigentlich keinen Grund, diesen innerhalb eines kleinen Controllers zu berechnen.

Wieso 5Bit Auflösung? Das ist falsch. Hast du dir mal das Calc/Excel Sheet dazu angeschaut?

sschultewolter: Die Tabelle macht man, da diese deutlich "schonender" für den MCU ist, als diesen zu berechnen. Es gibt eigentlich keinen Grund, diesen innerhalb eines kleinen Controllers zu berechnen.

Hab ja nichts gegenteiliges behauptet. Mir ist das schon klar, dass man die korrigierten Werte nicht jedesmal aufwendig berechnen will und deshalb in einer einfachen Lookup-Table vorberechnet ablegt.

Wieso 5Bit Auflösung? Das ist falsch. Hast du dir mal das Calc/Excel Sheet dazu angeschaut?

Wie gesagt, ich kenn die ganzen Seiten mit den Berechnungsgrundlagen schon. Heraus kommt, wenn man es bei einer 8 Bit PWM sinnvoll linear abstufen will, ca. 5 Bit Abstufungen (also 32 wahrnehmbare Helligkeitsschritte). Das steht doch so auch im Link von Serenifly. Zumindest die WS2812 arbeiten hardwaremäßig mit 8 Bit PWM. In diesem Projekt (für die LED-Strahler) mit der benutzten ShiftPWM wird wieder mit 8 Bit PWM gearbeitet. Mehr kann man wohl nicht rausholen, oder versteh ich da was nicht?

Gruß Jarny

16 Bit PWM geht auch auf dem Arduino wenn man es per Hand programmiert (8, 9 und 10 Bit sind andere Optionen).

ShiftPWM beschränkt sich aber wie die Arduino Software wohl auf 8 Bit. Man kann zwar mit maxBrightness was einstellen. Aber das ist nur ein unsigned char.

hi,

interessante frage: gibt es 12 oder 16bit shiftregister? der tlc kann ja 10 bit, was schon besser ist, aber erstens muß der ständig beschickt werden, was mir nicht so gefällt, und zweitens macht der ja GND auf, damit kann man dann keine mosfets schalten (oder ginge das mit mit pullup?).

also ein 12 oder 16 bit schieberegister, dem man nur einmal "sagt", was es tun soll, und das ein plus-5V signal liefert.

gruß stefan

Da wirfst du jetzt aber verschiedene Dinger durcheinander. “8 Bit Schieberegister” heißt ein SR mit 8 Registern/Ausgängen.

Der TLC ist nicht nur einfach ein SR, sondern ein PWM Controller. Der braucht zwar auch laufend Daten, aber er macht PWM selbst.

Ein reines SR kann kein PWM. Das wird in Software gemacht.

oder ginge das mit mit pullup?

Ja.

Oder so wie hier beschrieben für höhere Spannungen:

Das wäre was für dich:

Da sind die Ausgänge zwischen Open Drain und Totem Pole umschaltbar. Die Adafruit Lib macht nichts am MODE_2 Register was ich da sehe, d.h. es ist glaube ich schon als Totem Pole Ausgänge konfiguriert. Ideal für N-FETs.

Hat auch gegenüber dem TLC den Vorteil, dass man nicht immer Daten schicken muss. Da läuft wirklich alles auf dem Controller.

hi,

klar ist ein TLC jetzt kein reines schieberegister, aber oft wird's halt als solches bezeichnet.

interessant, der PCA. eigentlich genau, was ich brauchen würde, abgesehen davon, daß ich gern DIP hätte. immer ist irgendwo ein haken. und wenn ich's selbst bin. die module gibt es ja schon um unter 6 euro, aber eine eigene platine ist halt was schönes. gibt es da vielleicht noch was?

gruß stefan

Ich bin immer noch am Testaufbau ohne die MOSFETS die die richtigen Strahler steuern. Im Moment hängen noch normale LEDs + Vorwiderstände an den Ausgängen des 74hc595 Schieberegisters.

Ich möchte einen definierten Einschaltvorgang haben. D.h. Der Arduino bekommt Strom und läuft dann in die Setup-Methode. Die LEDs sollen dabei noch definitiv ausgeschaltet sein. Am Ende der Setup-Methode wenn das Schieberegister initialisiert und erstmalig beschrieben ist will ich die LEDs freischalten. Als Laie hab ich mir folgendes gedacht: Wenn ich den (low-aktiven) OE Eingang des Schieberegisters an einen Digitalausgang des Arduinos hänge, kann ich damit zu einem definierten Startzeitpunkt sagen, dass 'jetzt' die Ausgänge des Schieberegisters freigeschaltet sind. Vorher liegen die Ausgänge quasi auf Low-Pegel und die LEDs sind aus. Ich müsste also den OE mit einem permanenten Pullup auf HIGH ziehen und den Arduino dann mittels eines beliebigen Digitalausgang (hier sinnigerweise OUTPUT_ENABLE genannt) per 'digitalWrite(OUTPUT_ENABLE, LOW)' den Pegel auf LOW ziehen lassen.

Das macht man doch so oder? Wie groß wählt man den Pullup-Widerstand?

Gruß Jarny

hi,

als idee nicht schlecht, daran hätte ich auch denken können. gib mir bitte bescheid, ob es klappt. als pullup würde ich 10k nehmen, oder vielleicht 5k, wenn’s nicht geht.

und dann wieder mal layout anpassen. ich hab’ übrigens eine von den zehn platinen, die ich mir fertigen hab lassen, so wie Du mit leds und vorwiderständen bestückt. auf dem bild ist der mega der sender, über das breadboard mit MAX485 und das CAT6-kabel dann auf meine platine, dort ist der zweite MAX485 und dann der atmega328.
funkt sehr gut, aber ich hab’ bei der bestellung fehler gemacht (war ja meine erste), so muß ich die platinen mühsam nachbearbeiten. ich werde mir also 10 neue kommen lassen und dinge wie Deine idee (so sie funktioniert), einfließen lassen.

gruß stefan

Eisebaer: es gibt einen 5V-pin am arduino.

gruß stefan

Nochmal bezüglich deiner Antwort: Wo kann ich die geregelte 5V am Arduino Pro Mini abgreifen um damit den 74hc595 zu betreiben? In den Arduino speise ich 12V an dem V(raw) ein.

Sieht da jemand ein Problem das ganze so zu betreiben? Also kein extra 5V Netzteil sondern nur 12V-Versorgung für den Arduino und den 74hc595 mit den geregelten 5V aus dem Arduino zu füttern? Die 12V am V(raw) sind ja schon oberes Limit was die maximale zulässige Spannung betrifft. Klar könnte man selbst mit nem 7805 die 5V erzeugen aber wenn auch ohne hohes Risiko geht würde ich den Arduino mit 12V betreiben.

Gruß Jarny

hi,

auf RAW gehst Du mit 12V rein, bei VCC kommen 5V raus. bei dem shiftOut-beispiel ijm playground werden die 595er auch vom arduino mitversorgt.

gruß stefan

Ok, Danke für die Info.

Sag mal, flackern bei dir die Strahler auch wenn du die niedrigste und zweitniedrigste PWM-Stufe einstellst? Meine Test-LEDs sehen sehr unruhig (Helligkeitsschwankungen) aus wenn ich sie in diesen niedrigen PWM-Levels betreibe. So ab einem PWM-Wert von 3 bzw. 4 werden sie erst ruhig.

Gruß Jarny

hi,

probier mal die PWMFrequency raufzusetzen, ob das was ändert. muß grad weg und kann's nicht auf die schnelle ausprobieren. aber so niedrige helligkeiten wird man bei einer wohmzimmerbeleuchtung kaum verwenden. ist also eher ein theoretisches problem.

so richtig ruhig wurde es bei mir erst, nachdem ich abblockkondensatoren am 328er und an den shiftregistern angelötet hab'.

gruß stefan

hi,

wie hat denn das mit dem definierten einschaltzustand mittels ENABLE funktioniert?

gruß stefan

Das hat so funktioniert wie ich es mir gedacht hatte und oben beschrieben ist. Ich hab mit nem 20k Pullup-Widerstand den OE auf High-Pegel gezogen. Mit nem beliebigen Digitalausgang des Arduino zieh ich den dann am Ende der Setup-Methode auf Low. Da sind dann defininitiv alle Sachen schon fertig initialisiert und ins Schieberegister geschoben. Ob das nachher auch noch so funktioniert wenn ich die FETs an dem Schieberegister hängen habe weiss ich nicht. Vielleicht muss man die auch noch mit nem Pull-Down beschalten damit es nicht aus versehen beim Einschalten kurz aufblitzt. Aber die LED-Strahler sind dafür wahrscheinlich zu träge. Kann ich aber jetzt noch nicht sagen weil ich im Moment wieder nur meine Test-LEDs direkt an den Ausgängen der Schieberegister habe um an der Software zu werkeln.

Ich bin gerade dabei die Fernbedienung anzubinden und bin überrascht, dass sich die Interrupts nicht gegenseitig stören.

Im Moment stört mich am meisten, dass die PWM in den unteren Stufen nicht sauber aussieht. Erst ab Stufe 5 ist kein langsames unregelmäßiges Flackern mehr zu sehen. Liegt evtl. am fliegenden Aufbau auf dem Breadboard oder einem offenen Pin. Abblockkondensator am Schieberegister hab ich draufgesteckt.

Gruß Jarny

Das kann wie schon angesprochen daran liegen, dass dass in diesem Bereich die Low-Phase so lange ist dass man sie sieht. Wenn das der Fall ist kann eine höhere PWM Frequenz Abhilfe schaffen.

Nein, das ist nicht die lange LOW-Phase. Ich habe im Moment eine PWM-Frequenz von 75Hz. Habs die Frequenz auch schon höher gedreht und es hat sich nicht gebessert. Das was ich sehe ist ein viel langsameres Flackern (ca. 3-10 Hertz und dazu noch sehr unregelmäßig und mal schneller und langsamer). Ich denke eher, dass da ein Eingang offen ist oder so etwas. Vieleicht hat die Library aber auch ein Problem bei diesen kurzen PWM-Impulsen. Wenn noch andere außer mir die Probleme haben mit PWM-Werten von 1 bis 3 haben, würde ich auf ein Softwareproblem in der ShiftPWM-Library tippen. Ab einem Wert von 4 sieht man nichts mehr flackern.

Gruß Jarny

Das können viele Probleme sein, die Libary würde ich jetzt erst einmal in Schutz nehmen, da ich diese vor knapp 2Jahren auch einmal für RGB Beleuchtungen genutzt habe. Die hat sich in der Zwischenzeit auch nicht geändert.

  • Hast du einen Logikanalyser zur Hand, um einmal die PWM Frequenz zu überprüfen genauso wie die ein und aus Zeiten.
  • Wie nah hast du die Keramikkondensatoren an den ICs gebracht. Ist bei den HC595 etwas ungünstige. Da sollte man schon sehen, dass direkt die teurer Präzisionshalterung :-X mit eingebauten Kerkos genommen werden oder aber man den Kondensator im Mittelsteg selber setzt.
  • Wie sieht das mit der Entfernung der Leitungen aus (Busleitungen). Habe jetzt gerade hier noch keinen Aufbau oder Schaltungsplan gesehen. Möglich aber auch das ich ihn übersehen hab.
  • Die Seite von Elco geht gerade so wie ich das sehe nicht. Dort gab es mal einen Rechner ob die Einstellungen, die man wählt in einem LEEREN Programm auch passend sind.

Ich würde solange möglich immer nur die Hardware-SPI Variante nutzen.

Hallo

Nur zur Info und vielleicht als Idee wie sich so ein Projekt auch umsetzen lässt, zu diesem Thema gibt es ein interessantes Produkt von Osram welches ich in den letzten Tagen eingehend getestet habe und welches eigentlich auch mit Arduino interessant umzusetzen wäre.

Osram verbaut in herkömmlichen Lampensockel mit RGB-Led's die Steuerung sowie Xbee. Am Gateway (kleiner Steckadapter) werden dann bis zu 50 Lampen zugefügt, welche sich über WLAN und Internet einzeln oder als Gruppen mittels Smartphone oder Tablet ansteuern lassen.

Ich bin von diesem Produkt begeistert (ist zwar etwas teuer aber macht Spass)!

Bald wird Osram ein API herausgeben womit sich die Lampen hoffentlich mit Arduino und Xbee oder WLAN direkt ansprechen lassen.....

http://www.osram.de/osram_de/tools-und-service/tools/lightify---intelligentes,-vernetztes-licht/index.jsp

Gruss