Forum: Analoge Elektronik und Schaltungstechnik Kapazitäten multiplexen


von Magnus L. (muepsi)


Lesenswert?

Hallo liebe Community,

ich hoffe ihr könnt mir helfen. Ich habe mir mit einem Timer555 einen 
RC-Oszilator gebaut und kann die Frequenz mit Hilfe von einem Atmega8515 
messen und lasse mir die Frequenz im Moment per UART am PC ausgeben. Das 
funktioniert alles soweit. Ich kann mir mit der Frequenz die Kapazität 
zurückrechnen. Jetzt würde ich gerne mehrere verschiedene Kapazitäten 
messen und da steht es etwas an. Was ich bis jetzt probiert habe, war 
einen weiteren 555 einzusetzen um einen neuen Oszilator zu erzeugen und 
mit Hilfe eines Multiplexers CD4051 das Signal zu meinen extern 
Interrupteingang vom Atmega multiplexen. Was an und für sich auch 
funktioniert hat. Ich möchte aber nicht für jede weitere Kapazität einen 
weiteren 555 einsetzen... das wären dann viel zu viele. Dann habe ich 
mir gedacht, ich könnte verschiedene Kapazitäten auf einen 555 als 
RC-Oszilator multiplexen. Leider haben sich die zwei Kapazitäten bei der 
Frequenzmessung beeinflusst. Mache ich etwas grundlegend falsch? Hat 
jemand vielleicht Anregungen wie man das anders/besser lösen könnte? 
Schaltungsplan wird noch kommen, aber ich hoffe man kann sich mit der 
Erklärung schon mal etwas vorstellen.

Liebe Grüße
Magnus

: Verschoben durch Moderator
von Egon D. (Gast)


Lesenswert?

Magnus L. schrieb:

> [... vier Zeilen Text...]
>
> Jetzt würde ich gerne mehrere verschiedene Kapazitäten
> messen [...]
>
> [... weitere 12 Zeilen Text...]

Okay.
Quintessenz: Du möchtest Kapazitäten messen und hast
Dir vorgestellt, das mittels eines Kapazitäts-Frequenz-
wandlers zu bewerkstelligen. Habe ich das richtig
verstanden?

Anschlussfragen: In welchem Wertebereich liegen die
Kapazitäten ungefähr? Picofarad? Millifarad?

Was sind das eigentlich für Kapazitäten? Irgendein
Sensor?

Willst Du nur ein paar diskrete Werte unterscheiden
können, oder brauchst Du einen Messwert mit einer
gewissen Genauigkeit?

von Magnus L. (muepsi)


Lesenswert?

vielen Dank für die schnelle Hilfe :)

ja du hast es gut auf den Punkt gebracht. Die Kapazitäten werden dann 
später mal Sensorwerte sein. Aber jetzt habe ich, um mal das Konzept zu 
testen, normale Keramikkondensatoren verwendet. Die Werte werden in der 
Größenordnung im Pico-Bereich sein.

Ich werde einen Messwert mit einer gewissen Genauigkeit benötigen.

von Egon D. (Gast)


Lesenswert?

Magnus L. schrieb:

> ja du hast es gut auf den Punkt gebracht.

Gut. Und besten Dank für die zielführenden Antworten
unten.


> Die Kapazitäten werden dann später mal Sensorwerte
> sein. Aber jetzt habe ich, um mal das Konzept zu
> testen, normale Keramikkondensatoren verwendet.

Ja, alles klar.


> Die Werte werden in der Größenordnung im Pico-Bereich
> sein.

Ach du großer Gott.

Kapazitäten dieser Größe will man in der Regel nicht
elektronisch umschalten.

Wie weit werden denn die Sensoren in der Praxis vom
zentralen Mikrocontroller entfern sein? Zentimeter?
Meter?


> Ich werde einen Messwert mit einer gewissen Genauigkeit
> benötigen.

Okay.

Also... die Antwort wird Dir zwar nicht gefallen, aber
sei's drum:

Das C/f-Wandler-Prinzip ist tatsächlich für Sensorsignale
nicht so schlecht, wie man denken könnte. Der Wetterdienst
(zahlreicher Länder) hat das jahrzehntelang für seine
Radiosonden verwendet, die an Gasballons jeden Tag bis zu
40km hoch in die Atmosphäre aufsteigen.

ABER:
In Deinem Falle ist es tatsächlich das Einfachste, für
jeden Sensor einen eigenen Oszillator aufzubauen, der
möglichst nahe am Sensor angeordnet werden. Jeder Sensor
wird (zusammen mit seinem Oszillator) individuell
kalibriert. Wenn das vernünftig dimensioniert und
aufgebaut wird, kann das ziemlich genau werden.

Die Messwerterfassung funktioniert hier mittels Frequenz-
messung; Messstellenumschalter können recht einfach
mit Analogschaltern oder ggf. sogar mit Logikgattern
realisiert werden -- die Spannungen sind ja relativ groß.


Alternative: Kapazitätsmessung mit Wechselspannung und
I/U-Konverter (OPV); mehrere Messkanäle je Mikrocontroller
(z.B. acht Stück); Telemetrie (Fernübertragung) mittels
digitaler Schnittstelle zum zentralen µC.

von Lurchi (Gast)


Lesenswert?

Man könnte auch die Sensoren per 4051 / 4052 umchalten, das gibt aber 
zusätzliche Kapazität und Fehler. Es ginge im Prinzip über Reed Relais, 
aber das ist ein getennter NE555 (bzw. besser eine CMOS variante) 
vermutlich günstiger. Der Vorteil der Umschaltung ist, dass man auch 
einen Ref. Kondensator auswählen kann.

von Magnus L. (muepsi)


Lesenswert?

>ABER:
>In Deinem Falle ist es tatsächlich das Einfachste, für
>jeden Sensor einen eigenen Oszillator aufzubauen, der
>möglichst nahe am Sensor angeordnet werden. Jeder Sensor
>wird (zusammen mit seinem Oszillator) individuell
>kalibriert. Wenn das vernünftig dimensioniert und
>aufgebaut wird, kann das ziemlich genau werden.

Das ist fix der beste Weg um einen genauen Messwert zu erhalten. Aber 
wenn ich mir vorstelle, dass ich mehr als 10 Sensoren messen möchte 
würde ich gerne noch nach weiteren Lösungen suchen.

Die Sensoren werden dann in weiterer Folge nur wenige Zentimeter von der 
Elektronik entfernt sein.

>Alternative: Kapazitätsmessung mit Wechselspannung und
>I/U-Konverter (OPV); mehrere Messkanäle je Mikrocontroller
>(z.B. acht Stück); Telemetrie (Fernübertragung) mittels
>digitaler Schnittstelle zum zentralen µC.

Denkst du da an eine Wechselspannungsmessbrücke?

>Man könnte auch die Sensoren per 4051 / 4052 umchalten, das gibt aber
>zusätzliche Kapazität und Fehler.

Wahrscheinlich ist das zu naiv gedacht:
Ich habe die Eingänge von meinen MUX (im Moment eh nur zwei) mit 
Kapazitäten beschalten, sprich eine Elektrode am Eingang den anderen 
direkt auf Masse. Per µC wechsle ich zwischen diesen zwei Eingängen hin 
und her und messe jeweils für jeden Eingang 5x die Frequenz und bilde 
erstmal den Mittelwert. Den Ausgang vom MUX habe ich an den Timer555 
gehängt. Was ich jetzt aber nicht ganz verstehe, ist das wenn ich bei 
einem Eingang vom MUX die Kapazität ändere, dass sich das auf die 
Frequenz vom anderen Eingang auswirkt.. Habe schon verschiedene 
Beschaltungen getestet und leider haben alle nicht so funktioniert wie 
ich mir das vorgestellt habe. Aber ich merke schon das ich mal schnell 
die Schaltungspläne machen muss damit ihr euch das besser vorstellen 
könnt, aber ich hoffe ihr habt schon mal ein Bild im Kopf.

vielen Dank für eure Hilfe :)

lg Magnus

von Dieter (Gast)


Lesenswert?

Magnus L. schrieb:
> Was ich jetzt aber nicht ganz verstehe, ist das wenn ich bei
> einem Eingang vom MUX die Kapazität ändere, dass sich das auf die
> Frequenz vom anderen Eingang auswirkt..

Parasitäre Kapazitäten, und die sind überall!
Seriell und in Reihe.

Die haben auch Halbleiter und die ändern sich mit den Spannungen 
ebenfalls. Es gibt dafür auch eine Anwendung, nennt sich 
Kapazitätsdioden.

von Magnus L. (muepsi)


Angehängte Dateien:

Lesenswert?

Habe nun mal eine Grundschaltung skizziert, wie ich es mir vorgestellt 
habe und auf dem Steckbrett aufgebaut habe. Genau dort treten die oben 
beschrieben Probleme auf. Seht ihr eine Möglichkeit die Schaltung so zu 
modifizieren sie für die Anwendung verwenden zu können? Oder ist sie 
einfach Mist und ich soll lieber andere Wege gehen? Die Schaltung wird 
mit 5V vom STK500 versorgt.

PS: habe die Schaltung versehentlich 2x hochgeladen und finde nichts wie 
ich es wieder auf eins reduzieren kann xD

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Magnus L. schrieb:
> Das ist fix der beste Weg um einen genauen Messwert zu erhalten. Aber
> wenn ich mir vorstelle, dass ich mehr als 10 Sensoren messen möchte
> würde ich gerne noch nach weiteren Lösungen suchen.

Das kannst du vergessen. Besser wirds nicht.

Magnus L. schrieb:
> Die Kapazitäten werden dann später mal Sensorwerte sein.
> Die Werte werden in der Größenordnung im Pico-Bereich sein.

Bei derart kleinen Kapazitäten bringt dir jeder Multiplexer einen 
unübersehbar großen Fehler rein. Von der Kabelage mal ganz abgesehen.

Ein (7)555 kostet nur wenige ¢. Sicherlich weniger als der Sensor 
selber. Und es ist dann trivial, jeden Sensorknoten individuell 
abzugleichen - sofern man es überhaupt in Hardware machen will. Dazu 
noch sind die dann zu übertragenden Signale vollkommen unkritisch. Du 
hast GND, Versorgungsspannung und je Knoten ein digitales Signal, bei 
dem die Information in der Frequenz steckt. Das heißt, daß du dir keine 
Gedanken über Brummeinstreuung, Dämpfung, verschliffene Flanken etc. 
machen mußt. Oder über die Kabellänge. Auch eine galvanische Trennung 
ist trivial mit einem Optokoppler pro Sensor machbar.

von Egon D. (Gast)


Lesenswert?

Magnus L. schrieb:

> Das ist fix der beste Weg um einen genauen Messwert
> zu erhalten. Aber wenn ich mir vorstelle, dass ich
> mehr als 10 Sensoren messen möchte würde ich gerne
> noch nach weiteren Lösungen suchen.

Naja, Du könntest 556 verwenden; da sind dann ZWEI
Oszillatoren in einem Gehäuse... :)

Aber ich habe Dich schon richtig verstanden; das ist
auch okay so.


> Die Sensoren werden dann in weiterer Folge nur wenige
> Zentimeter von der Elektronik entfernt sein.

Gut; das verbessert die Lage, weil die Kapazitäten der
Leitungen keine große Rolle spielen.

Trotzdem bleibt richtig, was meine Vorredner schon
gesagt haben: Das Problem sind die parasitären
Kapazitäten im Multiplexer, die gern auch mal spannungs-
abhängig sein können, wenn es sich um Sperrschicht-
kapazitäten handelt. Für den HCF4051 von ST nennt das
Datenblatt bis zu 30pF (!).

Es wird besser werden, wenn Du statt eines CMOS-
Multiplexers Reed-Relais verwendest, aber das ist
andererseits ökonomischer Blödsinn.


>>Alternative: Kapazitätsmessung mit Wechselspannung und
>>I/U-Konverter (OPV); mehrere Messkanäle je Mikrocontroller
>>(z.B. acht Stück); Telemetrie (Fernübertragung) mittels
>>digitaler Schnittstelle zum zentralen µC.
>
> Denkst du da an eine Wechselspannungsmessbrücke?

In die Richtung, ja.


> Wahrscheinlich ist das zu naiv gedacht:
> Ich habe die Eingänge von meinen MUX (im Moment eh nur zwei)
> mit Kapazitäten beschalten, sprich eine Elektrode am Eingang
> den anderen direkt auf Masse. Per µC wechsle ich zwischen
> diesen zwei Eingängen hin und her und messe jeweils für jeden
> Eingang 5x die Frequenz und bilde erstmal den Mittelwert.
> Den Ausgang vom MUX habe ich an den Timer555 gehängt.

Ja, bis hierhin logisch.


> Was ich jetzt aber nicht ganz verstehe, ist das wenn ich
> bei einem Eingang vom MUX die Kapazität ändere, dass sich
> das auf die Frequenz vom anderen Eingang auswirkt.. Habe
> schon verschiedene Beschaltungen getestet und leider haben
> alle nicht so funktioniert wie ich mir das vorgestellt
> habe.

Hmm. Da muss ich erstmal drüber nachdenken.

Es ist wohl möglich, dass man das Verhalten der Schaltung
noch verbessern kann, aber wird unter Umständen wildes
Gewürge. Einfach geht anders :)

von Achim S. (Gast)


Lesenswert?

um kapazitive Sensoren im pF-Bereich auslesen zu können, habe ich gute 
Erfahrungen mit Capacitance-to-Digital Konvertern gemacht.

https://www.analog.com/en/parametricsearch/10889#/

Die kosten zwar ein bisschen mehr als ein 555 (und sind eigentlich eher 
für kapazitive Bedienelemente gedacht).

Aber du bekommst sie mit der Anzahl von Kanälen, die du brauchst. Du 
kannst sie direkt am Sensor anbringen und hast wenig störende parasitäre 
Kapazität. Du erhältst eine sehr hohe Auflösung und nach meinen 
Erfahrungen auch eine sehr gute Reproduzierbarkeit. Und du kannst die 
digitalisierten Daten einfach über SPI oder I2C zum Controller bringen.

von Udo K. (Gast)


Lesenswert?

Na ja, wenn die Genauigkeitsanforderung nicht zu hoch ist (2-20%),
und die Kapazität der Sensoren > 30 pF ist, dann nimm doch einen uC.

Spendier pro Sensor einen IO pin.

Zum Messen der Kapazität schaltest du den Pin auf Ausgang, und
ziehst ihn auf GND.

Dann schaltest du den IO auf Eingang, mit einem 10Meg Pull-Up.

Der Pull-Up zieht den Pin rauf, und du pollst den Pin, bis
er High ist.
Die Zeit bestimmt die Kapazität.
Kostet dich 2 Euro, und wertet problemlos 10-30 Sensoren aus.

von Paul Schokemöhl (Gast)


Lesenswert?

Ich habe, weil's mich interessiert, bei Analog.com geschaut, diese ganze 
Family ist obsolet.

Ich würde dir vorschlagen, bleibe bei deinen 555, vielleicht gibt's die 
auch in SMD. Ich würde dir vorschlagen, mische die Ausgänge der 555er 
mit Digitaltransistoren BCR4711 oder Dioden als Wired-Or Verknüpfung. 
Schalte nur den 555 an Versorgungsspannung, den du gerade messen willst. 
Dieser Ratschlag mag seltsam erscheinen, aber ich habe die Erfahrung 
gemacht, das Oszillatoren sich gerne gegenseitig beeinflussen. Nur 
jeweils einen Oszillator zur Zeit zu betreiben, scheint mir ein 
preiswerter Work Around zu sein. 74HCT595 kann z.B. die 
Versorgungsspannungen der 555 ein und ausschalten.


Magst du bitte Mal Posten, wie du mit deinem uC Frequenzen messen 
kannst?

von Udo K. (Gast)


Lesenswert?

Habe ich doch geschrieben?  Beitrag vielleicht noch einmal lesen?

Wer keinen uC Programmierenn kann, der kann auch einen 1:8 Multiplexer
DG4051 oder ähnlich verwenden, die haben weniger als 10 pF 
Eingangskapazität.

Alles drunter wird aufwendig, wenn die Relay Variante nicht akzeptabel 
ist.

von Paul Schokemöhl (Gast)


Lesenswert?

Udo K. schrieb:
> Habe ich doch geschrieben?  Beitrag vielleicht noch einmal lesen?

Hab ich auch verstanden, ich wollte wissen, wie der TO Frequenzen mit 
dem uC misst.

von Udo K. (Gast)


Lesenswert?

Frequenzmessung mit einem Timer, nehme ich an?

Ich habe mir die Schaltung vom TE angeschaut.
Ich könnte mir vorstellen, dass die Schaltung ohne den
10 Farad Kondensator parallel zu den 3.3Meg besser funktioniert?

von Achim S. (Gast)


Lesenswert?

Paul Schokemöhl schrieb:
> Ich habe, weil's mich interessiert, bei Analog.com geschaut, diese ganze
> Family ist obsolet.

Meinst du damit die Capacitance-to-Digital Konverter?

Von den 11 hier gelisteten ICs
https://www.analog.com/en/parametricsearch/10889#/p4666=|Capacitance%20to%20Digital&d=4666|165|7|1746|4365|4163|4943|4730|s3|s5|s7
sind zwei am Auslaufen ("last time buy"), für eines rückt das Ende in 
absehbare Entfernung ("not recommended for new designs"). Die anderen 
sind "in Production".

Wie kommst du zur Aussage "die ganze Family ist obsolet"?

von Magnus L. (muepsi)


Lesenswert?

>um kapazitive Sensoren im pF-Bereich auslesen zu können, habe ich gute
>Erfahrungen mit Capacitance-to-Digital Konvertern gemacht.

Das klingt sehr interessant und werde mich mal einlesen.



>Der Pull-Up zieht den Pin rauf, und du pollst den Pin, bis
>er High ist.
>Die Zeit bestimmt die Kapazität.
>Kostet dich 2 Euro, und wertet problemlos 10-30 Sensoren aus.

Das ist dann quasi eine Messung von Tau=R*C? Denkst du das unterhalb von 
30 pF wird die Genauigkeit zu schlecht oder warum gibst du diese Grenze 
an? Aber ich werde es auf jeden Fall mal testweise ausprobieren, da es 
ja wirklich eine sehr schnelle und preiswerte Methode ist.

>Ich würde dir vorschlagen, mische die Ausgänge der 555er
>mit Digitaltransistoren BCR4711 oder Dioden als Wired-Or Verknüpfung.
Das ist mir auch schon bei meiner Schaltung aufgefallen, als ich es mit 
2 Timer555 aufgebaut hatte. Danke für den Hinweis :)

von Udo K. (Gast)


Lesenswert?

Die 30 pF sind nur ein grober Richtwert.
Hängt von der Eingangskapazität des IO Pins und
der angeschlossenen Leitung ab.
Das kannst du natürlich noch rausrechnen.
Wenn die Sensorkapazität aber deutlich kleiner ist, dann leidet die 
Genauigkeit schon drunter.
Ich weiss nicht wie gross deine Sensorkapazitäten sind.

Um welche Sensoren geht es denn genau?

von Magnus L. (muepsi)


Lesenswert?

>Hab ich auch verstanden, ich wollte wissen, wie der TO Frequenzen mit
>dem uC misst.

ja genau mit einem Timer. Wenn du willst kann dir den Code zu senden, 
sitze aber im Moment am falschen PC.

>10 Farad Kondensator parallel zu den 3.3Meg besser funktioniert?

das sind natürlich 10 nF.. habe mich vertippt

von Udo K. (Gast)


Lesenswert?

Magnus L. schrieb:
>>10 Farad Kondensator parallel zu den 3.3Meg besser funktioniert?
>
> das sind natürlich 10 nF.. habe mich vertippt

Und wie soll das funktionieren?  Die 10 nF sind doch parallel zum 
Sensor?

von Magnus L. (muepsi)


Lesenswert?

Da ich ja noch keine echten Sensorwerte verwendet habe sondern nur 
Kondensatoren (Größe von 22pF bis ca 10nF) versucht habe und trotzdem 
meine Frequenzen so stark beeinflusst habe, wollte ich mal versuchen 
einen Kondensator parallel noch reinzuhängen. An und für sich ändert das 
ja nur meine Gesamtkapazität und natürlich auch meine Frequenz(Aber ich 
wollte natürlich erstmal das Problem beheben warum sie sich gegenseitig 
so stark beeinflussen), aber das Messkonzept sollte ja trotzdem 
funktionieren oder?

von Udo K. (Gast)


Lesenswert?

Um was für Sensoren geht es denn?  Wäre schon interessant...

von Andreas M. (amesser)


Lesenswert?

Wenn man genügend Zeit hat, dann kann man kleine Kapazitäten auch durch 
eine Ladungspumpe messen. Man lädt/entlädt z.B. einen 
Referenzkondensator und benutzt die kleine, zu messende Kapazität zum 
schrittweise Entladen/Laden des Referenzkondensators. Das kann man 
geschickt lösen indem man die Tri-State Funktionalität an den 
Microcontroller Pins ausnutzt. Dazu benötigt man 2 + n Pins an einem 
Mikrocontroller. (n = Anzahl der zu messenden Kapazitäten)

Das nutze ich in meinem Bodenfeuchtesensor.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.