HI, ich hab da mehrere Atmegas die über 1 Datenleitung verbunden werden sollen. Verwendet werden soll der UART mit 9600 als Baudrate, Kabel sind einige Meter lang, daher die niedrige Baudrate. Anfangs war geplant, dass nur das Hauptsteuergerät Daten an die einzelnen Module sendet. Daher soll TXD des Hauptsteuergeräts mit RXD der Module verbunden werden. Das wären ca. 8 Stück. Müsste doch so klappen, oder? Es kam natürlich bald die Idee auf, ob man nicht auch Daten andersherum wieder zurücksenden könnte, das am besten auch noch mit nur 1 Leitung, also ohne eine neue ziehen zu müssen. Die Idee ist, dass das Hauptsteuergerät einem bestimmten Modul mitteilt, dass es in den Sendemodus wechseln soll. Danach würde das Hauptsteuergerät seinen UART-Sender abschalten und den Empfänger einschalten. Das Modul würde den Sender einschalten und den Empfänger abschalten. Dann würden die Daten gesendet werden. Nach einer festgelegten Zeit, nachdem ein paar Byte übertragen wurden wird wieder der Anfangszustand hergestellt und in den "normalen" Modus gewechselt. Wäre das so möglich? Das waren jetzt erstmal theoretische Überlegungen, ob es hernach auch wirklich gebaut wird sei mal dahingestellt. Die Idee entstand aus einer Diskussion heraus.
nmbx schrieb: > ich hab da mehrere Atmegas die über 1 Datenleitung verbunden werden > sollen. ... Hallo, logisch ist das garkein Problem, wenn du die Software für beide Seiten programmierst. Allerdings ist es eine furchtbar schlechte Idee, die CMOS-Signale des Prozessors direkt durch die Gegend zu verlegen, und ausserdem brauchst du einen abschaltbaren Ausgang zum Senden. Da landest du schnell bei RS485, das benutzt die gleichen Leitungen zum Senden und Empfangen, allerdings eine Doppelleitung mit Differenzsignalen, weil das erheblich störsicherer ist. Wenns aber unbedingt sein muss, kann man auch nur einen Draht davon verwenden. Schau dir mal RS485-Treiber-ICs an. Gruss Reinhard
nmbx schrieb: > Daher soll TXD des Hauptsteuergeräts mit RXD > der Module verbunden werden. Das wären ca. 8 Stück. > Müsste doch so klappen, oder? > > Es kam natürlich bald die Idee auf, ob man nicht auch Daten andersherum > wieder zurücksenden könnte, das am besten auch noch mit nur 1 Leitung, > also ohne eine neue ziehen zu müssen. Wie oben schon angesprochen sind TTL / CMOS Signale mies. Meine Idee wäre die Controller als Ring zu verbinden wobei dann die Daten noch Adressierungsinfos enthalten müßten. Daten die nicht zum jeweiligen Controller gehören würden einfach per Software zum Nächsten weiter geleitet werden. Und die Pegel dann als RS232 auslegen. Dürfte preisgünstig sein und genauso viel Programmieraufwand wie die anderen 1 Leitungsideen haben.
LIN ist etabliert und funktioniert in Millionen von Autos und Maschinen störungsfrei, und es ist haargenau das, was Du willst. Atmel baut einige AVRs, die direkt LIN-Unterstützung enthalten (Break-Erkennung etc), aber LIN ist so ausgelegt, dass es auch mit einem normalen UART oder ganz in Software zu realisieren ist. LIN verwendet wie CAN immer externe Transceiver-Chips für den Physical Layer. http://www.lin-subbus.org/ Andere Möglichkeit: Single-Wire CAN. Auch dafür gibts Transceiver. fchk
Optimal ist natürlich was anderes. Man sollte vermeiden, dass durch Fehler elektrische Kurzschlüsse entstehen. Naheliegend wäre es daher, "Pull-Down"-Widerstände gegen -12V (oder was die Spannung gerade ist) zu nehmen und vor die Ausgänge der Treiber Dioden (Anode an den Ausgang, Kathode zum Bus). Im Idle-Zustand ist dann -12V auf dem Bus, also eine logische 1. Wer sendet, zieht den Bus dann auf +12V. Wenn mehr als einer sendet, gibt es zwar logisches Kuddel-Muddel, Kurzschlüsse verhindern aber die Dioden. Als Protokoll kannst du ja einmal einen Blick auf SNAP werfen.
Danke erstmal für eure ganzen Tipps! :-) Das was ich vorhabe würde schon in Richtung des LIN-Bus gehen. Was ist eigentlich das Problem an den TTL Signalen? Macht die Flankensteilheit da Probleme?
Der Störabstand ist hauptsächlich das Problem. Auf langen Leiteungen (z.B. neben normaler 230V Stominstalation) hat man schnell 2 - 3 V Einstreuung. Und schon ist dein 0 Signal High... Die Flanken werden natürlich auch je nach Leitung verschliffen. Bei niedrigen Baudraten ist das aber nicht so kritisch.
Für das eingangs geschilderte Problem gibt es die bereits beschriebene Standardlösung der RS485-Übertragung. Ohne viel Probleme und ohne irgendwelche speziellen Busprotokolle implementieren zu müssen läßt sich damit ein einfaches Übertragungssystem aufbauen. Bei galvanisch getrennten Schnittstellen sind leicht mehrere 100 Meter Kabellänge bei über 100 kBaud sicher zu beherrschen. Warum also komplizierter denken als nötig?
Jam schrieb: > Für das eingangs geschilderte Problem gibt es die bereits beschriebene > Standardlösung der RS485-Übertragung. Dann erzähl 'mal. Von einem RS485-Standard über nur einen Draht habe ich nämlich noch nie gehört. nmbx schrieb: > Es kam natürlich bald die Idee auf, ob man nicht auch Daten andersherum > wieder zurücksenden könnte, das am besten auch noch mit nur 1 Leitung, > also ohne eine neue ziehen zu müssen.
Detlev T. schrieb: > Dann erzähl 'mal. Von einem RS485-Standard über nur einen Draht habe ich > nämlich noch nie gehört. Man müsste erstmal wissen, was mit "Draht" gemeint ist. Eine einzelne Litze? Oder zumindest noch eine weitere für die Masse? RS485 funktioniert bei nicht zu langen Kabellängen auch ohne schirmende Masse. Voraussetzung sind aber für den Differenzbetrieb 2 verdrillte "Drähte".
> Dann erzähl 'mal. Von einem RS485-Standard über nur einen Draht habe ich > nämlich noch nie gehört. Der mathematische Faktor zwischen einem Draht und der genannten Leitung/Kabel kann mit "zwei" bezüglich der Einzeladern angenommen werden.
Irgendwie lustig, der TO schreibt von einer 'Datenleitung', welche der eine als ein Stück Draht und der andere als 20 verdrillte und einzeln geschirmte Adernpaare interpretiert. Der eine empfiehlt den KFZ LIN-Bus mit TJA1020, den man an jeder Ecke bekommt und der typ. mit 12V versorgt werden möchte; der andere sieht dagegen das Problem bei parallel laufenden 230VAC Leitungen, die nichts anderes machen als zu stören. Die Anforderung, über einige Meter mit niedriger Baudrate zu übertragen, wird als Anlaß genommen, auf die schlechte Signalqualität bei langen Leitungen hinzuweisen. @nmbx Klär uns doch einfach 'mal besser auf!
Es geht wirklich um 1 "Draht" Die Entfernung sind ein paar Meter in einem normalen Wohnhaus, ohne besondere Umgebung wie starke Motoren, Leuchtstoffröhren oder ionisierender Strahlung ;-) Die Idee war ja, eben mit wenig Aufwand zum Ziel zu kommen. Wäre das also mit UART grundsätzlich möglich? Offenbar ja schon. Die maximale Baudrate soll ja nur bei etwa 9600 liegen. Das Testen mit einigen Metern Draht war auch bei höheren Baudraten und einem FTDI Chip möglich.
Hi
>Es geht wirklich um 1 "Draht"
Mit einem Draht geht es nicht. Du brauchst zumindest noch Masse.
MfG Spess
>Es geht wirklich um 1 "Draht"
Das nenne ich dann Antenne.
Entwickler schrieb: >>Es geht wirklich um 1 "Draht" > > Das nenne ich dann Antenne. Auch die funktioniert nicht ohne Masse, auch wenn man die auf den ersten Blick nicht unbedingt sieht. Jedenfalls nicht bei 1 Draht. Für einen Dipol braucht man halt auch 2. Die physikalischen Gesetze können ungeheur stur sein. Gruss Reinhard
>Auch die funktioniert nicht ohne Masse,
Und wie machen das die Kosmo-/Astronauten? Haben die eine Masseleitung
an der ISS?
Das ist bei denen 0.05er Kupferlackdraht zur Erde gespannt. Nicht sichbar für uneingeweihte. Tricks.. wo man sie kaum vermutet
ja und der Strom wird wohl auch durch Induktion zu meiner Schaltung übertragen ;-)# klar gibts GND...
Atmel has an Appnote for a Single-wire Software UART AVR274: Single-wire Software UART on tinyAVR and megaAVR devices http://www.atmel.com/dyn/resources/prod_documents/AVR274.pdf http://www.atmel.com/dyn/resources/prod_documents/AVR274.zip mfg Bingo
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.