ich würde gerne die WS2812b hinter meinem TV sowohl per Hyperion (Ambilight über Raspberry, USB zu Arduino) als auch über meine Smarthome-Lösung (Domoticz, MySensors, Datenempfang per NRF24) steuern.
Da ich bei Hyperion so wenig Latenz wie möglich haben möchte (hab viele Sensoren im Smarthome und jeder Datenempfang würde irgendwie Latenz bedeuten), scheinen mir zwei parallele Arduinos die sinnvollste Lösung zu sein. Jetzt stellt sich die Frage, wie ich die beiden Ausgänge am besten an die Stripe bekomme, ohne die Arduinos zu gefährden. Des weiteren sollte natürlich das Signal so wenig wie möglich beeinflusst werden. Gerade bei den schnellen Schaltzeiten kommen ja bspw Optokoppler nicht in Frage, Gleichrichterdioden senken wiederum die Spannung usw.
Was ich noch habe ist ein Relais wie man sie zuhauf für Arduinos bei Ebay findet. Da nach näherer Betrachtung für 230V ja keinesfalls geeignet, fliegen die hier eh noch rum, und sind mit Schließer und Öffner versehen. Jedoch bin ich mir nicht sicher ob man da nicht für einen kurzen Moment doch einen Kurzschluss zwischen den beiden Seiten erzeugt.
Bei Transistoren bin ich mir nicht sicher inwieweit diese das Signal beeinflussen, auch eine "sichere" Schaltung mag mir da nicht einfallen..
Was ist da in euren Augen die beste Lösung?
Kennst Du das Protokoll der Schnittstelle der Ws2812?
Ich glaube kaum daß man ohne größere Verrenkungen WS2812 von 2 Quellen unabhängig ansteuern kann.
Du kannst immernoch 2 Streifen nebeneinander draufkleben.
Das einfachste ist Du hast 1 Arduino der die WS2812 ansteuert und der von verschiedenene Quellen die Daten bekommt.
uwefed:
Kennst Du das Protokoll der Schnittstelle der Ws2812?
Ich glaube kaum daß man ohne größere Verrenkungen WS2812 von 2 Quellen unabhängig ansteuern kann.
Du kannst immernoch 2 Streifen nebeneinander draufkleben.
Das einfachste ist Du hast 1 Arduino der die WS2812 ansteuert und der von verschiedenene Quellen die Daten bekommt.
PS. es gibt schon auch sehr schnelle Optokoppler.
Grüße Uwe
Die WS arbeiten ja im Endeffekt nur das Signal ab, ohne das sie interessieren sollte was die Quelle ist, Wenn die Umschaltung der Systeme bspw 3 Sekunden dauern sollte, wäre das für mich kein Problem. Es geht primär wirklich nur darum, das ich überhaupt zwischen Ambilight und normaler Beleuchtung wechseln kann. Das ganze nach Möglichkeit so, das auch bei einer ungünstigen Programmierung usw nicht beide Arduinos gegrillt werden, sprich hardwareseitig abgesichert..
Ein Arduino würde halt wieder in Latenz resultieren. Klar, das wird der Aufbau wenn es nicht anders geht, der parallele Betrieb wäre mir jedoch weitaus lieber..
wenn ich Dich richtig verstehe, geht es hier doch nur darum, daß sich die 2 Arduinoausgänge nicht sehen.
Mein erster Einfall ist ein Logik-IC mit 4 Logikgattern (~25Cent), geschickt verknüpft als Master und Slave, also eine Vorrangschaltung, wenn der Eine, dann der Andere nicht. Obwohl das nicht notwendig wäre, aber so geht es halt nicht durcheinander.
So wie SpagettiCode beschrien, würde ich es auch machen.
Da nimmst du 2 Und-Gatter und ein Oder-Gatter.
Die Und-Gatter übernehmen die jeweilige Steuerung welcher Arduino durchgeschaltet werden soll und die Ausgänge gehen dann auf das Oder-Gatter und weiter auf den Led-Stripe.
mit Logik-Gattern ist aber das Problem mit der Stromversorgung. Die muss dann aus beiden Arduinos über Dioden entkoppelt erfolgen oder beide Arduinos brauchen die gleiche Quelle. Zumindest muss immer sichergestellt sein das die Gatter Spannung haben wenn ein Eingangssignal anliegt.
Mit Relais sollte es auch funktionieren. Es muß mindestens der Dateneingang der WS2812 von der einen Quelle getrennt werden und dann an die andere Quelle gelegt werden. Falls die Betriebsspannung der LEDs auch von der Signalquelle kommt, muß da natürlich auch noch ein Relais rein. Die GNDs können normalerweise miteinander verbunden bleiben.
Mal eine schnelle Skizze wie es z.B. aussehen könnte:
Wenn Arduino 2 nicht an Spannung hängt, sind die WS2812 an den Arduino 1 angeschlossen. Wenn aber Arduino 2 an Spannung gelegt wird, schalten die Relais die WS2812 an Arduino 2. Wenn gewünscht, kann die Umschaltung natürlich auch über einen Ausgang gesteuert werden.
Reden wir hier wirklich über Latenz bei einem System, daß mit maximal 800kHz arbeitet?
Das heißt nicht, daß 800.000x die Sekunde neue Farben ankommen - Das ist jeweils nur 1 Bit!!
24 davon ergeben eine LED - und wenn das Ambilight nicht so arg schäbig aussehen soll, werden wohl zwei/drei LED folgen.
Auf Deutsch: Latenz-Probleme sehe ich hier überhaupt nicht, in der Geschwindigkeit könnten die LEDs die Daten fast trommeln ...
Das Umschalten der Datenströme würde ich wohl mit einem Analog-Switch machen.
Bei den Logik-Gattern ist meist das Problem, daß man nicht nur mit einem Typ auskommt und daher dann mehrere ICs kombinieren muss.
Immer noch kein Latenz-Problem, es werden aber immer mehr Bauteile und mehr Verdrahtungsaufwand.
(wobei man aus NAND oder NOR eigentlich Alles gebaut bekommt)
meine aktuell ausgedachte Lösung wäre klassischer Art.
Die Signalpegel von "Data 1" und "Data 2" können verschieden sein. Fungiert gleichzeitig als Pegelwandler.
T1 und T2 sind verodert (parallel). T4 dreht das Signal wieder richtig herum.
T3 wäre eine Vorrangsschaltung. Nur benötigt man dafür noch ein 3. Signal. Wenn es denn benötigt wird.
Nur aus den Datensignalen geht das nicht laut meiner Auffassung.
Es würde permanent umschalten womit am LED-Streifen ein Mischsignal ankäme.
mit Logik-Gattern ist aber das Problem mit der Stromversorgung. Die muss dann aus beiden Arduinos über Dioden entkoppelt erfolgen oder beide Arduinos brauchen die gleiche Quelle. Zumindest muss immer sichergestellt sein das die Gatter Spannung haben wenn ein Eingangssignal anliegt.
.......
Da der Stromverbrauch hier ja wohl nicht das Problem sein sollte, kann ich beide Arduino mit einer 5-Volt Spannungsquelle versorgen.
Dann gibt es da kein Problem, da die 5 Volt dann auch für die Gatter (4081 und 4071) verwendet werden können.
Und ein Latenzproblem, wie vom TO vermutet, sehe ich hier auch nicht.
Aber wenn er das Klackern von Relais liebt, soll er die nehmen. Ist vermutlich auch einfacher anzuschließen.
Erstmal vielen Dank für die ganzen Rückmeldungen.
Je einfacher ich das ganze halten kann umso besser, Relais wären halt eh noch vorhanden und das Gehäuse ist schnell gedruckt - bei Logik-Gattern und Analog Schaltern fehlt mir halt schon wieder das Wissen dahinter, da geht es dann schon los welche Elemente da richtig dimensioniert sind usw usf, ganz zu schweigen von eventuellen Fehlerquellen..
Das Klackern ist auch nicht das Problem, wenn ich auf Ambilight umschalte klackt der Verstärker beim Einschalten eh und der Ton ist entsprechend laut - ist ja eh nur für "richtige" Filmaktionen gedacht, für das ggf Einschlafen auf der Couch oder so werd ich das eh nicht nutzen^^.
Bei der Latenz gehe ich halt davon aus das mindestens 3x die Sekunde die Werte der Sensoren abgearbeitet werden müssten. Sprich der Datensatz muss gebuffert und ausgewertet werden, während das Ambilight rennt. Mit dem Code müsste ich auch haushalten, imerhin arbeite ich da ja auch mit nem größeren Buffer für USB und und und..
Mag alles nicht die Welt sein, aber wenn ich schon >100€ in das Ambilight stecke, machen die paar Euros für nen Nano und Relais den Braten auch nicht mehr fett^^.
Katsumi_S:
Hi,
mit Logik-Gattern ist aber das Problem mit der Stromversorgung. Die muss dann aus beiden Arduinos über Dioden entkoppelt erfolgen oder beide Arduinos brauchen die gleiche Quelle. Zumindest muss immer sichergestellt sein das die Gatter Spannung haben wenn ein Eingangssignal anliegt.
Mit Relais sollte es auch funktionieren. Es muß mindestens der Dateneingang der WS2812 von der einen Quelle getrennt werden und dann an die andere Quelle gelegt werden. Falls die Betriebsspannung der LEDs auch von der Signalquelle kommt, muß da natürlich auch noch ein Relais rein. Die GNDs können normalerweise miteinander verbunden bleiben.
Mal eine schnelle Skizze wie es z.B. aussehen könnte:
Wenn Arduino 2 nicht an Spannung hängt, sind die WS2812 an den Arduino 1 angeschlossen. Wenn aber Arduino 2 an Spannung gelegt wird, schalten die Relais die WS2812 an Arduino 2. Wenn gewünscht, kann die Umschaltung natürlich auch über einen Ausgang gesteuert werden.
Gruß, Jürgen
Netzteil ist ein MeanWell 5v 12A, das sowohl die Stripes als auch die Arduinos befeuert. Lediglich der Raspi hat ein eigenes 3A-Netzteil, ground vom Raspi wird mit den Arduinos verschaltet.
Sprich wenn ich das bei dir richtig deute, sollte mir ein Umschalten im Relais nicht die Ausgänge zerlegen - das wäre ja optimal. Sprich ich nehme dann ein einfaches Relais, Diode in Sperrrichtung daneben, und das sollte es dann schon gewesen sein für eine saubere Umschaltung?
Allein schon weil bei einem der Speicher "zu schnell" voll wäre.
Ich habe mir Funktionen geschrieben die die LEDs nach und nach anknipsen, die einen flüssigen Farbübergang beim Hochdimmen ermöglichen, bestimmte Farbwechsel usw usf. Dazu kommt die relativ große MySensors-Libary, die Abarbeitung des NRF-Funkchips usw.
Andererseits muss ich beim Hyperion-Arduino den Buffer vergrößern damit er die FastLed-Sachen ordentlich verarbeiten kann, plus die damit verbundenen Funktionen.
Aktuell habe ich halt in der Wohnung aussedem einige LED-Stripes verbaut. Überall wo ich mit einem Ausgang auskomme habe ich den gleichen Sketch, die gleichen Funktionen mit einem Arduino, und höchstens noch nen Bewegungsmelder oder so mit dran. Größere "Hubs" laufen schon auf ESP32.
Die Arduinos kann ich aktuell also alle mit den gleichen Funktonen bespielen. Wenn Hyperion mir da jetzt Speicher abknapst, ist das der einzige der ggf mit den neuen Farbeffekten usw nicht rennt - das wäre schon ungünstig.
Plus das halt viel Kommunikation auch verarbeitet werden muss..
Long story short, allein um mir später Probleme zu ersparen, mag ich jetzt einfach mit nem weiteren Arduino arbeiten, und dabei das Wissen haben, das es zum einen die schnellstmögliche Variante ist, und ich zum anderen alles was auf meinem "Versuchs-Uno" an LED-Krams rennt, auch auf allen verbauten incl dem hinter dem TV problemlos funktioniert