Bascom Sensor HYT221 - Umrechnung der Rohdaten

Hi,

Nach Dinos Auszug aus den Features (#14) sind die Daten bereits präzise, Temperatur- und Linearitäskompensiert.
naja ... sollten bereits präzise sein. :rolleyes: Ob sie es wirklich sind ist ne andere Sache. Es gab ja mal nen längeren Thread mit nem Sensor wo Markus so einige Probleme hatte. Ergebnis war dann das es bei dem Lieferanten wohl für etwas günstiger ne Version gab die nicht so ganz in den Toleranzen lag. :p Beim Großhändler wären es dann die "vernünftigen" Versionen gewesen.

Gruß
Dino
 
Hi Uwe,

unter folgendem Link kannst du ein Bascom Beispielprogramm herunterladen welches für den HYT271 geschrieben ist
(Lesen der Werte und berechnen der Werte).

http://www.hygrochip.com/fileadmin/...te/Digitale_Feuchtesensoren/BascomHytRev2.bas

Es funktioniert aber auch mit dem HYT221.
Ich betreibe damit den HYT221 Sensor. Die Temperaturwerte vom HYT221 habe ich mit dem DS18S20 bei Raumtemperatur überprüft,
die Werte stimmen. Die Feuchtigkeitswerte habe ich mangels Vergleich nicht überprüfen können, sie sehen aber meiner Meinung
nach richtig aus.
Anbei auch noch eine I2C Protokollbeschreibung. Ich denke damit müsstest du dem Sensor die richtigen Werte entlocken können.

Gruß
Biker

Gruess Dich Biker :)

Genau ueber diese Rechenroutine, die Du mir hier empfiehlst und dieses I2C-Protokoll reden wir hier die ganze Zeit. Les mal meinen letzten Beitrag vor deinem aufmerksam durch. Da steht, dass bei Raumtemperatur die Werte halbwegs plausibel sind und bei fallender Temperatur die Abweichung entsteht. Wenn Du den HYT221 und einen DS18B20 hast, dann pack mal beide zusammen in den Kuehlschrank und gleiche nach 2min die Temperatur mit dem DS ab. Auf das Ergebnis bin ich gespannt.


Nach Dinos Auszug aus den Features (#14) sind die Daten bereits präzise, Temperatur- und Linearitäskompensiert.
Hast Du Dir diesbezüglich mal die Raw-Daten angesehen (also bei der Feuchte ohne die beiden MSB, und bei der Temp rechtsorientiert)? Laut Features sollten die linear sein - ist das nicht der Fall, dann stimmt logischerweise die lineare Auswertung/Umrechnung auch nicht.
Sind die Rawdaten linear, ist zu untersuchen, wo die Abweichung "erzeugt" wird. Ich spekuliere jetzt mal (Bascom + Beitrag #4), daß Du Fließkommavariablen verwendest... mit welcher Genauigkeit?
(Fließkomma ist eigentlich nix für die AVR...)

Also, schau Dir erstmal die Rawdaten in den extremeren Bereichen an...


LotadaC, ich rechne die Daten nicht mit dem AVR um sondern lese nur mit der I2C-Routine die Rohdaten aus und dann mit dem Taschenrechner, Kugelschreiber und im Kopf weiter. Und mein Kopf und der Taschenrechner koennen Fließkommazahlen :) Morgen mach ich nochmal verschiedene Temp-Tests im Kuehlschrank und im Gefrierfach, wenn ich dazu komme. Ich ueberlege auch tatsaechlich mal den Backofen anzuwerfen und bei 100 Grad zu vergleichen.

Heute hab ich bei B&B-Sensors, dem Nachfolger von Hygrosens angerufen. Laut deren Auskunft ist die Rechenroutine korrekt. Eine anschliessende Mail meinerseits mit den gemessenen Rohdaten wurde allerdings schon nicht mehr beantwortet.
 
ok, dann wertest Du also bereits quasi die Rohdaten aus...
konsequenterweise müßtest Du (eigentlich Aufgabe des Herstellers) jetzt nochmal parallel Deinen (verlässlichen!) Referenzsensor und den HYT das ganze zu erwartende Spektrum durchlaufen lassen, und die Rohdaten (also die 14bit-Zahlen) dokumentieren. Bei jedem Kelvin, oder jedem halben oder so.
Dann das ganze in ein Diagramm, dann sollte sich erkennen lassen, wie linear Dein HYT wirklich ist, und ob der Anstieg (Formel) paßt.

Sinnigerweise beide Sensoren an denselben Controller, das Programm liest kontinuierlich den Referenzsensor, bei jedem (halben/ganzen/...) Kelvin wird zusätzlich der HYT gelesen, und beide Werte über den UART auf ein Terminalprogramm gejagt/dort aufgezeichnet. Das sollte sich dann in ein Tabellenkalkulationsprogramm kopieren lassen.

Soweit klar? Alles andere ist nur Spekulation... wenn Hygrosens, oder wie auch immer die jetzt heißen, da nicht drauf eingehen...:mad:

LotadaC
 
Leider fehlen mir die technischen Voraussetzungen, um einen Temperaturbereich von -40 bis 125 Grad praezise zu simulieren. Aber Du hast recht, das waere die einzige Moeglichkeit, den Fehler physisch zu beweisen und mit zwei Achsen darzustellen. Wenn die Abweichung linear ist, wuerde ein zusaetzlicher Faktor oder Teiler ja bereits Abhilfe schaffen. Ich muss leider gleich wieder zum Kunden und um 22.00 auf Nachtschicht, aber morgen Nachmittag hab ich Zeit und werd mich mal den Backofen starten. Dort sollte es mit gelingen, zumindest den oberen Temp-Bereich schrittweise auszuwerten. Wenn der Gefrierschrank nicht voll waere, koennte man ueber die Abtaufunktion hier auch den unteren Bereich abtasten. Wird Zeit, dass mein neues Arbeitszimmer fertig wird :)
 
Benutzt du eigentlich immer noch die Befehlsfolge aus Beitrag #15?
Dort müsste doch eigentlich immer ein ACK an die Read Befehle gehangen werden, wenn weitergelesen werden soll.
In der Hilfe steht dazu nichts, dass das der Default ist.
Alternativ könntest du auch mal den i2creceive befehl verwenden. Da kannst du direkt 4 Bytes in ein Array lesen und den Kommunikationsteil macht der Compiler selbst.
 
Hi,

Wenn der Gefrierschrank nicht voll waere, koennte man ueber die Abtaufunktion hier auch den unteren Bereich abtasten.
du kannst es aber auch anders machen. 2 Eispacks (diese für Kühltaschen) ins Gefrierfach. Dann rausnehmen und die beiden Sensoren dazwischen. Den Rest macht dann die normale Raumtemperatur.

Gruß
Dino
 
Hi,

zwischenzeitlich habe ich einige Messungen durchgeführt um den HYT221 mit dem DS18S20 zu vergleichen.
Messvorgang:
Ich habe eine einfache Heizfolie auf 26Grad erwärmt und dann jeweils die Temperatur um 2Grad erhöht bis auf 62Grad.
Die beiden Sensoren habe ich mit einem Klebeband auf der Heizfolie befestigt; man darf sich hiervon keine
hochgenaue Messung erwarten, je nach Befestigungspunkt weichen die Messwerte geringfügig ab.

Zur Interpretation der Messkurven:
blaue Line: Soll-Temperatur Wert
rote Linie: die gemessene Temperatur mit dem DS18S20
grüne Linie: die gemessene Temperatur mit dem HYT221

Generell ist der HYT221 wesentlich träger als der DS18S20.
Bis 50Grad liegt der Temperaturwert unter dem Wert vom DS18S20.
Über 50Grad nähern sich die beiden Temperaturwerte.
Um die 60Grad liegt der Temperaturwert über dem Wert vom DS18S20.

Wenn es zeitlich passt werde ich morgen noch einige Messungen mit Kühlschrank-Temperaturen durchführen.

Gruß
Biker
 

Anhänge

  • 26-46_Grad.PNG
    26-46_Grad.PNG
    32,3 KB · Aufrufe: 16
  • 46-62_Grad.PNG
    46-62_Grad.PNG
    31,5 KB · Aufrufe: 12
@biker

Hervorragende Arbeit :) Bin grad erst vom Kunden zurueck und muss gleich zur Nachtschicht. Aber morgen nachmittag leg ich mal meine Daten nach. Noch hab ich Hoffnung, dass der Fehler irgendwo bei mir liegt und die Sache sich noch irgendwie aufklaert.

Bis morgen
 
Hallo Biker,

die Rohwerte sind bereits umgerechnet, oder?
Irgendwie sieht das so aus, als wenn Deine Intervalle für den HYT zu kurz sind. (Der ist zu träge - hast Du ja selbst gesagt)
Auffällig ist auch das überschwingen, welches sich am Anfang eines jeden Intervalles erkennen läßt. Wie wird die Heizfolie angesteuert? PID mit dem DS18S20 als Quelle?
Aussagekräftiger wäre hier, sehr langsam die Leistung zu erhöhen, ohne Rückkopplung - bzw vor jedem Schritt abzuwarten, bis sich beim HYT nix mehr ändert.
 
Hallo LotadaC,

die Messkurven zeigen die berechneten Werte mit dem Algorithmus aus dem Bascom Programm von Beitrag #19.
Wie du richtig erkannt hast wird die Temperatur der Heizfolie mit einem PID-Regler geregelt
mit DS18S20 als Regelgröße.
Es ist eine Frage der Anordnung der beiden Sensoren auf der Heizfolie und des entsprechenden
Wärmekontakts ob es Überschwingungen gibt. Um genauere Messergebnisse zu erhalten müsste die
Messanordnung wesentlich verbessert/geändert werden, aber es ist erkennbar das der HYT221,
zumindest im von mir gemessenen Bereich von 26Grad bis 62Grad, nicht so absolut daneben liegt.

Gruß
Biker
 
Gruesst euch Leute,

hier die neuesten Erkenntnisse live aus dem Kuehlschrank :) Es hat sich heute was interessantes herausgestellt. Hab nochmal beide Sensoren in den Kuehlschrank gesteckt und per Hyperterminal alle 5 sek Ablesungen gemacht. Am Anfang hatte ich sofort 8,4 Grad Unterschied bei der Temp und 18% bei Hum, wie bereits vorher. Hab die Sensoren im Kuehlschrank gelassen und abgewartet. Und siehe da, mein DHT22 glich sich nach fast 20min den Daten des HYT an. Als dann der Kompressor zwischendurch ansprang, war die Messverzoegerung noch deutlicher zu sehen. Der HYT reagierte prompt, der DHT deutlich langsamer. Auch nach Angleich ist weiterhin ein Unterschied von 2-3 Grad (HYT misst weniger), der aber auch bei Zimmertemperatur ist, sprich lineare Verschiebung. Auch bei der Feuchte ist ein Unterschied von 4% (HYT misst mehr). Damit scheint das Problem geloest. Allerdings ohne wirkliches Verstaendnis meinerseits. Im DHT22 sitzt ein DS18B20 als Temperatursensor. Ich setzte DSe seit 2 Jahren in etlichen professionellen Projekten ein, u.a. zur Effektivitaetsmessung von Waermetauschern in Klimaanlagen. Eine derart zeitlich verschlepptes Ergebnis hab ich noch nicht gesehen...
 
Gruesst euch,

hiermal die aktuellen Infos:

Sensor am Samstag ins System integriert, Sonntag Abend kam dann mit einem Gewitter die Gelegenheit zum Abgleich mit meinen Feldmessgeraeten. Und siehe da: Bei einer rel. Feuchte von 84% war der Sensor schon auf 97% und bei einer Temp von 18,3 Grad war er auf 16.1. Meine Refferenzquelle erfuellt Laboranforderungen, also hier liegt der Fehler garantiert nicht. Keine Ahnung, was mit den Dingern los ist, ich hab den Test noch mit drei weiteren HYTs durchgefuehrt und bekomme ueberall das Gleiche raus.
 
Und wie hoch ist die Präzision zwischen den unterschiedlichen HYTs (Präzision, also nicht die (Un-)Richtigkeit - also wie präzise liegen die immer daneben, alle gleich?).
Irgendwo war ja mal ein Link auf das zugrundeliegende IC - dieses beinhaltet neben der eigentlichen Mess-Hardware und der Datenschnittstelle ja auch die Umwandlung der (nichtlinearen) Rohdaten in das, was Du binar empfängst, also die linearitäts- und temperaturkompensierten Werte in (angeblich) hervorragender Genauigkeit. Das einzige, was Du noch machst, ist die offsetbehaftete (binär) kommaverschobene Zahl in's dezimalsystem zu überführen. Da kannst Du aber nicht viel falsch machen.

Meiner Meinung nach stimmt die "Firmware" (bzw die dort abgelegte Kurve) nicht mit der Sensor-Hardware überein, warum auch immer. Daß der Hersteller/Verwalter sich dazu nicht äußert...:mad:

(Stromversorgung usw des Sensors ist korrekt und "sauber"?)
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)