Temperatur Sensor Modul (Mega128-Modul + DS1820)

rangar

Neues Mitglied
16. Sep. 2008
49
0
0
Voerde
Sprachen
  1. ANSI C
  2. Assembler
Hallo Zusammen,

nach langer Pause habe ich das Mega128-Modul mal wieder reaktiviert.
Nach Umstellung auf Win7 hatte ich noch keine Zeit und Lust gehabt die Umgebung wieder lauffähig zu machen.
Jetzt funktioniert wieder alles Prima und ich will hier kurz mein aktuelles Projekt schildern.

Es ist ein Temperatur Sensor Modul (Mega128-Modul + DS1820), welches über USB mit dem PC verbunden ist.
Eine PC Applikation stellt dann den Temperaturverlauf dar, sowie einige statistischen Daten.
Außerdem werden die Daten in einer Datei gespeichert.

ScreenShot 005 24,69 °C.pngBild0028_k.jpg

Funktioniert soweit ganz gut bis auf ein Problem: Die Temperataur wird um 2°C zu hoch angezeigt :(
Trotz tausendfacher Überprüfung der Formel finde ich keinen Fehler :confused:
Ich hatte 3 Sensoren bestellt und alle drei zeigen den gleichen Effekt, deshalb könnte der Fehler doch noch bei mir liegen :p
Vielleicht ist es auch eine fehlerhafte Charge, Sensoren falsch oder gar nicht abgeglichen? Hat das auch schon mal jemand beobachtet?

Als nächstes möchte ich ein Wlan Modul dranhängen, so daß ich die Daten in die Cloud schicken kann.

Kennt jemand auf Anhieb ein Wlan Modul das sich über Uart oder SPI an den Atmega anschließen lässt?

Mal sehen wie es weiter geht.

Viele Grüße
rangar
 
Wenn Du uns Deinen Code nicht zeigst, könne wir den auch nicht durchgehen...
Verwendest Du den "einfachen" Modus (dann sind das ja bereits signed Words, nur daß die eben halben °C entsprechen), oder ziehst Du auch noch Byte 6 und 7 aus dem Scratchpad mit hinzu?
Deinem Screenshot nach zu schliessen scheints wohl eher letzteres zu sein...

Achso: was ziehst Du als Referenz heran? (Diese stimmt?)
 
Hallo Rangar,

ohne Code kann ich natürlich auch nix sagen. Und wenn es nicht zufällig BASCOM ist, dann muss ich mich eh bedeckt halten. :cool:
Ich selbst habe mit den DSs aber bisher gute Erfahrungen gemacht und, wie schon erwähnt wurde, ist meißt die Referenz das Problem. Wird auch an der gleichen Örtlichkeit gemessen?!! Sprich, nicht das Raumtermometer benutzen, das 4m weiter im Raum weg ist. :rolleyes:

Was MICH aber interessieren würde... Wie hast Du die Software am PC realisiert, welche Sprache und würdest Du eventuell den Code zur Verfügung stellen? Sowas stelle ich mir auch schon lange vor, aber die Zeit war bisher immer das Problem. Habe relativ gute VisualBasic-Kenntnisse, aber habe mich da zum Beispiel noch nie mit RS232 auseinandergesetzt. Ich schätze mal, die USB-Verbindung emuliert ja auch nur nen virtuellen COM-Port?!

Gruß Dirk
 

  • Stimmt, Code kann zur Fehleranalyse nicht schaden :rolleyes:
    Code:
    int Temperature = ScratchPadRam.TempLSB | ((int)ScratchPadRam.TempMSB << 8);
    if(  FamilyCode() == 0x10 )	// id[0]	
    {	
          Temperature <<= 3;
    }         
    Temperature = Temperature >> 4;
    
    // Formel aus Datenblatt: TEMPERATURE = TEMP_READ - 0,25 + ((COUNT_PER_C - COUNT_REMAIN)/COUNT_PER_C)
    
    float ftemp = (float)Temperature - (float)0.25 + (float)(((float)ScratchPadRam.CountPerC - (float)ScratchPadRam.CountRemain) / (float)ScratchPadRam.CountPerC);

    Byte 6 und 7 aus dem Scratchpad werden verwendet.
    Die CRC der Scratchpad Daten wird auf der PC Seite überprüft und ist immer OK.


  • Als Referenz benutze ich ein Standard Wohnzimmer Wetterstation Digital Thermometer.
    Das Modul liegt direkt daneben und misst immer ca 2°C zu viel. Auch bei steigenden Temperaturen bleibt die Differenz gleich.
    Vielleicht stimmt diese Referenz nicht, aber auch die "gefühlte" Zimmertemperatur entspricht eher der Wetterstation Anzeige.


  • Die PC Software ist mit C# erstellt und die Datenübertragung geht über den SiLab USB Treiber( Beispiel s. AVR-Projekte-> CP2102 - C# Treiber).
    Verbindung über Virtual Comport ist auch möglich, habe ich noch nicht ausprobiert. Die Diagramm Darstellung übernimmt eine Library (http://sourceforge.net/projects/zedgraph/)
    Das Windowsprogramm zusammenzudengeln ist mit Hilfe der Beispiele nicht soooo schwierig.
    Die Herausforderung liegt in dem zusammenbasteln des Protokolls zwischen Mikrocontroller und PC, da gibt es sicher tausend Möglichkeiten.
    Ich benutze ein Paket basiertes Protokoll das mit Steuerzeichen arbeitet (STX,ETX,DLE)
    Paket sieht so aus: STX | STATUS | TYPE | LENGTH | DAT0 ..... DATX | CRC | ETX |
 
Kommando zurück :victory:
Alles bestens mit den Sensoren! Das Problem saß vor der Tastatur :rolleyes:

Ich glaube ich habe jetzt alle Seiten im Internet zum DS1820 gelesen :D und konnte zwei Probleme ausmachen.

  • Eigenerwärmumg der Platine (Lochraster!!) oder/und Temperatureinfluss der Schaltung (durch andere Bauteile)
  • Körperwärme, die Platine lag direkt vor mir, hinter der PC-Tastatur

Beide Punkte konnte ich eindeutig "nachweisen" und haben in Summe die 2°C ausgemacht.
Der entscheidene Eintrag den ich gelesen hatte war "Achtung, das Ding hört Flöhe husten"...und so wars dann auch!

Ich hab die Teile schon verflucht und die sind auch schon fast auf dem Müll gelandet.
Jetzt muß ich sagen: Respekt, liebe DS1820 Teilchen, ich habe mich Doof angestellt! Aber ab jetzt werden wir noch viel Freude zusammen haben :D
 

Ü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)