Forum: Mikrocontroller und Digitale Elektronik Billiger, kleiner serieller Leitungstreiber gesucht


von Christoph S. (mcseven)


Lesenswert?

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?

von klick klack (Gast)


Lesenswert?

WIe wär´s mit LIN ?

von Olaf (Gast)


Lesenswert?

> 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

von Christoph S. (mcseven)


Lesenswert?

> 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...

von Blubber (Gast)


Lesenswert?

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?

von H.Joachim S. (crazyhorse)


Lesenswert?

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).

von Christoph S. (mcseven)


Lesenswert?

> 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

von Stefan (Gast)


Lesenswert?

Wie schnell soll das ganze sein? Vielleicht eine Stromschleife bauen, an 
TX ein Transistor, an RX ein Optokoppler...

von Jens M. (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Christoph S. (mcseven)


Lesenswert?

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

von 10k (Gast)


Lesenswert?

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.

von Christoph S. (mcseven)


Lesenswert?

> 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).

von HildeK (Gast)


Lesenswert?

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.

von Route_66 H. (route_66)


Lesenswert?

Stefan schrieb:
> Wie schnell soll das ganze sein? Vielleicht eine Stromschleife bauen, an
> TX ein Transistor, an RX ein Optokoppler...

So wie bei MIDI...

von Clemens L. (c_l)


Lesenswert?

Stefan schrieb:
> Vielleicht eine Stromschleife bauen

Ist mit einem Draht nicht so einfach. Aber wir wissen nicht, wie GND 
gehandhabt wird.

von Tassilo H. (tassilo_h)


Lesenswert?

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
Noch kein Account? Hier anmelden.