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
die atmels haben eine interne sample & hold stufe.
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.
Ja, aber 80 Werte kann ich nur extern messen und da ich auch noch 12 bit brauche, scheiden die mitgebrachten ADs aus.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.