Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Czujnik temperatury TMP101

30 Maj 2003 19:44 2149 7
  • Poziom 15  
    Jak zlikwidowac "skakanie" temperatury , odczyt z czujnika jest co sekunde temperatura wacha sie w przedziale +/- 2 stopnie celcjusza, wyglada to malo efektownie...czyzby czujnik mial tak mala bezwladnosc?? czy wynika to z bledu pomiaru przetwornika A/D...moze komus udalo sie zlikwidowac badz zmniejszyc problem...
  • Poziom 19  
    czytaj temperaturę 10 razy na sekundę i licz średnią, to powinno zmniejszyć skoki. Napisz jakiego przetwornika A/C uzywasz, byc może można by z niego "wycisnąć" nieco większą dokładność.
  • Poziom 15  
    Czujnik TMP101 produkuje Texas Instrumets http://focus.ti.com/lit/ds/symlink/tmp101.pdf . Jest to scalony przetwornik temperatura/dane cyfrowe :P ... przetwornik A/D zastosowany w nim ma rozdzielczosc 12bit. Tez myslalem nad 10 pomiarami ,a pozniej srednia,ale brakuje mi pamieci procesora (RAM) wykorzystalem na prawie na maxa wszystkie komorki,wiec tymbardziej nie wejdzie 10 liczb zmiennoprzecinkowych (integer=4bajty)...moze macie inne pomysly??
  • Poziom 19  
    Nie potrzebujesz pamiętać aż 10 liczb. Liczysz sumę 10 kolejnych pomiarów (wystarczy 2 bajty) i dzielisz przez 10. czyli potrzebujesz 2 bajty + 1 bajt na licznik=3 bajty.
  • Poziom 15  
    heh no tak, slusznie...wielkie dzieki zaraz zamieszam :)
  • Poziom 15  
    Oto listing programu co w nim zmienic zeby dalo sie wcisnac jeszcze jedna zmienna zeby mozna bylo wliczyc srednia z 10 odczytow bo za chorobe nie da sie wcisnac. (za malo pamieci RAM procka)

    Config Lcd = 16 * 2
    Deflcdchar 0 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
    Dim Adres As Integer
    Dim Adres1 As Byte
    Dim Adres2 As Single
    Dim Wyswietl As String * 16
    Dim Adres3 As Single
    Dim Adres4 As Single
    Cls
    I2cstart
    I2cwbyte 144
    'I2cwbyte 0
    I2cwbyte 1
    I2cwbyte 96
    I2cstop
    I2cstart
    I2cwbyte 144
    I2cwbyte 0
    I2cstop
    I2cstart
    I2cwbyte 145
    I2crbyte Adres , Ack
    I2crbyte Adres1 , Nack
    I2cstop
    Adres2 = Adres1 * 625
    Adres2 = Adres2 / 160000
    If Adres > 200 Then
    Adres = 254 - Adres
    Adres3 = Adres - Adres2
    Else
    Adres3 = Adres + Adres2
    End If
    Cls
    Wyswietl = Fusing(adres3 , ##.###)
    Lcd "T=" ; Wyswietl ; Chr(0) ; "C"
    Cursor Off
    Wait 2

    program napisany w bascomie
  • Poziom 15  
    wielkie dzieki nie wiedzialem ze ta liczba 16 okresla ilosc bajtow zarezerwowanych...ale juz wiem wielkie dzieki ... pozdrawiam