Hallo Zusammen Ich suche nach einer günstigen möglichkeit Daten einer Flussmesung auf meinen PC zu übertragen. Konkretgeht es um folgendes: Bis jetzt habe ich 8 Arduino an welchen je ein Durchmesser sowie ein Schalter hängen. Die Arduinos messen den Durchfluss von Wasser sobald ein Schalter betätigt wird. Sobald der selbe Schalter wieder gedrückt wird spot die Messung. Bis jetzt muss ich die gemessen Werte manuell vom Display des Arduino ablesen. Nun würde ich gerne diese Werte automatischen auf meinen PC übertragen. Ich habe zuerst an einen I2C Bus gedacht nur ist die Kabellänge mit 16m Problematisch. Ich habe es dann einmal mit einer SPS versucht das ging zwar aber überschreitet mein Budget wenn ich alle Geräte verbinden will. Ich habe 600€ Budget zur Verfügung. Kennt jemand einen einfach günstiges Bussystem oder alternativen zu den Arduinos für meine Anwendung? Danke für eure Tipps und Hilfe.
Remo Müller schrieb: > Bis jetzt habe ich 8 Arduino an welchen je ein Durchmesser sowie ein > Schalter hängen. Was ist ein Durchmesser? Die Frage ist ob Du überhaupt auf Kommentare eingehst, hier hat man ja unnötig Zeit aufgewendet: Beitrag "Counter Baustein" Trotzdem ein Tipp: Labjack
Remo Müller schrieb: > 8 Arduino Es gibt nicht nur einen Typ. Welche Schnittstellen stehen zur Verfügung? Remo Müller schrieb: > I2C Bus Wie du richtig erkannt hast, ist das ein interne Gerätebus und hat in der freien Wildbahn nichts verloren. Für deinen Fall eignet sich RS485. Das ist nicht unbedingt hipp, aber billig und gut. Remo Müller schrieb: > PC zu übertragen Es gibt günstige USB/RS485 Umsetzer. Der (virtuelle) COM-Port im PC ist kein Hexenwerk und einfach zu bedienen. Also, mit RS485 solltest du locker in deinem Budget bleiben.
Mathias B. schrieb: > Und natürlich RS232 Nö, nicht so optimal. Ist nur P2P und bei ein paar Meter Leitungslänge wirds störanfällig.
Aber was für ein Logikcontroller würdet Ihr denn bei RS486 einsetzen? Die Arduinos können das nicht von Hausaus.
Remo Müller schrieb: > Die Arduinos können das nicht von Hausaus. Dann baust du es ein. Wenn jeder Arduino auf RS485 Kollisionen hört, dann können alle auf einen Bus sprechen. Oder du fragst sie über den Bus ab und nur der adressierte antwortet mit seinen Daten. So wirds normalerweise bei RS485 gemacht.
jm2c schrieb: > Nö, nicht so optimal. Ist nur P2P und bei ein paar Meter Leitungslänge > wirds störanfällig. Bei der geforderten Datenrate von "gemessen Werte manuell vom Display ... ablesen" sind 16 Meter Leitungslänge mit RS232 (besser vielleicht RS422) noch kein wirkliches Problem.
Die Welt ändert sich schrieb: > Bei der geforderten Datenrate von "gemessen Werte manuell vom Display > ... ablesen" sind 16 Meter Leitungslänge mit RS232 (besser vielleicht > RS422) noch kein wirkliches Problem. Aber das ist kein Bus. Er bräuchte also 8 RS232-Schnittstellen am PC.
Remo Müller schrieb: > Die Arduinos können das nicht von Hausaus. Wofür hattest du denn deine imaginären max. 600€ eingeplant? Nur für Kabel? Irgendwas brauchst du auf jeden Fall, und für alles gibts was passendes. RS485 ist hardwareseitig das einfachste, macht aber mehr Arbeit bei der Software. Und lass die Finger von Multimaster. Deshalb nochmal mein Rat: besorg dir kleine Platinchen (CAN-Shield irgendwas) und lass die allesamt einfach vor sich hinplappern.
Definitiv RS485 - das ist quasi der Referenzanwendungsfall für diesen Bus.
H.Joachim S. schrieb: > RS485 ist hardwareseitig das einfachste, Das sehe ich anders. TxD vom PC kann an alle RxD der Arduini. Die TxD werden über Dioden entkoppelt, bevor sie zum RxD des PC gehen. Aktuelle RS232 Treiber leisten das. Wenn man mag, kann man auch CAN-Treiber verwenden, die kollisionsfest sind. Als Protokoll eignen sich der Multiprozessor-Modus der ATmega oder was man so im Netz finden kann. H.Joachim S. schrieb: > Und lass die Finger von Multimaster. Volle Zustimmung!
Remo Müller schrieb: > Ich habe > 600€ Budget zur Verfügung. Wenn es etwas kosten darf: Es gibst RS232 -> USB Umsetzer; auch mit 8 Kanälen.
Wenn du alle Sensoren an einen Arduino hängen kannst, dann musst du nur mehr den an den PC anschließen
Dietrich L. schrieb: > Aber das ist kein Bus. Er bräuchte also 8 RS232-Schnittstellen am PC. Er bräuchte ein bisschen USB-Hubs vorm PC. 7-Port Hubs sind gar kein Problem.
16m ist bei RS232 völlig unkritisch. Für Deinen PC: https://www.reichelt.de/exsys-pcie-karte-8s-seriell-rs-232-kabel-buegel-exsys-ex-44388-p234290.html?&trstct=pol_1&nbc=1 Damit hat jeder Arduino seinen eigenen Anschluss. Für jeden Arduino ein MAX3232 TTL-RS232 Umsetzer, und das wärs. fchk
Frank K. schrieb: > Für Deinen PC: > > https://www.reichelt.de/exsys-pcie-karte-8s-seriell-rs-232-kabel-buegel-exsys-ex-44388-p234290.html?&trstct=pol_1&nbc=1 Stolzer Preis, zwei DIGITUS DA-70159 sollten da auch reichen.
guest schrieb: > zwei DIGITUS DA-70159 sollten da auch reichen. Empfehlenswert. Als Bonus gibt es sowas wie Multimaster geschenkt, jeder darf jederzeit senden, ohne Protokoll, völlig stressfrei. Und zwar auf den Arduinos und auf dem PC. Die 16 Meter sind mit 9600 Baud und echten RS-232-Treibern überhaupt kein Problem. Hier liefen jahrelang einige solche Verbindungen zwischen drei Gebäuden.
O.k. Danke, ich versuche das mit dieser Karte. Klingt nach einer einfachen Lösung.
Bei dem Budget würde ich comserver nehmen Z.B.: https://www.moxa.com/en/products/industrial-edge-connectivity/serial-device-servers/general-device-servers Ein Netzwerkkabel zum PC, beliebeige Anzahl serielle, zentral administrierbar usw.
Denke erst nach bevor du schreibst TO! Wenn die Frage, und zwar nur eine, korrekt formuliert ist, dann darfst Du hier posten.
Karte ist schön und gut, aber was wenn du es an einem Notebook brauchst oder 2 weitere Messpunkte dazu kommen? Ich finde die Idee von Beitrag "Re: Datenübertragung von 8 Gerät auf PC" nicht schlecht. IMHO noch besser: Warum machst Du kein Daisy Chain der seriellen Schnittstelle? Einfach alle Arduinos hintereinanderschalten.
1 | Arduino1 ... Arduino N TTL2RS232 PC |
2 | +---------+ +---------+ +---------+ +---------+ +----------+ |
3 | +----->+ RX TX +------->+ RX TX +------>+ RX TX +------->+ RX TX +---->+ | |
4 | | | | | | | | | | | | |
5 | | | | | | | | | | | | |
6 | | | | | | | | +---+ TX RX +<----+ | |
7 | | +---------+ +---------+ +---------+ | +---------+ +----------+ |
8 | | | |
9 | +----------------------------------------------------------+ |
10 | (Ground verbindung hab ich weggelassen) |
Dann brauchst Du hardwaretechnisch nur einen 5V auf RS232 Converter am PC. Einziger Software Aufwand: deine Serielle Routine in den Arduinos muss auf Daisy Chain umprogrammiert werden. Wenn dur nur Daten ausgibst und keine Steuerung brauchst ist das aber ziemlich einfach.
:
Bearbeitet durch User
Klummel 6. schrieb: > Einfach alle Arduinos hintereinanderschalten Eine ganz dumme Idee: ein einziger Ausfall legt alles lahm. Georg
Der Ansatz, die 8 Arduinos über 8x RS-232 an den PC anzukoppeln, mag auf den ersten Blick zweckmäßig erscheinen. Er ist aber nur (sehr) mäßig sinnvoll. Der Aufwand ist relativ groß. Man braucht viel Kabel, der Hub wächst nicht mit und die Möglichkeiten der Verbindungen werden nicht mal ansatzweise ausgenutzt. Ein linienförmiger Bus, basierend bspw. auf RS-485 ist der Aufgabe sehr viel angemessener. Da ist auch nach dem 8. Gerät nicht gleich Schluß, sondern man kann noch eine ganze Weile weitere Geräte anschließen, bevor man an die Grenzen der Hardware stößt. Da ein Arduino typischerweise keinen RS-232 Transceiver hat und der oft einzige UART am USB hängt, gibt es auch keinen direkten Vorteil gegenüber RS-485. Man muß in beiden Fällen an Hard- und Software herumschrauben. @TE: https://de.wikipedia.org/wiki/Feldbus
georg schrieb: > Klummel 6. schrieb: >> Einfach alle Arduinos hintereinanderschalten > Eine ganz dumme Idee: ein einziger Ausfall legt alles lahm. Das ist nur ein Argument von vielen. Einen zentraler PC , eine zentrale Stromversorgung oder eine 8 fach serielle Karte legt bei Ausfall auch alles lahm... Ja ich würde diese Lösung nicht nutzen, wenn die Anforderung lautet: hohe Verfügbarkeit. Die Anforderungen die es vom TO gibt sind aber: * "günstige Möglichkeit Daten ... auf PC zu übertragen" * "bis jetzt ... gemessen Werte manuell vom Display des Arduino ablesen" * 600€ Budget Ich habe des Öfteren Laboraufbauten genutzt, die über Breadboard und Daisy Chain gelaufen sind. Klar, ich bin mir der Gefahr bewust, aber Interbus S und Ethercat machen auch Daisy Chain und viele Anwender können damit leben...
Alternative: stattt 8 fach RS232 Karte: 1x USB Repeater mit ≥ 16m Leitung (~20€) 1x 8-fach USB2 Hub (10€) Arduinos haben doch eh USB. Billig, kein Löten, kein Daisy Chain, skalierbar, und können ohne Aufwand direkt programmiert werden.
:
Bearbeitet durch User
So viel Aufwand :) Schon mal was von ESP32 gehört. ??? Entweder die Software auf eine komplette ESP-32 NOD übertragen, oder eine ESP32 Platine an den Arduino dran machen. Dann die Teile per Wlan abfragen oder ihn sagen sie sollen die Daten an eine Software senden auf einen PC. Fertig. Keine Kabel die länger sind als 5 cm. ;) Und das ganze einfach per Wlan abfragen. Wenn man es schlau macht, dann hängt man noch ein SD-Kartenleser dran (kostet 1 Euro in China) da protokolliert man dann die Daten, und holt sie später ab. Gruß Pucki
ESP ist auch gut, leider hab ich ein Verbot in Messapplikationen direkt eine WLAN Antenne zu nutzen... Ging leider schon schief... :-)
Klummel 6. schrieb: > ESP ist auch gut, leider hab ich ein Verbot > in Messapplikationen direkt eine WLAN Antenne zu nutzen... > Ging leider schon schief... :-) Dann mache es indirekt. Wie schon gesagt ist indirekt eh besser. Musst nur was sowieso gut ist, einen SD-Karten-Leser einbauen. Ich hab für 5 Stück 6 Euro in China bezahlt ink. VK. Dann einfach die Daten von der SD-Karte lesen. Da ist Timing etc. was die Messung angeht eh egal. Wenn du noch ein Funkuhr-Modul einbaust (selber Preis) kannst du sogar die Ergebnisse sekundengenau protokollieren. Zu Not die SD-Karte einfach später von Hand auslesen. ;) Gruß Pucki
Die Welt ändert sich schrieb: > RS232 (besser vielleicht > RS422) Du weisst wovon du sprichst? 422 ist differenzsignal wie 485; nur nicht bus-fähig, sondern Punkt zu Punkt, wie 232. Also 232, ganz schlecht. 422 schlecht. 485 sehr gut. :-)
jm2c schrieb: > Also 232, ganz schlecht. > 422 schlecht. > 485 sehr gut. Wo ist in dieser Tabelle CAN angesiedelt?
Axel S. schrieb: > Da ein Arduino typischerweise keinen RS-232 Transceiver hat und der > oft einzige UART am USB hängt, ... ... lohnt es, in diesem Fall einen Arduino zu verwenden, bei dem die serielle Schnittstelle nicht schon belegt ist. Ein Arduino Pro Mini wäre so ein Kandidat. Zum Programmieren ist dann ein einziger USB-Seriell Wandler ("TTL") die einfache Lösung.
Um den ganzen Kabelsalat zu vermeiden, würde ich bei den 16 Metern mal auch mit einem Bluetooth-Modul CLASS 1 probieren. Die gehen doch 100 M weit. Und ein USB-BT - Stick für den PC liegt evtl. im einstelligen €-Bereich (8-15 €). Jeder Arduino bekommt seine eigenen Kennung (z.B. irgendeine Zahl), um später bei der PC-Software die Datenströme auseinanderhalten zu können. Aber das mußt du bei kabelgebundenen Systemen auch. Müßte man hier mal die Experten fragen, ob man 8 x TX/RX zusammen an so ein BT-Modul anschließen kann, um nicht 8 Bt-Module verwenden und koppeln zu müssen.
:
Bearbeitet durch User
Toby P. schrieb: > jm2c schrieb: >> Also 232, ganz schlecht. >> 422 schlecht. >> 485 sehr gut. > > Wo ist in dieser Tabelle CAN angesiedelt? Kommt darauf an, was du da vergleihen willst, denn: a) RS232, 422 und 485 definieren nur Schicht 1 b) CAN definiert Schicht 1 und 2 Siehe hierzu https://de.wikipedia.org/wiki/OSI-Modell und https://de.wikipedia.org/wiki/Controller_Area_Network Du musst im Fall a) also noch die Schicht 2 "erfinden" und programmieren. Und je nachdem wie gut das gemacht wird könnte das an CAN heranreichen. Allerdings CAN ist automatisch multimasterfähig durch das CSMA/CR-Verfahren, das Kollisionen (gleichzeitiger Buszugriff) in der Schicht 1 selbstängig auflöst. Das kann RS485 nicht, und Multimaster ist hier nur mit erheblichen Aufwand in den höheren Protokollschichten möglich (Beispiel Profibus). Zusammengefasst würde ich CAN über RS485 anordnen, es braucht aber einen speziellen CAN-Controller. Da reicht nicht ein "einfacher" UART.
Dietrich L. schrieb: > Zusammengefasst würde ich CAN über RS485 anordnen, es braucht aber einen > speziellen CAN-Controller. Da reicht nicht ein "einfacher" UART. Sind doch beides nur Chips und man spart sich das Protokollgebastel von RS485. Verdrillte Leitung braucht es in jedem Fall*. Eine CAN USB Bridge am PC und das war´s. Die Identifier sind gleich die Geräte ID und Kollisionen sind bei dieser Anwendung auch zu vernachlässigen. Dann kommen auch noch alle Daten an einem Port im PC an. Das baut man wohl am schnellsten von allem auf. Wenn Zeit auch Geld ist gibt es vermutlich nichts günstigeres. *wo dann LIN sinnvoller wäre da in in diesem Fall Eindraht.
Heinz B. schrieb: > Müßte man hier mal die Experten fragen, ob man 8 x TX/RX zusammen > an so ein BT-Modul anschließen kann, um nicht 8 Bt-Module verwenden > und koppeln zu müssen. Bluetooth ist kein Bussystem. Da hast du mehr Aufwand ständig neu zu pairen als gleich was sinnvolles zu nehmen. Dann ist es auch noch intransparent und teilt sich die Frequenz mit deiner Mikrowelle. Wer Funk kennt nimmt Kabel.
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.