watterott ;title =
Ergebnis 1 bis 2 von 2

Thema: SHT-11 Feuchte und Temperatur

  1. #1
    Moderator Avatar von Trexis5
    Registriert seit
    02.11.2016
    Ort
    Neu-Ulm
    Beiträge
    60

    Idee SHT-11 Feuchte und Temperatur

    Code:
    '( Dieses Document wurde vom bascom-forum.de erstellt.
    Autor : Don
    Nur Für Privaten Gebrauch
    
    ')
    
    
    
    
    $regfile = "m32def.dat"
    $crystal = 16000000
    $hwstack = 256
    $swstack = 256
    $framesize = 256
    Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
    
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portb.0 = Input
    Config Portb.1 = Input
    
    'Config Single = Scientific , Digits = 2
    
    
    Const C1 = -4
    Const C2 = 0.0405
    Const C3 = -0.0000028
    Const T1c = .01
    Const T2 = .00008
    Const T1f = .018
    '$baud = 9600
    
    Clk Alias Portd.6                                           '----->   Eure Pins einstellen.
    Daten Alias Portd.5
    Daten_in Alias Pind.5
    
    Dim Befehl As Byte
    Dim Daten_high As Byte
    Dim Daten_low As Byte
    Dim Datenwort As Word
    Dim Temperatur As Word
    Dim Feuchtigkeit As Word
    Dim Reset_count As Byte
    Dim Calc As Single
    Dim Calc2 As Single
    Dim Rhlinear As Single
    Dim Rhlintemp As Single
    Dim Tempc As Single
    Dim Error As Bit
    Dim Crc As Byte
    Dim Heizung_bit As Bit
    '-----------------------------------
    
    Macro Ack_sht
    Config Daten = Input
    Set Clk
    Reset Clk
    Waitus 10
    End Macro
    '------------------------------------
    Macro Acknowledge
    Config Daten = Output                                       '  Nun die Bestätigung (Acknowledge) senden
    Set Clk
    Reset Daten
    Reset Clk
    End Macro
    '------------------------------ 'Wartet auf das  Wandlungs ende SHT_11 hat Werte
    Macro Sht_ready
    Config Daten = Input
    Reset_count = 0
    Do
    Waitms 10
    Incr Reset_count
    If Reset_count => 200 Then
    Set Error
    Exit Do
    End If
    Loop Until Daten_in = 0
    'Bitwait Daten_in , Reset
    End Macro
    '-----------------------------------
    Macro Daten_ende
    Config Daten = Output
    Set Daten
    Set Clk
    Reset Clk
    End Macro
    Gosub Connectionreset
    Cursor Off
    Cls
    '+++++++++++++++++++++Main
    
    
    Do
    Befehl = &B00000011
    Gosub Daten_lesen
    Temperatur = Datenwort
    Befehl = &B00000101
    Gosub Daten_lesen
    Feuchtigkeit = Datenwort
    Gosub Math
    
    
    
    If Pinb.1 = 1 Then
    Bitwait Pinb.1 , Reset
    Gosub Heizung_aus
    End If
    
    If Pinb.0 = 1 Then
    Bitwait Pinb.0 , Reset
    Gosub Heizung_an
    End If
    
    
    
    
    If Error = 1 Then
    Reset Error
    Locate 8 , 5
    Lcd "Stoerung"
    Gosub Connectionreset                                       'Sollte der SHTxx eine Datenstörung haben wird er resetet.
    Else
    Locate 8 , 5
    Lcd "        "
    End If
    
    
    Wait 1
    Loop
    '+++++++++++++++++++++++Main
    End
    
    
    
    
    Start_sequenze:
    Config Daten_in = Output
    Set Clk
    Reset Daten                                                 ' Transmission Start Sequence
       '       _____         _______
       ' Data:      |_______|
       '           ___     ___
       ' SCK:  ___|   |___|   |_____
    Reset Clk
    Waitus 10
    Set Clk
    Set Daten
    Reset Clk
    Return
    '############################################
    Daten_lesen:
    Gosub Start_sequenze
    Config Daten_in = Output
    Shiftout Daten , Clk , Befehl , 1 , 8 , 5
    Ack_sht
    Sht_ready
    Config Daten = Input
    Shiftin Daten_in , Clk , Daten_high , 1 , 8 , 5
    Acknowledge
    Config Daten = Input
    Shiftin Daten_in , Clk , Daten_low , 1 , 8 , 5
    Acknowledge
    Config Daten = Input
    Shiftin Daten_in , Clk , Crc , 1
    Daten_ende
    
    Datenwort = Makeint(daten_low , Daten_high)
    
    
    Return
    '###################################################
    ' Connection Reset Sequence
       '       _____________________________________________________________         _______
       ' Data:                                                              |_______|
       '          __    __    __    __    __    __    __    __    __       ___     ___
       ' SCK:  __|  |__|  |__|  |__|  |__|  |__|  |__|  |__|  |__|  |_____|   |___|   |_____
    Connectionreset:
    Config Daten = Output
    Set Daten
    For Reset_count = 1 To 9
    Set Clk
    Waitus 10
    Reset Clk
    Waitus 10                                                   '
    Next
    Gosub Start_sequenze
    Return
    '--------------------------------------
    Heizung_an:
    Set Heizung_bit
    Gosub Start_sequenze
    Config Daten = Output
    Befehl = &H06
    Shiftout Daten , Clk , Befehl , 1 , 8 , 50
    Sht_ready
    Acknowledge
    Befehl = &B00000100
    Shiftout Daten , Clk , Befehl , 1 , 8 , 50
    Ack_sht
    Acknowledge
    Daten_ende
    Return
    '----------------------------------------
    Heizung_aus:
    Reset Heizung_bit
    Gosub Start_sequenze
    Config Daten = Output
    Befehl = &H06
    Shiftout Daten , Clk , Befehl , 1 , 8 , 50
    Sht_ready
    Acknowledge
    Befehl = &H00
    Shiftout Daten , Clk , Befehl , 1 , 8 , 50
    Sht_ready
    Acknowledge
    Daten_ende
    Return
    '-----------------------------------------
    Math:
    Tempc = T1c * Temperatur
    Tempc = Tempc - 40
    
    Locate 2 , 5
    Lcd Fusing(tempc , "##.#") ; " C"
    
    Calc = C2 * Feuchtigkeit
     Calc2 = Feuchtigkeit * Feuchtigkeit
     Calc2 = C3 * Calc2
     Calc = Calc + C1
     Rhlinear = Calc + Calc2
    
    
    
     Calc = T2 * Feuchtigkeit
     Calc = Calc + T1c
     Calc2 = Tempc - 25
     Calc = Calc2 * Calc
     Rhlintemp = Calc + Rhlinear
    
    Locate 4 , 5
    Lcd Fusing(rhlintemp , "##.#") ; " %"
    
    
    
    
    Return

  2. #2
    Administrator Avatar von DON
    Registriert seit
    19.11.2016
    Ort
    Herford
    Beiträge
    368
    Das zusatzblatt gefunden.
    Der_Kondensator_ist_Wichtig.pdf
    Ein Mensch mag noch so herausragende Fähigkeiten haben – wenn er arrogant und selbstsüchtig ist, sind sie nichts wert.
    Konfuzius


Stichworte

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •