Ich muss mit einem AVR, vorzugsweise ATmega8 / 328 oder ATtiny, mehrere
kleine Kapazitäten im pF bis nF-Bereich messen.
Das Ganze soll für einen kapazitiven Füllstandssensor sein. Es sind zwei
Füllstände und eine Vergleichskapazität für Temperaturdrift der
Zeitmessung (interner Takt des AVR) zu messen.
Zum einen wäre da die LC-Meter-Schaltung mit LM311
(http://digital-nw.de/images/RCKreis.png und andere). Hierfür müsste ich
mit 3 Reed-Relais die Füllstandsdrähte und den Vergleichskondensator
zuschalten. Die Reed-Relais brauchen halt Platz und Strom.
3 mal die Schaltung aufbauen scheitert daran, dass ich ja nur einen
T1-Zählereingang habe, um die Frequenzen im unteren MHz-Bereich zu
messen. Und Unterschiede in den 3 Aufbauten (Induktivität) bekommt ich
damit nicht raus.
Gleiches Problem bei Takterzeugung mit einem 555: Entweder ich muss die
Leitungen umschalten, oder ich habe mehrere 555, deren Unterschiede ich
nicht kompensieren kann. Und nur einen T1.
Dann gäbe es noch die direkte Messung über den Analogkomparator des AVR
(http://elm-chan.org/works/cmc/gfx/cmc.png). Würde mir sehr gefallen, da
wenige Bauteile. Problem hier: Es gibt nur einen Komparator. Und bei den
geringen Kapazitäten = kurzen Schaltzeiten bin ich anscheinend auf die
Nutzung des Interrupts angewiesen.
Oder gibt es eine Möglichkeit, die Messung auch mit anderen Pins
ausreichend schnell - und vergleichbar - durchzuführen? INT0 und INT1
hab ich ja auch wieder nur zwei Eingänge...
Die Messung darf hintereinander erfolgen. Die Messung darf auch durchaus
mehrere msec oder sec dauern. Aber bei längerer Messung soll der AVR
ansprechbar bleiben, es soll ein I2C-Slave werden.
Hallo,
Ich würde von deinem Design Abstand nehmen und für jeden Kanal einen
Messkopf aufbauen.
Für jeden Messkopf bedeutet das jeweils auch noch eine AVR µC mit
Schnittstelle, z.B. I2C.
Da I2C i.A. für kurze Verbindungen gemacht wurde, sind alle Messköpfe
nahe an der Messstelle anzuordnen und ihre Daten werden über einem
Master zur Verfügung gestellt.
Dieser verfügt über einen BUS, z.B. "CAN-Bus", und wird so im
Netzverbung abgefragt.
Karl schrieb:> Das Ganze soll für einen kapazitiven Füllstandssensor sein. Es sind zwei> Füllstände und eine Vergleichskapazität für Temperaturdrift der> Zeitmessung (interner Takt des AVR) zu messen.
Und die Füllstände musst du alle 100µs messen, oder warum schaltest du
nicht einfach um und misst nacheinander?
Der Andere schrieb:> Und die Füllstände musst du alle 100µs messen, oder warum schaltest du> nicht einfach um und misst nacheinander?
Hab ich doch so geschrieben: Ich könnte über Reedrelais umschalten, aber
Reedrelais sind groß und brauchen Strom.
Der AVR hat ja genug Pins, vielleicht gibt es doch eine Möglichkeit die
zu nutzen, die ich nicht sehe.
etwas ähnliches baue ich auch gerade, kapazitive Erdfeuchtemessung. Aber
anstelle eines AVR verwende ich LPC812 / LPC24, Cortex-M0. Die haben
einen Comparator aber 2 (LPC812) oder 4 (LPC824) Analogeingänge.
Die Messung funktioniert aber ich optimiere noch. Die Temperaturdrift
ist beim internen Oszi deutlich zu sehen, die Idee mit der
Vergleichsmessung eines konstanten C hatte ich auch. Oder die LPC mit
Quarz betreiben.
Wenn ich kleine C messe ist der Wert sehr stabil, habe gerade eine
Mittelung über 32 Werte eingestellt, stdAbw ist <0 und Range 3µs. Meine
Sensorfolie reagiert aber sehr empfindlich, komme ich mit der Hand näher
gehen Standardabw. und Range der Messwerte in die Höhe, auch wenn ich
mit der Leuchtstofflampe in die Nähe komme stört die kräftig. Der Sensor
dürfte stark auf die allgegenwärtigen 50 Hz Felder reagieren.
Edit:
zum Umschalten der Analogen Signale mit AVR könnte sowas wie ein CD4066
helfen.
Der Andere schrieb:> Und die Füllstände musst du alle 100µs messen, oder warum schaltest du> nicht einfach um und misst nacheinander?
Auf die gleiche Idee kam Karl schon, bevor du deine Frage gestellt hast.
Und deine Frage nach den 100µs (wo nimmst du diesen Wert her?) hat er
auch schon beantwortet:
Karl schrieb:> Die Messung darf hintereinander erfolgen. Die Messung darf auch durchaus> mehrere msec oder sec dauern.
Karl schrieb:> Ich muss mit einem AVR, vorzugsweise ATmega8 / 328 oder ATtiny, mehrere> kleine Kapazitäten im pF bis nF-Bereich messen.
Woher kommt dieser rel. große Bereich? Wie genau muss das Ergebnis sein.
Für eine ähnliche Aufgabe habe dich die Kapazitäten per
Touch-Algorithmus ermittelt.
Infos ab: Beitrag "Re: qtouch - sekt oder selters"
Hurtig schrieb:> Woher kommt dieser rel. große Bereich? Wie genau muss das Ergebnis sein.
Um die 30 bis 100pF reine Kabelkapazität bei leerem Tank, einige nF bei
vollem Tank.
Ich würde das gleiche Prinzip Schaltung Software entsprechend
angepasst gern auch für Erdfeuchtemessung nutzen.
Die LM311 Variante soll ja sehr gut auflösen über einen weiten
Messbereich. Ist halt etwas aufwendiger.
Johannes S. schrieb:> zum Umschalten der Analogen Signale mit AVR könnte sowas wie ein CD4066> helfen.
Ich hab auch schon an PhotoMos gedacht. Das Problem sind halt immer die
verbleibenden Kapazitäten. Da kommen schon einige pF, bei PhotoMos 100pF
zusammen.
Auch zeigt die Simu, dass beim LM311 die Spannung am Schwingkreis -
natürlich - negativ wird. Da braucht der 4066 dann eine negative
Hilfsspannung.
Karl schrieb:> Der AVR hat ja genug Pins, vielleicht gibt es doch eine Möglichkeit die> zu nutzen, die ich nicht sehe.
Je nachdem, wie schnell deine Pulse kommen, geht nicht nur T0 und T1,
sondern z.B. auch ein PC Interrupt und/oder INT0 und INT1.
Dabei bleibt Timer 2 eines Mega328 als Ticker immer noch frei.
Du kannst aber auch die (digitalen) LM311 Ausgänge über einen
Multiplexer führen (4051/4052) und die nacheinander auf T0/T1 führen und
messen.
Braucht halt für jede Messstelle eine Schaltung mit LM311.
Karl schrieb:> Hurtig schrieb:>> Woher kommt dieser rel. große Bereich? Wie genau muss das Ergebnis sein.>> Um die 30 bis 100pF reine Kabelkapazität bei leerem Tank, einige nF bei> vollem Tank.
Warum musst du dazu die kleinen Kapazitäten messen?
Du willst die großen Kapazitäten messen (% von Maximalkapazität?). Was
interessieren dich die kleinen. Wenn sie so klein sind, dass sie
schwierig zu messen sind, dann stören sie auch nicht.
Wolfgang schrieb:> Warum musst du dazu die kleinen Kapazitäten messen?
Ist das jetzt für die Auswahl des Messverfahrens irgendwie relevant, ob
ich 30pF oder 300pF oder 3nF messen will? Ich will schlicht keine Elkos
messen und damit fällt Ladekurve über ADC messen aus. Fertsch.
Das ist genauso irrelevant wie die Frage ob I2C oder CAN-Bus.
Hurtig schrieb:> Für eine ähnliche Aufgabe habe dich die Kapazitäten per> Touch-Algorithmus ermittelt.
Touch hatte ich mir schon angeschaut, aber mein Eindruck war, dass das
eher für Detektion einer schnellen Kapazitätsänderung bei Berührung als
zur Messung tauglich ist? Kann man damit sinnvoll in pF-Auflösung
messen?
Der große Vorteil von Q-Touch wäre, dass man problemlos mehrere Eingänge
nutzen kann.
Karl schrieb:> Oder gibt es eine Möglichkeit, die Messung auch mit anderen Pins
Beim Analogkomparator läßt sich AIN1 mit den Multiplexerausgang vom ADC
ersetzen. Damit stehen mehrere Eingänge für die Kanäle zur Verfügung.
Da die ADC-Eingänge auch gleichzeitig digitale Ausgänge sein können,
kann man einen Kondensator am Eingang schnell auf GND oder Vcc Potential
bringen und mit einem zusätzlichen Widerstand eine Lade- bzw.
Entladekurve erzeugen. Die Zeiten kann man per ICP mit Timer1 genau
ermitteln und somit die Kapazität errechnen.
Es gibt mehrere Schaltungsvarianten, von denen ich jedach keine näher
ausführen möchte. Es selber zu machen, sollte nicht schwer sein.
Ich würde jedoch dafür sorgen, daß die Kapazität am Eingang nicht zu
klein wird (>= 1 nF), um die erzeugten Frequenzen nicht zu hoch werden
zu lassen. Aber auch das ist Geschmackssache.
m.n. schrieb:> Beim Analogkomparator läßt sich AIN1 mit den Multiplexerausgang vom ADC> ersetzen. Damit stehen mehrere Eingänge für die Kanäle zur Verfügung.
Das ist mir neu, aber AIN hab ich auch noch nie verwendet. Muss ich mal
im Datenblatt schmökern.
Ich hab gestern abend mal Qtouch ausprobiert, das sieht gar nicht so
schlecht aus. Ich hab mich nur gewundert: Eigentlich sollte ich für
Kondensatorpaare 330p / 47nF ja so Werte um die 150 Umladungen bekommen.
Ich bekomme aber nur 76.
Gerade fiel es mir wie Schuppen aus den Haaren: Ich lade ja mit Vcc, der
Pin schaltet aber bei Vcc / 2. Natürlich reicht dafür die Hälfte der
Umladungen.
Ich werd mir aber dennoch mal den Analogkomperator in Verbindung mit
Qtouch ansehen. Die Schaltschwelle dürfte definierter sein als beim
"normalen" Pin.
Dann werd ich heute mal Messreihen schieben um zusehen, wie die
Auflösung und Reproduzierbarkeit der Qtouch-Lösung ist.