Welches Bus System benutzen?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo!

    Ich bin gerade auf der Suche nach einem geeigneten Bus System für mein Netzwerk. Es sollen ca 15-20 Mikrocontroller verbunden werden, als Master fungiert der PI.

    Bis jetzt habe ich zwei Systeme im Blick, RS485 und den Canbus.
    Leider wird anscheinend nichts so richtig vom Raspberry unterstützt.
    Beim RS485 scheitert man momentan anscheinend daran das es kein automatisches CT, also automatische umschaltung senden/empfangen, gibt, oder liege ich da falsch?

    Wie sieht es da bei CAN aus?

    Was ich suche ist ein IC der alles integriert hat, dieser sollte möglichst einfach anzusteuern sein. Quasi wie I2C, ganz einfach über Python erreichbar, natürlich aber in beide Richtungen.

    Gibt es da etwas?

    Grüße

    EDIT: Achja, da ganze sollte die höheren Spannungen im Bus selber generieren, der IC selber sollte mit 3V3 versorgt werden wie bspw. der RS3232

    Einmal editiert, zuletzt von tsaG (27. Juli 2014 um 19:37)

  • tsaG: RS-485 ist kein Bus-System sondern eine serielle Schnittstelle. Welches Bus-System, sprich welches Protoll, du dafür verwendest ist dir dann überlassen. Theoretisch kannst du dir auch ein eigenes Protokoll entwickeln. Auf jeden Fall lassen sich mit RS-485 Master-Slave Systeme aufsetzen. z.B. mit dem Bus-System Modbus. In Kombination mit dem RaspiComm ist das allerdings nicht so einfach. Aber anstatt RS-485 lässt sich mit Modbus ja auch TCP/IP als Schnittstelle nutzen. Dafür gibt es auch eine Python Bibliothek: pymodbus

  • Hey, das klingt alles super.

    Ich hatte in der Vergangenheit auch schon mal was mit dem RS485 vorgehabt, was aber aus Zeitmangel gestrichen wurde. Material also ICs und Atmel µCs liegen hier noch rum. Ich hoffe ich komme demnächst mal zu etwas mehr Zeit um da was an zu stoßen. Nur wo ich mir die ICs und Co gekauft habe, hatte ich noch kein Pi und wollte ursprünglich ein größeren µC also "Basishauptstation" nutzen (ein Atmel ATMega644P).

    Wenn sich was zu dem RS485 Bus hier tut, wäre klasse. Lese gern mit und vielleicht werde ich da auch noch Zeit finden mit ein zu steigen. Ich selbst nutze primär Python und Shell bislang auf dem RPi und auf dem µCs bislang entweder Arduino bei entsprechenden Boards und Bascom bei einfachen Projekten. Vorallem bei kleineren µCs, da kein Bootloader erforderlich ist.

    Für mich wäre natürlich eher noch interessant, ob man umbedingt das "RasPiCoom" nutzen muss, oder man nicht alternativ direkt ein IC nehmen kann. Den das Board bietet ja noch einiges an Zeug, was man für den Bus selbst überhaupt nicht benötigt.

    Wäre nett, wenn jemand ein Typ an IC kennt, welches man direkt am Pi anschließen kann ohne große noch ein Levelconverter nutzen zu müssen. Ich wollte die 2-Draht Variante des Bussystemes nehmen. Also hab dafür entsprechende ICs schon hier. Ich dachte die Information sollte ich geben, nicht das jemand evtl. für die 4-Drahtlösung mir ein IC Typ nennt. Danke schon mal.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:


  • tsaG: RS-485 ist kein Bus-System sondern eine serielle Schnittstelle. Welches Bus-System, sprich welches Protoll, du dafür verwendest ist dir dann überlassen. Theoretisch kannst du dir auch ein eigenes Protokoll entwickeln. Auf jeden Fall lassen sich mit RS-485 Master-Slave Systeme aufsetzen. z.B. mit dem Bus-System Modbus. In Kombination mit dem RaspiComm ist das allerdings nicht so einfach. Aber anstatt RS-485 lässt sich mit Modbus ja auch TCP/IP als Schnittstelle nutzen. Dafür gibt es auch eine Python Bibliothek: pymodbus

    Das stimmt schon, jedoch möchte ich zwei Adern nutzen um den Bus aufzubauen.
    RS232 erlaubt (soweit ich weiss) nur eine rein Serielle Schnittstelle mit zwei Geräten.
    RS484 funktioniert als bus, sprich es können mehrere Geräte an einem Bus angeschlossen werden.

    Mir geht es halt erst einmal darum das ich solch ein Netzwerk nutzen kann, das ganze möglichst simpel und Störungsfrei, welches Protokoll ich da nutze ist erst einmal zweitrangig.

    Soweit ich gelesen habe ist Modbus ja nur das Protokoll und legt keine spezifischen Hardware Spezifikationen fest.
    Ich habe mir RS484 ausgeguckt da es differentiell überträgt und sehr unanfällig gegen elektromagnetische Störungen ist.
    Für RS484 brauche ich eine UART Bridge, soweit ich das gesehen habe, weil die Umschaltung von Send auf Receive im Pi irgendwie nicht so ganz funktioniert muss es dann auch ein max Chip mit automatischer umschaltung sein. Also alles recht Problematisch und anscheinend hat es bisher keiner wirklich realisiert...

    Einmal editiert, zuletzt von tsaG (28. Juli 2014 um 01:33)


  • Für RS484 brauche ich eine UART Bridge, soweit ich das gesehen habe, weil die Umschaltung von Send auf Receive im Pi irgendwie nicht so ganz funktioniert muss es dann auch ein max Chip mit automatischer umschaltung sein. Also alles recht Problematisch und anscheinend hat es bisher keiner wirklich realisiert...


    Mit der RasPiComm wird ein MAX3140 über SPI angesteuert, dadurch kann man sämtliche Möglichkeiten der RS485 Schnittstelle nutzen.


  • Mit der RasPiComm wird ein MAX3140 über SPI angesteuert, dadurch kann man sämtliche Möglichkeiten der RS485 Schnittstelle nutzen.

    Danke, dann werde ich wohl den MAX3140 nehmen und hoffen das es so klappt :D

    Ein Problem habe ich jedoch. Der Schaltplan des Raspicomm wirft ein paar Verwirrungen auf...
    http://www.amescon.com/media/3444/RaspiComm_rev5.pdf

    Der LM3480 wird von 5V gespeißt, also denke ich mal das VCC 3V3 sind. Der MAX3311 wird jedoch mit VCC betrieben. Wenn dies nun wirklich nur 3V3 sind wird dieser außerhalb der Spezifikationen betrieben, vorgesehen sind 4,5 bis 5,5V...

    Nunja, ich hoffe mal der Rest der Schaltung ist richtig sodass ich den Max3140 übernehmen kann. Anscheinend gibt es keinen Treiber der nur mit 3.3V betrieben wird.


  • Der Schaltplan ist nicht so gut beschrieben. Vcc wird im Falle des MAX3140 nicht wirklich als Versorgungsspannung benutzt. Die 5V sind die Versorgungsspannung.

    Also ist der Schaltplan falsch? Oder wird der MAX311 nur mit der "falschen" Spannung versorgt?
    Soweit ich gesehen habe ist es beim Max3140 ja korrekt.
    Kann man denn davon ausgehen das VCC 3.3V sind?

    Einmal editiert, zuletzt von tsaG (28. Juli 2014 um 12:58)

  • tsaG: Ich denke du hast die Definition von Bus-System nicht ganz verstanden, RS-485 ist definitiv kein Bus, aber ist ja egal. Die serielle Schnittstelle RS-485 sowie RS-232 kannst du mit dem RaspiComm auf jeden Fall problemlos nutzen.

    Und ich würde mal davon ausgehen, dass das Schaltbild des RaspiComms richtig ist, ich habse selbst eins uns es läuft :)

  • Es gibt für ~10€ auch USB/RS485 "Converter"

    Ob, bzw. welche Modelle von deinem Raspberry-Kernel unterstützt werden müsste man vor dem Kauf prüfen ;)

    Ansonsten gibts noch RS485-4 Draht, da sind RX/TX getrennt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!