Hallo zusammen!
Ich möchte mit einem STM32 ADC Signale zwischen 5V und 50V messen.
- Bei geringen Spannungen hätte ich gerne mehr Auflösung, 50V als
"festen" Messbereich zu verwenden scheidet also aus. 4 Messbereiche oder
so würde schon reichen.
- Eine "manuelle" Auswahl des Messbereichs ist ok, da der gewünschte
Messbereich vorher bekannt ist.
- Das Umschalten muss per Software gehen, also kein Poti, Schalter, etc.
davor.
Was sind hier üblicherweise die Lösungen?
Gesehen hatte ich verschiedene Spannungsteiler, deren Abgriff über einen
Multiplexer an den ADC geschalten wird.
Leider habe ich dort das Problem, dass bei hohen Messspannungen (großer
Messbereich) die Eingangsspannung des Multiplexers für kleine Spannungen
zu hoch ist. Versorgungsspannung des Systems sind 3.3V, besser 1.8V.
Eine Z-Diode am Eingang würde das beseitigen, dann ist aber die
Eingangsimpedanz nicht mehr konstant...
Welche Architekturen würdet ihr verwenden?
Danke,
Mike
Mike schrieb:> Eine Z-Diode am Eingang würde das beseitigen, dann ist aber die> Eingangsimpedanz nicht mehr konstant...
Dann benutze die Eingangs-Schutzdioden und begrenze den Strom mit einem
genügend hochohmigen Längswiderstand. Wenn das zu hochohmig wird, kannst
du nach dem Multiplexer noch einen OpAmp als Impedanzwandler schalten.
Mike schrieb:> Ich möchte mit einem STM32...
Tja, zu diesem speziellen Thema kann ich dir nix sagen - aber:
Wenn es auch mit anderen Controllern oder gar mit sogenannten
ADC-Schaltkreisen gehen soll, wäre eine Architektur dieser Art denkbar:
1. konstanter Vorwiderstand (R1) vom Meßobjekt zum Eingang der
Meßschaltung.
2. ebenso konstanter Widerstand (R2) vom Eingang der Meßschaltung zu GND
3. Schaltbarer Zusatzwiderstand (R3) parallel zu R2
Damit kannst du das Teilerverhältnis ändern, ohne daß dabei unbenutzte
Multiplexer-Eingänge zu hohe Spannung abkriegen.
W.S.
Flo schrieb:> 74hv4851
Die Artikelnummer gibt es wohl nicht. Welchen meinst du genau?
Dietrich L. schrieb:> Dann benutze die Eingangs-Schutzdioden und begrenze den Strom mit einem> genügend hochohmigen Längswiderstand. Wenn das zu hochohmig wird, kannst> du nach dem Multiplexer noch einen OpAmp als Impedanzwandler schalten.
Signalpfad wäre also:
Spannungsteiler > Längswiderstand > Multiplexer > Opamp > MCU/ADC?
Mhh, klingt eigentlich nicht schlecht?!
W.S. schrieb:> Schaltbarer Zusatzwiderstand (R3) parallel zu R2
Klingt gut. Was verwendet man als Schalter? Einfach ein MOSFET oder eher
einen Schalter wie MC74VHC1GT66?
Danke und beste Grüße,
Mike
Wenn der Controller Schutzdioden integriert hat und somit bei einem
hochohmigen Spannungsteiler die Eingangsströme kein Problem sind könnte
man auch über mehrere verschiedene Spannungsteiler nachdenken, die auf
verschiedene ADC Pins des Controllers gehen. Ggf. Auch Schutzdioden
extern hinzufügen.
Wenn es ausreichend ADC-Eingänge gibt und man generell genügend Pins zur
Verfügung hat könnte man sich alle externen Schalter sparen.
Mike schrieb:> Was sind hier üblicherweise die Lösungen?
Das hängt von den Ansprüchen ab.
Eine Möglichkeit ist ein PGA.
Damit hast du alles zusammen und auch gleich ein niederohmiges Signal
für den ADC.
Mike schrieb:> Was sind hier üblicherweise die Lösungen?
Ich würde einen ADC nehmen, der die 50V hinreichend genau auflösen kann.
Drei echte Bit mehr reichen da schon.
So etwas wie hier im Bild habe ich schon gebaut für solche Zwecke. Eine
Zenerdiode direkt parallel zum Teiler geht nicht, viel zu weich im
Knick. Die Schaltung im Bild spannt die Zenerdiode im Arbeitspunkt 2,7V
vor, die Silizium-Diode am Spannungsteiler leitet ab 2,7+0,6V ab. Somit
wird die Spannung am ADC Eingang auf 3,3V geklemmt. Zugegebenermaßen
kann es hier ab ca. 3,1V etwas holprig werden, man kann auch die Z-Diode
auf 3,0V setzen, dann ist die max. Spannung am ADC 3,6V - eigentlich
immer noch unproblematisch für die Ableitdioden im ADC.
Eine Z-Diode kann als Sammelpunkt für mehrere Eingänge genutzt werden.
Mike schrieb:> Leider habe ich dort das Problem, dass bei hohen Messspannungen (großer> Messbereich) die Eingangsspannung des Multiplexers für kleine Spannungen> zu hoch ist.
Mit dem MUX nur den unteren Widerstand umschalten. Der obere Widerstand
ist z.B. fest 1M. Eine Diode gegen VCC verhindert das Hochlaufen beim
Umschalten.
Als MUX ein 74HC4052. Die eine Hälfte schaltet den Widerstand um, die
andere den ADC-Eingang, damit der ON-Widerstand die Messung nicht
verfälscht.
Das reicht als finaler Ratschlag:
Lothar M. schrieb:> Ich würde einen ADC nehmen, der die 50V hinreichend genau auflösen kann.
Aber.. warum derart einfach die Angelegenheit final lösen, wenn es auch
als Thema dieses Threads dienen kann und man partout mit einem STM32
anstelle eines ordentlichen ADC herumbasteln will?
W.S.
W.S. schrieb:> Aber.. warum derart einfach die Angelegenheit final lösen, wenn es auch> als Thema dieses Threads dienen kann und man partout mit einem STM32> anstelle eines ordentlichen ADC herumbasteln will?
Weil Kosten, Entwicklungsaufwand (auch Firmware), PCB Area, Sourcing der
Komponenten (n ADC ist auf jeden Fall kritischer als n dummer MUX oder
so)...
Peter D. schrieb:> Die eine Hälfte schaltet den Widerstand um, die> andere den ADC-Eingang, damit der ON-Widerstand die Messung nicht> verfälscht.
Kannst du das nochmal genauer erklären? Sonst klingt die Lösung schon
anständig!
Mike schrieb:> (n ADC ist auf jeden Fall kritischer als n dummer MUX oder so)...
Das ist eine Fehleinschätzung, denn ein dummer Mux hat auch so seine
Eigenheiten. Um die zu erkennen, musst du natürlich das Datenblatt lesen
und verstehen können.
> Weil Kosten, Entwicklungsaufwand (auch Firmware), PCB Area, Sourcing der> Komponenten
Ich habe das im Kopf schon eingepreist: der eine einzige zusätzliche
höher auflösende ADC ist weniger aufwendig in Entwicklung und Betreuung,
insgesamt billiger, reproduzierbarer, weniger ausfallgefährdet, kleiner,
einfacher zu beschaffen, usw., usf...(*)
Allein schon deshalb, weil deine selbstgefrickelte Schaltung aus zig
Bauteilen sicher noch einige urige Überraschungen bringen wird. Die eine
ist z.B. die, dass sich durch eine Klemmdiode (egal ob extern oder die
Bodydiide) die Eingangsimpedanz der Gesamtschaltung ändert, sobald die
Diode zu leiten beginnt.
(*) Ein Tipp:
Druck diesen Post aus und mach hinter jeder Punkt in meiner Aufzeichnung
ein Häkchen, sobald er zutrifft. Du musst diesen Ausdruck samt den
Häkchen niemandem zeigen, er dient nur der Kontrolle und dem Lerneffekt.
Der Lerneffekt ist dieser: wenn es die Lösung für dein Problem bereits
gibt, dann nimm sie. Alles andere ist aufwendiger und teurer.
Lothar M. schrieb:> Mike schrieb:>> Was sind hier üblicherweise die Lösungen?> Ich würde einen ADC nehmen, der die 50V hinreichend genau auflösen kann.> Drei echte Bit mehr reichen da schon.
Es gibt aber auch Anwendungsfälle in denen die hohe Auflösung über
mehrere Bereiche gewünscht ist, Multimeter sind da beispielsweise sehr
beliebt.
Von Intersil gibt es ein Application Note wie Autoranging realisiert
werden kann, verwendet wird ein ADC mit BCD Ausgang*, das Verfahren kann
aber natürlich auch bei anderen ADCs angewandt werden.
https://www.renesas.com/eu/en/document/apn/an028-building-auto-ranging-dmm-icl7103aicl8052a
*Solche ADCs werden häufig noch in günstigen Multimetern oder
Einbauinstrumenten verwendet.
Mach die unteren (dann parallelen) Widerstände des Spannungsteilers
einfach mit einem kleinen Mosfet in Serie schaltbar.
Die Mosfets sehen kaum Leistung oder Spannung und der Rdson kann auch im
Ohm-Bereich noch in der Toleranz der Teilerwiderstände untergehen.
Sollte kosten- und verfügbarkeitstechnisch also kein Problem werden.