Grüße *, ich bin auf der Suche nach einem RS232-ähnlichen Leitungstreiber: - daisy-chainable: [Master TX] -> [RX1:TX1] -> [RX2:TX2] -> ... - Nur ein Draht zur Kommunikation (kein RS485) - Halbduplex - Klein (SOIC-8 o.ä.) - Billig (<< 1 EUR @1k) - Leitungslänge etwa 1m-3m zwischen den Stationen, 15m insgesamt. - 3,3V oder 5V Versorgung und MCU-Pegel * Für RS232 hab ich nix billiges gefunden, und die ganzen Max232 und Verschnitte sind zu teuer und zu groß, insbesondere mit den 4 externen Kapazitäten. * Der DS275 scheitert wahrscheinlich an der Leitungslänge. Der Master müßte ja die -9V für alle 5-10 Stationen zur Verfügung stellen. Außerdem könnten die Slaves nicht unabhängig voneinander senden. * Ohne Treiber: MCU TTL-Pegel gibt leider zu viele Bitfehler in der Zielumgebung. Hätte jemand eine Idee?
> Hätte jemand eine Idee?
Eventuell ein leistungsfaehiges Einzelgatter mit ordentlicher
Terminierung auf beiden Seiten. Allerdings musst du noch irgendwas wegen
Ueberspannung machen. Da ist ein RS485 Treiber vielleicht doch nicht so
dumm.
Aber bei 15m Leitungslaenge kommt es IMHO auch schon sehr auf die
Anwendung und eventuell auftretende Potentialunterschiede an. Da gibt es
sicher auch Szenarien wo man potentialfrei sein will.
Olaf
> Allerdings musst du noch irgendwas wegen Ueberspannung machen. Ja, das dachte ich mir. > Da ist ein RS485 Treiber vielleicht doch nicht so dumm. Das wäre auch der ideale Chip, aber a) daisy-chain = 2 chips und b) 2 Leitungen. Ich hab nur eine. > LIN Ahhh, das klingt auch nach einem Plan. Ich hab 5V-ICs gefunden, auch bezahlbar, bleibt nur das Problem der Adressierung, wenn Daisy-Chain nicht mehr geht. Kennt jemand einen Weg, ~10 Stationen bei Poweron deterministisch mit aufsteigenden Adressen am LIN-Bus zu versorgen? Hintergrund ist, ich möchte die WS2812-Logik nachbilden, aber mit UART-Protokoll. Wenn ich RX/TX jeweils daisy-chaine, ist das einfach möglich. Jede Station hat den gleichen Code und nimmt sich die ersten X Bytes und leitet den Rest weiter. Wenn die nun alle an einem Kabel hängen, muß ich ihnen irgendwie Adressen beibringen, nicht hard-coded und deterministisch...
Christoph S. schrieb: > Hintergrund ist, ich möchte die WS2812-Logik nachbilden, aber mit > UART-Protokoll. Wenn ich RX/TX jeweils daisy-chaine, ist das einfach > möglich. Jede Station hat den gleichen Code und nimmt sich die ersten > X Bytes und leitet den Rest weiter. > > Wenn die nun alle an einem Kabel hängen, muß ich ihnen irgendwie > Adressen beibringen, nicht hard-coded und deterministisch... Wozu brauchst du Adressen, wenn du das 'daisy-chain' verschaltest? >--|RX µC TX|-->--|RX µC TX|--> Wie du schon geschrieben hast, jede Station nimmt sich die benötigten Bytes und schiebt den Rest weiter .... Wo und wofür werden da Adressen benötigt?
Genau das will er ja, und deswegen kann er LIN-Transceiver eben nicht nehmen, denn da würden (eindeutige) Adressen irgendeiner Art benötigt (Eindraht-Bus statt Daisy-chain).
> Wo und wofür werden da Adressen benötigt?
Weil LIN daisy-chain nicht unterschtützt :)
Wie bei RS485 hängen sie alle an einem Kabel. Es sei denn, 2 Chips pro
Station, was das ganze wieder teuer macht. Und die
Slave-Node-Position-Detect Konzepte sind auch net brauchbar:
- Extra Kabel zum Aktivieren des jew. nächsten Nodes
- Ein FET, der das LIN-Signal zum Rest des Busses trennt
- Zwei Transceiver-ICs
Wie schnell soll das ganze sein? Vielleicht eine Stromschleife bauen, an TX ein Transistor, an RX ein Optokoppler...
Wie wäre es mit einem Transistor pro Gerät (open collector) als Sender und https://de.wikipedia.org/wiki/Manchester-Code. Als Eindrahtlösung aber einmaliger Mehraufwand im Protokoll. Halbduplex z.B. kannst du über ein Token machen. Braucht dann auch nur einen I/O Port am Controller.
Christoph S. schrieb: > ich bin auf der Suche nach einem RS232-ähnlichen Leitungstreiber: > - 3,3V oder 5V Versorgung und MCU-Pegel Wie willst du aus 3.3V (bzw. 5) die nötigen Spannung für die Störabstände wie RS232 machen ? Aus 3.3V kommt halt nicht mehr als 3.3V, TTL Pegel, und wenn der gestört wird.... Als kurzschlussgeschützte Leitungstreiber eignen sich OpAmps ganz gut. Die brauchen halt ausreichende Versorgungsspannung. Als Empfänger sollte man immer Schmitt-Trigger nutzen.
Warum nimmst du nicht einfach einen Single-Gate-Buffer (z.B. LVC1G34) mit einer passenden Serienterminierung am Ausgang? Bei max. 3m pro Abschnitt erwarte ich, dass das geht. Die nächst bessere Lösung ist ein differentielles Signal - braucht aber unerwünschterweise natürlich zwei Drähte ... An den Dasy-Chain-Stationen einfach wieder einen nehmen. Gerade bei größeren Leitungslängen wirkt die Serienterminierung Wunder.
Ja, danke erst einmal für die Vorschläge. Wie gesagt, es sollte unter anderem auch "billig" sein. Die Versorgungsspannung ist 12V, deswegen hab ich im Moment 2 mögliche Lösungen. MLX81106 ======== Das ist ein LIN PWM-Treiber mit 4x16bit PWM@370Hz, der sogar das Daisy-Chain(en) unterstützt, weil er ein LIN-in und -out hat. - Wie programmieren? - Freier C-Compiler? - IDE? - Woher kaufen? Und gefühlt: mit 24k Flash ein absoluter Overkill. Im Moment paßt alles in 750 Byte eines PIC12F1572. Push-Driver =========== Man stelle den UART auf "invertiert" und verbinde die Datenleitung über einen MOSFET mit +12V. In Serie mit 10k am Eingang des anderen Devices kriegt die Clamping-Diode ~1mA ab, das sollte sie können? => Extrem dirty, aber billig. +12V----[10k]---+ | +--TX_out---* ------ *----[10k]----RX_mcu | TX_mcu-----------[FET] | GND
10k seh ich für eine gestörte Umgebung als viel zu hochohmig an. Die Störungen bleiben Dir erhalten. 10k (20k) als Serienwiderstand ist auch schlechtes Design. Die Leitungskapazitäten verschleifen das Signal gewaltig.
> Die Leitungskapazitäten verschleifen das Signal gewaltig.
Das dacht ich mir fast, ich hab zwar "nur" 19k2 Baud. Aber dann würde
mir wohl auch der SN74LVC1G34 nichts nützen, oder?
Ruhestrom wäre übrigens "egal", das darf schon 1-2mA sein.
Ich hab leider kein mobiles Scope, sonst könnt ich mal messen, was für
Störungen überhaupt auftreten (in der Umgebung).
Christoph S. schrieb: >> Die Leitungskapazitäten verschleifen das Signal gewaltig. > Das dacht ich mir fast, ich hab zwar "nur" 19k2 Baud. Aber dann würde > mir wohl auch der SN74LVC1G34 nichts nützen, oder? Du hattest den 10k ja am Ende der Leitung - direkt vor dem Empfänger zu dessen Schutz - angebracht. Dadurch wird nichts mehr verschliffen, Gast 10k hat das wohl übersehen. Problematischer ist deine zuletzt gepostete Schaltung "Push Driver" mit dem 10k Arbeitswiderstand an der Drain. Der wird die ansteigende Flanke schon verschleifen. Wie viel, hängt von der Leitungskapazität gegen Masse ab. Christoph S. schrieb: > Ich hab leider kein mobiles Scope, sonst könnt ich mal messen, was für > Störungen überhaupt auftreten (in der Umgebung). Sind es überhaupt Störungen von außen? Ich vermute einfach, dass bei der Länge und deinem direkten µC-Ausgang einfach zu viele Reflexionen auftreten und dir das die Übertragung versaut. Probier doch einfach mal einen 30Ω-50Ω Serienwiderstand direkt am µC-Ausgang und gehe damit auf die Leitung.
Stefan schrieb: > Wie schnell soll das ganze sein? Vielleicht eine Stromschleife bauen, an > TX ein Transistor, an RX ein Optokoppler... So wie bei MIDI...
Stefan schrieb: > Vielleicht eine Stromschleife bauen Ist mit einem Draht nicht so einfach. Aber wir wissen nicht, wie GND gehandhabt wird.
Christoph S. schrieb: > * Für RS232 hab ich nix billiges gefunden, und die ganzen Max232 und > Verschnitte sind zu teuer und zu groß, insbesondere mit den 4 externen > Kapazitäten. ST232 (5V) und ST3232 (3.3V) sind MAX232-Verschnitte, kosten in Stückzahl 1 <75/95ct, 1k <50ct, 2k5 eher <30ct (Digikey), und sind in TSSOP16 auch nicht nennenswert größer als SO8. Nur die Kerkos sind natürlich bei der Größe hinderlich, aber die passen ja evtl. auf die Unterseite.
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.