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

Termometr oparty na cyfrowym czujniku TMP275

Gordios 18 Lut 2011 21:09 2984 4
  • Termometr oparty na cyfrowym czujniku TMP275

    Dokładność czujnika TMP275 wynosi 0.5°C. Czujnik ten, posiadający dwuprzewodowe wyjście szeregowe dostępny jest w obudowach MSOP-8 oraz SO-8. TMP275 potrafi odczytywać temperaturę z rozdzielczością 0.0625°C. TMP275 jest kompatybilny z SMBus i pozwala na połączenie do ośmiu urządzeń na jednej magistrali. Jest idealny dla pomiarów temperatury w układach komunikacyjnych, w aplikacjach komputerowych, konsumenckich, środowiskowych, przemysłowych i instrumentalnych. TMP275 jest przewidziany do pracy w zakresie temperatur od −40°C do +125°C.

    Najłatwiejszym sposobem odczytania temperatury z TMP275 wydaje się być magistrala I2C. Zacząłem więc od zaprojektowania płytki która zawierać będzie wszystkie niezbędne elementy: czujnik, mikrokontroler atmega8 oraz elementy dyskretne, niezbędne dla wyświetlacza i zasilania płytki. Wyświetlacz jest czterocyfrowy 7-segmentowy produkowany przez Kingbright mający oznaczenie CA56-12GWA. Dla wspólnych anod wyświetlacza zastosowałem tranzystory NPN, a dla ograniczenia prądu pobieranego z linii mikrokontrolera zastosowałem rezystory. Tranzystory nie mają ograniczeń prądowych, więc wyświetlacz będzie świecił tak samo niezależnie od ilości zapalonych segmentów.

    Zdecydowałem, że układ będzie przenośny i dlatego zasilany jest z baterii 9V, zatem potrzebny był regulator napięcia. Ze względu na cenę i dostępność wybrałem 7805.

    I2C jest popularnym protokołem, którego biblioteki mogą być znalezione w wielu miejscach w Internecie. Wybrałem bibliotekę I2C autorstwa Petera Fleury (http://homepage.hispeed.ch/peterfleury/group__pfleury__ic2master.html ), ponieważ jest ona dobrze udokumentowana. Jedynymi elementami zewnętrznymi dla TMP275 są kondensator pomiędzy VCC i GND oraz dwa rezystory wymagane dla linii SDA i SCL.

    Wszystko, co dotyczy obsługi I2C zawarte jest w bibliotece, wiec musiałem dopisać tylko kilka wierszy kodu dla odczytania temperatury z czujnika:

    Code:
    i2c_start_wait(sensor+I2C_WRITE);   // set device address and write mode
    
     i2c_write(0x0);         // write pointer register 00000000 to select temp register
     i2c_rep_start(sensor+I2C_READ);   //set device address and read mode
     temp_high=i2c_readAck();      // Read high byte of temperature
     temp_low=i2c_readNak();      // Read low byte of temperature


    Po odczytaniu temperatury z czujnika musiałem wyświetlić ją na czterocyfrowym wyświetlaczu. W tym celu napisałem makro które rozpoznaje cyfry i decyduje o sposobie wyświetlenia; zastosowałem multipleksowanie programowe. Przetestowałem nawet wyświetlanie ujemnych temperatur umieszczając czujnik w lodówce. Odczyty były prawidłowe – porównywałem je ze wskazaniami innego termometru.

    Kod źródłowy:

    http://www.youritronics.com/wp-content/uploads/2009/07/TMP275-thermometer-source-files.zip
    Schemat płytki w Eaglu:
    http://www.youritronics.com/wp-content/uploads/2009/07/TMP275-thermometer-schematic.zip

    Opis umieszczony jest na http://www.youritronics.com/page/15/
    Tłumaczenie za zgodą youritronics.com


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 19 Lut 2011 07:14
    wojtassa
    Poziom 10  

    ""Dokładność czujnika TMP275 wynosi 0.5°C. Czujnik ten, posiadający dwuprzewodowe wyjście szeregowe dostępny jest w obudowach MSOP-8 oraz SO-8. TMP275 potrafi odczytywać temperaturę z rozdzielczością 0.0625°C ""
    Czy to pomyłka czy ja czegoś nie rozumiem?

  • #3 19 Lut 2011 08:00
    Galareta
    Poziom 21  

    Dokładność to błąd [pomiaru tzn może pokazać o np 0,5 stopnia więcej ale pokaże wtedy 1,5 zamiast 1;) ale przykładowo zamiast 1,1 pokaże np 1,6;)

  • #4 19 Lut 2011 11:02
    gts1991
    Użytkownik obserwowany

    Taki sam efekt można uzyskać na LM75 :)

  • #5 19 Lut 2011 15:36
    slavo666
    Poziom 17  

    Ta ATmega8 przy jednopunktowym pomiarze temperatury się chyba trochę nudzi? 7805 i bateria 9V nie są zbyt trafnym rozwiązaniem, jeśli urządzenie ma długo pracować. Płytka jakoś dziwnie zaprojektowana jak dla mnie - szczególnie patrząc na te dwie ścieżki przechodzące pod zworą smd na dole.
    Ale wykonanie bardzo estetyczne, trzeba przyznać.