Einfache adaptive Verstärkeroptionen für Sensorschnittstellen

Verwandt : Hochauflösender ADC für verrauschte Sensoren unter variablen Bedingungen


Ich baue eine Schnittstelle mit resistiven textilbasierten Sensoren, die je nach Umgebungsbedingungen unterschiedliche Widerstandsbereiche haben können. Um meine A/D-Wandler optimal zu nutzen, würde ich gerne einen adaptiven Verstärker verwenden, der dabei hilft, die unzuverlässige Leistung der Sensoren zu kompensieren.

Welche Möglichkeiten habe ich hier? Oder können Sie mir Referenzen zu diesem Thema nennen?

Ich kann mir zwei allgemeine Schemata vorstellen, die nützlich wären:

  1. Autokalibrierung durch Finden von Min- und Max-Werten in einem bestimmten Analysefenster (~30s-2min)
  2. Explizite Kalibrierung mit einer Toggle-to-Train-Schnittstelle
  3. ... Gibt es alternative Systeme, an die ich nicht denke?

Einige Einschränkungen

  • Es sollte möglichst eine Ein-Chip-Lösung (klein) sein (wie kapazitive Sensorchips)
  • Es sollte einfach zu konfigurieren und zu verwenden sein (ich bin kein Ingenieur und werde nicht bezahlt)
  • Es wird wahrscheinlich einen Mikrocontroller in der Nähe geben

Noch besser wäre ein Alleskönner-Chip mit Wheatstone-Brücke/Spannungsteiler, Tiefpassfilter und Verstärker.

Mehr über mein spezielles Setup

  • A/D-Wandler sind entweder die in einen Atmel-Chip eingebauten Wandler (könnte ATtiny85 oder ATmega32u4 sein) oder die Wandler, die in ein XBee Series 2-Radio eingebaut sind. Ich habe noch nie dedizierte A/D-Chips verwendet – ich bin mir nicht sicher, ob dies einen Vorteil hätte.
  • Der Sensor wird ein Stück Polymer-dotiertes leitfähiges Lycra von Eeonyx sein. Der Widerstand ändert sich um etwa 1 Größenordnung bei 30 % Dehnung.
  • Das Ganze wird an der Hand eines Darstellers montiert, also muss es klein und körperlich robust sein. Es besteht eine gute Chance, dass es drahtlos sein wird.
  • Präzision ist wichtig. Das Interface wird verwendet, um Echtzeit-Audioeffekte kontinuierlich zu variieren, dh es ist kein Schalter.
Können Sie weitere Details zu Ihrem aktuellen Setup angeben? dh: Art der verwendeten ADCs, welcher Berührungssensor, welcher Berührungscontroller.
Wie groß sind die Schwankungen, die Sie von Umgebungsänderungen erwarten?
Welche Bitauflösung benötigen Sie? Ich frage, weil ich denke, dass es einfacher wäre, die Spezifikation Ihrer ADCs um 4 Bit (x16) zu erhöhen und die Anpassung in Software vorzunehmen. Das sollte ausreichen, um eine Abweichung von einer Größenordnung zu erfassen. Wenn Sie bereits 16 oder 20 Bit Auflösung benötigen, wird das natürlich sehr teuer.
@anthony137 das ist eine interessante Idee. Ich habe an 10-Bit-Konverter gedacht, da diese normalerweise in Mikrocontroller eingebaut sind, aber ich werde mir High-Rez-Konverter ansehen.
@jpc muss ich testen. Ich hätte gerne ein System, das sich an eine Vielzahl unbekannter Bedingungen anpassen kann, aber ich kann einige ungefähre Zahlen erhalten.
Welche der Antworten ist die hilfreichste, @msutherl? Ich tendiere zu @Jaroslav's .
@tyblu keiner von beiden funktioniert wirklich für mich, da sie beide ungetestet sind und Jaroslavs zu kompliziert ist + zu viele Komponenten hat.
@tyblu Soweit es mich betrifft, kann Kortuk Ihnen das Kopfgeld zurückerstatten.

Antworten (3)

Hier ist die Grundidee:

Sensor

V1 ist der gefilterte PWM-Ausgang und R2 ist Ihr Sensor. U1 ist ein Spannungs-Strom-Wandler, wobei der Strom durch die Last R1 I = V1/R2 ist. Das bedeutet, dass die Spannung an R1 von beiden Eingängen abhängt. U2 und U3 ist ein Instrumentenverstärker mit Verstärkung 10, der die Spannung über R1 verstärkt.

Mit R1 = 100 Ohm und V1 = 0..5V funktioniert die Schaltung für R2 = 50..5000 zB über zwei Größenordnungen, was nach Ihren Angaben ausreichen sollte.

Sie nehmen es heraus und vergleichen es mit der Referenzspannung (4 V wären hier für einen maximalen Dynamikbereich angemessen) und verwenden eine sukzessive Annäherung an V1, um so nah wie möglich an die Referenzspannung heranzukommen. Aus V1 und bekanntem Spannungsabfall über R1 (zB Referenzspannung) können Sie nun den Wert von R2, Ihrem Sensor, berechnen. Dadurch erhalten Sie natürlich nur ein Ergebnis innerhalb der Auflösung von PWM, aber Sie können den Fehler (Differenz zwischen Ausgangs- und Referenzspannung) mit einem zweiten Instrumentenverstärker verstärken, um ihn in den Bereich des ADC Ihres Mikrocontrollers zu bringen, und dies bringt Ihnen zusätzliche Bits der Auflösung.

Sie benötigen zwei Operationsverstärker (U1 und Komparator) und zwei Instrumentationsverstärker. Verwenden Sie echte, anstatt sie aus Operationsverstärkern herzustellen, da die Ungenauigkeiten von Widerständen und Operationsverstärkern zu Fehlern führen.

Wenn zwei Größenordnungen nicht ausreichen, können Sie R1 durch ein digitales Potentiometer ersetzen, um einen weiteren Freiheitsgrad zu erhalten. Ich habe noch nie mit einem gearbeitet, daher weiß ich nicht, wie genau sie sind und ob eine solche Lösung eine Kalibrierung erfordern würde oder nicht.

Außerdem sollte ich erwähnen, dass die Idee von jpc kam.

AKTUALISIEREN:

Ok, ich muss OP zustimmen, dass dies nicht wirklich die Antwort auf seine Frage ist (obwohl es das Problem technisch löst). Ich habe mich von „adaptivem Verstärker“ im Titel hinreißen lassen, als Entschuldigung für analoges Design. Vergessen Sie alles, was oben geschrieben wurde, es sei denn, Sie möchten etwas (wenig) über Operationsverstärker lernen. Hier ist, hoffe ich, eine bessere Antwort und eine viel einfachere Lösung:

Verwenden Sie einen Widerstandsteiler, der von einem Spannungsregler gespeist wird (um ihn vom Rauschen anderer Schaltkreise zu trennen), wobei der obere Widerstand auf ungefähr den maximalen Widerstand eingestellt ist, den Ihre Sensoren haben können (Rmax), und der untere Widerstand der Sensor ist.

Stellen Sie die Referenzspannung für Ihren ADC auf die Hälfte des Ausgangs des Spannungsreglers ein.

Dann tasten Sie die Spannung am Sensor mit Ihrem ADC ab. Auf diese Weise benötigen Sie nur einen Single-Ended-Kanal pro Sensor. Ich habe ADC-Empfehlung in dem anderen Beitrag gemacht.

Wenn Sie einen 10-Bit-ADC verwenden, der in den von Ihnen erwähnten Mikrocontrollern integriert ist, erhalten Sie jedoch keinen großen Dynamikbereich. Die Reichweite mit analogen Schaltungen zu erweitern, wie die, die ich ursprünglich gepostet habe, würde zu viele zusätzliche Teile hinzufügen, weshalb ich empfehlen würde, einfach einen 24-Bit-ADC zu verwenden, wie den ADS1256, den ich in dem anderen Beitrag empfohlen habe, weil es Ihnen geben wird geringes Rauschen und hoher Dynamikbereich in einem einzigen Chip (plus die winzige Referenz und der Spannungsregler, der ebenfalls winzig sein kann - Sie können auch versuchen, den Regler wegzulassen und den Widerstandsteiler direkt von der Referenz zu speisen - dies wird Ihnen 1 Bit Auflösung rauben, aber es gibt sowieso viele davon). Sie müssen einige Zahlen knacken ("Automatische Kalibrierung durch Finden von Min- und Max-Werten in einem bestimmten Analysefenster" - ist eine gute Idee),

Ich hoffe, das ist etwas nützlicher.

UPDATE 2:

Dies ist der letzte: Ich habe MSP430-Mikrocontroller von TI durchgesehen und festgestellt, dass einige von ihnen einen 16-Bit-Sigma-Delta-ADC mit interner Referenz haben. Nämlich MSP430F2003 und MSP430F20013 . Das wäre Ihre Ein-Chip-Lösung, wenn Sie bereit sind, auf Atmels zu verzichten. Auch sehr geringe Leistung. Und sie haben Mikrocontroller mit 24 ADCs in der Warteschlange, aber diese sind noch nicht in Produktion. Dann gibt es auch PSoC-Mikrocontroller von Cypress, die über 20-Bit-Sigma-Delta-ADCs verfügen ( PSoC-3- und PSoC-5 - Serie), ebenfalls mit Referenz. Diese wären noch besser.

@ Jaroslav Ich bin mir nicht sicher, ob ich es verstehe. In einem Spannungs-Strom-Wandler kommt V1 normalerweise vom Sensor – in diesem Fall, da R2 der Sensor ist, welche Wirkung hat U1? Wozu dienen U3 und U2? Sind das Instrumentenverstärker? Wofür stehen sie? Schließlich sagen Sie etwas über die Messung des Spannungsabfalls an R1. Wie messe ich diesen Abfall und warum brauche ich ihn? Abschließend, welche Art von Kalibrierungsschema haben Sie im Sinn (siehe die beiden Optionen, die ich im Beitrag vorstelle)? Vielen Dank!
@ Jaroslav Ah, ich glaube, du hast auf den falschen Beitrag geantwortet. Siehe hier: electronic.stackexchange.com/questions/11978/…
Danke für die Bestätigung, aber um ehrlich zu sein, habe ich mir etwas einfacheres vorgestellt. :) Ich denke, Sie verwenden den ADC hier nicht wirklich viel?
@jpc in der Tat, 3 Operationsverstärker nehmen sowieso zwei viel Platz ein (8 Kanäle, am Handgelenk montiert)
@jpc Ihre Lösung erhöht den Dynamikbereich nicht wirklich. Simulieren oder messen Sie, um herauszufinden, warum. Außerdem weist es aufgrund der Basis-Emitter-Diode während der ersten 0,6 V eine Nichtlinearität auf.
@msutherl Ich gebe zu, dass es kompliziert ist, aber das ist oft das, was es braucht. Sie haben nach einem adaptiven Verstärker gefragt, ich habe ihn bereitgestellt :) Verwenden Sie für ein am Handgelenk befestigtes 8-Kanal-Gerät ADS1298, das alles auf einem Chip integriert, einschließlich rauscharmer Referenz, und einen geringen Stromverbrauch hat. Ich verabschiede mich ins Wochenende, aber wenn Sie noch wirklich genauer erklären möchten, wie mein Design funktioniert, kann ich das am Sonntag beantworten.
@Jaroslav: Sie haben Recht, dass die Nichtlinearität die Multiplikation beendet und die Verstärkung des Dynamikbereichs auf das 2-fache oder höchstens das 4-fache (also höchstens 2 Bit) begrenzt. Was halten Sie davon, einen Operationsverstärker hinzuzufügen, um die Stromquelle zu linearisieren?
@msutherl Ich habe die Antwort mit einer hoffentlich besseren Lösung für Ihr Problem aktualisiert.
@jpc Ja, mit einer durch PWM geregelten linearen Stromquelle würde es funktionieren und es wäre einfach. PWM-Rauschen muss jedoch gut gefiltert werden, da es sonst zu einem dominierenden Rauschen wird. Die V-Versorgung auch. Problematischer könnte sein, dass die Rangierung auf einer langsamen Rückkopplung basieren würde, was bedeutet, dass der Konverter Werte verfehlt, wenn sie außerhalb des Bereichs liegen. Mit 24-Bit-ADC können Sie den Feed-Forward-Mechanismus verwenden, um Ihre Reichweite anzupassen, so dass es am Ende eine bessere Lösung ist (es sei denn, Sie stören diesen Nachteil nicht) und auch einfacher für Leute, die keinen schwarzen Gürtel in Analog haben. fu.
@Jaroslav Ich glaube, dass in dieser Anwendung das Feedback nicht sehr schnell sein muss. Aber ich stimme auch zu, dass ein 24-Bit-ADC eine bessere Lösung für dieses Problem ist, zumal das OP keine Kostenbeschränkungen hat und eine geringe Größe und geringe Komplexität wünscht. Danke für all eure Hilfe und Vorschläge (es zeigt, dass ich eher digital als analog bin).

Wenn die Änderungen des Sensorwiderstands groß sind (> 50%), können Sie anstelle der (komplizierteren) Wheatstone-Brücke eine Spannungsteilerschaltung verwenden. Sie können den Dynamikbereich dann leicht verbessern, indem Sie die Versorgungsspannung variieren.

Eine einstellbare Versorgungsspannung kann einfach aus der PWM in Ihrem Mikrocontroller zusammen mit einem RC-Filter und einer spannungsgesteuerten Stromquelle hergestellt werden.

Hier ist ein grobes Schema meiner Idee:

Schema(aus Socratic Electronics von Tony R. Kuphaldt )

Sie verbinden dann die gefilterte PWM-Spannung mit dem nicht invertierenden (+) Eingang des Operationsverstärkers.

Für schnelles Multiplexing könnten Sie zwei solche Stromquellen erstellen. Wenn Sie alle geraden Sensoren mit einem und alle ungeraden mit dem anderen verbinden, können Sie die Spannung am nächsten Sensor ändern, während Ihr ADC noch abtastet.

Sie sollten eine Präzisionsspannungsreferenz für den ADC verwenden. Sie können auch 1 oder 2 Bit gewinnen, indem Sie einen gleitenden Durchschnittsfilter in Ihrer Software verwenden.

PS. Ich möchte Jaroslav Cmunt für seine enormen Verbesserungen an dieser Antwort danken.

Haben Sie diese Seite gelesen?

Es gibt viele Beispiele für tragbare Elektronik, darunter einige mit Eeonyx-Stoffen. Die Website enthält Beispiele für Sensorschaltungen (ardunio und xbee).

Sie brauchen nicht viele Komponenten, um eine Wheatstone-Brücke zu bauen, und mit 1 Sensorschaltung, die mit den 8 Sensoren gemultiplext ist, sind Sie wahrscheinlich am besten dran. Sie können immer noch 100 Abtastungen pro Sekunde oder mehr ganz einfach an jedem Eingang erhalten. Verwenden Sie eine Stoffplatine (überprüfen Sie erneut die Website oben), um die Brücke zu erstellen. Oder führen Sie einfach Sensordrähte zum Handschuh und verstauen Sie die gesamte Sensorelektronik in einem am Gürtel befestigten Paket. Die meisten Stoffsensoren, die ich gesehen habe, haben einen relativ hohen Widerstand, die 0,1 Ohm, die Sie vom Kabel zwischen der Gürteleinheit und den Handschuhen erhalten können, spielen keine Rolle.

Bringen Sie einen Temperatursensor in jedem Handschuh an und verwenden Sie das Ergebnis, um bei Bedarf eine Korrektur in der Software vorzunehmen, um sich an Umgebungsänderungen anzupassen. Möglicherweise die Handschuhe vor jedem Gebrauch kalibrieren, je nach Intelligenz des Dolmetschers möglicherweise nicht erforderlich.

Ich nehme an, das Xbee-Modul überträgt an einen Computer, baut die Kalibrierungsfunktion in den Computer ein und führt tatsächlich so viel Verarbeitung wie möglich auf dem Computer aus, z. B. Temperaturkorrektur.

Bonuspunkte, wenn Sie nur ein neuronales Netzwerk verwenden, um die Sensoreingabe in eine Aktion umzuwandeln. Dies erleichtert das Training und passt sich den Handbewegungen verschiedener Personen an.