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.
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.
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!
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.
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.
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.
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.
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.
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
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.
:-)
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.
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.