Hallo,
ich wollte die Experten einmal um Rat fragen ob die Gedanken die ich mir
zu meinem Projekt gemacht habe, so umsetzbar sind oder ob es auch
einfacher geht. Für einen Versuchsaufbau habe ich 80 Sensoren die
geloggt werden müssen. Die Auswertung soll über ein Programm in VB .Net
erfolgen, der Controller soll über USB angeschlossen werden, die Messung
soll innerhalb von 100ms erfolgen.
Diesen Aufbau würde ich ja auch noch hinbekommen, aber ich habe die
Vorgabe das ganze in Modulbauweise für je 80 Messungen aufzubauen, so
dass ich bis zu 960 Sensoren messen kann.
Meine Überlegung war je eine Platine mit 8 AD-Wandler mit 10 Kanal über
I2C an einen mega32 anzubinden. Die AD-Wandler bekommen noch einen S&H
Chip wenn er nicht schon drin ist. Das Sample and Hold Signal würde ich
Zentral für alle steuern und dann nach und nach die AD Wandler über i2c
auslesen. Die einzelnen mega32 Chips würden dann Ihre Daten wieder über
I2C an den Master schicken, der die Daten dann zentral sammelt und per
USB an den PC schickt. Ein Problem ist die Vernetzung der mega32
untereinander, da hier auch eine räumliche Entfernung von bis zu 6m
überwunden werden muss. Mein Vorschlag wäre ein Busexpander für I2C oder
den CAN BUS und dann mit dem AT90CAN128 zu arbeiten.
Ich denke das diese Lösung machbar ist, bin mir aber nicht sicher ob es
auch die optimale ist.
Da die Messung wissenschaftlichen Hintergrund hat und die Anforderungen
im Moment mit 100ms sehr locker sind, weiß ich das es nur eine Frage der
Zeit ist bis die Anforderungen hoch gesetzt werden, deswegen auch S&H.
Das Datenvolum wird bei 960 Messungen bei ca. 16 kbit liegen plus
Overhad, was schon eine ganze Menge ist. Ich bin mir hier noch nicht
sicher wie viele Messungen ich pro Sekunde machen kann.
Hat jemand eine Idee wie man die Messung am vernünftigsten realisiert?
Da es die Firma bezahlt, brauch man finanziell keine Kompromisse zu
machen.
Gruß
Dirk
CAN ist schon mal ne gute Idee, wenn auch nicht unbedingt erforderlich.
Eine RS485 würde den Zweck genausso erfüllen. I2C bei 6m? Und dann noch
in Störumgebung? Lieber nicht.
Ich würde auf jeder Einzelplatine genug Speicher vorsehen, um die
Messergebnisse zu sammeln (RAM, FRAM) und erst anschliessend die Daten
einsammeln und zum PC transportieren.
Dann hast du den Übertragungsweg erst mal frei zur Steuerung der
Messungen.
Hallo,
Für die Sensoranbindung (digital u. analog) wir in der
Industrie oft auch ASi-Bus genommen. Offener Standard, gibt
von diversen Herstellern alle möglichen Module.
Brauchst dich also um die Hardware nicht zu kümmern.
Kann dann auch im nachhinein problemlos erweitert werden.
Bliebe dann "nur noch" die Kommunikation mit dem ASi-Busmaster.
@crazy horse
Den RS485 Bus zu verwenden, habe ich auch schon überlegt, wollte aber
drumherum kommen mir ein eigenes Protkoll schreiben zu müssen. Aber von
der Geschwindigkeit und Leitungslänge ist der Bus ideal.
Da eine Platine nur 80 Werte sammelt, dachte ich das der interne
Speicher noch ausreichen würde.
klar reicht der interne Speicher erstmal.
Und Protokoll? Was brauchst du da gross? Broadcast an alle, Wandlung
starten.
Anschliessend Anfrage an jeden einzelnen, sein Daten en bloc zu senden.
Mehr braucht es doch gar nicht.
@ Michael
Der ASi-Bus kann laut Wikipedia nur 248 Sensoren und die
Busgeschwindigkeit ist nur 187khz. Ich denke ein gleichzeitiges erfassen
der Messwerte wird durch die Masse der Daten schwierig.
Ehe man voller Übereifer losbastelt, sollte man erstm einmal
recherchieren, was es in dem Bereich schon fertig auf dem Markt gibt.
Denn 1000 Sensoren mit 10 Hz auslesen ist so tivial auch wieder nicht.
Vor alelm wenn es eine genaue Messung, und nicht Schätzung sein soll.
MFG
Falk
@Falk Brunner
Ich denke 10HZ werde ich nicht schaffen, aber 2-3 Messungen pro Sekunde
wären schon schön (die Spezifikation sieht nur eine Messung vor mit
Sekunden Abstand zur nächsten).
Ich habe mich schon mal auf dem Markt der Datenerfassung umgesehen und
1000 Messungen sind auch da kein Standard mehr.
Dirk Erdweg wrote:
> USB an den PC schickt. Ein Problem ist die Vernetzung der mega32> untereinander, da hier auch eine räumliche Entfernung von bis zu 6m> überwunden werden muss. Mein Vorschlag wäre ein Busexpander für I2C oder> den CAN BUS und dann mit dem AT90CAN128 zu arbeiten.>> Ich denke das diese Lösung machbar ist, bin mir aber nicht sicher ob es> auch die optimale ist.
Na klar, auf alle Fälle CAN.
Der CAN-Bus kann das und ist einfach im Protokoll (macht alles die
Hardware).
Vergiß I2C und RS485, da programmierst Du Dich tot mit Protokoll
schreiben.
Am PC würde ich nen fertigen USB-CAN Umsetzter nehmen und gut is.
Peter
Ich würde hier auch AN empfehlen.
Jeder µC mit einer gewissen Anzahl an angeschlossenen AD Kanälen sendet
alle zb 10 ms seine gesammelten Daten auf einer eigenen Can ID.
Zentral setzet du einen großen µC , könte auch ein ARM 7 sein oder
ähnliches der diese Daten einsammelt und dann gebündelt und sortiert an
den PC weiterleitet.
Auch hierfür würde ich CAN empfehlen mit einem entsprechenden HW
interface, zb Vector.