www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SHT75 am PIC 16F877A


Autor: Enrock Ja (Firma: studi) (enrock)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus und Hallo,

ich habe ein Problem mit meinem SHT75 Temperatur und Feuchte-Sensor. Und 
zwar bekomme ich diesen an meinem PIC 16F877a nicht zum laufen.
Mein Quellcode ist im Anhang

Gibt es jemanden, der mit dem Sensor Erfahrung hat und ebenfalls wie ich 
in Assembler programmiert?
Jemand ne Idee, was ich falsch mache oder wo der Fehler ist. Vielleicht 
in der Initialisierung….

Danke

Gruß

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Daniel,

ich habe ein Projekt mit SHT11 an einem 16F628 (glaube ich). Kann ich 
heute abend mal raussuchen - schon 3 Jahre her...

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal sehen, ob ich heute dazu komme ;)

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

ich habe mein Projekt noch mal hervorgekramt. Leider ist der Code derart 
mit Hilfe von Makros realisiert, dass die SHT-Ansteuerung nur schwer 
nachvollziehbar ist.

Diese Seite hat mir damalsgeholfen (Wetterstation mit PIC und SHT):

 http://www.njqrp.org/digitalhomebrewing/pic-wx/pic-wx-3.html

Kannst dir ja mal die SHT-Routinen ansehen. Für die Linearisierung der 
Feuchtemessung gibt es eine Vereinfachung (über drei Geraden). Das spart 
erheblich RAM und Zeit. Sag Bescheid, wenn du Daten lesen kannst. Dann 
such' ich mal die Lienearisierung raus.

TD

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

von hier schwierig zu sagen... Und ohne Oszi kann man nur probieren. 
Wenn du meinst, es könnte an der Frequenz liegen, dann einfach viele 
nop's einbauen.

Zur Abweichung:
Könnte es sein, dass du im 8/12 Bit Modus misst, beim Rechnen aber die 
Formeln für den 12/14 Bit Modus verwendest? (Manchmal hat man ja solche 
Tage...)

Ich werde (morgen) mal versuchen die relevanten Teile aus meinem Code zu 
extrahieren.

Autor: Enrock Ja (Firma: studi) (enrock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay ich habe das Problem gerade eben beseitigt!.

Argh.

Was ich mir aber immer noch nicht erklären kann ist die Abweichung bei 
der Messung.
Hat dazu jemand eine Idee?

Gruß

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie oft mißt du pro Sekunde? Hast du schon mal zurückgerechnet wenn 
Temp=5680 (Data = 1011000110000) und dann mal mit Oszi vergleichen.
Zum Anfang hatten wir auch ein paar Probleme mit dem SHT75. Aber er hat 
definitiv keine Abweichung zu Anderen Sensoren (bzw. nur im 
Nachkommabereich).

Gruß

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

ich werde dann wohl mal heute abend mein Projekt "auseinandernehmen". 
Ich habe einen 16F628 verwendet. Für die Berechnungen 
(Multiplikation/Division) habe ich Routinen aus den AN's von Microchip 
genommen. Genaueres werde ich dir heute abend schreiben.

Hast du immer noch Probleme mit den Abweichungen? Bei meinem Projekt 
sind Abweichungen uninteressant, da ich nur die Differenz zwischen zwei 
Sensoren benötige. Solange beide dieselbe Abweichung haben ist's egal.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

hier habe ich mal die Linearisierung der Luftfeuchte-Messung aus meinem 
Projekt extrahiert. Wie gesagt, ich habe viele Makros verwendet, hierbei 
allerdings nicht. Die Linearisierung erfolgt dabei durch Näherung über 
drei Geraden (Quelle siehe unten).

Die gemessenen RH Daten (2 Bytes vom Sensor) müssen in SHTxx1DataByte1 
und SHTxx1DataByte2 übergeben werden. Dann

     call SHTxx1LinearizeHumidity

aufrufen. RH wird in W zurückgegeben.


Wenn Du willst, kann ich dir auch das komplette Projekt senden 
(E-Mail?). Aber ich glaube nicht, dass du da durchsteigst (ich habe da 
selbst mittlerweile Schwierigkeiten ;-)

Viel Glück!
; Benötigte Variablen:
 cblock
        SHTxx1Data:0       ; 16 Bit Data
        SHTxx1DataByte1    ; RAM to store measurement Hi byte
        SHTxx1DataByte2    ; RAM to store measurement Lo byte
        SHTxx1DataCRC      ; RAM to store measurement CRC byte
        Temp1
        Temp2
 endc

;  :
;  :
;  :

;------------------------------------------------------------------------------
; LinearizeHumidity
;
; Kompensation der Nichtlinearität der RH-Kennlinie des SHT-Sensors
; Methode: Näherung über 3 Geraden für 12 Bit Genauigkeit
; von  Claudiu Chiculita 
;     claudiu.chiculita@ugal.ro
;      http://www.ac.ugal.ro/staff/ckiku/software
;
SHTxx1LinearizeHumidity:

SHTxx1RH128  equ  Temp1
SHTxx1RH32   equ  Temp2

    movf  SHTxx1DataByte1,w     ; x/128
    movwf  SHTxx1RH128
    rlf  SHTxx1DataByte2,w
    rlf  SHTxx1RH128,f
;
    swapf  SHTxx1DataByte1,w    ; x/32
    andlw  0xf0
    movwf  SHTxx1RH32
    swapf  SHTxx1DataByte2,w
    andlw  0x0f
    iorwf  SHTxx1RH32,f
    bcf  STATUS,C
    rrf  SHTxx1RH32,f
;
    movlw  4
    subwf  SHTxx1DataByte1,w
    btfsc  STATUS,C
    goto  SHTxx1_LH_f2
    movf  SHTxx1RH128,w      ; x<1024
    addlw  -3
    addwf  SHTxx1RH32,f
    movlw  200               ; do not go below 0
    subwf  SHTxx1RH32,w
    btfsc  STATUS,C
    clrf  SHTxx1RH32
    goto  SHTxx1_LH_end
SHTxx1_LH_f2
    movlw  10
    subwf  SHTxx1DataByte1,w
    btfsc  STATUS,C
   goto  SHTxx1_LH_f3
    movf  SHTxx1RH32,w       ; 1024<=x<2560
    addlw  4
    movwf  SHTxx1RH32
    goto  SHTxx1_LH_end
SHTxx1_LH_f3
    movf  SHTxx1RH128,w      ; 2560<=x
    addlw  -24
    subwf  SHTxx1RH32,f

SHTxx1_LH_end
    movf  SHTxx1RH32,w
    return

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.