Ultra low power frequenzmessung /-analyse

Gast #1203602
Lesenswert?

Hallo,

ich hätte da mal einigen Fragen, da ich noch nicht der erfahrenste auf 
diesem Gebite bin.
Und zwar möchte ich gerne die Fequenz (Frequenzband zwischen 10 und 400 
kHz) eines Sensorsignals mit einem Controller messen und gegebenenfalls 
auch genauer anlysieren (z.B. FFT).
Allerdings soll der Controller sich die meiste Zeit im Sleep mode 
befinden um Energie zu sparen, da die gesamte Anwendung auf Low Power 
getrimmt sein soll. Daher kann ich nicht permanent die Eingänge abfragen 
bzw. eine A/D-Wandlung vornehmen. Meine Idee ist nun, dass Signal 
zunächst über analoge Filter entsprechend zu begrenzen (auch hier bin 
ich noch nicht der erfahrenste) und anschließend auf einen Integrator 
laufen zu lassen. Hieran soll sich dann ein Komparator anschließen, der 
halt schaltet, wenn der Integrator einen entsprechenden Wert erreicht 
hat und somit dem Controller das Signal gibt aus seinem Sleep Mode 
(Ext.Interrupt) aufzuwachen, um das Signal digital zu wandeln bzw. 
weiter zu verarbeiten. Meine grundsätzliche Frage ist, ob das 
prinzipiell so funktionieren kann.
Die nächste Frage ist, ob es da nicht elegantere, sprich 
energieeffizientere Wege gibt. Das Ding ist halt, dass nur Signale mit 
bestimmter Amplitude oder Frequenz genauer untersucht werden sollen, der 
Sensor aber durchaus auch uninterressantere Frequenzen ausspuckt.

Der nächste Punkt ist, ob man durch den Einsatz digitaler Filter unterm 
Strich nicht evtl. weniger Energie verbraucht, da die analoge Filterung 
ja auch nicht ohne Energie auskommt.

Ich kanns leider noch nicht genauer beschreiben (z.B. Controllertyp), da 
ich noch in den Vorüberlegungen zu dieser Thematik stecke und da evtl. 
auch noch ein wenig grün hinter den Ohren bin. Ich brauch ganz einfach 
Meinungen und Input von erfahrenen Leuten.

Schonmal Danke für die hoffentlich zahlreichen Antworten.

Gruß
#1203808
Lesenswert?

Also ein paar Angaben musst du schon noch machen.

Frequenzbereich soll 10k-400kHz sein. D.h. du benötigst eine Abtastrate 
von mindestens 1.6MHz damit deine Amplitude bei 400kHz nicht schon stark 
gedämpft ist. Da kannst du jetzt schon mal die internen ADC's bei den 
8-Bit'ern vergessen. (Atmel liegt glaub ich bei 200kSPS.) Sprich 
externer ADC. Als nächstes sollte klar sein welche Auflösung und 
Messbereich du realisieren willst.
Klar sein sollte, dass du mit die FFT erst nach dem Samplen durchführen 
kannst. Hier ist gleich der nächste offene Punkt: Wieviele Sample willst 
du am Stück abspeichern? In welchen Abständen wird eine Messung erneut 
gestartet? Eine FFT-Berechnung dauert einige Berechnungszeit. Wie willst 
du die Daten auslesen?

Zu deinem LowPower-Modus:
Was willst du mit einem Integrator? Wenn du ein AC-Signal hast, kommt da 
nix raus. Entweder du triggerst mit einem Komparator auf einen 
Signalpegel oder du willst exakte Messraten realisieren und verwendest 
die internen Timer.
Gast #1203858
Lesenswert?

Wenn man nur an jeweils einem kleinen Frequenzbereich interessiert ist, 
könnte man das Signal ersteinmal analog durch mischer in einen besser zu 
handhabenen Frequenzbereich von z.B. 1-10 kHz bringen. Man ist dann aber 
auf jeweils einen kleinen Frequenzbereich eingeschränkt. Eventuell macht 
es auch sinn 2 mixer zu nehmen und dann mit I und Q Signal zu arbeiten.

Damit würde man wahrscheinlich mit dem internen AD-wandler und weniger 
Speicher und Rechenoperationen auskommen. Ob dieser Weg sinn mahct, 
hängt aber vom Sensorsignal und der geplanten Analyse ab. Ist auch etwas 
die Frage was mit ultra low power gemeint ist und wie schnell es gehen 
soll.
Gast #1204067
Lesenswert?

Also als Controller habe ich den msp430 von ti ins Auge gefasst Dieser 
hat einen internen 12 Bit ADC. Das Wechselsignal des Sensors kann man 
doch zuvor gleichrichten. Es soll naemlich auch nur dann eine genauere 
Betrachtung des Signals unternommen werden, wenn es fuer einen gewissen 
Zeitraum einen Pegel ueberschreitet.
Je nach den Ergebnissen der Frequenzanalyse soll eine spezifische 
Alarmmeldung z.B. per zigbee weggefunkt werden.
Mit Ultra low power ist gemeint, dass alles wirklich auf minimalen 
Energieverbrauch getrimmt sein soll. Zeitanforderungen sind da 
sekundaer. Echtzeit ist nicht gefordert. Es soll nur "irgendwann" die 
Meldung kommen: da war was ungewoehnliches
#1204120
Lesenswert?

Messsignal entkoppeln, gleichrichten und in einen Integrator geben. Kenn 
mich mit dem MSP430 nicht aus, aber beim AVR lässt sich zum Beispiel der 
Sleep-Modus durch den internen Analogkomparator beenden. Ansonsten musst 
du nen analogen noch davor bauen. Anschließend mit nem ext.ADC den SRAM 
füllen und die Alarmmeldung ausgeben. Anschließend ist es dir 
überlassen, was du mit den Messwerten anfängst. Bei dem ADC würde ich 
mal schauen, ob du einen mit enable-Eingang bekommst. Ansosnten 
Betriebsspannung mit High-Side-FET trennen. Musst natürlich eine 
Schutzzeit abwarten, damit die Spannung beim anschalten wieder sauber 
steht.

Die OpApm's hochohmig ausführen irgendwas um die 100k sollten die 
Widerstände schon haben. (Bsp. Inv.-Verstärker mit G = -2 --> R1 = 100k 
und R2 = 200k und maximalen Signalpeak von 2,5V. Sprich 25µA gegen 
virtuelle Masse und 12,5µA vom Ausgang. Der OPV selbst hat dann 
vielleicht 100µA Stromaufnahme --> macht ca.140µA/OpAmp)
Gast #1204129
Lesenswert?

Lowpower... wenn der ADC dauernd mit 1MSample arbeiten soll, und dann 
noch Analysen ausfuehrt, so ist nichts mit Stromspar. Die Frage ist, ob 
es sich um Einzelereignisse handelt, die analysiert werden muessen, oder 
ob man eine Vorlaufzeit hat. Eine kontinuierliche FFT ist in den meisten 
Faellen wahrscheinlich overkill.
Gast #1204164
Lesenswert?

Es handelt sich um Einzelereignisse, die dann entsprechend genauer 
untersucht werden sollen. Ist es sparsamer einen ext. ADC laufen zu 
lassen und im Falle des Falles (Komparator schaltet) diese Daten dann zu 
analysieren?
Gast #1204267
Lesenswert?

Allenfalls koennte ein externer ADC an einem FPGA samplen und die Werte 
in einem Ringbuffer ablegen. Ein Amplituden Komparator haette auch noch 
Platz. Das Fifo muesste so tief sein, wie die Aufstartzeit des 
Prozessors lang.
Gast #1204297
Lesenswert?

Ich ueberlge grade ob es moeglich ist das Signal auch noch zu 
verarbeiten, nachdem der Komparator geschaltet hat. Also ob die 
Schwingung noch vorliegt oder schon zu stark abgeklungen ist. Dann 
wuerde zwar nicht genau der Zeitpunkt der Schwingung analysiert, der die 
Analyse verursacht hat, sondern ein schwaecheres, aber vom 
Frequenzmuster her immer noch das selbe Signal oder? Das koennte man 
sich dann doch wohl noch irgendwie rekonstruieren, oder ist meine 
Ueberlegung falsch??
Gast #1204302
Lesenswert?

Ich denke schon. Wenn das Signal von einem Resonator mit einer festen 
Frequenzkommt, kann man wie vorgesehen irgendwann nach dem Maximum zu 
messen beginnen und immer noch etwas wissen - ausser der Amplitude. In 
diesem Fall, braucht man aber keine FFT, da die Frequenz ja schon 
bekannt ist. Auf der anderen Seite, wenn das signal irgendwas ist, so 
sollte man schon alles messen, um zu einer Aussage zu kommen.

Worum geht es denn ?
Gast #1204347
Lesenswert?

hmmm....das ganze sollte ohne externe Versorgung auskommen.
Es geht um eine Art Ueberwachung. Einfach ausgedrueckt: Einer haut mit 
nem Hammer auf das Objekt oder bohrt drauf rum....dies soll dann einen 
Alarm und auch eine moegliche Untersuchung / Analyse ausloesen, z.B. 
auch durch Schwingungen, die durch ermuedungsbrueche oder aehnliches 
verursacht werden
#1204361
Lesenswert?

Das bedeutet du kannst dir keine Verzögerung zwischen dem Ereignis und 
der Messwerterfassung leisten. Mein Vorschlag wäre folgender:

1. µC für Kommunikation wird erst durch Ereignis geweckt und aktiviert 
erst dann alle benötigten Übertragungseinheiten (Funkmodule etc.)

2. Analoge Messwertüberwachung und Trigger-Generierung 
(Entkoppeln,TP,evtl.Gleichrichter u.Integrator, Komparator)

3. Externen ADC, SRAM und CPLD für Steuersignale

Der CPLD enthält nur die Logic zum Auslesen des ADC über xx-Werte und 
Ablegen in den SRAM. Der Vorgang wird durch den Trigger gestartet. 
Trigger aktiviert gleichzeitig den µC. Dieser wartet bis CPLD den SRAM 
freigibt und kann die Daten auslesen. Aktiviert seine Übertragungsmodule 
und gibt Alarm. Am Ende wird der CPLD freigegeben, Übertragungsmodule 
abgeschalten und µC ist im Sleep.

Sollte doch vollkommen ausreichen. Und die Stromaufnahme sollte noch 
recht niedrig sein.
Gast #1204468
Lesenswert?

Joa, also waere der CPLD, der ADC und der SRAM immer aktiv und der 
controller und die funkeinheit wuerden nur bei entsprechender Triggerung 
die Werte aus dem SRAM weiterverarbeiten. Hmmm also muesste ich ohnehin 
quasi immer digital wandeln, um die Daten im Falle des Falles zur 
Verfuegung zu haben. Koennte man dann nicht auch gleich den internen ADC 
eines sparsamen Controllers nutzen und nur fuer den zeitpunkt der 
komplexeren Auswertung den Takt hochfahren?
#1205458
Lesenswert?

Hab mal kurz in DB vom MSP geschaut. Über den Sparbetrieb bin ich jetzt 
nicht informiert. Da du aber eine conversion time von 3,1µs hast kommst 
du gerade mal auf ca. 300kHz Abtastrate. Deine höchste Signalfrequenz 
liegt aber bei 400kHz. Selbst wenn du mit 800kH abtastest, ist die 
Amplitude bei 400kHz schon ordentlich gedämpft. Wenn du ne ordentliche 
Amplitude haben willst, solltest du schon in der Region 2MSPS arbeiten.

Von daher nichts mehr mit Controller allein.
#1206998
Lesenswert?

>Welcher mode waere den bestenfalls (moeglichst wenig Energie) noch
>moeglich, um den ADC noch sinnig betreiben zu koennen,...
LPM3 ist der kleinste wo interne Peripherie noch laufen kann. Allerdings 
muss man natürlich sagen das der ADC schon recht viel Strom verbraucht. 
Ich weiss nicht ob ein laufender µC noch so viel ausmacht. 
Wahrscheinlich wird LPM0 (CPU Stop) schon ausreichen.

>Und kann ich im Sleep mode noch was ins RAM speichern?
Ja. D.h. der ADC kann was speichern. Dein Programmcode natürlich nicht.
Gast #1213368
Lesenswert?

Mit was fuer einer Stromaufnahme durch den adc muesste man denn rechnen, 
wenn man z.B. mit 10kHz abtasten moechte? Die digitalisierten Daten 
sollten dann ins interne RAM geschrieben werden. Jeder Datenpunkt sollte 
dann ca. 1S gespeichert bleiben, bevor er dann vom naechst aktuelleren 
ueberschrieben wird. Falls vom analogen Komparator die Schaltschwelle 
ueberschritten wird, soll der Controller aufwachen und die (noch 
gespeicherten) Daten verarbeiten. So haette ich keinen Datenverlust, da 
der Controller ja auch ein wenig Zeit braucht um anzulaufen und evtl. 
auch die Daten vor der Schwellueberschreitung interessant sind.
Ist das so realisierbar? Schon jemand Erfahrungen damit gemacht?
Wie schreibe ich die Daten vom adc direkt in den Speicher?
#1213477
Lesenswert?

>Mit was fuer einer Stromaufnahme durch den adc muesste man denn rechnen,
>wenn man z.B. mit 10kHz abtasten moechte?
Laut Datenblatt um die 1mA.

>digitalisierten Daten sollten dann ins interne RAM geschrieben werden.
>Jeder Datenpunkt sollte dann ca. 1S gespeichert bleiben, bevor er dann
>vom naechst aktuelleren ueberschrieben wird.
MSP hat maximal 16kB RAM = 16384Byte a 2Byte pro Messung = 8192 
Messungen
Kommt also nicht ganz hin mit 10.000 Messungen pro Sekunde. Wären dann 
nur um 8000.

>...da der Controller ja auch ein wenig Zeit braucht um anzulaufen ...
Das geht schnell (ca. 1µS).

>Wie schreibe ich die Daten vom adc direkt in den Speicher?
DTC konfigurieren.
Gast #1217183
Lesenswert?

Dann koennte ich mir doch im internen Ram eine Art Ringpuffer aufbauen, 
in den der DMA jeden neuen Wert des ADC reinschreibt. Also zum Beispiel 
10KB vom RAM nehmen um Werte des ADC zu puffern und das ganze dann ohne 
Verbrauch durch die CPU. Schon jemand Erfahrung damit gesammelt?
Gast #1217730
Lesenswert?

Wenn es wirklich low power sein soll, dann sollte man die AD wandlung 
erst starten wenn wriklich eine gewisse Schwelle überschritten wird. Je 
nach Controller sollte es weniger als 1 ms dauern die AD wandlung zu 
starten. Gegen die 1 s Messzeit sollte das zu vernachlässigen sein.  Die 
ansprechschwelle könnte man auch relativ niedrig legen und ggf. bei 
einem zu kleinen Signal auch nach ein paar ms die Messung wieder 
abbrechen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren