Forum: Mikrocontroller und Digitale Elektronik Abstand kapazitiv mit Arduino erfassen


von Donald P. (karasa)


Lesenswert?

Hallo zusammen.

Ich arbeite derzeit an einem Projekt, bei dem ich Abstände kapazitiv 
messen möchte.
Aufgrund von sehr geringem Platzangebot fallen die gängigen 
Möglichkeiten um Abstände zu messen aus. (Z.B. ToF, Ultraschall, IR 
usw.)

Kapazitive Messmethoden bieten sich deshalb an, weil ich dann nur eine 
Sensorelektorde am Messpunkt benötige, welche ich mittels Kabel 
herausführen kann und dann z.B. mit einem Arduino messen kann.

Bisher verwende ich folgende Library um die Abstände, bzw. die gemessene 
Kapazität arbiträr zu erfassen:

https://github.com/martin2250/ADCTouch

Dabei habe ich ein Stück Alufolie von 4x5cm mit einen Arduino verbunden. 
Mit der Library ändern sich die Werte sehr schön, wenn man sich dieser 
"Sensorelektrode" z.B. mit einer Hand nähert. Um Schwankungen zu 
minimieren habe ich eine Linearführung gebaut, mit welcher ich Objekte 
der Sensorelektrode gezielt nähern kann.

Diese Messobjekte sind mit GND verbunden, sodass eine Art 
Platten-Kondensator zwischen Messobjekt und Sensorelektrode (Alufolie) 
entsteht, bei dem der Abstand d variiert werden kann.

Nun habe ich versucht anhand der Werte, welche mir die Library ausgibt, 
einen Abstand zu berechnen und diese mit dem tatsächlichem Abstand zu 
vergleichen.

Laut Beschreibung der Library wird die Messeelektrode (Alufolie) auf 5V 
geladen und mit dem internen, zuvor entladenen 14pF Kondensator 
parallelgeschalten.

Mit Q=C*U und der Annahme, dass zum Messzeitpunkt des ADC's die Spannung 
der Parallelschaltung bereits die selbe war (Ladevorgang der 
Kondensatoren abgeschlossen) kam ich auf folgende Formel:

Nach Umstellen liefert einem diese die gemessene Kapazität an der 
Sensorelektrode:

Wobei
 die gemessene Spannung vom ADC ist,
  und
 sind.

Wenn ich dies nun in die allgemein gültige Formel zur Bestimmung des 
Abstandes eines Platenkondensators einsetze...

...dann bekomme ich grotten-falsche Werte für den Abstand heraus.

(Für eine Messreihe von 0 bis 3,5cm erhalte ich errechnete Werte von 
0,001 bis 0,1 mm heraus)

Ist dies überhaupt der richtige Ansatz?

Ich bin nicht abgeneigt einen IC für diese Aufgabe zu verwenden, hat 
hierzu jemand einen konkreten Vorschlag? Mir ist wichtig, dass ich den 
Abstand nicht nur arbiträr erfassen kann, sondern ihn auch 
quantifizieren kann.

Ich bin für jede Hilfe dankbar.

Viele Grüße,
Donald

von Stefan F. (Gast)


Lesenswert?

Donald P. schrieb:
> (Für eine Messreihe von 0 bis 3,5cm erhalte ich errechnete Werte von
> 0,001 bis 0,1 mm heraus)
>
> Ist dies überhaupt der richtige Ansatz?

Kommt drauf an, welche Abstände du tatsächlich messen willst. Dass die 
Sache nur im Sub-Millimeter Bereich funktionieren kann, ist mir 
jedenfalls klar.

von Georg (Gast)


Lesenswert?

Donald P. schrieb:
> Aufgrund von sehr geringem Platzangebot fallen die gängigen
> Möglichkeiten um Abstände zu messen aus. (Z.B. ToF, Ultraschall, IR
> usw.)

Meine Meinung: von allen aufgeführten Messmethoden ist die kapazitive 
diejenige, die sich am wenigsten für die Miniaturisierung eignet. 
Schallgeber, Infrarotsensoren kann man fast beliebig klein bauen, eine 
kapazive Elektrode muss eine minimale Grösse haben. 4 x 5 cm ist 
lachhaft gegenüber anderen Möglichkeiten.

Aber wahrscheinlich willst du sowas nicht hören, nachdem du dir was 
ausgedacht hast.

Georg

von Der Zahn der Zeit (🦷⏳) (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> welche Abstände du tatsächlich messen willst

Für eine Messreihe von 0 bis 3,5cm (!)

> Dass die Sache nur im Sub-Millimeter Bereich funktionieren kann
Gilt nur, wenn die Platten auch nur mm oder sub-mm groß sind. Aber:

Donald P. schrieb:
> ein Stück Alufolie von 4x5cm
Da wird es allerdings schon ziemlich nichtlinear - ab wann man auch 
immer etwas linear oder nichtlinear nennt. Ein Faktor von 35 wäre es 
aber weiß Gott wahrlich nicht.

Mein Tipp: Mach mal Versuche mit Festkondensatoren statt deinem 
Plattenkondensator. Danach weißt du, ob dein µC die falsche Kapazität 
bestimmt, oder etwas mit deinem Plattenkondensator oder mit der 
Mathematik faul ist.

von Stefan F. (Gast)


Lesenswert?

Der Zahn der Zeit (🦷⏳) schrieb:
> Für eine Messreihe von 0 bis 3,5cm (!)

Wenn das stimmt: Vergiss es. Lohnt sich gar nicht, weiter drüber nach zu 
denken.

Das ist eine Aufgabe für Optische Sensoren von Sharp.

von MaWin (Gast)


Lesenswert?

Donald P. schrieb:
> Alufolie von 4x5cm

Donald P. schrieb:
> bis 3,5cm

Eine nur 4.5cm breite Kondensatorplatte hat bei 3.5cm Abstand keine 
sinnvolle Kapazität mehr zur Gegenelektrode, sondern nur noch zur 
Umgebung.

Mehr als 3.5mm Abstand ist bei der Folie nicht drin, und statt Folie in 
der Grösse lieber ein stabiles Blech.

Zudem musst du die Kapazität nach hinten bestimmen, da gibt es auch 
Umgebung.

Donald P. schrieb:
> erhalte ich errechnete Werte von 0,001 bis 0,1 mm heraus

Deine 18pF werden aus vielen Gründen keine 18pF sein: IC-Pin, 
Platinenleitung, Stecker, Kabel, Durchfuhrung zur Folie, bringt in Summe 
mehr als 18pF.

von Donald P. (karasa)


Lesenswert?

Vielen Dank für die Beiträge und die rege Diskussion ! :-)


Stefan ⛄ F. schrieb:
> Wenn das stimmt: Vergiss es. Lohnt sich gar nicht, weiter drüber nach zu
> denken.

Georg schrieb:
> Meine Meinung: von allen aufgeführten Messmethoden ist die kapazitive
> diejenige, die sich am wenigsten für die Miniaturisierung eignet.
> Schallgeber, Infrarotsensoren kann man fast beliebig klein bauen, eine
> kapazive Elektrode muss eine minimale Grösse haben. 4 x 5 cm ist
> lachhaft gegenüber anderen Möglichkeiten.

Das Problem ist, dass ich im vertikalen Bauraum (Z-Achse) begrenzt bin. 
Die kapazitiven Methode ist die einzige Methode, die keinen vertikalen 
Bauraum signifikant in Anspruch nimmt. (da nur Alufolie als 
Sensorelektrode benötigt) Selbst ein optischer IC mit 3mm Höhe wäre 
eigentlich auch schon zu viel.

Versteht mich nicht falsch...die Messungen funktionieren sehr gut. In 
einem Bereich von 3-4cm Abstand springt der Sensor an und liefert mir 
einen relativ genauen, reproduzierbaren Ausschlag, welchen man eindeutig 
mit dem variablen Abstand assoziieren kann.

Es gibt ja auch kommerzielle, kapazitive Abstandssensoren, die den 
Abstand sehr genau und in einem Bereich von 10-20 mm messen können und 
das bei einer Sensorelektrode, die einen Durchmesser von 1cm hat.

MaWin schrieb:
> Zudem musst du die Kapazität nach hinten bestimmen, da gibt es auch
> Umgebung.

Das stimmt. Kann man das irgendwie mit einer weiteren Elektrode 
schirmen, ohne die Messung zu beeinflussen? (statisches oder variables 
E-Feld)

Stefan ⛄ F. schrieb:
> Das ist eine Aufgabe für Optische Sensoren von Sharp.

Leider muss der Sensor "blind" messen können, sprich er befindet sich 
hinter einer Schutzschicht aus sehr dünnem Kunststoff. Bei meinen Tests 
habe ich die Alufolie mit einem Foliergerät eingeschweißt.


Hat jemand eine Empfehlung für einen IC, an den ich die Sensorelektrode 
klemmen könnte um Abstände im Bereich von 50mm Messen zu können? 
Vielleicht stößt die Messmethode mit dem Arduino einfach nur an ihre 
grenzen und ein IC könnte mir einiges an Boilerplate (mathematisches 
Modell, Kompensationen, Filter und Kalibrierung) ersparen?

Danke Euch auf jeden Fall ! :-)

von A. S. (rava)


Lesenswert?

naja, wenn alles funktioniert, aber du keine passende Formel hast, dann 
empfehle ich: mach eine Messreihe, um eine Kalibrierungstabelle 
aufzubauen und spar dir die ganze Physik.

Vorschläge für mögliche Fehlerquellen in der Modellierung hast du ja 
oben bereits einige genannt bekommen.

von MaWin (Gast)


Lesenswert?

Donald P. schrieb:
> Hat jemand eine Empfehlung für einen IC, an den ich die Sensorelektrode
> klemmen könnte um Abstände im Bereich von 50mm Messen zu können

Vergiss kapazitive Messung bei 50mm Abstand.

von Dieter R. (drei)


Lesenswert?

MaWin schrieb:

> Vergiss kapazitive Messung bei 50mm Abstand.

Da der TO ja schon einige Erfolge mit seinem durchaus noch 
verbesserungsfähigen Aufbau erzielen konnte, erscheint dein pauschaler 
Rat reichlich vorschnell.

Einige hoffentlich hilfreichere Kommentare zur Sache:

1. Die extreme Abweichung zwischen Rechnung und Messergebnis legt nahe, 
dass entweder ein Fehler in der Rechnung steckt (mir fehlt jetzt aber 
die Zeit, das nachzuprüfen), oder der Testaufbau sehr viele Störeffekte 
liefert. Falls hinter der Frage eine ernsthafte Applikation steht, 
sollte man dem nachgehen.

2. Es gibt (mindestens) ein IC zur Gestenerkennung, das über ähnliche 
Distanzen misst, MGC3030. Damit einen Aufbau zu realisieren erfordert 
aber eine Menge Beschäftigung mit der Materie.

3. Grundsätzlich gilt: es muss ein fester Aufbau verwendet werden, 
direkte kapazitätsarme Verbindung zwischen Controller-Pins und 
Sensor-Elektrode, schmale Leiterbahnen (15 mil), Führung über 
Groundplanes sollte vermieden werden. Zuverlässig und hochempfindlich 
funktioniert das nur, wenn sich Prozessor bzw. Sensor-IC und Elektrode 
auf dem gleichen Board befinden bzw. die Elektrode/das Sensorboard 
direkt mechanisch oder über Steckverbinder mit dem Prozessorboard 
verbunden ist. Ein Arduino ist da eher Overkill, besser ist ein 
dediziertes kleines Board nur für diesen Zweck.

4. U. a. hier wurde das grundsätzliche Thema ausführlich diskutiert:

Beitrag "Was ist bzw. war Atmel QTouch?"

5. Ich habe mir NICHT detailliert die vom TO verlinkte Source angesehen. 
Empfehlenswert wegen höherer Auflösung und besserer Stabilität ist in 
jedem Fall ein Verfahren wie u. a. von Tim vorgeschlagen.

6. WESENTLICH besser gegen Störungen durch äußere Felder (u. a. von der 
Rückseite) geschützt und damit auch empfindlicher für größere Abstände 
wird die Messung, wenn man eine Shield-Elektrode verwendet. 
Grundsätzliche Vorgehensweise: Messelektrode nicht zu groß 
(Standardgröße für Qtouch ist etwa 1 cm², ich weiß nicht, wo die 
Obergrenze für beste Messgenauigkeit liegt, würde sie aber bei wenigen 
cm² vermuten), Board 1,6 mm dick, auf Rückseite Shield-Elektrode, 
möglichst etwas größer als die Messelektrode, zur Verringerung der 
Kapazität nicht vollflächig, sondern als Gitter). Zur optimalen 
Gestaltung von QTouch-Elektroden gibt es umfangreiche, of verwirrende 
und manchmal widersprüchliche Applikationsschriften von Microchip und 
anderen Herstellern.

7. Shield-Elektrode erfordert nach aktuellem Wissensstand die Verwendung 
der originalen QTouch-Library und einen Prozessor mit mindestens 8 
KByte. Viel Platz für eigene Software bleibt da nicht mehr. Ich würde 
dafür einen der neueren Attiny Series 1 verwenden und den NUR für diese 
Messaufgabe einsetzen, Touch-Raw-Daten auswerten, Kommunikation über 
serielle Schnittstelle o. ä.

8. Wenn es was Richtiges werden soll: Demo-Board von Microchip besorgen 
(z. B. ATtiny817-Xpro), Sensorboard dazu designen, damit Aufbau 
ausprobieren, Software entwickeln, Sensorboard optimieren, schließlich 
eigenes Board mit kleinstmöglichem Prozessor und der im vorherigen 
Schritt entwickelten Elektrode designen.

Jedenfalls wird das ein größeres Projekt, das man nicht mal so eben aus 
ein paar Standard-Bauteilen und Softwareschnipseln zusammenstellt.

von Falk B. (falk)


Lesenswert?

MaWin schrieb:
>> Hat jemand eine Empfehlung für einen IC, an den ich die Sensorelektrode
>> klemmen könnte um Abstände im Bereich von 50mm Messen zu können
>
> Vergiss kapazitive Messung bei 50mm Abstand.

Warum? Wenn er eine Elektrode mit 200mm Kantlänge hat, geht das schon 
;-)

von Dieter R. (drei)


Lesenswert?

Falk B. schrieb:
> MaWin schrieb:
>>> Hat jemand eine Empfehlung für einen IC, an den ich die Sensorelektrode
>>> klemmen könnte um Abstände im Bereich von 50mm Messen zu können
>>
>> Vergiss kapazitive Messung bei 50mm Abstand.
>
> Warum? Wenn er eine Elektrode mit 200mm Kantlänge hat, geht das schon
> ;-)

Nicht mit QTouch. Das Funktionsprinzip erfordert, dass die 
Elektrodenkapazität in der Größenordnung der Sampling-Kapazität liegt. 
Mit anderen Verfahren kann man selbstverständlich größere Kapazitäten 
verwenden. Letztlich ist die Größe der Kapazität aber weitestgehend 
nebensächlich und deshalb Kommentare wie deiner neben der Sache. 
Entscheidend ist, mit welcher Auflösung man messen kann und mit welchen 
Maßnahmen man Störeinflüsse ausschalten bzw. kompensieren kann. Da wir 
den Aufbau des TO nicht kennen, wissen wir überhaupt nicht, welche 
Störeinflüsse vorliegen.

von Gerald M. (gerald_m17)


Lesenswert?

Damit man nur das homogene Feld misst, ist es nötig um die Messelektrode 
eine weitere Elektrode anzubringen, welche auf Ground liegt. Diese 
"saugt" den nicht homegenen Teil des Feldes ab.
Bei dem Abstand glaube ich nicht dass das funktioniert, kapaztitive 
Messungen machen wir nur bei 1mm und darunter.
Wenn kapazitiv und diese Entfernung, dann läuft das normal nicht über 
den Abstand der Sensorplatten, sondern den hält man konstant und man 
schiebt die Platten aneinander vorbei und ändert so die wirkende Fläche. 
Das geht auch über viele cm hinweg. Das geht im Zweifel auch direkt mit 
zwei Leiterplatten mit Kupferflächen.

von Dieter R. (drei)


Angehängte Dateien:

Lesenswert?

Gerald M. schrieb:

> Bei dem Abstand glaube ich nicht dass das funktioniert, kapazititive
> Messungen machen wir nur bei 1mm und darunter.

Nicht bis 1 mm, sondern bis 200 mm, kapazitiv, siehe Auszug aus der 
Dokumentation zum MGC3030. "Sensor Size" meint dabei NICHT die Größe der 
Einzelelektrode, sondern das von mehreren Elektroden umschlossene 
Arbeitsfeld. Dabei geht es natürlich nicht um Messung des Abstands als 
physikalische Größe, sondern um Erfassung einer Geste im 
dreidimensionalen Raum. Grundlage ist aber auch dabei die Erfassung der 
Position, der Arbeitsbereich ist näherungsweise ein Kubus mit der 
Kantenlänge der Sensor-Elektroden.

: Bearbeitet durch User
von oldbastler (Gast)


Lesenswert?

Hi,
möglicherweise würde ein einfacher Oszillator mit LC-Schwingkreis und 
Auswertung über die Frequenz wesentlich besser reproduzierbare Werte 
bringen, wenn schon an der Messmethode festgehalten werden soll. Aber 
ich denke auch, man sollte noch mal über optische Möglichkeiten 
nachdenken, z.B. ein schräg seitlich einfallender Lichtstrahl 
(Laserdiode), der am Ziel reflektiert wird, und dann dessen 
unterschiedliche Ablenkung auswerten.

von MaWin (Gast)


Lesenswert?

Falk B. schrieb:
> Warum? Wenn er eine Elektrode mit 200mm Kantlänge hat, geht das schon
> ;-)

Ich ging von gleicher Elektrodengrösse aus.

Die Elektrode muss halt so gross sein, dass der Abstand vernachlässigbar 
ist.

von Donald P. (karasa)


Lesenswert?

oldbastler schrieb:
> Hi,
> möglicherweise würde ein einfacher Oszillator mit LC-Schwingkreis und
> Auswertung über die Frequenz wesentlich besser reproduzierbare Werte
> bringen, wenn schon an der Messmethode festgehalten werden soll. Aber
> ich denke auch, man sollte noch mal über optische Möglichkeiten
> nachdenken, z.B. ein schräg seitlich einfallender Lichtstrahl
> (Laserdiode), der am Ziel reflektiert wird, und dann dessen
> unterschiedliche Ablenkung auswerten.

Ja darüber habe ich mir in der Tat auch schon Gedanken gemacht, 
allerdings weiß ich nicht, wie groß ich die Bauteile dimensionieren muss 
/ auf welche Frequenz ich den Schwingkreis auslegen muss, damit ich die 
Beeinflussung der Frequenz durch Annäherung erfassen kann....

Gibt es hierfür eine (Faust-)Formel?

Und wie kann ich die Frequenz dann mit einem Arduino messen?

Es muss standalone bleiben, d.H. ich muss zwangsweise mit einem Arduino 
auskommen. Die gemessene Frequenzänderung am Oszi bringt mir leider 
wenig...

von Andreas B. (bitverdreher)


Lesenswert?

AD7152/53 misst bis in den unteren fF Bereich.
Jetzt mal ganz abgesehen von den Seiteneffekten in diesem 
Kapazitaetsbereich.

von Dieter R. (drei)


Lesenswert?

Donald P. schrieb:

> Es muss standalone bleiben, d.H. ich muss zwangsweise mit einem Arduino
> auskommen.

Wieso MUSS es zwangsweise ein Arduino sein? Es gibt Tausende von 
Möglichkeiten für Standalone-Lösungen, nicht für alle Aufgaben ist ein 
Arduino die geeignete Plattform - rein statistisch gesehen wohl für die 
meisten eher nicht.

von Falk B. (falk)


Lesenswert?

Donald P. schrieb:
> Ja darüber habe ich mir in der Tat auch schon Gedanken gemacht,
> allerdings weiß ich nicht, wie groß ich die Bauteile dimensionieren muss
> / auf welche Frequenz ich den Schwingkreis auslegen muss, damit ich die
> Beeinflussung der Frequenz durch Annäherung erfassen kann....
>
> Gibt es hierfür eine (Faust-)Formel?

Zuerst musst du mal die Eckpunkte der Kapazität festlegen. Wieviel pF 
hast du bei min/max Abstand? Daraus kann man dann eine brauchbare 
Frequenz festlegen.

> Und wie kann ich die Frequenz dann mit einem Arduino messen?

Mit einem Timer, der kann externe Pulse zählen. Ein 2. Timer bildet die 
Meßzeit.

> Es muss standalone bleiben, d.H. ich muss zwangsweise mit einem Arduino
> auskommen.

Dann musst du mehr Know How in die Schaltung und Software stecken.

Ich habe gerade für einen Prüfaufbau eine Kapazitätsmessung gebaut, die 
nur einen einfachen RC-Oszillator mit Schmitt-Trigger nutzt. Die läuft 
bei ca. 45kHz uns mißt Kapazitäten im Bereich 100-300pF auf 1-2pF genau. 
Das kann man sicher auch für kleinere Kapazitäten anpassen. Wie weit man 
damit kommt, muss man testen. Die Auswertung macht ein AVR, also 
praktisch die gleiche CPU wie die Arduinos.

von Der Zahn der Zeit (🦷⏳) (Gast)


Lesenswert?

Viele MSP430 haben Pin-Oszillatoren, bei denen die externe Kapazität die 
Frequenz bestimmt. Die lässt sich leicht und je nach Messzeit mit 
beliebig hoher Auflösung bestimmen. Leider ist das kein Arduino. Aber 
mit nur einem invertierenden Single-Gate Schmitt-Trigger + einem 
Widerstand sollte das Gleiche auch an einem Arduino zu erreichen sein.

Den Ansatz, die Kapazität theoretisch aus den geometrischen 
Gegebenheiten zu bestimmen und dann daraus den Abstand zu bestimmen, 
halte auch ich für völlig unsinnig, weil die Nichtlinearität des Systems 
ganz, ganz erheblich sein wird. Hoffentlich ist die Kennlinie wenigstens 
monoton. Etwas anderes als mit einer Tabelle, die mittels Versuchen oder 
Kalibrierungslauf erstellt wird, wird sicherlich nicht gehen.

MaWin schrieb:
> Vergiss kapazitive Messung bei 50mm Abstand.

Dieter R. schrieb:
... Eine wirklich gute und fundierte, lange Antwort.

MaWin, wenn du den Unterschied betrachtest, ist dir nicht peinlich, was 
für eine jämmerliche Leistung du mit deiner Antwort gezeigt hast?

von Nautilus (Gast)


Lesenswert?

Donald P. schrieb:
> er befindet sich
> hinter einer Schutzschicht aus sehr dünnem Kunststoff. Bei meinen Tests
> habe ich die Alufolie mit einem Foliergerät eingeschweißt

Dieser Kondensator besitzt also zwei verschiedene Dielektrika (Folie und 
Luft).
Die Formeln entsprechend anpassen.

von Donald P. (karasa)


Lesenswert?

Nautilus schrieb:
> Dieser Kondensator besitzt also zwei verschiedene Dielektrika (Folie und
> Luft).
> Die Formeln entsprechend anpassen.

Danke, das ist ein wirklich guter Hinweis!

Der Zahn der Zeit (🦷⏳) schrieb:
> Aber
> mit nur einem invertierenden Single-Gate Schmitt-Trigger + einem
> Widerstand sollte das Gleiche auch an einem Arduino zu erreichen sein.

Kannst Du mir hierzu mehr erzählen? Also wie schaut die Schaltung aus: 
Schmitt-Trigger + Widerstand am Arduino?

Das dürfte ja dann genau auf diese Anordnung hier hinauslaufen, oder?

Falk B. schrieb:
> Ich habe gerade für einen Prüfaufbau eine Kapazitätsmessung gebaut, die
> nur einen einfachen RC-Oszillator mit Schmitt-Trigger nutzt.


Meinst Du so etwas?
https://electronics-course.com/schmitt-trigger-oscillator

von Der Zahn der Zeit (🦷⏳) (Gast)


Angehängte Dateien:

Lesenswert?

Den Widerstand müsstest du experimentell ermitteln. Nicht zu hoch, damit 
die Frequenz nicht zu klein wird, um in kurzer Zeit ausreichend genaue 
Ergebnisse messen zu können, und nicht zu klein, damit 1. die 
Frequenzmessung im µC noch damit klar kommt (hat der Arduino eine 
Capture-and-Compare Unit?) und 2. bestimmt bei hohen Frequenzen 
zunehmend die Gatterverzögerungszeit die Frequenz.

von Falk B. (falk)


Lesenswert?


von Dieter R. (drei)


Lesenswert?

Falk B. schrieb:
> Donald P. schrieb:
>> Meinst Du so etwas?
>> https://electronics-course.com/schmitt-trigger-oscillator
>
> Ja.

Da hab ich aber meine Zweifel, dass das mit ein paar pF läuft. Jedes 
andere der hier bisher diskutierten Verfahren dürfte 
erfolgversprechender sein. Wenn das Ganze nicht in eine Dauerbastelei 
ausarten soll:

ENTWEDER eine der diskutierten Lösungen mit Atmel/Microchip oder anderen 
Chips zur Kapazitätsmessung verwenden,

ODER was analoges (diskret aufgebautes) sorgfältigst vorher simulieren 
(einschließlich Parameterstreuungen und Temperaturgang) und dann 
trotzdem noch überrascht sein, was für Probleme in der Praxis auftreten,

UND bei allem beachten: Shield-Elektrode (Hinweis: die liegt bei QTouch 
NICHT auf Gnd)!

: Bearbeitet durch User
von Donald P. (karasa)


Lesenswert?

Dieter R. schrieb:
> Da hab ich aber meine Zweifel, dass das mit ein paar pF läuft.

Laut dem Human-Body-Modell besitzt der Körper eine Kapazität von ca. 100 
pF. Hinzu kommt noch die Kapazität der Platte, welche sich auch im 
Rahmen von xx bis. xxx pF bewegen dürfte.

Bei folgendem Kollege ist es mit dieser Methode ja schon erfolgreich im 
Einsatz:

Falk B. schrieb:
> Die läuft
> bei ca. 45kHz uns mißt Kapazitäten im Bereich 100-300pF auf 1-2pF genau.

Das könnte man doch bestimmt noch etwas trimmen, um einen niedrigeren 
Kapazitätsbereich messen zu können. Die Frage ist, welche Bauteile er 
genau verwendet hat...

Dieter R. schrieb:
> ENTWEDER eine der diskutierten Lösungen mit Atmel/Microchip oder anderen
> Chips zur Kapazitätsmessung verwenden

Ich tendiere eher zur Variante Nummer 1. Der

Andreas B. schrieb:
> AD7152/53

kann leider nur bis 4 pF messen, was nach meiner Meinung etwas zu wenig 
sein wird.

Ich habe hier ein MPR121 
(https://www.nxp.com/docs/en/data-sheet/MPR121.pdf) da, welcher aber 
leider beim Annähern der Objekte auf meiner Linearführung nicht den 
gesamten Messbereich der 10 Bit ausschöpft, sondern nur etwa 20 
%...Dieser war allerdings noch auf 12-kanalig gestellt, sofern dies 
einen Unterschied macht...


Denkt Ihr folgender IC wäre dafür geeignet Abstände zu erfassen?

https://www.mouser.de/datasheet/2/268/doc9634-1369146.pdf

Im Datenblatt steht, er verwendet das QTouchADC Messverfahren

von Donald P. (karasa)


Lesenswert?

Dieter R. schrieb:
> UND bei allem beachten: Shield-Elektrode (Hinweis: die liegt bei QTouch
> NICHT auf Gnd)!

Ich habe jetzt schon vermehrt von der Shield-Elektrode gelesen, 
allerdings jeweils unterschiedliche Aussagen. Einmal wird geraten es auf 
GND zu legen, einmal auf Vcc und wo anders lese ich dann, dass man die 
Shieldelektrode gleich wie eine Sensorelektrode ansteuern soll...

Was stimmt den nu?

von Dieter R. (drei)


Lesenswert?

Donald P. schrieb:
> Dieter R. schrieb:
>> UND bei allem beachten: Shield-Elektrode (Hinweis: die liegt bei QTouch
>> NICHT auf Gnd)!
>
> Ich habe jetzt schon vermehrt von der Shield-Elektrode gelesen,
> allerdings jeweils unterschiedliche Aussagen. Einmal wird geraten es auf
> GND zu legen, einmal auf Vcc und wo anders lese ich dann, dass man die
> Shieldelektrode gleich wie eine Sensorelektrode ansteuern soll...
>
> Was stimmt den nu?

Das:

dass man die Shieldelektrode gleich wie eine Sensorelektrode ansteuern 
soll

Warum das so ist, steht in den einschlägigen Applikationsschriften von 
Atmel/Microchip. Die solltest du durchlesen. Es hilft nichts, wenn man 
dir hier Bröckchen vorkaut, du musst es schon selbst lernen. Kurz 
gefasst: es sollen Störfelder von der Messelektrode abgeschirmt werden, 
ohne eine zusätzliche kapazitive Last darzustellen.

Der erwähnte MGC3030 macht das, wenn meine Erinnerung mich nicht 
täuscht, auch so. Der arbeitet definitiv auf 5 cm Entfernung. Mit QTouch 
habe ich es auf solche Entfernungen nicht ausprobiert. Da es bei dir 
schon in einer einfacheren Implementierung grundsätzlich läuft, sollte 
es mit QTouch und Shield-Elektrode erst recht funktionieren. Sinnvoll: 
saubere, entkoppelte Stromversorgung (LDO) NUR für den Prozessor, NICHT 
gleichzeitig für andere Baugruppen.

Empfindlicher und vielleicht stabiler und besser reproduzierbar wird es 
vermutlich mit einem der erwähnten Chips zur Kapazitätsmessung. Wie man 
damit aber eine funktionierende Shield-Elektrode realisieren kann, weiß 
ich nicht. Die scheint mir essenziell. Entscheiden könnte man das 
allerdings nur in Kenntnis deines Aufbaus.

von Falk B. (falk)


Lesenswert?

Dieter R. schrieb:
> Da hab ich aber meine Zweifel, dass das mit ein paar pF läuft. Jedes
> andere der hier bisher diskutierten Verfahren dürfte
> erfolgversprechender sein. Wenn das Ganze nicht in eine Dauerbastelei
> ausarten soll:

Das könnte stimmen ;-) Aber der Op will ja UNBEDINGT was mit Arduino, 
alles andere ist bähhhh.

> ODER was analoges (diskret aufgebautes) sorgfältigst vorher simulieren
> (einschließlich Parameterstreuungen und Temperaturgang) und dann
> trotzdem noch überrascht sein, was für Probleme in der Praxis auftreten,

Dafür fehlt dem Op das Wissen und Erfahrung.

> UND bei allem beachten: Shield-Elektrode (Hinweis: die liegt bei QTouch
> NICHT auf Gnd)!

Das klingt für mich auch nach einem sehr guten Kandidaten. Das haben 
Profis entwickelt, das macht man mal nicht einfach so besser.

von R. S. (Gast)


Lesenswert?

Hallo,

Ich habe nicht die ganzen Posts gelesen, vielleicht gab es den Vorschlag 
schon:

TI LDCxxxx Serie misst induktiv mit sehr hoher Auflösung!

Einzige Voraussetzung:

Dein zu messendes Objekt muss den Sensorschwingkreis beeinflussen 
können. Kunststoff wird so nicht messbar sein.

Viele Grüße
R. S.

von Der Zahn der Zeit (🦷⏳) (Gast)


Lesenswert?

Also, die festen Überzeugungen hier, die da lauten, dass das ja gar 
nicht gehen kann - ich hatte eine andere Überzeugung. Und weil es so 
einfach ist, habe ich meine obige Schaltung mal schnell aufgebaut.

Eine 'HC14 auf den Steckbrett, verschiedene Widerstände, ein paar cm² 
Blech als Platte, Alufolie auf dem Tisch und teilweise auch über der 
Platte (ein bisschen Abschirmung, der Netzbrumm wirkt sich aus).

1. Erfahrung: Steckbrett ist ganz ungünstig. Die hohe Kapazität zwischen 
Ein- und Ausgang lässt den Inverter bei geringer Eingangskapazität im 
MHz-Bereich schwingen. Mit mindestens 10 pF Zusatzkapazität am Eingang 
war Ruhe, aber die verringern natürlich die Empfindlichkeit für kleine 
Plattenkapazitätsänderungen.

1. Erfahrung: Mit 1 MOhm und den 10 pF Grundkapazität, bei schlechter 
Schirmung:
In ein paar cm Abstand ~20 kHz, stabil auf 4 Stellen bei 1 s Messzeit(!)
~6 mm Holz als Abstand: ~12 kHz, ebenso stabil
Nur durch Papier isoliert: ~4kHz, ebenso stabil
(Ohne Platte und Zuleitung: ~130 kHz)
Wie gesagt, bei lausigem Aufbau, schlechter Schirmung...

Vernünftig gebaut sind noch weit bessere Ergebnisse zu erreichen, dabei 
reichen diese hier vielleicht schon. Je nachdem, wie genau es sein soll 
und Messzeit zur Verfügung steht

von Donald P. (karasa)


Lesenswert?

R. S. schrieb:
> TI LDCxxxx Serie misst induktiv mit sehr hoher Auflösung!

Induktive Messung fällt leider aus, da der Abstand von nichtmetallischen 
Objekte gemessen werden soll (z.B. Abstand Hand zur Sensorplatte)

Der Zahn der Zeit (🦷⏳) schrieb:
> Also, die festen Überzeugungen hier, die da lauten, dass das ja gar
> nicht gehen kann - ich hatte eine andere Überzeugung. Und weil es so
> einfach ist, habe ich meine obige Schaltung mal schnell aufgebaut.

Sehr sehr cool! Ich habe leider keinen HC14 da, werde mir aber bald wohl 
einen zulegen, um damit Versuche durchzuführen.

Dann muss ich nur noch nach einer Möglichkeit schauen, wie ich mit dem 
Arduino (oder andere programmierbare Microcontroller) Frequenzen messen 
kann. Wie schon erwähnt soll es eine stand-alone Anwendung sein, bei der 
der µC bereits die Messwerte bereitstellen kann.

Arduino ist mir nur deshalb so lieb, weil ich dann die Messwerte am PC 
direkt weiterverarbeiten und visualisieren kann. Denke einfach der 
Arduino ist ein guter Kompromiss zwischen Verfügbarkeit, Vielfältigkeit 
und Entwicklungszeit.

Der Zahn der Zeit (🦷⏳) schrieb:
> In ein paar cm Abstand ~20 kHz, stabil auf 4 Stellen bei 1 s Messzeit(!)
> ~6 mm Holz als Abstand: ~12 kHz, ebenso stabil
> Nur durch Papier isoliert: ~4kHz, ebenso stabil
> (Ohne Platte und Zuleitung: ~130 kHz)

Wie würde es bei einer Messzeit von 100 mS aussehen?

Also hast Du 6mm Holz auf das Blech gelegt und bist dann mit der Hand 
auf das Holz gegangen? Dann dürfte das Holz auch einen Ausschlag gegeben 
haben, oder?

von Donald P. (karasa)


Lesenswert?

Der Zahn der Zeit (🦷⏳) schrieb:
> In ein paar cm Abstand ~20 kHz, stabil auf 4 Stellen bei 1 s Messzeit(!)

Ah ich habe gerade gelesen, dass der ESP32 Frequenzen von bis zu 40 MHz 
messen kann. 
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/pcnt.html

Das funktioniert über einen Pulszähler, welcher die steigenden oder 
fallenden Flanken eines Eingangssignals innerhalb eines Zeitabschnitts 
zählt.

von chris_ (Gast)


Lesenswert?

>Und wie kann ich die Frequenz dann mit einem Arduino messen?

>Es muss standalone bleiben, d.H. ich muss zwangsweise mit einem Arduino
>auskommen. Die gemessene Frequenzänderung am Oszi bringt mir leider
>wenig...

Beitrag "Frequenzzähler Uno"

von HC14 (Gast)


Lesenswert?

Der Zahn der Zeit (🦷⏳) schrieb:
> Also, die festen Überzeugungen hier, die da lauten, dass das ja
> gar nicht gehen kann - ich hatte eine andere Überzeugung. Und weil es so
> einfach ist, habe ich meine obige Schaltung mal schnell aufgebaut.
> Eine 'HC14 auf den Steckbrett, verschiedene Widerstände, ein paar cm²...

Grundsätzlich halte ich diese Lösung auch für machbar. Allerdings muss 
man auch die Temperaturabhängigkeit des Schmitt-Triggern 
berücksichtigen. Die Hysterese ist alles andere als stabil.

von Der Zahn der Zeit (🦷⏳) (Gast)


Angehängte Dateien:

Lesenswert?

Donald P. schrieb:
> Sehr sehr cool! Ich habe leider keinen HC14 da, werde mir aber bald wohl
> einen zulegen, um damit Versuche durchzuführen.
Nicht eine HC14, sondern eine HC1G14 (oder HC2G14), also 74HC1G14. In 
SMD, die sind kleiner und haben weniger Rückkopplungskapazität. 
Aufgebaut auf einer Adapterplatine wie auf dem Foto, mit dem Widerstand 
als SMD-Widerstand direkt daneben.

Von diesen Adapterplatinen habe ich sehr viele (waren mal ein eine Art 
"Abfall"). HC1G14 und HC2G14 habe ich auch (glaube ich). HC2G14 ist 
insofern praktisch, als dass der Widerstand ohne Leitung direkt neben 
das IC gelötet werden kann (glaube ich). Der zweite Inverter kann dann 
als Ausgangsbuffer dienen.

Während bei deinem eingangs geschilderten Messverfahren nur mit einer 
einzigen Messung die Kapazität bestimmt wird, wird bei der 
Oszillator-Methode sozusagen mit jedem Zyklus die Kapazität bestimmt und 
am Ende, nach vielen, vielen Zyklen, das Ergebnis als Mittelwert 
ausgegeben. Deswegen bietet es eine enorm hohe Auflösung.

Auflösung ist nicht mit Genauigkeit zu verwechseln. Wenn du da in deinem 
Aufbau Mist machst, oder wenn die Bedingungen schlecht sind, geht alles, 
was möglich ist wieder kaputt.

Ich habe jetzt mal die 1 MOhm auf 10 kOhm reduziert. Das hat zwei 
Vorteile: Die höhere Messfrequenz erlaubt noch mehr Messzyklen (= 
Auflösung) und die niedrige Impedanz macht das Verfahren unempfindlicher 
gegenüber elektrostatischen Störfeldern. Die Frequenzen liegen jetzt 
zwischen 4 und 8 MHz.

Donald P. schrieb:
> Wie würde es bei einer Messzeit von 100 mS aussehen?
Mit den 10 kOhm habe ich jetzt selbst bei 100 ms Messzeit und meinem 
drittklassigen Aufbau eine Stabilität der Frequenz bei ca. 5 Stellen.

Wie gesagt, wenn dein Aufbau besser als meiner ist, kann das bei dir 
noch deutlich besser werden, aber auch umgekehrt.

100 Messzeit ist gut, weil dann Störungen durch Netzfrequenz weitgehend 
unterdrückt werden. Es müssen aber genau 100 ms sein(!).

Und dass du nicht die Kapazität der Platte theoretisch bestimmen und 
davon auf den Abstand schließen kannst, dürfte dir inzwischen klar sein. 
Das geht nur unter idealen Voraussetzungen, und wenn man alles beim 
Studium der theoretischen Elektrotechnik verstanden hat - und das war 
eins der schwereren Fächer. Also muss in einem Kalibrierungslauf eine 
Tabelle mit ausreichend vielen Stützstellen für eine ausreichend genaue 
Interpolation erstellt werden.

Wehe, wenn sich die Umgebungsbedingungen bei dir danach verändern.

Donald P. schrieb:
> Also hast Du 6mm Holz auf das Blech gelegt
Ja (nur die Unterlage = Masse war Alu-Folie
> und bist dann mit der Hand auf das Holz gegangen?
Nein. Die Hand war weit weg. Ein kleines Blech als Platte hat auf dem 
Holz gelegen (wie vorher auf dem Papier).
> Dann dürfte das Holz auch einen Ausschlag gegeben haben, oder?
Im Prinzip ja, aber in diesem Zusammenhang vernachlässigbar. Das Holz 
war Abstandshalter, aber mit Epsilon-R > 1, natürlich.

von Der Zahn der Zeit (🦷⏳) (Gast)


Lesenswert?

HC14 schrieb:
> Allerdings muss
> man auch die Temperaturabhängigkeit des Schmitt-Triggern
> berücksichtigen. Die Hysterese ist alles andere als stabil

Stimmt! Mit mehr Aufwand ließe sich das natürlich verbessern.

Der Zahn der Zeit (🦷⏳) schrieb:
> Wehe, wenn sich die Umgebungsbedingungen bei dir danach verändern.
... bekommt einen weiteren Sinn.

von m.n. (Gast)


Lesenswert?

oldbastler schrieb:
> möglicherweise würde ein einfacher Oszillator mit LC-Schwingkreis und
> Auswertung über die Frequenz wesentlich besser reproduzierbare Werte
> bringen,

Im Prinzip sicherlich richtig. Um hohe Streukapazitäten zu vermeiden, 
sollte die Frequenz des LC-Oszillators schon im 2 - 3 stelligen MHz 
Bereich liegen. Angesichts des Störpotentials ist das wohl keine gute 
Idee.
Bleibt als weitere Möglichkeit ein RC-Oszillator, wobei ein einfacher 
HC14-Inverter wie schon erwähnt eher eine schlechte Lösung darstellt, da 
Temperatur- und Versorgungsspannungschwankungen sehr stören würden.

Besser ist eine Schaltung, deren Schwellwerte der Hysterese bei 1/3 und 
2/3 VCC liegen. Dies bietet ein TLC555 oder eine Schaltung mit 2 x OPV, 
wovon der eine als Integrator und der andere als Komparator arbeitet.
Der sinnvolle Frequenzbereich sollte im zweistelligen kHz Bereich 
liegen.

Donald P. schrieb:
> Wie würde es bei einer Messzeit von 100 mS aussehen?

Mit einem Arduino UNO kann man bei 0,1 s Messzeit Ergebnisse mit 
6-stelliger Auflösung erhalten und somit auch kleine Frequenzänderungen 
erfassen. Verwendet man eine reziproke Frequenzmessung kann der 
Frequenzbereich von einigen 10 Hz bis zu einigen MHz betragen; alles bei 
voller Auflösung.
http://mino-elektronik.de/fmeter/fm_software.htm#bsp7

von Der Zahn der Zeit (🦷⏳) (Gast)


Lesenswert?

oldbastler schrieb:
> Hi,
> möglicherweise würde ein einfacher Oszillator mit LC-Schwingkreis und
> Auswertung über die Frequenz wesentlich besser reproduzierbare Werte
> bringen
Dem stimme ich auch ausdrücklich zu. Nicht nur möglicherweise, sondern 
ganz bestimmt.

Ich habe die einfachste Methode mit 2 Bauteilen untersucht, und 
natürlich kann man es genauer machen. Auch eine 555 wäre eine deutliche, 
aber aufwändigere Verbesserung.

Für eine LC-Lösung könnte eine 74LVC1GX04 eine sehr kompakte Lösung 
darstellen. Das ist ein spezielles Quarzoszillator-IC, das demnach auch 
als LC-Oszillator-IC gut funktionieren müsste (1 x '04 ungebuffert, + 1 
x '04 normal, SOT23-6, setze ich auch ein).  Mit dem L und einem 
zusätzlichen C wäre der Aufwand kaum höher.

von Dieter R. (drei)


Lesenswert?

Die Diskussion driftet mehr und mehr in fröhliches Basteln ab, ich bin 
dann mal raus. Noch ein paar Anmerkungen an den TO:

1. Dein Eingangspost ließ vermuten, dass du analytisch an die Aufgabe 
herangehen willst, wenn auch zunächst offenbar fehlerbehaftet.

2. Beim Vergleich verschiedener messtechnischer Vorgehensweisen 
(insbesondere Charge Transfer vs. Frequenzmessung), bei der 
Identifikation von möglichen Störeinflüssen und bei der Eliminierung 
selbiger solltest du ebenso analytisch vorgehen. Das gilt für 
Schaltungs- und Bauteileparameter (Drift, Schwellwerte, 
Layout/Verdrahtung) ebenso wie für externe Störgrößen 
(Elektrodengestaltung, Abschirmung). Genug Input dazu solltest du haben. 
Da wir alle deinen Aufbau nicht kennen, musst du letztlich selbst 
abwägen (=analysieren), was geeignet ist.

3. Ich hatte oben bei meinen Tipps zum kapazitätsarmen Aufbau einen 
Hubble-Fehler. Sollte heißen: schmale Leiterbahn = 0,15 mm = 6 mil.

4. Selbstentworfenes Board, mit Elektroden usw. und direkt daran kleinem 
Prozessor oder was auch immer, ist wenige mm dick, kostet ein paar Euro 
in China und vermeidet sämtliche Probleme durch wilden Aufbau und 
Verdrahtungseinflüsse. Wenn man das geschickt gestaltet, kann man gleich 
mehrere Versionen mit unterschiedlicher Elektrodengröße fertigen lassen. 
Lässt sich über serielle Schnittstelle/I2C an Arduino, PC oder 
Datenerfassungssystem deiner Wahl anschließen.

von m.n. (Gast)


Lesenswert?

Dieter R. schrieb:
> Die Diskussion driftet mehr und mehr in fröhliches Basteln ab, ich bin
> dann mal raus.

Das ist gut, zumal deutlich zu erkennen ist, daß der TO ein Mitarbeiter 
der ESA ist. Wo werden sonst schon Alufolie und Arduino verwendet?

Donald P. schrieb:
> Dabei habe ich ein Stück Alufolie von 4x5cm mit einen Arduino verbunden.

von Dieter R. (drei)


Angehängte Dateien:

Lesenswert?

Nachtrag: ich habe dann gestern Abend noch zwei Stunden meiner 
Lebenszeit geopfert, um mal ein Sensorboard zu entwerfen, das mit QTouch 
und minimalem Aufwand auskommt. Sensorfläche im Beispiel 2 x 2 cm², 
siehe Screenshot. Ob es überhaupt funktioniert, inwieweit es die 
gestellten Anforderungen erfüllt und ob man die Sensorfläche weiter 
optimieren müsste, weiß ich naturgemäß nicht. Das müsste man ggf. in 
Varianten ausprobieren. Der ersehnte Arduino lässt sich per serieller 
Schnittstelle koppeln. Die würde ich empfehlen, weil sie auch zum 
QTouch-Debuggen verwendet werden kann.

Außenabmessungen siehe Screenshot. Dicke im Bereich des Sensors = PCB = 
1,6 mm. Gesamtdicke im Bereich der Bauteile ca. 3,5 mm.

In dieser Version lässt sich das hobbymäßig löten. Man kann das auch 
noch kleiner hinbekommen, muss dann aber Bauteile verwenden, die 
professionelle SMD-Fertigung verlangen.

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.