Hallo, ich möchte gern eine Spannung am ADC eines Mikrocontrollers vergleichen bzw. Änderungen feststellen. Kann mir jemand sagen welche Zeiten dafür nun ausschlaggebend sind? Die Total Conversation Time (including Sampling Time) oder nur die Sampling Time oder doch nur die MSPS Angaben im Datenblattkopf? Vorgesehen ist die Änderung zu bemerken und dann oder gleichzeitig den neuen Pegel festzustellen.
ach so und es geht hier speziell um einen stm32f105xx und die Angaben befinden sich auf Seite 72.
Die Frage ist ein wenig unpräzise gestellt. Der ADC selbst "merkt" erstmal überhaupt nicht, wenn sich seine Eingangsspanung ändert. Was heisst Änderung für dich? (1mV Änderung, 1V Änderung?). Du brauchst erstmal eine Schaltung welche deine Änderung bemerkt und die anschliessend deinen ADC triggert. Ich bin jetzt mal zu faul, deine Arbeit zu erledigen und den Link zum DB hier direkt zu posten...
Die Total Conversation Time. ABER die Signal Noise Ratio deines Signals muss schon beachtet werden. Und Messgeschwindigkeit und Genauigkeit beeinflussen sich normalerweise gegenseitig. Also sozusagen eine "Dunkelstrommessung" bei dem die SNR bestimmt wird sollte man in die Software einfach integrieren können. Dann hat man einen Bereich erfasst in dem man festlegt das, daß Signal sich noch nicht Verändert hat. Oder man macht digitale oder analoge Filter davor bzw. bildet einfach den Mittelwert über einige Werte. Da kann man schon sehen wie sich Messgeschwindigkeit und Genauigkeit zueinander verhalten.
Da ich nicht denke, dass Du mit super duper Tricks arbeiten möchtest: Die Total Conversion Time ist die Zeit, die der braucht um den internen Kondensator zu laden, der wird dann abgekoppelt vom Messsignal und dann gemessen. Also ist das für Dich relevant. Die Frage ist viel mehr, wie oft Du das nachguckst und bewertest, was für Dich eine Änderung ist. Der ADC gibt Dir nur ein Signal, das kannste auslesen oder per Interrupt holen, aber ob sich da was geändert hat, musste selber gucken.
Ich möchte natürlich im Controller vergleichen ob das Signal sich um einen gewissen Betrag geändert hat, diese Aufgabe möchte ich ja auch nicht vorgekaut haben, es ging mir nur darum ob es möglich ist das Signal mit der 1µs abzutasten und zu vergleichen. Alternativ hätte ich sonst eine Analoge Schaltung die mir Interrupts erzeugt und dann könnte ich abtasten, aber warum Analog beschalten wenn es auch direkt alles über Software gehen würde. Und ja, es muss so schnell sein, am besten noch schneller ;-) Und weil die Frage kam, Änderung wird wohl für mich am Ende bei einem Spannungsbereich von ca. 3V eine Änderung von etwa 17% sein. Und die Überlegung des direkten Abtastens ging eigentlich davon aus mit "Dauerfeuer" abzutasten und zu vergleichen ob es eine Änderung gegeben hat. Da bin ich mir allerdings nicht sicher ob das in dieser Zeit umsetzbar ist oder ob die Belastung doch unverhältnismäßig groß oder gar zu groß wird für den Controller (soll ja noch nebenbei was anderes machen). Danke für die bisherigen Hinweise.
achso und was wäre für dich ein super duper Trick? ^^ nur aus Neugier
stm schrieb: > achso und was wäre für dich ein super duper Trick? ^^ nur aus Neugier Wahrscheinlich war da der "interleaved mode" gemeint. (Hast ja 2 ADCs) Trotzdem finde ich 1MSP/s ziemlich sportlich. Die maximale total conversion time wird mit 18us angegeben, was gerade mal 55kSP/s entspricht. Bei den Atmels kann man noch die Frequenz erhöhen wodurch allerdings die Auflösung leidet. Aber ich glaube bei f_ADC= 14MHz ist beim STM32 auch schluss.
nun um ehrlich zu sein hatte ich das sogar in Betracht gezogen um die Zeit noch weiter zu drücken. Und wenn ich das Datenblatt (die Tabelle unter der mit der Conv-Time) richtig interpretiere kann ich ja durch verringern des R(AIN) die Zeit auf maximal 1µs drücken (hoffe ich). Es musst es muss leider so sportlich sein, mein Signal weißt Pulsbreiten von wenigen µs auf und wenn ich jetzt von unt hinten noch die Hälfte verlieren bleibt nicht mehr viel über. Bzw. mit 18µs habe ich wenn es schlecht kommt schon einen Puls vollkommen verloren. Klingt doch nach Interrupt gesteuerter Abfrage^^
stm schrieb: > Und wenn ich das Datenblatt (die Tabelle > unter der mit der Conv-Time) richtig interpretiere kann ich ja durch > verringern des R(AIN) die Zeit auf maximal 1µs drücken (hoffe ich). Ich würde sagen: "Nö". Im Datenblatt steht, dass f_ADC_Max= 14MHz. Und da beträgt die Wandlungszeit eben zwischen 1us und 18 us = 1MSP bis 55kSP
stm schrieb: > Es musst es muss leider so sportlich sein, mein Signal weißt Pulsbreiten > von wenigen µs auf und wenn ich jetzt von unt hinten noch die Hälfte > verlieren bleibt nicht mehr viel über. Bzw. mit 18µs habe ich wenn es > schlecht kommt schon einen Puls vollkommen verloren. Blöde Frage: Ist das ein analoges oder ein digitales Signal da du von Pulsbreiten redest?
Kann beides sein und wenn es ein Digitales ist, dann mit mindestens 3 Spannungsstufen, die ich identifizieren möchte. Um genau zu sein sind es Ströme, ich wandle halt notwendigerweise. Wäre es ein einfaches Digitales Signal würde ich das natürlich nicht über die ADCs einlesen wollen ;-) @NopNop ... du hast gerade meine Träume zu Staub zermahlen -.- ^^
stm schrieb: > @NopNop ... du hast gerade meine Träume zu Staub zermahlen -.- ^^ War nur meine Einschätzung. Sich am unteren Grenzwert zu bewegen ist mit Sicherheit machbar...aber das wahrscheinlich nicht einfach. Wenn man dann noch nebenher was machen möchte >(soll ja noch nebenbei was anderes machen). wird es dadurch auch nicht gerade einfacher. Denke mal wenn es machbar ist, dann mit dem "interleaved mode". Habe noch nicht mit dem STM32 gearbeitet...deshalb bin ich da mit Sicherheit nicht der beste Ansprechpartner. Über DMA, Interrupts u.ä. kann man da sicherlich noch einiges rauskitzeln.
Nun gut, dann gehe ich wohl doch wieder zu den Interrupts zurück ;-) Also danke für die Nachhilfe.
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.