Hallo, ich habe mich nun entschlossen doch RS458 anstelle von I²C oder Can in meinem nächsten Projekt zu verwenden. Nun unterstützt der AVR ja nicht direkt RS458 oder ? Welchen Treiber Baustein müsste ich denn verwenden um mit einem Atmega16 über RS458 arbeiten zu können ? Und wie würde dann ungefähr der Schaltplan für eine simpele RS458 Schaltung aussehen ? Außerdem frage ich mich noch ob es nun wichtig ist Optokoppler zu verwenden um die Kreise Galvanisch zu trennen. Achso und dann noch eine Frage zum Betrieb. Da für RS458 ja kein direkt fertiges Protokoll existiert, kann es ja zu Komplikationen zwischen Daten am Bus kommen, sprich 2 Bytes treffen aufeinander. Kann man dieses umgehen indem der Master nur sendet und die Slaves ausführen und die Slaves nur antworten können wenn sie vom Master direkt dazu aufgefordert werden ? mfg Yannic
Yannic wrote: > Welchen Treiber Baustein müsste ich denn verwenden um mit einem Atmega16 > über RS485 arbeiten zu können ? RS485 > Und wie würde dann ungefähr der Schaltplan für eine simpele RS485 > Schaltung aussehen ? Datenblatt // Hint: fast so wie mit RS232 ^^ > Achso und dann noch eine Frage zum Betrieb. Da für RS485 ja kein direkt > fertiges Protokoll existiert... MODBus od. selbst schreiben...
Okay dann konkretisiere ich die Frage nochmal. Welcher RS485 ist am geeignetsten für die zusammenarbeit mit einem Mega16 ?
Texas Instruments hat viele RS485 Treiber. Es muss ja nicht der alte DS75176 sein, das ist eine Stomschleuder. Du benoetigst Rx, Tx plus einen Pin fuer die Richtung. Je nach Gleichtaktspannung, es gibt Treiber mit 25V, ist kein Optokoppler noetig. Allenfalls ist ein magnetischer Koppler besser. zB ADuM 1400 oder so. Ja, Ein Master-Slave Protokoll hat keine Buscontention, wo zwei Treiber gegeneinander arbeiten.
Gut über den bin ich auch schonmal gestolpert. Dann blieben nur die Frage: "kann es ja zu Komplikationen zwischen Daten am Bus kommen, sprich 2 Bytes treffen aufeinander. Kann man dieses umgehen indem der Master nur sendet und die Slaves ausführen und die Slaves nur antworten können wenn sie vom Master direkt dazu aufgefordert werden ?" offen und es hat sich nochmal eine neue ergeben. Im Datenblatt vom Max Treiber steht das die Ausgänge und A und B 1:1 verbunden werden, aber ich hatte irgendwo mal etwas davon gelesen, das man noch irgendwo endwiederstände setzen sollte. Wo genau kommen die hin und welchen Zweck erfüllen sie ?
> Kann man dieses umgehen indem der Master nur sendet und die Slaves ausführen > und die Slaves nur antworten können wenn sie vom Master direkt dazu > aufgefordert werden ?" Ja, indem du ein Master-Slave-Protokoll definierst. Du vergibst jedem Slave eine eindeutige Adresse ähnlich I2C. Jeder Slave lauscht erstmal nur, d.h. er empfängt JEDEN Datensatz und prüft anhand der Adresse, ob er adressiert ist. Wenn ja, dann stellt der adressierte Slave seine Richtung um, und gibt Antwort. Ist er nicht addressiert, macht er... nix. Ziemlich einfach wenns nur einen Master gibt, bei mehreren wirds aufwendiger und die Sache sollte Kurzschlussfest gemacht werden, und das Protokoll sollte dass abfangen können (also erneutes Senden bei Kollision usw.) Im Web gibts zig Beispiele zu solchen Protokollen. Ralf
http://www.roboternetz.de/wissen/index.php/RS485 Das sollte das wohin mit den Endwiderständen erschlagen... Das wieso -> leitungstheorie ! Sonst gibts nämlich Reflektionen die Fehlinfos auslösen können
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.