Ich möchte eine einzige, ca. 5 m lange Kupfer-Ader 400 kbaud übertragen. Aufgrund baulicher Gegebenheiten habe ich nur diese eine Ader zur Verfügung. Ansonsten liegen noch + und GND parallel dazu. Die Leitung ist wedergeschirmt noch verdrillt. Die Betriebsspannung (+) liegt zwischen 5 und 12 V. Der fliessende Strom bei max. 600 mA. Die Datenleitung hat einen 5 V TTL-Pegel. Was kann ich tun um die Übertragung möglichst störfest und mit minimalen EMV-Emmissionen zu betreiben? Ich dachte da an Transceiver aus dem KFZ-Bereich, z.B. den MCP2551 und dann nur eine Leitung nutzen oder einen Single-Wire-CAN Transceiver nutzen. LIN-Transceiver scheiden aus, die gehen nur bis 20 kbaud.
:
Bearbeitet durch User
Olli Z. schrieb: > Ich möchte eine einzige Kupfer-Ader 400 kbaud übertragen. Aufgrund > baulicher Gegebenheiten habe ich nur diese eine Ader zur Verfügung. > Ansonsten liegen noch + und GND parallel dazu. Die Leitung ist > wedergeschirmt noch verdrillt. > > Die Betriebsspannung (+) liegt zwischen 5 und 12 V. Der fliessende Strom > bei max. 600 mA. Die Datenleitung hat einen 5 V TTL-Pegel. > > Was kann ich tun um die Übertragung möglichst störfest und mit minimalen > EMV-Emmissionen zu betreiben? Eingeprägten Strom, Optokoppler, Wiederherstellung defekter Zeichen oder deren Wiederholung, "schräge Flanken". Überspannungsschutz nicht vergessen! Kurt
Kurt schrieb: > "schräge Flanken" Richtig, aber dazu müsste man wissen, welche Übertragungsrate, was der TO natürlich geheimhält. Auf jeden Fall sind ihm 20 kBaud zu wenig. Georg
Olli Z. schrieb: > Ich möchte eine einzige, ca. 5 m lange Kupfer-Ader 400 kbaud übertragen. Nur zur Sicherheit nochmal gefragt: musst du mit dieser Geschwindigkeit übertragen? Brauchst du diese Datenrate kontinuierlich und dauernd?
:
Bearbeitet durch Moderator
Spezielle Singlewire-CAN Transceiver mal ansehen: https://www.onsemi.com/pub/Collateral/NCV7356-D.PDF denke aber, da scheitert es an der baudrate. wie kommst du auf die Datenrate?
H.Joachim S. schrieb: > ? > Olli Z. schrieb: >> 400 kbaud Sorry, übersehen - aber das ist über einen 5m langen Draht schon sportlich. Ich würde das nicht riskieren. Georg
Lothar M. schrieb: > Olli Z. schrieb: >> Ich möchte eine einzige, ca. 5 m lange Kupfer-Ader 400 kbaud übertragen. > Nur zur Sicherheit nochmal gefragt: musst du mit dieser > Geschwindigkeit übertragen? Brauchst du diese Datenrate kontinuierlich > und dauernd? Ja, leider. Bauliche gegebenheit und ich kann da nichts dran ändern. Die Daten die ich übertragen möchte sind nur bei Änderung anliegend. Es handelt sich um Daten von einem WS2812 Controller für eine LED-Beleuchtung. Nur beim dimmen/farbwechsel werden Daten übertragen. Ich kann die LEDs und den Controller von normal 800 kbaud auf 400 kbaud zurückschalten, was für meine wenigen LEDs (8 pro Strang) ausreichend ist.
Audio schrieb: > Spezielle Singlewire-CAN Transceiver mal ansehen: > https://www.onsemi.com/pub/Collateral/NCV7356-D.PDF > denke aber, da scheitert es an der baudrate. Hatte ich schon geprüft und aus dem Grund, wie auch die LIN-Transceiver ausgenommen. Übrig blieben nur Dual-Wire-CAN Transceiver. Die machen durch die Bank bis 1 mbaud. > wie kommst du auf die Datenrate? Siehe Antwort zuvor.
georg schrieb: > H.Joachim S. schrieb: >> ? >> Olli Z. schrieb: >>> 400 kbaud > > Sorry, übersehen - aber das ist über einen 5m langen Draht schon > sportlich. Ich würde das nicht riskieren. > > Georg Der Witz ist ja, das im Datenblatt des WS2811-Chips der in meiner LED-Beleuchtung zum Einsatz kommt, ein Abstand von bis zu 10 m zwischen den LEDs als möglich angegeben ist. Ich bezweifle aber das die im Chip integrierten Senderstufen das wirklich leisten können. Leider gibt es keine Checksummen oder Fehlerkorrektur im Protokoll. D.H. eine falsche Übertragung lässt wenigstens eine LED falsch anzeigen. Um das zu verhindern müsste ich, auch wenn sich nichts ändert, den aktuellen Wert periodisch (alle 0,5 oder 0,25 Sekunden) senden, was aber wiederum nicht dolle fürs EMV ist.
Serienterminierung bringt vielleicht was, aber letztlich gilt: Ausprobieren. Dass die Daten nur bei Änderungen übertragen werden, ist übrigens ganz schlecht, denn wenn dann mal 1 Telegramm korrupt ist, dann kommt halt Käse raus und der bleibt mindestens bis zur nächsten Änderung...
Da Einzelstück, würde ich es mal mit RS232 versuchen. Gibt ne ganze Menge Chips, die mehr als die üblichen 120k können. MAX3243, typisch 500kBaud. Für so eine Anwendung kann man schon gerne mal typische Werte nehmen.
Olli Z. schrieb: > Es > handelt sich um Daten von einem WS2812 Controller für eine > LED-Beleuchtung. Und wenn Du nun den Controller auf die LED-Seite tust und "fernbedienst"?
Lothar M. schrieb: > Serienterminierung bringt vielleicht was, aber letztlich gilt: Habe ich vor. Laut Datenblatt soll man 33 Ohm Widerstände in Reihe zu den Datenleitungen schalten um Reflextionen zu mindern und Hot-Plug-Effekte zu minimieren. > Ausprobieren. Das werde ich. Nur ist es für mich nicht so einfach mögliche Störquellen zu simulieren. Ich kann halt nen Trafo in die Nähe stellen, oder ne Mikrowelle, oder was weiss ich ;-) > Dass die Daten nur bei Änderungen übertragen werden, ist übrigens ganz > schlecht, denn wenn dann mal 1 Telegramm korrupt ist, dann kommt halt > Käse raus und der bleibt mindestens bis zur nächsten Änderung... Rischdisch. Daher hab ich grad zuvor ja geschrieben das ich vermutlich zyklisch wiederholen muss. Es gibt auch kein Feedback oder Readback der gesendeten Werte. Es muss einfach stimmen.
Rainer U. schrieb: > Olli Z. schrieb: >> Es >> handelt sich um Daten von einem WS2812 Controller für eine >> LED-Beleuchtung. > > Und wenn Du nun den Controller auf die LED-Seite tust und > "fernbedienst"? Geht leider nicht ohne weiteres. Ich hab ja nur eine freie Ader und an den Controller möchte ich per USB rankommen zum programmieren. Ist doof, ich weiss und hätte man sich alles vorher überlegen können, klar, aber ich habe das Problem mit der Datenübertragung über 1-Draht schlichtweg unterschätzt.
Die eigentliche Nutzdatendichte ist doch jetzt um 3-5 Größenordungen kleiner als die durch das WS2812 Protokoll notwendige Bandbreite. Ich gehe jetzt davon aus: Du hast einen fertigen Controller den du benutzen willst. Weil du an den mit USB drankommst kann der auch nicht zu den Leds. Jetzt kannst du entweder durch geeignete Hardwaremaßnahmen die Bandbreite entsprechend erhöhen, oder (alternative "dumme" Idee) du nimmst 2 µCs. Mit dem einen liest du das WS2812 Protokoll des Controllers aus und schickst die Daten dann wesentlich langsamer zu dem 2. µC. Der sitzt direkt bei den Leds und wandelt die Daten aus dem langsamen störsicheren Protokoll wieder in WS2812 um und steuert damit die Leds an. Ist von hinten durch die Brust ins Auge, aber vieleicht eine suboptimale Lösung wenn es keine bessere gibt. Siehe auch https://www.mikrocontroller.net/articles/WS2812_Ansteuerung
@ Olli Z. (z80freak) >Die Daten die ich übertragen möchte sind nur bei Änderung anliegend. Es >handelt sich um Daten von einem WS2812 Controller für eine Dieses "Detail" wäre im Ursprungsbeitrag sinnvoll platziert gewesen. Naja, besser spät als nie. >LED-Beleuchtung. Nur beim dimmen/farbwechsel werden Daten übertragen. >Ich kann die LEDs und den Controller von normal 800 kbaud auf 400 kbaud >zurückschalten, was für meine wenigen LEDs (8 pro Strang) ausreichend >ist. Das ist nur die halbe Wahrheit. WS2812 LEDs arbeiten mit Pulse von 0,4 oder 0,8us, welche sie auch relativ genau sehen wollen, wenn sie nicht rumzicken sollen. Damit sind wird schon weit im MHz-Bereich, vor allem was die Schaltflanken angeht. Damit wird das Thema Wellenwiderstand relevant. D.h. du brauchst eine Serienterminierung UND halbwegs konstanten Wellenwiderstand des Kabels. Das muss nicht zwingend verdrillt sein, sollte aber nicht lose mit großem Abstand rumliegen.
Falk B. schrieb: > Dieses "Detail" wäre im Ursprungsbeitrag sinnvoll platziert gewesen. Ja, da hast Du natürlich recht. Ich dachte es gibt eine eher generische Lösung bei der digitalen Datenübermittlung mit einer Ader. Leider lässt sich ein Beitrag später auch nicht mehr ergänzen, sodass sich andere Mitglieder durch die ganzen Antworten quälen müssen... sonst hätt ich das schon ergänzt :-) > Das ist nur die halbe Wahrheit. WS2812 LEDs arbeiten mit Pulse Chips mit nachfolgenden LEDs. An der ersten LED ist ein Jumper mit der sich die Geschwindigkeit umstellen lässt. > relevant. D.h. du brauchst eine Serienterminierung UND halbwegs > konstanten Wellenwiderstand des Kabels. Wie ermittele ich diese Widerstände? Kann ich das mit nem Oszi auch ausmessen? Hab von HF Technik leider keinen Plan, war immer ein Buch mit sieben Siegeln für mich. Werde mal versuchen aus dem Inhalt der verlinkten Seiten schlau zu werden. Es ist leider oft so, das man ein scheinbar triviales Problem hat und dann plötzlich in Grundlagenforschung stecken bleibt.
Der Andere schrieb im Beitrag #5257595 > Ich gehe jetzt davon aus: Du hast einen fertigen Controller den du benutzen willst. Weil du an den mit USB drankommst Genau richtig. > nimmst 2 µCs. Die Idee ist grundsätzlich nicht schlecht, ich habe natürlich gehofft mit weniger Aufwand hin zu kommen. Dachte Pegelwandler könnten reichen, auch um es nicht noch komplizierter und teurer zu machen.
@Olli Z. (z80freak) >> Das ist nur die halbe Wahrheit. WS2812 LEDs arbeiten mit Pulse >Chips mit nachfolgenden LEDs. An der ersten LED ist ein Jumper mit der >sich die Geschwindigkeit umstellen lässt. Mag sein, ändert aber am Grundproblem nix. >> relevant. D.h. du brauchst eine Serienterminierung UND halbwegs >> konstanten Wellenwiderstand des Kabels. >Wie ermittele ich diese Widerstände? Trial & error. Einfach den Serienwiderstand am Sender schrittweise erhöhen und schauen wann es stabil läuft. 33, 47, 68, 100 Ohm. >Kann ich das mit nem Oszi auch >ausmessen? Jain. Wenn das Signal am Eingang der 1. LED schön aussieht, ohne Klingeln und Überschwinger. Beitrag "Re: Skurriles Problem mit BS170 Mosfets" Aber bitte richtig messen. https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen
Olli Z. schrieb: > Lothar M. schrieb: >> Brauchst du diese Datenrate kontinuierlich >> und dauernd? > Ja, leider. Bauliche gegebenheit und ich kann da nichts dran ändern. > Die Daten die ich übertragen möchte sind nur bei Änderung anliegend. Es > handelt sich um Daten von einem WS2812 Controller für eine > LED-Beleuchtung. Nur beim dimmen/farbwechsel werden Daten übertragen. > Ich kann die LEDs und den Controller von normal 800 kbaud auf 400 kbaud > zurückschalten, was für meine wenigen LEDs (8 pro Strang) ausreichend > ist. Wie schnell müssen Deine LEDs denn auf Änderungen reagieren? Oder anders gefragt: kannst Du die Daten eventuell puffern? Ein Mikrocontroller auf der Empfängerseite könnte die Daten empfangen und zwischenspeichern (puffern). Wenn dann ein kompletter Datensatz empfangen wurde, gibt er den mit den passenden Timings auf die LED-Controller aus.
@Sheeva Plug (sheevaplug) >Wie schnell müssen Deine LEDs denn auf Änderungen reagieren? Oder anders >gefragt: kannst Du die Daten eventuell puffern? >Ein Mikrocontroller auf der Empfängerseite könnte die Daten empfangen Genau DIESE Idee hat der OP MEHRFACH abgelehnt.
Ich stand vor selbigen Problem... Und hatte eine ganz einfache sowie simple Lösung die tadellos hier (4,5M) funktioniert: Ich habe ganz simple eine WS2812 auf die Sendeseite gemacht und bin dann von dieser über gut 4,5M Ader auf die anderen LEDs gegangen. Im Code gebe ich einfach die erste LED als Dummycode mit aus. Hatte übrigens den guten Effekt das man am "anderen Ende" sieht ob das Programm überhaupt richtig läuft. Probiers einfach mal aus.
@ Rene. K (Gast) >Ich habe ganz simple eine WS2812 auf die Sendeseite gemacht und bin dann >von dieser über gut 4,5M Ader auf die anderen LEDs gegangen. Hmm. Was unterscheidet den Digitalausgang einer WS2812 von einem normalen CMOS-Digitalausgang? Ggf. sind die Anstiegszeiten größer und damit die Gefahr von Reflektionen auf langen Leitungen geringer. Das müßte man mal messen.
Falk B. schrieb: > @ Rene. K (Gast) > >>Ich habe ganz simple eine WS2812 auf die Sendeseite gemacht und bin dann >>von dieser über gut 4,5M Ader auf die anderen LEDs gegangen. > > Hmm. Was unterscheidet den Digitalausgang einer WS2812 von einem > normalen CMOS-Digitalausgang? Ggf. sind die Anstiegszeiten größer und > damit die Gefahr von Reflektionen auf langen Leitungen geringer. Das > müßte man mal messen. Du, das kann ich dir nicht sagen. Mag sein das dies ein normaler CMOS Ausgang mit den richtigen Timings auch stemmt. Ich habe als µC vor dem WS einen STM32 laufen, die Software ist selbst geschrieben und befeuert den WS über DMA - ich gehe mal davon aus, das meine Timings da schon relativ "grenzwertig" sind. Weil da schon nach gut 20cm Freikabel nur noch Datenmüll an den WS angekommen ist. Alles unter 10cm von µC zu WS klappt hier allerdings wunderbar. Ich muss auch zugeben, das ich mir noch nie ein WS2812 am Datenausgang mit einem Oszi angeschaut habe. Kann dazu also nicht wirklich was sagen.
@ Rene. K (Gast) >> damit die Gefahr von Reflektionen auf langen Leitungen geringer. Das >> müßte man mal messen. >Du, das kann ich dir nicht sagen. Deswegen müßte mal jemand messen . . . > Mag sein das dies ein normaler CMOS >Ausgang mit den richtigen Timings auch stemmt. Ich habe als µC vor dem >WS einen STM32 laufen, Dessen Ausgaänge auch in der langsamsten Konfigurationsstufe immer noch ziemlich schnell schalten, wahrscheinlich mit 5-10ns Anstiegszeit. >die Software ist selbst geschrieben und befeuert >den WS über DMA - ich gehe mal davon aus, das meine Timings da schon >relativ "grenzwertig" sind. Weil da schon nach gut 20cm Freikabel nur >noch Datenmüll an den WS angekommen ist. Das ist aber meistens nicht ein Problem des Timings der Software sondern ein Prolem mit dem Wellenwiderstand. > Alles unter 10cm von µC zu WS >klappt hier allerdings wunderbar. Ein starkes Indiz für Reflektionen auf dem Kabel, siehe oben. >Ich muss auch zugeben, das ich mir noch nie ein WS2812 am Datenausgang >mit einem Oszi angeschaut habe. Das kannst du nachholen. Anscheinend hast du ja sowohl einen Oszi als auch eine WS2812 LED.
Falk B. schrieb: > @Sheeva Plug (sheevaplug) > >>Wie schnell müssen Deine LEDs denn auf Änderungen reagieren? Oder anders >>gefragt: kannst Du die Daten eventuell puffern? > >>Ein Mikrocontroller auf der Empfängerseite könnte die Daten empfangen > > Genau DIESE Idee hat der OP MEHRFACH abgelehnt. Das kling jetzt ein bischen hart wie Du mich da interpretierst... Ich hab die Idee ja verstanden und durchaus auch schon selbst gehabt. Ich lehne sie auch nicht grundsätzlich ab, finde nur den Aufwand drumherum zu groß. Es ist ja nicht einfach mal nur ein uC. Das Ding braucht ein Netzteil, Strom, eine gewisse Umgebung, Software, etc. Mir wäre da was wartungsärmeres, einfachereres halt nur lieber.
Rene. K schrieb: > Ich habe ganz simple eine WS2812 auf die Sendeseite gemacht und bin dann > von dieser über gut 4,5M Ader auf die anderen LEDs gegangen. Im Code > gebe ich einfach die erste LED als Dummycode mit aus. Hatte übrigens den > guten Effekt das man am "anderen Ende" sieht ob das Programm überhaupt > richtig läuft. Du wirst lachen, aber sowas ähnliches hatte ich mir auch schon überlegt. Im Datenblatt des WS2811-Chips, sowie der WS2812 LEDs ist nämlich vermerkt, das die Strecke zwischen zwei LEDs (und dort steht explizit "nach der ersten LED") max. 7,5 Meter betragen darf. Was auch immer die als Treiber da drin haben, es ist scheinbar in der Lage das über eine normale, ungeschirmte Adern abzukönnen. Auch wenn ich mich frag, was die anders machen als wir hier über zig Mails diksutieren, werde ich das auf jeden Fall mal ausprobieren. Ich hab mir die Signale auf meinem Rigol schonmal angeschaut und die sehen schon recht gruselig aus. Nach meinem Urlaub stell ich gern mal ein paar Screens rein.
Olli Z. schrieb: > Controller möchte ich per USB rankommen zum programmieren. ich nehme dafür einen ESP8266, der steuert meine LEDs er lässt sich zB über OTA (over the air, also über WIFI) programmieren. Geht erstaunlich zuverlässig und einfach über die Arduino-IDE. Man benötigt halt WLAN-Empfang
Ja, weiss ich, kenn ich. Der ist aber entweder immer mit dem Haus-WLAN verbunden oder sendet selbst ne Kennung aus. Beides kommt für mich eher nicht in Frage. Das Teil soll normalerweise ohne irgendwas laufen. Die Lichtsteuerung kommt nicht über ein Tablet oder so, sondern über einfache Schalt- und Drehpotisignale. Ich brauch den USB nur zum umprogrammieren, falls ich mal was komplett anderes damit machen möchte.
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.