Forum: Analoge Elektronik und Schaltungstechnik Datenbus erstellen


von bass (Gast)


Lesenswert?

Hallo,

ich habe einige digitale Ausgänge die ich über einen Daten Bus zu einem 
Raspberry Pi übertragen möchte. Zwei Leitungen für den Bus liegen auch 
schon. Wie baue ich den Bus auf bzw. welchen Bus nehme ich dafür und wie 
kopple ich die digitalen Ausgänge an den Bus. Also zunächst 
Hardwaremäßig???

Vielen Dank im voraus!!!

von gugu (Gast)


Lesenswert?

Deine Frage ist viel zu unspezifisch. Interessant und ausschlaggebend 
für eine gescheite Antwort wären Angaben zu:

- zu übertragende Pegel, Datengeschwindigkeit, Gleichstromfreiheit, usw.
- Länge der Übertragungsstrecke
- Anzahl der Bus-Teilnehmer

usw. Also beschreibe Deinen Fall etwas besser, dann magst Du auch eine 
hilfreiche Antwort bekommen.

von Mark B. (markbrandis)


Lesenswert?

Möglicherweise brauchst Du überhaupt keinen Bus (à la CAN, RS-485, SPI, 
USB, ...), sondern verbindest direkt die digitalen Ausgänge des Senders 
mit den digitalen Eingängen des Empfängers. Eventuell brauchst Du dafür 
einen Pegelwandler.

Wie gugu schon sagte: Um Dir besser helfen zu können, müsstest Du das 
von Dir verwendete System bzw. dessen Komponenten erst mal vernünftig 
beschreiben.

: Bearbeitet durch User
von bass (Gast)


Lesenswert?

Erstmal vielen Dank! Ich bin ja gerade dabei zu überlegen welches System 
und welche Komponenten ich überhaupt verwenden kann ;-)

- Also die Länge der Übertragungsstrecke beträgt ca. 100 m.
- Die Anzahl der Busteilnehmer wird sich auf 10 beschränken.
- Pegel: 0 V - 5 V
- Datengeschwindigkeit: kann langsam sein.
- Gleichstromfreiheit: ???

Genügen diese Informationen erst mal ?

Vielen Dank nochmal

von Programmierer (Gast)


Lesenswert?

Nimm CAN, das ist bei mehr als 2 Teilnehmern und der Leitungslänge am 
einfachsten und dabei noch stabil (Fehlerkorrektur, Störunempfindlich). 
Du brauchst aber entweder:
* eine gemeinsame Masse
* Eine dritte Leitung für die Masse
* Low-Speed CAN, welches mit 2 Leitungen inklusive Masse auskommt, aber 
nicht differentiell ist

von bass (Gast)


Lesenswert?

Ok danke,

und wie mache ich das mit der Ankopplung der Busteilnehmer? Also 
angenommen ich habe einen digitalen Ausgang 0-5 V, wie schließe ich den 
an den Bus an?Kenne mich da mit der Hardware nicht so aus?  Woher weiß 
der Raspberry PI dann welche CAN-ID der der digitale Ausgang hat bzw. 
dass es genau der Ausgang ist?

von Programmierer (Gast)


Lesenswert?

Du brauchst natürlich für die Ein/Ausgänge eigene "I/O Module", wie für 
jeden Bus. Für CAN kann man so was für (sehr) viel Geld kaufen, oder mit 
einem Mikrocontroller selber bauen. Um den Mikrocontroller an den CAN 
anzubinden, brauchst du einen CAN Controller und einen CAN Transceiver. 
Es gibt viele Mikrocontroller mit integriertem (und damit leicht zu 
verwendenden) CAN Controller (AVRs, PICs, STM32, LPC, ...) , und einige 
wenige die zusätzlich noch den CAN Transceiver integriert haben (zB 
LPC11C00 iirc) und somit direkt an den CAN angeschlossen werden können. 
Der Mikrocontroller braucht natürlich noch ein Programm, welches die CAN 
Nachrichten auf I/O Pins umsetzt. Dort gibst du auch die CAN IDs ein, 
die dein PI dann senden muss. Statt eines Mikrocontrollers kannst du 
auch R-PIs mit CAN Modulen verwenden, aber die sind groß, stromfressend, 
teuer, overkill, kaum Echtzeit fähig. Die meisten modernen 
Mikrocontroller mit CAN können vermutlich nur 3.3V an den Pins, daher 
brauchst du evtl noch Pegelwandler für die 5V Signale.
Für den R-PI musst du natürlich noch ein Programm schreiben dass die 
entsprechenden Nachrichten für die Mikrocontroller sendet.

von bass (Gast)


Lesenswert?

Danke erst mal! Das hat mir schon mal weitergeholfen im Netz findet man 
ja bestimmt einige Beispiele dazu...

von bass (Gast)


Lesenswert?

Angenommen ich möchte einen Arduino verwenden, was brauche in dann noch 
zusätzlich ?

von bass (Gast)


Lesenswert?

Oder vielleicht noch mal so gesagt: Ich habe einen Raspberry PI eine 
feste Leitung (Twisted Pair) und einen Arduino wie bekomme ich die 
digitalen Werte der Eingänge die am Arduino anliegen, am Einfachsten auf 
den PI ?

von Programmierer (Gast)


Lesenswert?

bass schrieb:
> Angenommen ich möchte einen Arduino verwenden, was brauche in dann
> noch
> zusätzlich ?

Ein CAN-Shield für den Arduino, zB:
http://skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html
Ein CAN-Shield für den PI, zB:
http://skpang.co.uk/catalog/pican-canbus-board-for-raspberry-pi-p-1196.html

Da diese Shields einen DSUB-9 Stecker eingebaut haben, brauchst du noch 
zwei Gegenstücke, die du dann an deine Leitung anlötest/crimpst um die 
einfach einstöpseln zu können.

Diese Lösung ist zwar einfach, finde ich aber recht klobig/unelegant. 
Ich bin mehr Freund von Mikrocontrollern mit eingebauten 
CAN-Controllern.

bass schrieb:
> Oder vielleicht noch mal so gesagt: Ich habe einen Raspberry PI
> eine
> feste Leitung (Twisted Pair) und einen Arduino wie bekomme ich die
> digitalen Werte der Eingänge die am Arduino anliegen, am Einfachsten auf
> den PI ?
* Bei genau einem Arduino, und tatsächlich nur genau zwei Leitungen: 
UART auf TTL-Pegel auf einer Leitung, und GND auf der anderen. Dass es 
Twisted ist, bringt dann nichts. Ist störanfällig und erfordert daher 
Prüfsummen in Software.
* Bei genau einem Arduino, und 3 Leitungen: RS-485 Transceiver an die 
UART's vom Arduino und R-PI packen, das Twisted-Pair als Datenleitung 
nutzen, und eine dritte Leitung als GND.
* Bei mehreren Arduinos, und 2 Leitungen: Single-Wire-CAN (SAE-J2411) 
auf einer Leitung verwenden, und GND auf der anderen. Braucht auf beiden 
Seiten entsprechende Single Wire CAN Transceiver und CAN Controller. 
Gibts vermutlich keine Shields für, und ist langsam (88,3 kBit/s inkl. 
Protokoll Overhead)
* Bei mehreren Arduinos, und 3 Leitungen: Normalen differentiellen CAN 
auf dem Twisted Pair verwenden, und GND auf einer dritten Leitung. 
Braucht CAN Controller und Transceiver, wie zB durch o.g. Shields.

von c-hater (Gast)


Lesenswert?

bass schrieb:

> Angenommen ich möchte einen Arduino verwenden, was brauche in dann noch
> zusätzlich ?

Kompetenz.

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.