Hallo, ich habe einen Master Microcontroller. Die Slave Mikrocontroller sind jeweils ca 5m voneinander entfernt (draußen im freien) welches Bus-system ist dafür am besten geeignet? auf die Geschwindigkeit kommt es dabei nicht an. (Keine Kritischen Anwendungen, nur Messwerte erfassen) vielen Dank im voraus
Susanne schrieb: > Die Slave Mikrocontroller sind jeweils ca 5m voneinander Was ist denn die Gesamtlänge? > draußen im freien Etwas robustes wie LIN (Eindraht) oder MODBUS/RS485 (Zweidraht)
Rs232 ist kein bussystem. Da wir nicht wissen was deine controller machen, wissen wir auch nicht wieviele uarts du brauchst.
Aha! soll das ungefähr so aussehen: Master----5m----Slave1----5m---Slave2-->>
RS232 ist zwar kein Bussystem aber man kann einen Tokenring damit realisieren wenn die Geschwindigkeit nicht sooo wichtig ist....
I2C oder UART im Halbduplex-Modus (TX über Dioden entkoppelt). Vorteil I2C: Adressierung schon inbegriffen.
:
Bearbeitet durch User
ist i2C kein Platinenbus? wie groß ist da die Reichweite? dachte der würde nur einige cm gehen...
Heutzutage ist immer mehr CAN zu empfehlen. Wird immer günstiger und hat schon viele wichtige Features spezifiziert. Würde ich in Erwägung ziehen. Wenn dein Controller außer für den Bus keinen U(S)ART benötigt, brauchst du nur einen. Zusätzlich Transceiver deiner Wahl.
Susanne schrieb: > ist i2C kein Platinenbus? Doch Susanne schrieb: > wie groß ist da die Reichweite? Das hängt von diversen Faktoren ab, ist aber für den Vorhaben auf jeden Fall ungeeignet. Am besten nimmst du eine RS-485 oder CAN. Beides wurde im Gegensatz zu I2C und RS-232 für genau solche Anwendungen entwickelt. Falls du dich für eine RS-485 entscheidest, ist das oben bereits genannte MODBUS-Protokoll (MODBUS RTU) auch sehr zu empfehlen. Dieses ist ein Standard und du kannst neben deinen selbstgebauten Geräten auch gekaufte Geräte an den BUS hängen.
:
Bearbeitet durch User
Susanne schrieb: > ist i2C kein Platinenbus? wie groß ist da die Reichweite? dachte der > würde nur einige cm gehen... In jedem DVI/HDMI Kabel gibt es einen I2C Bus zur Monitoridentifikation. Das funktioniert millionenfach auch über 5m. MfG Klaus
Ich würde aber auch eine RS485 Schnittstelle nutzen, da einfach und störunanfällig. Wenn der Master seine Slaves pollt ist das ganze recht einfach zu realisieren.
Was auch interessant sein koennte, isoSPI von Linear. Habe ich kuerzlich einen Artikel drueber gelesen. Ist eigentlich fuer verteilte Batteriesysteme, geht aber ueberall wo SPI auch geht, nur dass es isoliert ist und sich fuer hoehere Distanzen eignet.
I2C ist meiner Meinung nach nur bedingt geeignet. Du müsstest dir durchrechnen, welche Kapazität deine Leitung mit den verwendeten Kabeln hätte. Die darf einen bestimmten Wert nicht überschreiten, dass das ganze noch funktioniert (das waren glaube ich um die 400pF). Bei 30m wird das vermutlich kritisch
Vierdraht: 24V/GND/RS485 Zweidraht: ASi Mark W.: isoSPI? das war mir neu. Danke1 LTC6820 kostet 4,9USD bei digikey. 1Mbps 100m 2-Draht twisted pair. Interessant...
Sehr interessante Ideen für Bussysteme werden hier gepostet Ironie. I2C oder SPI sind nur für Anwendungen auf kurze Distanz (Platine) oder mit viel Schirmung über etwas längere Distanzen gedacht. Klar könnte es mit einem entsprechend geschirmten Kabel (HDMI /DVI) auch über 5m funktionieren, aber warum nimmt man nicht gleich die dafür vorgesehenen Bussystem RS485 mit Modbus oder CAN? Bei CAN bräuchte man halt für den Atmega noch einen Controller (falls der Atmega keinen intern hat) und Transceiver. Bei RS485 reicht doch ein Transceiver aus. Gibts für 2€. Aus meiner Sicht würde ich hier ganz klar auf RS485 setzen.
SPI ist durchaus auch für 5 bis 30m geeignet wenn man darauf achet die rücklaufende Welle beim Sender zu Terminieren (Serien-Terminierung) und eine Leitung mit definiertem Wellenwiderstand nimmt. (bitte beide Begirffe googeln, dann gibts auch eine ausführlichere Anleitung) Also auf der sendenen Seite (Clk,MOSI) einen 30-70 Ohm Widerstand in Reihe, dann auf ein verdrilltes Adernpaar einer twisted pair Leitung gehen (CAT5 oder einfach ein verdrilltes Adernpaar einer Telefonleitung) Welcher Widerstand für die Serienterminierung passt kann man mit einem Oszilloskop überprüfen. Master Slave Pin -> 50 Ohm Widerstnad -> Verdrillte Leitung (1.Ader) -> Empfänger-Pin GND -> Verdrillte Leitung (2.Ader) -> GND Für die Rückleitung (MISO) den Widerstand auf die rechte Seite (d.h. immer auf die Seite die das Signal sendet)
Christian M. schrieb: > Susanne schrieb: >> ist i2C kein Platinenbus? > Doch Jein. I2C wurde damals (Anfang 1980er Jahre) von Philips eingeführt, um damit z.B. die Komponenten in Fernsehgeräten anzusteuern. Grundig usw. nutzten auch die I2C-tauglichen Bausteine von Philips, z.B. Tuner, Videotextdecoder, usw.. Der I2C-Bus wurde aber auch auf einer vierpoligen Buchse aus dem Fernseher herausgeführt, um einen angeschlossenen Videorecorder ansteuern zu können. Ich gehe davon aus, dass Philips bei der Definition von I2S auch schon solche Szenarien bedacht hatte. Auf Grund der recht hochohmigen Pull-Up-Widerstände, die überhaupt nichts mit den zu erwartenden Wellenwiderständen der Verbindungsleitungen zu tun haben, ist I2C eigentlich nicht für größere Strecken geeignet.
IIC geht schon, insbesondere wenns eine einmalige Bastelei ist. Und wenn keine Vorkenntnisse vorhanden sind, was ja schon die Fragestellung nahelegt, würde ich nicht im Traum daran denken mich deshalb in die komplexen Protokolle von CAN & Co einzuarbeiten, dauert ja Monate bis das einwandfrei läuft... Man könnte sich ggf. auch selbst etwas ausdenken, was zur Anwendung passt. Wenns nicht zeitkritisch ist kann man doch die Daten + Prüfsumme beliebig langsam über 2 Drähte von Station zu Station "morsen".
Laut TI geht mit dem P82B96 I2C bei 400kHz über mind. 20m.
:
Bearbeitet durch User
Für I2C gibts bei NXP ganz brauchbare Bustreiber mit denen man auch große Strecken überbrücken kann. https://www.mikrocontroller.net/articles/I2C_als_Hausbus Funktioniert zuverlässig und man muß sich nicht um ein Zugriffsprotokoll kümmern. RS485/CAN sind natürlich robuster.
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.