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:
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?
Mehr Kosteneffizienz (das fühlt sich an wie Code-Golf):
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.
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:
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.
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:
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.
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.
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).
Kartmann
MCG
Tobalt
MCG
Tobalt
MCG
Kartmann
MCG
DamienD
MCG
DamienD
Lundin
MCG