32 Arduino auslesen

Hallo Leute,
ich bin ganz frisch hier im Forum und habe direkt eine größere Frage.

Erstmal zu der Aufgabe vor der ich stehe.
Ich soll einen 32 fahren Prüfplatz entwerfen.
Der einzelne Prüfplatz enthält einen Arduino der folgende Aufgaben erledigen muss:

  • Schrittmotor steuern
  • Schritte einer Encoderscheibe mittels Counter Zählen um den Schrittmotor zu überwachen (mit SPI an Arduino verbunden)
  • Drucksensor über 24-bit AD Wandler auslesen (mit I²C ausgelesen - Überlegung den evtl mittels SPI auszulesen)
  • intern muss der Arduino die Druckwerte mit 1Hz aufzeichnen und immer für die letzten 10 Minuten (600 Werte) zwischenspeichern um jederzeit den Median über diese Zeit ausgeben zu können.

Kurz zusammengefasst:
Die Schritte des Motors werden allein durch den Arduino vorgegeben und sollen nur bei einer definierten Abweichung nachgeregelt werden. Der Arduino soll jede Sekunde den Druck und die Zeit an den PC geben wo die beiden Werte aufgezeichnet werden. Ist ein definierter Druckwerte erreicht soll der Arduino den Median der letzten 10 min abspeichern und auch an den PC senden.

So jetzt meine Fragen:

  1. Ist es möglich mit dem die 600 Werte abzuspeichern und dann immer den ersten Wert zu löschen und den neusten Wert zu speichern?

  2. Wie ist es sinnvoll die 32 Arduino mit dem PC seriell zu verbinden, sodass sie alle die Daten an den PC senden?

Ich habe da an I²C, SPI und USB gedacht. Wobei ich mir unsicher bin ob ich 32 Arduino per USB an den Computer bekomme. Eleganter wäre da sicher einen zusätzlichen Arduino Mega als Master zu nutzen?
Es ist auch möglich eine I²C Karte von NI (www.ni.com/de-de/shop/select/i2c-spi-interface-device) zu nutzen.

Kosten sind bei diesem Projekt eher zweitrangig.

Ist es möglich mit dem die 600 Werte abzuspeichern und dann immer den ersten Wert zu löschen und den neusten Wert zu speichern?

Ringpuffer

Mit dem Arbeitsspeicher bekommst du bei einem UNO aber Probleme. Es gibt aber auch Controller mit mehr RAM

Der Arduino soll jede Sekunde den Druck und die Zeit an den PC geben wo die beiden Werte aufgezeichnet werden. Ist ein definierter Druckwerte erreicht soll der Arduino den Median der letzten 10 min abspeichern und auch an den PC senden.

Wenn du die Werte sowieso alle an den PC schicken willst, kannst du dort auch den Median berechnen

Wie ist es sinnvoll die 32 Arduino mit dem PC seriell zu verbinden, sodass sie alle die Daten an den PC senden?

Gar nicht. Die serielle Schnittstelle ist eine 1:1 Verbindung. Kein Bus

Hallo,

bei der Kommunikation könnte das hier hilfreich sein.
http://forum.arduino.cc/index.php?topic=542997.msg3704090#msg3704090
Hier wird immer vom Master aus, bei dir der PC, der Reihe nach jeder Slave abgefragt.
Man könnte die Slaves abändern, sodass immer der nächste Slave mit 1s Verzögerung sendet wenn er mitbekommen hat das der vorherige vor ihm gesendet hat. Der Master/PC sendet nach Empfang immer eine kurze Bestätigung bevor der nächste Slave senden darf. Könnte man so umbauen, aber ich sage es gleich, ich mach das nicht, wenn Prinzip verstanden kannst du das selbst. Hast dir auf jeden Fall sehr viel vorgenommen. Zerlege es Teilprojekte.

Hallo,

sorry meines Erachtens ist die Aufgabenstellung an sich schon Quatsch,

Schrittmotor überwachen und nachregeln wozu soll das denn sein.
Analogwert messen 24 Bit, wird ja noch gehen
600 Messwerte speichern ging noch auf eine verwendete SD Karte.

und das 32 mal und dann auf einen PC über Seriell geht nicht. Seriell ist PtP eine Verbindung.

Was sollen denn das für Schrittmotoren sein ?

Was darf das Kosten

Ich denke man sollte Das anders angehen.

SPS Steuerung mit Ethernet Schnittstelle
Dezentrale EA Baugruppen ( Analog in , Schrittmotor )
Profibus bzw. Profinet

Das Ding sammelt die Daten und stellt sie einem Datenbaustein für jeden Platz zur Verfügung und der PC holt sie da ab wann immer er will. An der Stelle muss ja sowieso noch ein Stück Software her.

Heinz

Hallo,

warum soll seriell nicht funktionieren? Was denkt ihr denn was die ganzen Busse machen? Auch ein Profibus oder Ethernet ist grundlegend erstmal seriell.

Doc_Arduino:
Hallo,

warum soll seriell nicht funktionieren? Was denkt ihr denn was die ganzen Busse machen? Auch ein Profibus oder Ethernet ist grundlegend erstmal seriell.

Hallo

ja stimmt USB, und Sonnenaufgang und Sonnenuntergang sind auch seriell.

Es ging eigendlich doch nicht um den Begriff seriell, obwohl wir das so geschrieben haben, sondern darum das man unter seriell zunächst mal eine Point to Point Verbindung meint. TTL , TTY, V24, RS232.

zum Anschluss von mehr als zwei Teilnehmern wird elektrisch aber ein anderes System benötigt. Dazu gibt es dann die verschiedenen Bussysteme bei denen die Teilnehmer den elektrischen Pegel der Leitung im Ruhezustand nicht beeinflussen. Hier ist hier u.A. RS485 gut geeignet, da man mit dem auch grössere Stecken betreiben kann. Profibus basiert z.B auch auf RS485. 100-150m Segmentlänge ist da kein Problem.

Wenn man elektrisch mehrere Teilnehmer anschliessen kann macht es Sinn das man die in dem darauf aubauenden Protoll auch mit einer Adresse versehen kann, dammit man sie einzeln ansprechen kann. Hier gibt es heute dann u.A Modbus, Can-Bus, Profibus, Profinet, Ethernet, und was weiss ich noch. Elektrisch sind Ethernet und die Abwandlungen davon aber wieder PtP Verbindungen, desshalb werden Swiches benötigt.

Wenn wir von kleinen Entfernungen reden < 2m kommt dann 1-wire, Ic2, SATA und nicht zuletzt USB dazu Die speziell für diese Anforderungen entwickelt wurden. Alle diese Bussysteme arbeiten letzlich seriell sonst hätten sie ja auch 8, 16,32,64 Datenleitungen oder für beide Richtungen halt das Doppelte.

Beispiel dafür, das fast heute keiner mehr kennt, ist die Drucker-Centronics Schnittstelle die 8 Datenleitungen hat und zus. 2-4 Stererleitungen.

Heinz

Wegen des Speicherbedarfs dürfte ein UNO und dergleichen ausscheiden, weshalb ein Teensy eine Überlegung wert wäre. Der hat auch noch mehr Schnittstellen im Angebot.

Rentner:
Beispiel dafür, das fast heute keiner mehr kennt, ist die Drucker-Centronics Schnittstelle die 8 Datenleitungen hat und zus. 2-4 Stererleitungen.

Mit echtem Handhake war die sauschnell gegenüber 300 Baud. Wer zu der Zeit eine serielle Schnittstelle als ernsthafte Alternative vorgeschlagen hätte, wäre ausgelacht worden. Als ich las, man solle einen Drucker per Universellem Seriellen Bus anschließen, wollte ich es erst nicht glauben. So ändern sich die Zeiten :slight_smile: