Forum: Mikrocontroller und Digitale Elektronik Datenlogger mit fast 1000 Werten. Wie realisieren? AVR


von Dirk E. (Gast)


Lesenswert?

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

von asdf (Gast)


Lesenswert?

die atmels haben eine interne sample & hold stufe.

von crazy horse (Gast)


Lesenswert?

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.

von Dirk E. (Gast)


Lesenswert?

Ja, aber 80 Werte kann ich nur extern messen und da ich auch noch 12 bit 
brauche, scheiden die mitgebrachten ADs aus.

von Michael (Gast)


Lesenswert?

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.

von Dirk E. (Gast)


Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von Dirk E. (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Dirk E. (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Ralph (Gast)


Lesenswert?

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.

von Dirk E. (Gast)


Lesenswert?

Hallo,

so ich habe mich jetzt entschlossen die ganze Sache in CAN zu 
realisieren.
Als CAN Interface haben ich die zwei Anbieter in die engere Wahl 
genommen:

https://www.vector-worldwide.com/vi_xl_driver_library_de,,2816.html?markierung=XL%257CDriver%257CLibrary

http://www.esd-electronics.com/esd2004/german/uebersichten/CAN_tabelle_links.htm?&curr=143

Beide bieten verschiedene Interfaces an USB->CAN, Ethernet->CAN, ... .
und haben passende Bibliotheken mit Treibern, so dass ich den GUI in 
VB.Net schreiben kann.

Falls hier jemand noch bessere Anbieter kennt, wäre ich interessiert.

Gruß
Dirk

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.