Forum: Mikrocontroller und Digitale Elektronik Datenübertragung von 8 Gerät auf PC


von Remo Müller (Gast)


Lesenswert?

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.

von Jörg R. (solar77)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

CAN

von Guest (Gast)


Lesenswert?

Ethernet

von jm2c (Gast)


Lesenswert?

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.

von Mathias B. (mbr)


Lesenswert?

Und natürlich RS232

von jm2c (Gast)


Lesenswert?

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.

von Remo Müller (Gast)


Lesenswert?

Aber was für ein Logikcontroller würdet Ihr denn bei RS486 einsetzen? 
Die Arduinos können das nicht von Hausaus.

von Marc E. (mahwe)


Lesenswert?

Esp32 per Funk Daten übertragen lassen?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Die Welt ändert sich (Gast)


Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von JJ (Gast)


Lesenswert?

Definitiv RS485 - das ist quasi der Referenzanwendungsfall für diesen 
Bus.

von Mi N. (msx)


Lesenswert?

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!

von Mi N. (msx)


Lesenswert?

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.

von Marcus (Gast)


Lesenswert?

Wenn du alle Sensoren an einen Arduino hängen kannst, dann musst du nur 
mehr den an den PC anschließen

von Die Welt ändert sich (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von guest (Gast)


Lesenswert?


von Bauform B. (bauformb)


Lesenswert?

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.

von Remo Müller (Gast)


Lesenswert?

O.k. Danke, ich versuche das mit dieser Karte.
Klingt nach einer einfachen Lösung.

von Toby P. (Gast)


Lesenswert?

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.

von Hallo? (Gast)


Lesenswert?

Denke erst nach bevor du schreibst TO!

Wenn die Frage, und zwar nur eine, korrekt formuliert ist, dann darfst 
Du hier posten.

von Klaus H. (klummel69)


Lesenswert?

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
von georg (Gast)


Lesenswert?

Klummel 6. schrieb:
> Einfach alle Arduinos hintereinanderschalten

Eine ganz dumme Idee: ein einziger Ausfall legt alles lahm.

Georg

von Axel S. (a-za-z0-9)


Lesenswert?

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

von Klaus H. (klummel69)


Lesenswert?

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...

von Klaus H. (klummel69)


Lesenswert?

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
von Alexander K. (Gast)


Lesenswert?

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

von Klaus H. (klummel69)


Lesenswert?

ESP ist auch gut, leider hab ich ein Verbot
in Messapplikationen direkt eine WLAN Antenne zu nutzen...
Ging leider schon schief... :-)

von Alexander K. (Gast)


Lesenswert?

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

von jm2c (Gast)


Lesenswert?

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.

:-)

von Toby P. (Gast)


Lesenswert?

jm2c schrieb:
> Also 232, ganz schlecht.
> 422 schlecht.
> 485 sehr gut.

Wo ist in dieser Tabelle CAN angesiedelt?

von Wolfgang (Gast)


Lesenswert?

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.

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

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
von Dietrich L. (dietrichl)


Lesenswert?

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.

von Toby P. (Gast)


Lesenswert?

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.

von Toby P. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.