Hallo zusammen, im Rahmen meines aktuellen Projektes verwende ich zwei Mikrocontroller, die über eine optische Strecke miteinander kommunizieren. Leider ist das Datensignal am Slave gegenüber dem Sendesignal, invertiert. Ich vermute, dass das mit dem verwendeten LWL-Umsetzer zusammenhängt. Ich möchte das Signal nun Hardwaretechnisch invertieren und bin auf den Baustein CD4047 gestoßen. https://www.reichelt.de/inverter-dual-3--15-v-dip-14-mos-4007-p12535.html?PROVID=2788&gclid=Cj0KCQiA1ZGcBhCoARIsAGQ0kkr2jgzKx_FpeSS7zr2_q6wz8kfto5vHvOEEzXWjUnLJu8WGMOilnOAaAq3DEALw_wcB Eignet sich ein solcher Inverter in Hinblick auf die Flanken für meine Anwendung bzw. hat jemand andere Lösungen bereits ausprobiert und kann von seinen Erfahrungen berichten ? Besten Dank und viele Grüße
Zum Invertieren eignet sich quasi jedes Logikgatter. Ein NAND, ein NOR, ein Inverter. Und je nach Spannung jede Technologie. HC, HCT, CMOS, ... CMOS ist vielleicht ungewöhnlich. Nimm einfach irgendwas, was schon da ist. Wenn Du einen uC hasst und eine optische Strecke, dann wird ja jemand da sein, der schon mal was mit Logik gemacht hat. Sebastian M. schrieb: > Ich vermute, > dass das mit dem verwendeten LWL-Umsetzer zusammenhängt. Solche Dinge sollte man nicht vermuten, sondern nachvollziehen. Wenn Du das nicht kannst oder nicht tust, wirst Du trotz schneller ICs keine zuverlässige Strecke hinbekommen. Also: Was ist Dein Treiber beim uC, was ist Deine Empfängerschaltung und wie stellst Du sicher, dass die LWL nicht in Sättigung gehen (Baudrate, Signale, ...)
Sebastian M. schrieb: > Eignet sich ein solcher Inverter in Hinblick auf die Flanken für meine > Anwendung Vielleicht... Du hast unbekannte Mikrocontroller, die über ein unbekanntes serielles Interface mit unbekannter Geschwindigkeit und unbekannten IO-Pegeln kommunizieren sollen. Mit dieser Fülle an Informationen kann man nur falsche Antworten geben.
Sebastian M. schrieb: > Eignet sich ein solcher Inverter in Hinblick auf die Flanken für meine > Anwendung bzw. hat jemand andere Lösungen bereits ausprobiert und kann > von seinen Erfahrungen berichten ? Dann erzähl doch etwas über deine Anwendung. Was sind das für LWL-Umsetzer und mit welcher Symbolrate willst du deine Daten übertragen?
Sebastian M. schrieb: > Ich möchte das Signal nun Hardwaretechnisch invertieren ich nehme immer die TXPOL und RXPOL Bits im UART Control Register 2 für die Invertierung. Gruß Anja
Ich benutze in beiden Fällen einen Cortex M7 Prozessor welche auf einem Teensy 4.0 (Master) und Teensy 4.1 (Slave) Eval-Board verbaut ist. Zur Kommunikation nutze ich aktuell eine Baudrate von 115200 wobei 9600 auch genügen würden. Die LWL-Umsetzer sind von Broadcom: https://www.reichelt.de/lwl-sende-modul-820nm-160-mbd-st-anschluss-miniatur-link-hfbr1414z-p285171.html Sender: HFBR1414Z, Empfänger HFBR2412TCZ @Anja, danke für deinen Tipp, ich werde nochmal nach einer softwaretechnischen Möglichkeit suchen. Da Coding jedoch nicht mein Steckenpferd ist, habe ich zunächst nach einer Lösung durch Hardware gesucht. Gruß
Man könnte auch einfach senderseitig die LED passend anschließen. Je nachdem, ob man die gegen GND oder Vcc anschließt ergibt sich eine Invertierung oder eben nicht...
Sebastian M. schrieb: > nd bin auf den > Baustein CD4047 gestoßen. hallo, Bei Reichelt ist das Datenblatt gleich mit verlinkt. Schaut man dort mal rein, findet man die empfohlene Anstuerung mit ICs der folgend genannten Serie: "The SN5545xB and SN7545xB devices are dual- peripheral drivers designed for use in systems that employ TTL logic. " Man kann argumentieren, sie seien schwierig aufzutreiben, wenn man deren Beschaffung vermeiden möchte. SN55452B hat die gewünschte NAND - Funktionalität. https://www.ti.com/lit/ds/symlink/sn75451b.pdf?ts=1669625759953&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FSN75451B Vielleicht das mal anschauen: Figure 11: Recommended Drive Circuit https://cdn-reichelt.de/documents/datenblatt/A500/HFBR-14XXZ.pdf mfg
Sebastian M. schrieb: > Da Coding jedoch nicht mein Steckenpferd ist, habe ich zunächst nach > einer Lösung durch Hardware gesucht. Dann zeige bitte den Schaltplan zu dem Aufbau der LWL-Strecke. Um eine Diode invertiert anzusteuern, reicht es oft, sie passend anzuschließen. Wie viel Strom schickst du durch die Sende-LED?
> Um eine Diode invertiert anzusteuern, reicht es oft, sie > passend anzuschließen. Man sollte aber bedenken das es von allgemeiner Klugheit zeugt eine Uebertragungsstrecke so zu designen das die Diode die meiste Zeit, also sagen wir mal zwischen den Uebertragungen aus ist. Falls die beteiligten Controller das koennen kann es sogar noch besser sein wenn man die serielle Schnittstelle auf IRDA umschaltet und so nur kurze Impulse uebertraegt. Olaf
Sebastian M. schrieb: > Die LWL-Umsetzer sind von Broadcom: > https://www.reichelt.de/lwl-sende-modul-820nm-160-mbd-st-anschluss-miniatur-link-hfbr1414z-p285171.html > Sender: HFBR1414Z, Empfänger HFBR2412TCZ Na dann ist es doch Easy, der HFBR2412TCZ gibt ein TTL-Signal aus, das kannst du bei deinen Geschwindigkeiten doch locker mit einem BC547 und Co invertieren. Da verstehe ich das Problem, ehrlich gesagt, nicht. Ein Widerstand und ein BC547 und der Drops ist gelutscht. Oder was gibt es noch für Randbedingungen, die diese Lösung verbieten und wir noch nicht kennen? Sebastian M. schrieb: > Zur Kommunikation nutze ich aktuell eine Baudrate von 115200 wobei 9600 > auch genügen würden. Man sollte die Geschwindigkeit stets so schnell wie nötig, so langsam wie möglich wählen um die Übertragungsqualität zu maximieren. Ein Signal mit 115k2 Baud lässt sich leichter stören als ein Signal mit 9k6 Baud. Wenn für deine Anwendung also 9k6 Baud hinreichend schnell sind dann ist eine höhere Baudrate nicht empfehlenswert, auch wenn es geht. Finde ich zumindest. Natürlich kann man auch die Strategie "Weils geht" verfolgen ;)
olaf schrieb: > Man sollte aber bedenken das es von allgemeiner Klugheit zeugt > eine Uebertragungsstrecke so zu designen das die Diode die > meiste Zeit, also sagen wir mal zwischen den Uebertragungen > aus ist. Das ist schon durch den Empfänger sichergestellt. Bei leuchtender LED liefert der HFBR2412TCZ einen High-Pegel, so dass das für ein UART passen sollte. p.s. An Stelle des HFBR1414Z hätte es auch ein HFBR1412Z getan ...
Sebastian M. schrieb: > Ich benutze in beiden Fällen einen Cortex M7 Prozessor welche auf einem > Teensy 4.0 (Master) und Teensy 4.1 (Slave) Eval-Board verbaut ist. > Zur Kommunikation nutze ich aktuell eine Baudrate von 115200 wobei 9600 > auch genügen würden. Anja schrieb: > ich nehme immer die TXPOL und RXPOL Bits im UART Control Register 2 für > die Invertierung. > > Gruß Anja Anja hat schon vorher die richtige Antwort gegeben, bevor sie wusste dass der µC das auch kann. Top!
> Ein Widerstand und ein BC547 und der Drops ist gelutscht. Bist du des Wahnsinns? Zwei Bauteile wo auch eins geht? Und dann noch eine lully steigende Flanke? https://www.ti.com/lit/ds/symlink/sn74lvc1g04.pdf Laesst euch mal die beeindruckende Applikationsliste durch. Da ist das Marketing mal wieder heiss gelaufen. > Anja hat schon vorher die richtige Antwort gegeben, bevor sie wusste > dass der µC das auch kann. Ja, diese Invertierung direkt in der Hardware kommt immer mehr in Mode. Muss wohl mehrere Leute mit diesem Problem geben. :) Olaf
Sebastian M. schrieb: > Eignet sich ein solcher Inverter in Hinblick auf die Flanken für meine > Anwendung Der CD4047 ist kein Inverter, sondern ein "monostable/astable multivibrator". Ich denke nicht, dass du dein serielles Signal durch irgendwelche absichtlich erzeugten Schwingungen verzerren willst. Der CD4007 ist ein Spezialfall, den nimmt man eigentlich nur, wenn man absichtlich einfache komplementäre MOS Transistoren braucht. Seine Ausgänge liefern nur sehr wenig Strom. Ich kenne den nur aus einem alten Lehrbuch aus einer Zeit als man MOS Transistoren noch nicht einzeln kaufen konnte. Da wurde er verwendet, um die Funktion von MOS Transistoren zu erforschen. Habe ihn einmal in einer analogen Schaltung verwendet, um Audio-Kanäle auf "stumm" zu schalten. Der normale 6-Fach Inverter aus dieser Serie wäre der CD4069. Bis 1 Mhz eignet er sich auf jeden Fall, darüber müsste man sich Details deiner Schaltung anschauen. Dann gibt es da noch die ähnliche 74er Serie, konkret den 74HC04. Er macht das gleiche, hat aber etwas andere Logikpegel und höher belastbare Ausgänge. In der LVC Variante eignet er sich nicht nur für gleiche Logikpegel am Ein/Ausgang, sondern auch als Pegelwandler (3V -> 5V). Für dich interessanter ist allerdings wohl, dass es den 74LVC04 als klitzekleines Einzelgatter gibt, dann heißt er 74LVC1G04. Der doppelte heißt 74LVC2G04.
Falls du Arduinos bzw. "Kompatible" verwendest: Einige Varianten der Lib "SoftwareSerial" haben einen Constructor-Parameter, um den Logikpegel zu invertieren ... ich vermute aber, dass der nicht für RX und TX getrennt gesetzt werden kann. Wäre mal eine Erweiterungs-Idee ...
olaf schrieb: > Bist du des Wahnsinns? Zwei Bauteile wo auch eins geht? Und dann noch > eine lully steigende Flanke? Ich wollte nicht damit sagen, dass es nicht noch einfacher geht, mir kam dabei nur in den Sinn, so einen BC547 und Co dürften die meisten wie einen Widerstand "in der Schublade" haben, das dürfte bei deinem vorgeschlagene Inverter weniger der Fall sein. Und bezüglich der Flanke: Wir reden hier von maximal 115k2 Baud. Wie daneben muss man greifen um dieses Signal mit nem BC und Widerstand kaputt zu machen? Oh nein, warte...die Antwort lautet "Ja"!?! :D
Der TO sollte erst mal prüfen, ob das Signal wirklich invertiert aus dem Empfänger kommt. Vielleicht hat auch irgendeiner dort dem Sender schon das invertierte Signal zugeführt. Blackbird
Lothar J. schrieb: > Der TO sollte erst mal prüfen, ob das Signal wirklich invertiert aus dem > Empfänger kommt. Wie? Nachmessen? Erstmal würde schon der Schaltplan helfen. Das Datenblatt zeigt doch sogar, wie die Beschaltung der Wandler aussehen kann. Die Pegelzuordnung beim LWL-Empfänger sieht in Ordnung aus und wenn man den nicht mit zwei linken Händen anschließt, kann da nicht viel verkehrt laufen. Also bleibt die (unbekannte) Beschaltung auf der Senderseite.
Auch wenn es irgendwo im Datenblatt steht, der HFBR2412TCZ(*) gibt KEIN TTL-Singal aus. Der hat einen Open-Collector Ausgang. Daraus kann man sich, mit einem zusätzlichen Widerstand (Datenblatt sagt 560Ω) einen TTL-Ausgang schnitzen. Man kann sich auch was anderes raus schnitzen. Da man uns den aktuellen Schaltplan verweigert kann man nur raten ob die Invertierung vielleicht am Open-Collector-Ausgang stattfindet, oder wie andere vermuteten an der Beschaltung der Sendediode. Zumindest würde ich im ersten Ansatz weder einen BC547 noch ein Logic-IC nehmen. Sondern zuerst mal NACHMESSEN und die eigene Schaltung kontrollieren. _ (*) Warum eigentlich die TC-Variante?
Hannes J. schrieb: > an der Beschaltung der Sendediode. Die wäre sowieso interessant, ist die LED des Senders doch immerhin für 60-100mA spezifiziert...
Lothar M. schrieb: > Die wäre sowieso interessant, ist die LED des Senders doch immerhin für > 60-100mA spezifiziert.. Passend dazu tauchen für die Länge der LWL-Strecke Werte im Kilometerbereich auf. 😉
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.