Hallo zusammen, ich bräuchte einmal von euch Rat bezüglich meiner "Aufgabenstellung": Ich wil eine drucksensitive Folie auswerten, habe über 1000 Messpunkte zu messen. Ohne großartig auf die Schaltung einzugehen: Ich switche mit mehreren Multiplexern und will die Ausgangsspannungen (zwischen 0-5V) eine nach der anderen jeweils an einen oder mehrere ADC's führen, den DC-Spannungswert auslesen und ihn speichern. Bei der Masse an Messungen: Wie würdet ihr da vorgehen? Ich will natürlich das Ergebnis für eine Darstellung in der GUI so schnell es geht ablesen können. Empfehlt ihr dafür eigene ADC's für die Messungen oder kann/soll ich die integrierten des Mikrocontrollers nehmen (noch keiner gewählt)?
Stephan schrieb: > Ich will natürlich das Ergebnis für eine > Darstellung in der GUI so schnell es geht ablesen können. Ich schätze mal hier ist der Knackpunkt. Wie schnell soll es denn sein? Ich hab da nicht genug Erfahrung, das mal eben im Kopf zu überschlagen, aber vielleicht macht hier sowas wie eine Lösung auf CPLD/FPGA-Basis Sinn, wenn es wirklich schnell sein soll. Der Flaschenhals dürfte dann die Verbindung zum PC sein. Wie siehts mit der Auflösung aus?
Auflösung und Samples pro Sensor?
Stephan schrieb: > Wie würdet ihr da vorgehen? Ich will natürlich das Ergebnis für eine > Darstellung in der GUI so schnell es geht ablesen können. Für eine Darstellung einer Gui reicht ja wohl 1/10s dicke als Sampling Zeit für alle Punkte, schneller kann eh niemand etwas erkennen. Also hast du 1/10 s Zeit für 1000 samples oder pro Sample 100µs incl. umschalten der MUX. Also such dir was passendes.
Wie schnell soll das denn alles gehen? Der ADC eines AVR schafft 15kSPS. Du könntest also die 1000 Messungen in 1/15 Sekunde durchführen. Die Daten kannst du nebenbei noch per UART an den Rechner schicken. Wäre dir das schnell genug?
Stephan schrieb: > Empfehlt ihr dafür eigene ADC's für die Messungen oder kann/soll ich die > integrierten des Mikrocontrollers nehmen (noch keiner gewählt)? Das ist zeitlich kein Problem, ob sich mehrere ADCs lohnen, hängt eher vom realen Aufbau der Hardware ab, also ob z.B. entfernte Messstellen hast - da kann es sinnvoll sein, bzw. ist es meistens, einen lokalen ADC zu verwenden und die digitalen Daten zu übertragen. Ausserdem müsstest du mal nachrechnen, welcher Fehler jeweils durch eine MUX-Stufe eingeführt wird, Analog Multiplexer sind ja keine perfekten Bauteile (ausser du nimmst 1000 Reedrelais, aber das hat auch so seine Probleme). Ich würde nicht mehr als 8 x 8 Eingänge auf einen ADC schalten. Gruss Reinhard
Hallo zusammen und vielen Dank schon mal für euer Feedback! Ich habe mal einen schematischen Schaltplan angehangen. Stellt euch vor ich habe eine Folie, mit der ich die Druckbelastung einer flach aufgelegten Hand messen will. Die Messfolie soll direkt per Stecker an die Platine angeschlossen werden, die Messpunkte werden alle erfasst, per Funk weitergesandt und über einer GUI am PC angezeigt. Ich stelle es mir grob so vor, dass ich das per Funk versandte Array an Daten "nur noch" mit Balken visualisieren muss dann. Meine Unsicherheit ist halt darin begründet, dass ich diese Masse an Messungen habe. Bis jetzt habe ich mit einem ADC immer ein einziges Signal gesampled, jetzt sind es >1000. Die Genauigkeit ist nicht soo wichtig, da reichen die integrierten (egal ob TI oder Atmel) locker. Natürlich habe ich auch einen zusätzlichen Messfehler durch den R_on der Muxer, aber damit kann ich leben. Die transition-Zeit liegt im nano-Bereich. Also ihr meint, da reicht der integrierte ADC?
Sag doch einfach mal wieviele Samples/s du machen musst?
@ Stephan (Gast) >Also ihr meint, da reicht der integrierte ADC? Liest du auch mal die Antworten? http://www.mikrocontroller.net/articles/Netiquette#Klare_Beschreibung_des_Problems
Stephan schrieb: > Die > transition-Zeit liegt im nano-Bereich. Wer sagt das? Nach dem Auswählen einer Spalte muss der Verstärker erst mal auf einen stabilen und genauen Wert einschwingen, das geht bestimmt nicht in ein paar ns. Das ist aber die für das System wesentliche Umschaltzeit, der ADC ist nicht das Problem. Gruss Reinhard
Falk Brunner schrieb: > @ Stephan (Gast) > >>Also ihr meint, da reicht der integrierte ADC? > > Liest du auch mal die Antworten? > > http://www.mikrocontroller.net/articles/Netiquette... Hi Falk, ähm, ja?! Ich bin auf die "entfernten Messstellen" eingegangen, auf den Fehler der MUX-Stufen, auf die Genauigkeit, also die Auflösung, etc pp. Wo ist jetzt Dein Problem? @die anderen: Über die Anzahl der Samples/s habe ich mir noch keine Gedanken gemacht. Letztlich sind es ja nur DC-Spannungs-Signale, welche ich erfassen will.
Reinhard Kern schrieb: > Stephan schrieb: >> Die >> transition-Zeit liegt im nano-Bereich. > > Wer sagt das? Nach dem Auswählen einer Spalte muss der Verstärker erst > mal auf einen stabilen und genauen Wert einschwingen, das geht bestimmt > nicht in ein paar ns. Das ist aber die für das System wesentliche > Umschaltzeit, der ADC ist nicht das Problem. > > Gruss Reinhard Hi Reinhard, siehst Du, das wusste ich nicht. Deswegen wollte ich die Community um Rat bitten. Bis jetzt bin ich nur von der Transition-Zeit des Multiplexers und der Messdauer des ADC's ausgegangen. D.h. ich benötige bestenfalls auch einen sehr schnellen OP? Gruß, Stephan
Stephan schrieb: > @die anderen: > Über die Anzahl der Samples/s habe ich mir noch keine Gedanken gemacht. > Letztlich sind es ja nur DC-Spannungs-Signale, welche ich erfassen will. Du hast dir noch keine Gedanken über die erfolderliche Samplerate gemacht, aber willst wissen, ob der integrierte DAC eines noch unbekannten uC dafür taugt? --> du bist lustig.. Das ist in etwa so, wie wenn du sagst: Ich will 100km fahren. Über´s Gelände kann ich noch keine Aussage machen und auch nicht, wie schnell ich ankommen will, aber soll ich lieber ein Fahrrad oder ein Auto nehmen?
Stephan schrieb: > Falk Brunner schrieb: >> @ Stephan (Gast) >> >>>Also ihr meint, da reicht der integrierte ADC? >> >> Liest du auch mal die Antworten? >> >> http://www.mikrocontroller.net/articles/Netiquette... > > Hi Falk, > > ähm, ja?! > > Ich bin auf die "entfernten Messstellen" eingegangen, auf den Fehler der > MUX-Stufen, auf die Genauigkeit, also die Auflösung, etc pp. > > Wo ist jetzt Dein Problem? > > @die anderen: > Über die Anzahl der Samples/s habe ich mir noch keine Gedanken gemacht. > Letztlich sind es ja nur DC-Spannungs-Signale, welche ich erfassen will. Weil wenn z.B. du weist, wie viele Samples du brauchst kannst Du Dir überlegen: - ob eine uart usb verbindung reicht oder lieber dann doch eine USB 2.0 Full-Speed/High-Speed benötigst. - und was vielleicht am wichtigsten ist, du dimensionierst den analog teil dementsprechend richtig
Stephan schrieb: > die Messpunkte werden alle erfasst, > per Funk weitergesandt und über einer GUI am PC angezeigt. Als erstes solltest du dir klarwerden wie oft du messen willst (meine Beispielrechnung ist oben). Und dann solltest du dir klarwerden wie oft du messen darfst, so daß du die gemessene Datenmenge überhaupt übertragen kannst. Die Verarbeitung auf dem PC sollte bei heutigen PCs dann eher nicht das Problem sein.
hab überlesen, dass er Funken will, aber egal.
Stephan schrieb: > Die transition-Zeit liegt im nano-Bereich. Wessen? Die Folie wird dir was husten, wenn du mit ihr versuchst, über Nanosekunden zu verhandeln.
Coder schrieb: > hab überlesen, dass er Funken will, aber egal. Hier ist eine ganz schön unfreundliche Grundstimmung irgendwie. Wenn ich alles könnte, dann würde ich ja hier nicht um Hilfe bitten, oder? Könnt ihr mir etwas erklären? Welchen Unterschied macht es, ob ich das DC-Signal eines Messpunktes 10.000x oder nur 100x/s sample? Ich will ja keinen Sinus, o.ä. abtasten, bei dem die Anzahl der Messpunkte wichtig ist? Ich habe mir deshalb noch keine Gedanken um die genaue Samplerate gemacht, weil ich u.a. noch am überlegen bin, welche Verzögerungszeiten das Gesamtsystem überhaupt hat. Von der "Einpegelzeit" des OP's wusste ich z.B. noch gar nicht. Theoretisch wäre der Programmablauf ja folgender: -Spalte 1 auswählen --Zeile 1 auswählen --Messen --Speichern --Zeile 2 auswählen --Messen --Speichern and so on.... Ist da die Samplerate nicht mehr oder minder "egal", wenn sie nicht völlig extrem ist?
Stephan schrieb: > Ist da die Samplerate nicht mehr oder minder "egal", wenn sie nicht > völlig extrem ist? "Völlig extrem" ist ein weites Feld, je nach dem, was man für einen Wandlertyp einsetzt. Überleg dir doch einfach mal, wie oft du ein komplettes neues "Druckbild" brauchst. Dann kann man drüber nachdenken, was für Wandler man einsetzen kann und ob so ein Ding im µC vorhanden ist. Die möglichen Abtastraten heutiger Datenerfassungen reichen von 1s bis 0.01ns und da muss man schon irgendwie gucken, wo man hin will.
Stephan schrieb: > Hier ist eine ganz schön unfreundliche Grundstimmung irgendwie. Na ja, du fragst, aber gehst auf die Antworten nicht ein, sondern kommst stattdessen mit neuen Erkenntnissen um die Ecke. Letztendlich willst du, dass dir geholfen wird und daher ist es auch als Hilfe zu betrachten, wenn dir die Leute sagen, dass du die Leistungsfähigkeit deines Aufbaus erstmal eingrenzen musst, bevor du dir um Lösungsansätze Gedanken machst. Stephan schrieb: > Ist da die Samplerate nicht mehr oder minder "egal", wenn sie nicht > völlig extrem ist? Wenn du NIE einen Wert abfragen willst, dann brauchst auch NIE sampeln. Er ist also bekannt und du brauchst gar nicht sampeln und übertragen. Aber offensichtlich hast du ja nen berechtigten Grund anzunehmen, dass dieser DC sich irgendwann mal ändern wird. Und genau diese Änderung willst du erfassen.. Und dann stellt sich doch als erstes die Frage: WIE OFT willst soll dein System auf den DC schauen und den Wert aktualisieren, also sampeln.... Alle paar Minuten mal? Oder einmal pro Sekunde? Oder alle 14 Tage? Oder 100mal pro Sekunde? oder was?
Stephan schrieb: > Ist da die Samplerate nicht mehr oder minder "egal", wenn sie nicht > völlig extrem ist? Stephan schrieb: > Wie würdet ihr da vorgehen? Ich will natürlich das Ergebnis für eine > Darstellung in der GUI so schnell es geht ablesen können. Was willst du jetzt? Ich habe dir oben eine Beispielannahme vorgerechnet. Du musst schon wissen was du willst, wir können es dir nicht sagen. Daraus ergibt sich was du brauchst Bei deinem Ablauf fehlt das Versenden der Daten zum PC. und das Warten zwischen setzen des Mux und dem Einpendeln der Spannung so daß der A/D Wandler korrekt wandeln kann.
Michael schrieb: > Stephan schrieb: >> Ist da die Samplerate nicht mehr oder minder "egal", wenn sie nicht >> völlig extrem ist? > > "Völlig extrem" ist ein weites Feld, je nach dem, was man für einen > Wandlertyp einsetzt. > > Überleg dir doch einfach mal, wie oft du ein komplettes neues > "Druckbild" brauchst. Dann kann man drüber nachdenken, was für Wandler > man einsetzen kann und ob so ein Ding im µC vorhanden ist. > Die möglichen Abtastraten heutiger Datenerfassungen reichen von 1s bis > 0.01ns und da muss man schon irgendwie gucken, wo man hin will. Hi Michael, danke für Deinen Ansatz. Ich denke, dass ich das Gesamt-Druckbild alle 100-200ms aktualisiert haben will. Ich unterscheide da zwischen drei Phasen: 1. Hand auflegen, Kraft baut sich auf 2. Maximalkraft wird ermittelt 3. Hand wird wieder von der Folie genommen Ich denke, dass man den Kräfteverlauf auf der Gesamtfläche gut mit 10 Bilder/s bzw. 100ms darstellen kann. Gehen wir vielleicht davon aus. Wie gehe ich von da weiter?
Entschuldige wenn ich ich unfreundlich war, aber ich habe den Eindruck, dass Du Dir noch nicht genug Gedanken gemacht hast oder es uns nicht sagen möchtest oder kannst. Nur als Beispiel: Du möchtest die Daten auf dem PC anschauen. Du sagt aber nicht, ob du alle sensoren 1x, 10x oder 100x pro Sekunden auf dem Bildschirm aktualisiert haben möchtest/musst. Damit hasst Du z.B. eine Sample-Rate von 200/s bis 200000/s. Oder machts Du vieleicht nur eine Einzelmessung. Und das ist für deine Analog-Schaltung auch nicht unwichtig.
Stephan schrieb: > Wie gehe ich von da weiter? Als nächstes muss man sich das Zeitverhalten der einzelnen Komponenten angucken und überlegen, ob es da irgendwo eng wird und man am Konzept drehen muss, also: - wie schnell ist das Spaltenansteuersignal aufgebaut - wie lange braucht das Ausgangssignal der Matte, um daraufhin stabil zu sein - wie lange braucht der ADC (µC intern typisch 25/100000s) - wo landen die Daten (reicht der µC RAM) - wie lange dauert die Übertragung zum PC - wie lange braucht das µC Programm Für jeden der Schritte gibt es verschiedene Lösung, man kann Sachen parallel erledigen (Spaltensignal, Zeilensignal wandeln, Daten übertragen) anlegen, und , und, und... Da muss man einfach mal ein paar Dinge ausprobieren/simulieren und rechnen, wie das alles paßt
@ Stephan (Gast) >Ich denke, dass man den Kräfteverlauf auf der Gesamtfläche gut mit 10 >Bilder/s bzw. 100ms darstellen kann. Gehen wir vielleicht davon aus. Das ist ja schon mal was. >Wie gehe ich von da weiter? 10 Hz Bildwiederholrate x Anzahl Punkte = Samples / s. Jetzt weiß man wieviel Zeit man für das Umschalten der Matrix, der Multiplexer, Einschwingen der Verstärker und zur Abtastung hat. Im einfachen Ansatz macht man das alles nacheinander, wenn es sehr schnell gehen muss und man keine Zeit hat auch parallel, sprich, während der ADC das abgetastete, und damit intern "eingefrorene" Signal digitalisiert, kann man die MUX schon wieder umschalten. Das ist aber was für die höheren Semester. Mach es erstmal einfach.
Hallo zusammen, vielen lieben Dank für die Denkanstöße soweit. Ich gehe aktuell von ca. 3000 Messpunkten aus, damit hätte ich bei 10 Hz Bildwiederholrate um die 3000 Samples/s. Die Switching Zeiten des ADG706-Multiplexers liegen bei 40ns. Das bedeutet, dass ich pro Durchlauf 3000x umschalten muss und somit 3000x40ns = 120µs Verzögerung alleine durch die Umschaltzeiten habe. @Falk: Du redest von "pipelining", oder? @Michael: -Zu der Messfolie kann ich aktuell noch nichts genaues sagen, da dort eine andere Gruppe dransitzt. Gehen wir davon aus, dass es direkt stabil ist. -Beim AVR ADC habe ich gelesen, dass er bei 1MHz ADC_Clock-Freq. 13 Cycles braucht. Mit Deinen angenommenen 25µs sollte ich also auf der sicheren Seite sein, oder? -Die Daten gehen erst einmal in den RAM des µC's. -Die Verzögerung durch die RF-Übertragung ist erstmal nicht so wichtig. Das ist für mich erst der nächste Schritt. Welcher Parameter der OP's ist für meine Messungen wichtig? Viele Grüße!
Es ist dann nicht so, dass man grad nach dem Mux Umschalten losmessen kann ... da waer dann noch die Frage nach der Quellenimpedanz.
@ Stephan (Gast) >Ich gehe aktuell von ca. 3000 Messpunkten aus, damit hätte ich bei 10 Hz >Bildwiederholrate um die 3000 Samples/s. Da fehlt eine Null. 30.000 Sample/s >Du redest von "pipelining", oder? Ja. >-Beim AVR ADC habe ich gelesen, dass er bei 1MHz ADC_Clock-Freq. 13 >Cycles braucht. Ist auch bei jedem anderen Takt so. 13 Takte. >-Die Daten gehen erst einmal in den RAM des µC's. Macht mal locker 3kB. Damit sind die meisten AVRs schon fast voll. >Welcher Parameter der OP's ist für meine Messungen wichtig? Kommt drauf an, was du wie genau messen willst. Offsetspannung und Bandbreite sind so der erste Ansatz.
Dein Problem wird sich nur am konkreten Fall lösen lassen. -Da ist zum einen die Auflösung. Die eingebauten A/D-Wandler sind hier nicht besonders herausragend. -Multiplexen wirst Du ja in jedem Falle müssen, da meistens die Anzahl an eingebauten Wandlern nicht ausreichend ist. -Bei externen Wandlern kommen zu den Umschaltverzögerungen auch noch Abfragen nach: "Are you ready" hinzu. -Darüberhinaus wollen die Daten auch noch in die CPU geschaufelt werden. Meist seriell, aber für beliebig viele I²C Schnittstellen reicht's auch nicht. Also ein Eigenbauprotokoll. Dasy Chain dürfte wohl, bei so vielen Kanälen, zu langsam werden. -Benutzt Du A/D-Wandler mit mehreren Kanälen, so musst Du in beiden Richtungen babbeln. Wenn's nur um's Anschauen geht, kann man oft sowohl bei der Geschwindigkeit, als auch bei der Auflösung, kräftige Abstriche machen.
Hi, @Falk: Ja, die für die letzte Null hat der Tastenanschlag nicht mehr gereicht - merci ;) Tendenziell wollte ich eh zu einem größeren µC greifen. Wohin sollte ich Deiner Meinung nach die Daten am sinnvollsten speichern? EEPROM ist langsamer oder? Gerade wenn ich ein externes einsetzen würde, dann müssten die Daten ja auch wieder dorthin geschrieben und evtl. gelesen werden.... Bzgl. ADC's: Ist die Bandbreite für mich auch wichtig, wenn ich nur DC-Messungen mache? Eigtl. wollte ich auf externe Wandler verzichten, das war zumindest mein erster Ansatz - aber ich frage ja nicht umsonst hier nach...
Die "neuen" XMegas haben ein recht leistungsfähiges Speicherinterface, womit Du dann "richtig" viel RAM zur Verfügung haben kannst. Ich glaube ein paar von denen können sogar 12Bit analog - was auch immer das heißt - auflösen.
amateur schrieb: > Die "neuen" XMegas haben ein recht leistungsfähiges Speicherinterface, > womit Du dann "richtig" viel RAM zur Verfügung haben kannst. > Ich glaube ein paar von denen können sogar 12Bit analog - was auch immer > das heißt - auflösen. Die 12bit waren sicherlich auf die Auflösung des ADC bezogen.... Kann ich eigentlich auch SRAM als Datenspeicher verwenden?
Stephan schrieb: > Bzgl. ADC's: Ist die Bandbreite für mich auch wichtig, wenn ich nur > DC-Messungen mache? Du misst kein DC. Du misst 10000 mal pro Sekunde einen Messwert der völlig verschieden vom vorherigen sein kann.
je nach dem wie schnell du deine Daten wegbringst, gehts ja auch so. 30.000 Samples x 8Bit = ~240kbit d.h. wenn du mit mehr als 240.000Baud auf dem Funkkanal übertragen kannst bringst du die Daten so schnell weg wie sie kommen. Protokolloverhead nicht mit eingerechnet. Dann ist nur noch die Frage wie oft du wie große Pakete wegschicken willst/kannst. Also mindestens alle 100ms, also sind die Pakete zum zwischenspeichern maximal 3kB, umso öfter du wegschickst umso kleiner. Da brauchst du nicht unbedingt einen externen Speicher.
>Kann ich eigentlich auch SRAM als Datenspeicher verwenden?
Ja - keine Ahnung ob DRAM überhaupt geht.
'Ne 1/4 Pupille ins Manual werfen hilft hier aber.
Ich würde nicht nur einen ADC benutzen. Mal angenommen du benutzt 2 externe ADCs dann kannst du bei einem messen, ja das dauert auch eine Weile, und bei dem anderen kannst du in der Zeit den Mux umschalten. Also eine PingPong-Messung. Wenn du das gleiche mit einem internen ADC machen willst musst du schauen ob der zwei getrennte ADC Peripherien hat. Wenn nicht, kannst du auch immer nur auf einem Kanal messen. Den uC würde ich an deiner Stelle nach der externen Beschaltung auswählen. Wenn du noch funken willst, dann kann es bei so einer 70er 8Bit Krücke schnell an Rechenleistung fehlen. Dann solltest du auch über eine geeignete Komprimierung der 12Bit Daten nachdenken, immer 6Bit Overhead macht bei 3000 Samples und 10 Messungen pro Sekunde 22KB Overhead. Deine Nettodatenübertragung (12Bit) liegt bei 45KB/s. Gruß.
Sorry sollten 4Bit sein, die Rechnung ist also auch nicht ganz richtig, etwas Fuzzi eben.
Höchstgeschwindigkeit wirst Du bei Deiner Schaltung sowieso nicht erreichen. Die heutigen Schalter sind zwar recht schnell, aber der Innenwiderstand deiner "Spannungsquellen" sieht nicht besonders niedrig aus. Zusammen mit den Lastkapazitäten dürfte das Signal ganz schön lange rumwackeln.
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.