MOSI / SPI in RGB Signal wandeln

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin Leute,

    also ich hab die ganze Zeit so ne wirre Idee im Kopf:
    Mein Ambilight funktioniert wunderbar, alles prima, also brauche ich ein weiteres Projekt.

    Wir verwenden für den Raspi mit Hyperion ja SPI um die LEDs anzusteuern.
    Der WS2801 Controller (oder jeder beliebige andere Controller auch) nimmt den Datenstrom auf, verarbeitet ihn, und gibt R G B an die LED weiter. Ist doch korrekt oder?

    Was ich nun tun möchte, wäre folgendes:
    Ich würde gerne das RGB Signal der letzten LED abgreifen.

    Wie könnte ich das sinnigerweise, günstig und möglichst ungefährlich bewerkstelligen?
    Ich könnte einen Rest nehmen und dort vorsichtig eine LED vom Strip entfernen. Ich hätte 3 Kontakte, die mir RGB liefern sollten oder?
    Denke ich zu einfach? Was ist noch zu beachten?

    (PS: Ich hoffe das ist das richtige Forum. Sonst gerne verschieben!)

    LG Sabcoll

  • Hallo Sabcoll,

    ich würde die Signale über einen A/D-Wandler wie den MCP3208 (MCP3204 würde auch gehen) abfragen.

    Dann hast Du den digitalisierten Wert des Analogsignals.

    Dazu kannst Du die LED dort belassen, wo sie ist - Du brauchst lediglich Strippen in den MCP 320x zu legen, den nach Vorgabe des Datenblattes anzuschließen und über ein SPI-Protokoll auszulesen.

    Wenn Du nach

    Code
    MCP3208 SPI Icon


    suchst, müsstest Du eigentlichen einen Beitrag inkl. Programm von mir dazu finden.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • ich würde die Signale über einen A/D-Wandler wie den MCP3208 (MCP3204 würde auch gehen) abfragen.


    Meinst Du, das klappt? :denker:
    Der WS2801wird in den LED-Stripes ja wohl als Konstantstromquelle genutzt. Wenn ich das Datenblatt richtig interpretiere, kann er auch Konstantspannung, das würde dann aber wahrscheinlich mit dem "normalen Teil" des LED-Streifens kollidieren (mal ganz abgesehen von der programmtechnischen Ansteuerung).

    Wenn er die Ausgänge jedoch über Widerstände gegen GND schaltet, fällt ja über den Widerständen eine dem Strom proportionale Spannung ab, und die sollte man mit Deinem Vorschlag (A/D-Wandler) aufnehmen können.
    Klappt also vielleicht doch. :D

    Einmal editiert, zuletzt von Oerks (6. Mai 2015 um 16:38)

  • Hallo Oerks,

    so werden allgemein Analoggrößen gemessen, indem die an einem bekannten Widerstand abfallende Spannung gemessen wird... Das klappt! Theoretisch und praktisch! Und eine SPI-Software zum MCP3208 gibt es auch.

    Wenn Du die Spannung gemessen hast, dann kannst Du den Strom ausrechnen und was auch immer berechnet werden kann und möchte.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Selber Moin ;)


    ...
    ... nimmt den Datenstrom auf, verarbeitet ihn, und gibt R G B an die LED weiter. Ist doch korrekt oder?
    ...


    jein ... die passenden RGB-Werte werden afaik aus den Bilddaten des grabbers berechnet. Dem Controller wird dann über SPI mitgeteilt, mit welchen Werten die LED angesteuert werden soll. Der Controller selbst erzeugt die passenden PWM-Signale und schaltet R, G und B der LED damit auf Masse durch - dient also als Treiber.


    ...
    ... Ich würde gerne das RGB Signal der letzten LED abgreifen.
    ...


    Möchtest Du die weiterverwenden oder zu welchem Zweck benötigst Du sie?
    Das mit dem "Anzapfen" ist halt so eine Sache ...
    Um mit den PWM-Signalen was anzufangen, solltest Du erst mal Spannung und Strom sauber ausmessen - am besten mit einem Oszi - nicht dass es da Probleme gibt (Multimeter geht nicht, weil das bei PWM vermutlich nicht mitkommt und nur so eine Art Mittelwert liefert).
    cu,
    -ds-


  • Der Controller selbst erzeugt die passenden PWM-Signale und schaltet R, G und B der LED damit auf Masse durch - dient also als Treiber.


    Sicher?
    Im Datenblatt steht

    Zitat

    • Programmable constant LED drive current
    • Wide constant output current range 5~150mA

    edit: Das Zitat bezieht sich auf "PWM"

    Einmal editiert, zuletzt von Oerks (6. Mai 2015 um 19:27)

  • Oerks:
    ähm ... was willst Du uns damit jetzt sagen?
    Das Teil ist ein

    Zitat


    3-Channel Constant Current LED Driver With Programmable PWM Outputs


    was sollte der also Deiner Meinung nach sonst machen, ausser PWM-Signale zu generieren und LEDs zu treiben :s
    Ich wüsste da jetzt nicht, welchen Sinn der Controller sonst haben sollte.
    Klär uns doch bitte mal auf ...


    cu,
    -ds-

  • Ups, Du hast recht. Sorry, ich hatte nicht weiter gelesen.
    Der Strom wird wohl durch einen externen Widerstand festgelegt (passend zu den verwendeten LED) und die Helligkeit wird pe-we-emmt.
    Mein Fehler. flag_of_truce.gif


    Klär uns doch bitte mal auf ...


    Neenee, das überlassen wir doch lieber Herrn Kolle oder youpo... :auslachen:

  • Meine Absicht ist folgende:

    Schaut man sich die günstigen 5050 SMDs bei Aliexpress an, so fällt auf dass diese 4 Anschlüsse haben R G B und V+.

    Bei LED Installationen ist es nun so, zb um Decken o.ä. zu beleuchten, dass diese ebenfalls auf RGB V+ aufbauen.
    Das schöne: Man kann mit gängigen RGB Verstärkern und entsprechenden Netzteilen beliebig viele Meter LED verkabeln.

    Hat man nun eine LED mit folgender Definition im Hyperion:

    Code
    {
                "index" : (LetzteLED),
                "hscan" : { "minimum" : 0.0000, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
            },

    sollte nach meinem Verständnis eine LED mit genau dem Mittelwert der Bildinformationen gefüttert werden. Dies könnte dann als Deckenbeleuchtung verwendet werden.

    Man könnte auch eine x-beliebige Konfiguration nehmen. Man stelle sich vor, man könnte eine LED definieren, die genau die unteren oder oberen Farbwerte verwendet.
    Dann leuchtet es anschließend unter der Couch anders als an der Decke ...


  • Hi,
    ich weiss jetzt leider immer noch nicht, worauf Du hinauswillst :s
    Wenn Du nur RGB-LEDs ansteuern willst, gibts hier im Forum doch jede Menge Anleitungen ( die -> hier <- z.B., oder die -> hier <-) ...
    cu,
    -ds-

    Bisher

    Ich habe ein Ambilight am Raspi. Das baut auf WS2801 LEDs auf.
    Der Raspi bekommt sein Bild durch den Grabber.
    Hyperion nimmt das Bild des Grabbers und rechnet anhand seiner Config die Farbwerte für die LEDs aus.
    Via SPI (CLK und Daten) kommt das Signal in den LED Strip am Fernseher.

    Zukunft:
    Ich will den Farbwert (aufgeteilt in R (rote Litze) - G (Grüne Litze) - B (Blaue Litze) seperat haben und dann in einen RGB Verstärker einspeisen.
    Dieser RGB Verstärker lässt anschließend meine Decke leuchten.

    Das Problem: Ich kann nicht einfach irgend ein PWM Signal nehmen. Ich muss es zwingend aus der letzten (oder ersten) LED meines bestehenden LED-Ambilights nehmen.

  • Ah ... jetzt :thumbs1:

    ok, ich weiss jetzt nicht, ob es klug ist, eine LED auszubauen und nur das Signal abzugreifen. Nicht dass da irgendwas mit der Stromversorgung/Ansteuerung durcheinander kommt.
    Das Signal kannst Du allerdings sicher irgendwie verwenden. Gibts keine Möglichkeit, da vielleicht einen separaten Controller zusätzlich anzuschliessen?
    Und dann würde ich das sicherheitshalber galvanisch entkoppeln ... also über Optokoppler gehen.

    cu,
    -ds-

  • Bestimmt. Aber da müsste ich mich einlesen, da ich eigentlich kompletter Laie bin.

    Gehen wir von folgendem Fall aus: Mein LED Strip hinter dem Fernseher hat 140 LEDs.
    Nun deklariere ich in meiner Hyperion Config 141 LEDs.

    Diese 141ste LED bekäme rein physikalisch ja die Daten mit seinen Farbwerten bereitgestellt, obwohl sie gar nicht existiert. Die Informationen würden also "verpuffen" -> werden zwar transferiert, aber keine LED würde sich angesprochen fühlen.
    Ich würde also am Ende des Strips ein Kabel an die Datenleitung löten und müsste aus diesem Datensignal die entsprechenden R G B Werte extrahieren.

    Das wäre die Zusammenfassung.

    Jetzt kommt dein Vorschlag eines weiteren Controllers: Ich hab absolut keine Ahnung, wie ich so nen Ding "benutze"? Muss ich sowas auf ne Platine löten?
    Gibts die auch in Groß für Grobmotoriker für mich?

    Ich hab absolut keine Ahnung davon, daher wäre es schön wenns irgendwo Anleitungen/Tutorials o.ä. gäbe.

  • hallöle,


    ...
    Ich würde also am Ende des Strips ein Kabel an die Datenleitung löten und müsste aus diesem Datensignal die entsprechenden R G B Werte extrahieren.
    ...


    also die Datenleitung(en) enthalten nur Steuerinformationen für den Controller.
    Die bringen Dich nicht weiter. Du müsstest schon die R/G/B Leitungen "anzapfen", ohne die LED Nr. 141 ;)


    ...
    Jetzt kommt dein Vorschlag eines weiteren Controllers: ...
    ...


    das wäre jetzt der Fall für das Abgreifen des Steuersignals (zwei Kabel, müssten SDI und CLK oder so ähnlich heissen). Mit diesem Signal kannst Du einen eigenen WS2801-Controller ansteuern, der Dir dann an den Ausgängen die PWM-Signale für R,G und B liefert.
    Den Controller gibt es (zumindest lt. -> Datenblatt <- ) als DIP 14 Bauform - also als ganz normalen 14-poligen IC.

    Und ja ... da wirst Du eine kleine Platine (Streifen-Raster oder Loch-/Streifen-Raster) brauchen.
    Masse Strip -> GND WS2801
    5V Strip -> Vcc WS2801
    SDI Strip -> SDI WS2801
    CLK Strip -> CLK WS2801
    dann Masse, Rout, Gout, Bout an deinen RGB-Verstärker oder was auch immer.


    cu,
    -ds-

  • Okay. Das ist schonmal ne richtig geile Info, tausend dank schonmal!
    Korrekt, SDI und CLK stehen zur Verfügung..

    Muss man den IC dann noch programmieren?
    Oder macht der das alles "physikalisch"?

    Ich kenn mich damit leider gar nicht aus.. Aber habe ja nach einem Projekt gefragt ;)


  • ...
    Muss man den IC dann noch programmieren?
    ...


    Nein, wie ich schon schrieb. Der Controller erhält seine Informationen über die zwei Leitungen SCK und SDI und liefert an Rout, Gout und Bout die passenden PWM-Signale für R, G und B.
    cu,
    -ds-

  • Eine doofe Frage:
    Ich kenn absolut kleine gescheiten google Suchbegriffe, um mich mal in das Thema einzulesen.

    Habt ihr nen paar Links/Tutorials zum Thema Lochrasterplatte, Sop14 / Dip14 verlöten usw.?!
    mein Name ist nämlich Hase und ich raffe gerade noch gar nichts...

    edit:
    ich finde die WS2801 nur in SOP14.
    Dann könnte ich die doch auf eine SOP14 Platine
    https://jydedxlelwgadgets.wordpress.com/2014/08/30/dua…r-2-pcs-340796/

    löten (ob ich so fein und genau löten kann ... glaube ich nicht dran :D) und an die kleinen Löcher dann meine entsprechenden Kabel oder?
    Klingt ja doch nicht so schwierig...

    Einmal editiert, zuletzt von Sabcoll (7. Mai 2015 um 15:58)

  • Hm ... vielleicht hilft Dir so was -> hier <- eher weiter?
    12V/GND und die beiden Signale verlängern und dann so ein Modul mit 4 LEDs anschliessen?
    //EDIT: Du kannst auch die 12V weglassen und dafür dann ein eigenes Netzteil verwenden. Hatte ich jetzt nicht extra erwähnt, weil ich mir dachte, das wäre klar ;)


    cu,
    -ds-

  • geile idee.
    hast wohl die neue philips werbung gesehen im netz ;)

    ich hab mich mal durchgelesen.

    theoretisch könne man doch 140 leds am tv verbauen.
    in hyperion 140 angeben (mit 0 macht das 141)
    der letzte wird jetzt auf grabben des gesamtbildes konfiguriert.
    und separiert auf eine eigene platine (ggfs mit optos (gute idee eigtl) gelötet.
    dieser steuert dann den farbwert der decke.

    natürlich müssen dann noch die signale verstärkt werden schätze ich ?!

    somit könnte man doch einfach die zwei leitung abgreifen.
    oder?


  • Hm ... vielleicht hilft Dir so was -> hier <- eher weiter?
    12V/GND und die beiden Signale verlängern und dann so ein Modul mit 4 LEDs anschliessen?
    //EDIT: Du kannst auch die 12V weglassen und dafür dann ein eigenes Netzteil verwenden. Hatte ich jetzt nicht extra erwähnt, weil ich mir dachte, das wäre klar ;)


    cu,
    -ds-

    Danke für die Infos.
    Leider tut das Modul ja nichts anderes als meine ohnehin schon vorhandenen LEDs.
    Ausgang bleibt ja weiterhin CLK / SDI. Ich brauch ja R G B als Ausgang.
    Daher ist die Idee mit dem WS2801 DIP14 schon super.

    Ich habe jetzt bei Alibaba angefragt, ob man mich mit WS2801 in DIP14 versorgen kann. Wollte erstmal 10 Stück haben. Wenn die sagen, 100 Stück, werde ich die wohl auch nehmen. Reizt mich gerade zu sehr...
    Wenn ein erster Prototyp funktionieren würde, könnte man ja überlegen ob sich hier im Forum genug Leute finden die sich an den Unkosten beteiligen.

    Aber wofür ich euch super dankbar wäre:
    Gibt es bereits fertige Platinen, um den Chip aufzulöten? Und wenn ja, habt ihr nen Link? Was ich mir vorstelle ist so: Ich stecke den Chip in die 8 vorgesehenen Löcher auf der Platine. Löte ihn auf der Unterseite fest. Die Löcher haben Leiterbahnen nach außen, um dort alles mögliche anzulöten (Stecker, Kabel, Buchsen) ...

    Ich habe weder die Möglichkeiten noch die Zeit, um selbst Platinen dafür herzustellen...
    Und ne Zeichnung anzufertigen und anschließend fertigen zu lassen sprengt ganz sicher den finanziellen Rahmen...

    edit:
    Ich hab gerade gesehen, dass man SOP14 einfach im Backofen mit Niedertemperatur Lötzinn löten kann. Sprich auch für Grobmotoriker wie mich geeignet. So ließen sich auch größere Mengen herstellen?!

    Einmal editiert, zuletzt von Sabcoll (8. Mai 2015 um 08:23)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!