Hallo zusammen,
ich möchte gerne eine Platine entwickeln, mit der ich über einen RS485
Bus die Luftfeuchte messen kann.
Als Sensor möchte ich den HIH-5030 nutzen. Er soll an einen ADC des
ATmega 8.
Nun bin ich im Datenblatt des HIH daruf gestossen, dass eine minmale
Last(Widerstand) von 65kOhm am Ausgang hängen muss.
Laut Datenblatt des Atmega hat der ADC einen Eingangswiderstand von
100MOhm.
Sollte von der Seite her ja dann schon mal passen. Nun möchte ich vor
dem ADC jedoch gerne einen Tiefpass einsetzen. Mein Prof. hat immer
gesagt: "Nutzen Sie nie einen ADC am µC ohne Filter". Nun bin ich mir
allerdings unsicher, wie sich der Tiefpass an meinem Sensor verhält.
Kann ich die Schaltung so wie oben angehangen aufbauen?
Danke schon mal im Voraus.
Mit freundlichen Grüßen
Tobias
Tobias schrieb:> Sollte von der Seite her ja dann schon mal passen.
Ich sehe keinen Lastwiderstand bei dir. Passt also von der Seite schon
mal eher nicht so gut... ;-)
Tobias schrieb:> Mein Prof. hat immer> gesagt: "Nutzen Sie nie einen ADC am µC ohne Filter".
Ein weiser Mann.
Die Grenzfrequenz (fc) des Filters muss auf die Samplingfrequenz
abgestimmt sein (fc möglichst unter 1/2 samplingfrequenz (fs)).
Alle (Stör-)Frequenzen über fs/2 "spiegeln" sich an fs/2.
Hallo,
vielen Dank für die Antwort.
Hab jetzt noch 100k parallel zum C6 gesetzt. Ich hätte jetzt den µC als
Last gesehen.
Wie ganau muss die Grenzfrequenz des Tiefpasses den im Anteil der
Samplingfrequenz entsprechen? Ich arbeite mit 125kHz im ADC.
Bräuchte nach der Rechnung dann 62,5kHz.
Mit der üblichen E12 Reihe komme ich allerding "nur" auf 60,2kHz.
Genügt das? Ich habe darin noch keinerlei Erfahrungen.
Mit freundlichen Grüßen
Tobias
Tobias schrieb:> minmale> Last(Widerstand) von 65kOhmTobias schrieb:> Hab jetzt noch 100k parallel zum C6 gesetzt.
Damit ist die Last aber immer noch zu klein.
Großer Widerstand = kleine Last.
> Wie ganau muss die Grenzfrequenz des Tiefpasses den im Anteil der> Samplingfrequenz entsprechen? Ich arbeite mit 125kHz im ADC.
Du fragst den ADC aber vermutlich nicht 125000x pro Sekunde ab. Das
macht bei einem Temperatursensor keinen Sinn.
Entscheidend ist die Frequenz, mit der du in deiner Firmware den ADC
abfragst.
> Bräuchte nach der Rechnung dann 62,5kHz.> Mit der üblichen E12 Reihe komme ich allerding "nur" auf 60,2kHz.> Genügt das? Ich habe darin noch keinerlei Erfahrungen.
Es muss nicht so genau sein.
Wie ist hoch denn deine tatsächliche Samplingfrequenz (also Abfragen des
Temperaturwertes pro Sekunde)?
Edit:
Bzw. umgekehrt gefragt:
In welcher Zeitspanne erwartest du einen nennenswerte
Temperaturänderung?
Hallo,
hatte mich schlichtweg einfach vertippt.
10k habe ich paralell zum C gesetzt. Das sollte als Last ja genügen.
Ich frage den Sensor über den Timer alle 10ms ab. Wären also 100Hz.
Lege ich den Filter dann auf 50Hz aus?
Mit freundlichen Grüßen
Tobias
Joe F. schrieb:> Edit:> Bzw. umgekehrt gefragt:> In welcher Zeitspanne erwartest du einen nennenswerte> Temperaturänderung?
Natürlich erwarte ich in einer Zeitspanne von 10ms keine nennenswerten
Änderunge. Es geht hier mehr um ein Monitoring.
Mit freundlichen Grüßen
Tobias
Ich würde den Filter noch weit darunter ansetzen.
z.B. 2.2K in Serie und den Kondensator auf 4.7uF (besser noch 1nF
parallel für besseres HF Filtering).
Damit hast du eine Grenzfrequenz (-3dB) von 15 Hz, und alles oberhalb
der kritischen Frequenz von fs/2 (50 Hz) wird mit mind. 10dB
unterdrückt.
Seid ihr beiden euch wirklich sicher, dass das Datenblatt mit "Minimum
Load" meint, dass dieser Widerstandswert nicht überschritten werden
darf? Die DB von Honeywell sind leider nicht das Gelbe vom Ei (kenne ich
vom HIH8131), aber bei einem Low-Power-Sensor erwarte ich, dass der
Lastwiderstand einen gewissen Wert nicht unterschreiten darf.
Und die 50Hz-Filterung macht man besser per Software. C6 hat vielmehr
den Sinn, den beim Samplen kurzfristig gezogenen Strom in den ADC-Pin zu
liefern. Aber das wird im Atmega-Datenblatt ja eh beschrieben.
John Drake schrieb:> Seid ihr beiden euch wirklich sicher, dass das Datenblatt mit> "Minimum> Load" meint, dass dieser Widerstandswert nicht überschritten werden> darf? Die DB von Honeywell sind leider nicht das Gelbe vom Ei (kenne ich> vom HIH8131), aber bei einem Low-Power-Sensor erwarte ich, dass der> Lastwiderstand einen gewissen Wert nicht unterschreiten darf.
Tja,
das ist eben die gute Frage.
Wenn von "Minimum Load" die Rede ist zwischen Output und Ground würde
ich es so interpretieren, dass dies die kleinst mögliche Last ist.
Ja, das ist Raterei. Es könnte genausogut minimaler Lastwiderstand
heißen. Korrekterweise hätte das in die Tabelle 1 aufgenommen werden
müssen.
Für mich ist die Sache klar: ich würde den Sensor hochohmig betreiben.
Wenn du dir nicht sicher bist: Miss halt z.B. bei 10kOhm, 68kOhm und
470kOhm die Ausgangsspannung und schaue auf Abweichungen.
John Drake schrieb:> Ja, das ist Raterei. Es könnte genausogut minimaler Lastwiderstand> heißen. Korrekterweise hätte das in die Tabelle 1 aufgenommen werden> müssen.>> Für mich ist die Sache klar: ich würde den Sensor hochohmig betreiben.> Wenn du dir nicht sicher bist: Miss halt z.B. bei 10kOhm, 68kOhm und> 470kOhm die Ausgangsspannung und schaue auf Abweichungen.
Ja das wäre jetzt auch meine Idee gewesen.
Den Tiefpass(Hardware) lass ich dann ganz wegfallen? Sowohl für 50Hz als
auch für 62,5 kHz?
John Drake schrieb:> Und die 50Hz-Filterung macht man besser per Software. C6 hat vielmehr> den Sinn, den beim Samplen kurzfristig gezogenen Strom in den ADC-Pin zu> liefern.
Das ist eben nur die halbe Wahrheit.
Der Filter dient auch dazu, Aliaseffekte oberhalb der Nyquist-Frequenz
(fs/2) zu reduzieren.
Siehe: https://de.wikipedia.org/wiki/Alias-EffektJohn Drake schrieb:> Seid ihr beiden euch wirklich sicher, dass das Datenblatt mit "Minimum> Load" meint, dass dieser Widerstandswert nicht überschritten werden> darf?
Hm, wirklich guter Einwand. In einem anderen Dokument steht hierzu:
"For an example with typical values of Vtn=1.7, Vtp=1.2, VDD=5 V and
Vbias=2.6 V (Vt dependent), the maximum source current is about 50 μA.
Therefore, for correct operation, the recommended minimum load value is
76 kOhm (3.8 V/50 μA)."
(http://sensing.honeywell.com/index.php?ci_id=51482).
Davon ausgehend hast du Recht, das ist wohl der kleinste zulässige
Widerstand...
3.3V/65K ergibt genau diese 50uA...
Das ist natürlich dann wieder ein Problem mit einem Filter, der aus
einem relativ kleinen Serienwiderstand und einem großen Kondensator
besteht.
Ich würde sagen, du lässt den Lastwiderstand erstmal weg (machst ein
unbestücktes Pad hin), setzt darauf, dass die 100K vom Input ausreichen,
und dimensionierst den Filter eher in Richtung 22K / 1u.
Die 150uA beim initialen Aufladen des Kondensators (ca. 0.1s) wird der
Sensor schon aushalten können.
Tobias schrieb:> Den Tiefpass(Hardware) lass ich dann ganz wegfallen? Sowohl für 50Hz als> auch für 62,5 kHz?
Nein. Höre auf deinen Professor, und auch auf mich ;-)
Du wirst erstaunt sein, wie viel stabiler deine Messwerte mit diesem
Filter sind.
John Drake schrieb:> Da wird sich der Sensor aber schwer tun, so schnelle Änderungen> bereitzustellen...
Auch dieser Sensor hat einen Rauschanteil.
Ausserdem gibt es andere Störquellen, die den Messwert verfälschen.
Daher ist es fast schon sträflich den Tiefpass (2 Bauteile für je 1
cent!) wegzulassen.
Joe F. schrieb:> John Drake schrieb:>> Da wird sich der Sensor aber schwer tun, so schnelle Änderungen>> bereitzustellen...>> Auch dieser Sensor hat einen Rauschanteil.> Ausserdem gibt es andere Störquellen, die den Messwert verfälschen.> Daher ist es fast schon sträflich den Tiefpass (2 Bauteile für je 1> cent!) wegzulassen.
Ich geb dir in der Sache recht.
Aber bei einem Luftfeuchtesensor mit Nyquist zu argumentieren, mutet
schon ein wenig seltsam an.
Karl Heinz schrieb:> Aber bei einem Luftfeuchtesensor mit Nyquist zu argumentieren, mutet> schon ein wenig seltsam an.
Nicht für Leute, die sich auskennen.
Das Problem sind doch nicht die Sensorwerte, sondern die Störungen, die
man gar nicht erst im ADC haben möchte.
Und die hören bei fs/2 nicht auf...
Beispiel: in meinen Schaltungen messe ich üblicherweise ca. 50mV
Rauschen auf den 3.3V.
Das sind 1.5% der 3.3V (angenommener Messbereich des ADC), oder -36dB.
Also misst der ADC ohne Filter bereits ab Bit 6 das Rauschen.
Karl Heinz schrieb:> Ein Tiefpass in Software würde es auch tun, bei den zu erwartenden> 'Signalfrequenzen'
Nein. Du hast es nicht verstanden.
Nach dem ADC bilden sich die Störfrequenzen als Artefakte in dem
Frequenzband ab, das du eigentlich auswerten willst.
Also ausgehend von einer Samplefrequenz von 100 Hz stellt sich ein
Störsignal von 90 Hz als 10 Hz Signal dar, ein 95 Hz Störsignal als 5
Hz, usw. Das setzt sich nach oben beliebig fort.
Da nützt dir der Software-Tiefpass nichts mehr.
Das kriegst du nur vor dem ADC weg.
Joe F. schrieb:> Karl Heinz schrieb:>> Ein Tiefpass in Software würde es auch tun, bei den zu erwartenden>> 'Signalfrequenzen'>> Nein. Du hast es nicht verstanden.
Doch ich habe es verstanden.
Du reitest auf einem Problem rum, das keines ist.
EIn Tiefpass in Software und alle 50Hz Artefekte, die möglicherweise von
einer möglichen Netzfrequenzeinstreuung herrühren könnten, sind weg.
So ein Luftfeuchtesensor ändert doch nicht 10 mal pro Sekunde seinen
Wert. WEnn der alle 10 Sekunden einmal seinen Wert ändert dann ist es
viel und dazu muss er schon im Badezimmer stehen und jemand muss die
Dusche aufdrehen. D.h der Tiefpass kann ruhig grosszügig gemacht sein
und mehr als ein paar mal pro Sekunde braucht man da auch nicht
abtasten.
50 Hz sind ja leider nicht die einzige Störfrequenz.
Schaltregler, der ADC, der uC, alle erzeugen Störungen in allen
möglichen Frequenzbändern.
Miss mal alleine die Versorgungsspannung, 50mV Rauschen sind da nicht
übertrieben.
Dann machen viele Leute, die scheinbar ohne Probleme Temperatur und
Luftfeuchtesensoren auslesen irgendwas grundsätzlich komplett falsch,
wenn sie deine Störungen alle nicht in den Daten haben?
Bleib doch mal am Boden.
Wir haben es hier mit Sensoren zu tun, die extrem low frequency
Änderungen zeigen. Das ist nicht irgendwas high-tech, das mit 10kHz
abgefragt werden muss.
Ja, jeder der einen ADC Eingang ohne korrekt berechneten Tiefpass
beschaltet macht etwas grundsätzlich falsch.
Ich habe versucht zu erklären warum. Wer es nicht sehen will, braucht
sich nicht die Mühe machen es zu verstehen.
Dann habe ich schon mehr Aufträge ;-)
Edit:
Karl Heinz schrieb:> Wir haben es hier mit Sensoren zu tun, die extrem low frequency> Änderungen zeigen. Das ist nicht irgendwas high-tech, das mit 10kHz> abgefragt werden muss.
Es spielt keine Rolle, ob du mit 100 Hz abfragst, oder 10 KHz.
Das Problem bleibt das gleiche: Die Störungen bilden sich in tieferen
Frequenzen ab, und ein Softwarefilter hilft dagegen nicht.
Joe F. schrieb:> Ja, jeder der einen ADC Eingang ohne korrekt berechneten Tiefpass> beschaltet macht etwas grundsätzlich falsch.> Ich habe versucht zu erklären warum. Wer es nicht sehen will, braucht> sich nicht die Mühe machen es zu verstehen.> Dann habe ich schon mehr Aufträge ;-)>> Edit:> Karl Heinz schrieb:>> Wir haben es hier mit Sensoren zu tun, die extrem low frequency>> Änderungen zeigen. Das ist nicht irgendwas high-tech, das mit 10kHz>> abgefragt werden muss.>> Es spielt keine Rolle, ob du mit 100 Hz abfragst, oder 10 KHz.> Das Problem bleibt das gleiche: Die Störungen bilden sich in tieferen> Frequenzen ab, und ein Softwarefilter hilft dagegen nicht.
Danke an euch beide.
Ich werde denk ich die Hardware-Lösung nutzen. Habe mit analogen
Tiefpässen bis jetzt gute Erfahrungen gemacht.
Eine Frage hätte ich allerdings noch.
Wenn ich mich jetzt doch dazu entscheiden sollte, nur 10mal pro Sekunde
den Sensor abzufragen müsste ich meinen Filter ändern oder?
Ich habe momentan noch nicht richtig verstanden, warum ich diese
Frequenz betrachten muss und nicht die wirklich Samplingfrequenz.
Deine wirkliche Samplingfrequenz ist genau die Frequenz, mit der du die
Werte vom ADC abholst.
Den Tiefpass bei 10 Hz Samplingfrequenz auf eine Grenzfrequenz von 5 Hz
(oder weniger) zu dimensionieren ist auf jeden Fall zu empfehlen.
Der 22K/1uF (fc 7Hz) unterdrückt dir 50Hz mit ca. -17dB
Wenn du mit 10 Hz sampelst, reicht dir evtl. auch fc = 2.8Hz
-> 56K/1uF
Dann liegt die Dämpfung von 50Hz schon bei ca. -25dB.
Das gleiche gilt natürlich für alle höheren Frequenzen. Die werden auch
entsprechend besser (-8dB) unterdrückt.