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!!!
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.
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
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
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
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?
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.
Danke erst mal! Das hat mir schon mal weitergeholfen im Netz findet man ja bestimmt einige Beispiele dazu...
Angenommen ich möchte einen Arduino verwenden, was brauche in dann noch zusätzlich ?
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 ?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.