Methoden zum Schalten von Widerständen

Ich habe eine Anwendung, bei der ich den Spannungsabfall über einem Widerstand messen muss, der zwischen 10 Ohm und 50 kOhm variiert. Da ich dies als Spannungsteiler eingerichtet habe, wobei das Ergebnis von einem AtoD gelesen wird, dachte ich, der beste Weg, um genau zu sein, darin besteht, je nach Widerstand des variablen Widerstands verschiedene Widerstände einzuschalten:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

So etwas wie oben. Dies muss von einem Mikrocontroller gesteuert werden, und mein erster Gedanke war, einen Multiplexer zu verwenden, um die verschiedenen Widerstände einzuschalten. Dies schien zunächst eine gute Idee zu sein, aber beim Durchsehen der Datenblätter dieser Komponenten war der ON-Widerstand ein Problem. Für die höheren Bereiche war es vernachlässigbar, aber wenn der 100R-Widerstand eingeschaltet war, war der Einschaltwiderstand des MUX signifikant genug, um das Ergebnis zu beeinflussen.

Dies ist ein budgetgesteuertes Design, sodass alle MUX/Decoder mit sehr niedrigem Widerstand usw. außerhalb des Budgets liegen (ich habe keine Kontrolle darüber). Mein nächster Gedanke war, vielleicht MOSFETs zu verwenden, um die Widerstände einzuschalten, da diese bei eingeschaltetem Widerstand extrem niedrig sein können, dies erfordert jedoch mehr Port-Pins auf meinem Mikrocontroller. 4 statt 2. Dadurch bleiben mir nur noch 2 I/O-Pins übrig, was nicht viel Platz lässt, um etwas anderes hinzuzufügen, das in Zukunft angefordert werden könnte. Diese Methode bedeutet auch mehr Komponenten, was die Platzierungskosten leicht erhöht.

Gibt es einen besseren Weg, dies zu tun, den ich vermisse? Oder sind die MOSFETs vielleicht der beste Weg, dies zu tun?

Decoder und Mosfets
@Kartman Ich habe das Budget in der Frage ein paar Mal erwähnt. Es muss eine günstige Lösung sein. Ja, die Komponenten kosten nicht viel, aber wenn Hunderte oder Tausende hergestellt werden, muss ich mich an ein knappes Budget halten. Das Hinzufügen weiterer Komponenten zur Lösung funktioniert nicht
Wenn Sie die Anwendung etwas besser erklären als "Spannungsabfall über einem Widerstand messen", bin ich sicher, dass die Leute Lösungen empfehlen können, die viel einfacher sind als die abgebildete.
@tobalt Ich glaube nicht, dass es mehr braucht. Das ist im Wesentlichen, was es tut. Messen des Spannungsabfalls über etwas, das einen unterschiedlichen Widerstand hat, je nachdem, was es misst. Es spielt keine Rolle, ob dies ein Thermistor, FSR oder was auch immer ist, es misst immer noch den Abfall über eine Widerstandsänderung
@MCG, also versuchen Sie im Wesentlichen, den unbekannten Widerstand zu messen? Weil alles andere von Ihrer Schaltung eingegeben wird (VCC, Vorwiderstände, Schalten)
@tobalt sicher, drücke es so aus, wenn du es vorziehst
@mcg 'billig' ist relativ. Definieren Sie Ihre Definition von billig, damit wir etwas haben, mit dem wir arbeiten können. Sie können in sot23 zwei Mosfets erhalten, wodurch Ihre Platzierungskosten verringert werden.
@Kartman Es ist schwierig, genau zu definieren, aber das gesamte Budget liegt unter 30 £. Dazu gehören auch das Gehäuse, die Leiterplatte, die Bestückung, die Komponenten, die Fertigungszeit usw., daher kann ich die Komponenten nicht genau beziffern
Welche Genauigkeit und Abtastrate benötigen Sie?
@Damien Genauigkeit beträgt max. 2 %, Abtastrate 1 kHz
@MCG Wie viele Bits rauschfreier Auflösung hat Ihr ADC bei dieser Abtastrate?
Verwenden Sie 4 ADC-Kanäle. Lassen Sie den Spannungsteiler fallen und verbinden Sie stattdessen jeden Widerstand als "Shunt" mit Masse. Stellen Sie sicher, dass Sie eine genaue Stromquelle haben. Aktivieren Sie jeweils einen Kanal.
@Lundin hat leider nicht genug zur Verfügung

Antworten (4)

Mehr Kosteneffizienz (das fühlt sich an wie Code-Golf):

  • nur 1 Steuerleitung
  • nur 1 Transistor (N JFET oder P MOSFET), 1 R und 1 C
  • unendlich viele mögliche Messbereiche
  • kann den ADC loswerden, wenn er nicht anderweitig benötigt wird (siehe unten)
  • muss kalibriert werden und könnte temperaturabhängig sein, aber das gleiche gilt in geringerem Maße für die geschaltete R-Methode (es hängt also von Ihrem gewünschten Genauigkeitsgrad ab).
  • 1kS/s ist mit einer MCU ehrgeizig (benötigt schnellen Steuertakt)

Geben Sie hier die Bildbeschreibung ein

Wie funktioniert es:

Indem Sie das Tastverhältnis der Steuerung steuern, variieren Sie die DC-Gate-Spannung und stimmen daher den Widerstand des FET kontinuierlich ab. Sie können auch Feedback verwenden, um AtoD auf eine definierte Spannung (z. B. VCC / 2) zu bringen, und Ihr Tastverhältnis gibt Ihnen dann den Wert von R1 (über eine Konvertierung, die Sie einmal erstellen müssen).

Später könnten Sie sogar den ADC reinigen (Kosten sparen) und das Feedback mit einem Komparator realisieren, sodass Ihre MCU den Arbeitszyklus direkt lesen kann.

Der ADC hat einen Puffer am Eingang, es war für die Frage einfach nicht wichtig, ihn hier einzufügen, da dies nicht der Teil der Schaltung ist, auf den ich mich konzentriere. Das Hinzufügen einer weiteren Komponente wie eines MUX sowie der MOSFETs ist keine gute Lösung, da dies, wie in den Kommentaren erwähnt, zusätzliche Kosten für das Design verursacht
Ok, das gibt mir eine Vorstellung davon, wie hoch die Kostensensibilität ist, die Sie meinen ;)
Woher kommen bei der Bearbeitung die unendlichen Messbereiche? Sie schalten immer noch einen FET, was einer meiner früheren Gedanken war? Was die Kalibrierung betrifft, so wird dies ebenso durchgeführt wie eine Temperaturkompensation für Umgebungstemperaturen zwischen -10 °C bis +50 °C
Indem Sie das Tastverhältnis der Steuerung steuern, variieren Sie die DC-Gate-Spannung und stimmen daher den Widerstand des FET kontinuierlich ab. Sie können Feedback verwenden, um AtoD auf VCC/2 zu bringen, und dann gibt Ihnen Ihr Arbeitszyklus den Wert von R1 (über eine Konvertierung, die Sie einmal erstellen müssen).
Code-Golf sollte häufiger in anderen Bereichen des Ingenieurwesens eingesetzt werden. Nicht als Selbstzweck, sondern als Methode, Komplexität und Kosten zu hinterfragen.
@winny Minimalismus finde ich ein wunderbares Gestaltungsprinzip. Fügen Sie nur dann mehr hinzu, wenn die Anforderungen dies ausdrücklich erfordern.
Aha ich verstehe. Noch sehr früh am Morgen! +1 dafür werde ich diese Schaltung in den nächsten Prototyp stecken und sehen, wie es funktioniert. Wenn sich keine anderen Lösungen ergeben, werde ich dies in ein paar Tagen akzeptieren. Prost für die Antwort!
Ist es nicht einfacher, PWM zu erwähnen?
@winny absolut ich finde das eine tolle idee. Normalerweise mache ich das bei der Arbeit, da alles kosteneffektiv sein muss, also muss ich die minimalste Lösung erreichen, bevor ich Dinge hinzufüge, nur wenn es sein muss
@MCG Ich empfehle, vorher einige schnelle Gewürzsimulationen durchzuführen, um ein Gefühl dafür zu bekommen, welcher Transistor dafür geeignet ist, was von Ihrem VCC und der Genauigkeit abhängt, mit der Sie den Arbeitszyklus variieren können. Besonders für MOSFET ist das Knie ziemlich scharf. Bei JFET erhalten Sie eine allmählichere Reaktion, aber ihr Low-End-Widerstand ist nicht so niedrig.
@PaulGhobril Ich denke, PWM ist zu speziell. Sie könnten stattdessen analoges Delta-Sigma erster Ordnung machen, wenn Sie den ADC schrubben. PWM bietet Ihnen auch eine eher geringe Präzision für einen bestimmten Steuertakt.
Ich werde auf jeden Fall zuerst Simulationen machen. Glücklicherweise spielt das Budget beim Prototyping keine so große Rolle, sodass ich ein paar verschiedene Methoden entwickeln und mehrere Lösungen ausprobieren kann

Wenn Ihr Mikrocontroller Tri-State-E/A-Pins hat, benötigen Sie möglicherweise keine Transistoren, um die Widerstände zu schalten. Verwenden Sie einfach drei IO-Pins und schalten Sie sie zwischen dem Modus mit hoher (Ausgang) und hoher Impedanz (Eingang) um:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Sie können Varianten dieser Schaltung mit den Widerständen parallel oder auf der niedrigen Seite usw. verwenden.

Prüfen Sie auch, ob Ihr Mikrocontroller über konfigurierbare Vorwiderstände in den Pins verfügt, auf die Sie sich verlassen können, um auf den Widerstand mit dem niedrigsten Wert zu verzichten.

[BEARBEITEN] Möglicherweise müssen Sie die Widerstandswerte anpassen, um innerhalb der aktuellen Fähigkeiten Ihres Mikrocontrollers zu bleiben. Vielleicht können Sie mit nur 2 Pins und 3 Widerständen bis zu 470 Ohm eine ausreichende Genauigkeit erzielen.

Dieser Mikrocontroller hat leider keine Tri-State-Pins, aber es ist eine gute Idee, also immer noch +1

Ihre Anforderungen (2% Genauigkeit bei 1 kHz Abtastrate) sind relativ hoch; Aus diesem Grund würde ich meiner Meinung nach "Tricks" vermeiden, die ein Oversampling erfordern, und mich an die Verwendung von MOSFETS halten, um die Widerstände einzuschalten.

Wenn Sie jedoch die Kosten senken möchten, können Sie möglicherweise mit weniger als 4 Widerständen davonkommen, abhängig von der effektiven rauschfreien Auflösung Ihres ADC bei dieser Abtastrate:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass dies nur eine Auflösung von 2 % betrifft, nicht unbedingt eine Genauigkeit von 2 %. Mit einem 16-Bit-ADC können Sie jedoch möglicherweise mit einem einzelnen 680-Ohm-Widerstand davonkommen (kein Umschalten erforderlich). Bei einem 12-Bit-ADC können zwei Widerstände ausreichen. Bei einem 10-Bit-ADC benötigen Sie wahrscheinlich drei.

Beachten Sie, dass Sie nicht den Widerstand mit dem höchsten Kaliber ausschalten müssen – Sie können einfach einen niedrigeren Widerstand parallel schalten. Wenn Sie also 2 Widerstände verwenden, benötigen Sie nur einen MOSFET usw.

Eine weitere gute Idee. +1 nochmal! Ich werde all diese in den nächsten Prototypen einarbeiten, damit ich sie alle testen kann. Mit welchem ​​Programm hast du diese Grafik erstellt? Oder war es eine Grafik, die Sie irgendwo gefunden haben?

Ein weiterer sehr kostengünstiger Weg. Während das Original den ADC loswerden und eine Menge Kosten sparen kann, kann es möglicherweise nicht in der Lage sein, 1 kHz Bandbreite zu erreichen, wenn der Steuertakt der MCU zu niedrig ist.

Hier ist eine andere Lösung, die den ADC erfordert, aber Null-Steuerleitungen verwendet und eine logarithmische Widerstandsmessung realisiert. Die Teilekosten sollten deutlich unter 50 Cent liegen. Die Ausgangsspannung wird über einige Jahrzehnte proportional zum Logarithmus von R sein. Da die Genauigkeitsanforderungen bescheiden sind, sollte die logarithmische Einzelbereichslösung in Ordnung sein.

Geben Sie hier die Bildbeschreibung ein

Wenn der Strom durch D1 und R1 für kleine R-Werte zu groß ist, kann eine Stromsenke mit zwei Transistoren um R1 gewickelt werden. Dadurch wird die Schaltung auch temperaturstabiler und verbraucht weniger Strom für minimale zusätzliche Kosten.

Die Verstärkungseinstellungen der Widerstände R2 + R3 müssen entsprechend dem Dioden- und VCC-Bereich gewählt werden.

Die Diode kann auch "unter" R1 liegen, wobei die Verstärkung gegen GND statt gegen VCC arbeitet. Dies hat den Vorteil, dass das Ausgangssignal auf GND bezogen ist (falls der ADC nicht VCC als Referenz verwendet).