Czujnik temperatury — LM60

Czujnik temperatury — LM60
Razem głosów: 10 co stanowi: 88% całości.

LM60

 

Pomiar temperatury to zasadniczo jeden z najważniejszych projektów, (zaraz po zegarku i zasilaczu …) każdego amatora programowania :)  Oczywiście można go  zrealizować na tysiąc sposobów używając np. popularnego cyfrowego termometru 1Wire – DS18b20,

diody krzemowej możemy użyć jak ktoś się uprze:

DiodeTempmy jednak użyjemy sobie  LM60 z  Texas Instruments ….

Na początek proponuję zapoznać się z notą maleństwa dostępnego w fajnej obudowie SOT-23 lub mniej fajnej TO-92 , która znajdziemy pod adresem:

http://www.ti.com/lit/ds/symlink/lm60.pdf

Czujnik ten nie jest specjalnie dokładny, w sumie średni, nota podaje  dokładność na poziomie  +- 3 do 4% jednak do większości zastosowań zupełnie wystarcza. Dodatkowo zaletą  jest mała obudowa SOT-23 :)  To maleństwo charakteryzuje się cechami:

  •  Zakres temperatur ?40°C to +125°C
  •  Współczynnik kalibracji skali liniowej   +6.25 mV/°C
  •  Nadaje się do aplikacji zdalnego pomiaru temperatury
  •  LM60Q jest kwalifikowany do 1 Klasy  AEC-Q100 i produkowany na potrzeby motoryzacji.

Dla nas istotne jest to iż czujnik ten ma wyjście napięciowe, które jest liniowe względem temperatury, powoduje to że jest bardzo łatwo wynik pomiaru skonwertować na stopnie Celsjusza używając ADC.  Napięcie wyjściowe LM60 zawiera się w zakresie od 174mV  przy 40°C do 1205mV dla +125°C.

Napięcie wejściowe dla czujnika może się zawierać w zakresie  2.7 do 10V, czyli dosyć elastycznie. To napięcie wyjściowe niezależnie od napięcia wejściowego w odniesieniu do temperatury liczymy stosując równanie:

Vo = (6,25 mV / º C x T º C) + 424mV

z którego postaci ogólnej wynika, że dla liniowego y=mx+c, gdzie Gradient m = 6,25mV Offset C wynosi 424mV  (wiem trochę to zawiłe ale  jest stosunkowo ważne).

Teraz nie pozostaje nam już nic innego jak sprawdzić jakie wartości napięcia dostarczymy do wejścia ADC.  W przypadku 12 bitowego przetwornika i zasilaniu na poziomie 3,6V  gdy podzielimy zakres pomiarowy ADC (0-4095)  napięciowo (0-3600mV) okazuje się, że każdy 1mV daje wynik ADC 1,14.  Tak więc mając powyższe na uwadze musimy nasze Vo przekonwertować na °C gdzie  przyda się kolejne równanie uwzględniając konieczność mnożenia każdego współczynnika przez 1.14  :

ADCin = (7,11 x T º C) + 482,3

Teraz musimy przekształcić równanie by ze znanej  nam wartości napięciowej ADCin  uzyskać wynik w stopniach temperatury :

T ° C = (ADCin – 482,3) / 7,11

Oczywiście to taka tylko sztuczka, która pozwala nam uniknąć operacji zmiennoprzecinkowych, co zwłaszcza dla powolnych mikrokontrolerów 8 bitowych jest raczej niezbyt zalecane i najlepiej ich unikać,  tak więc mnożymy stałe wartości i uzyskujemy tym sposobem wynik w mili-Celsjuszach. No tak…. ale to jest kłopotliwe, nie, nie, tak do końca  zastosujemy tu małą prostą sztuczkę polegającą na pomnożeniu wartości wejściowej i współczynnika C przez  1000000 i współczynnika m, który będzie dzielił przez 1000. Zamotałem?? Spokojnie ….    Sprawa jest banalnie prosta,  skoro dzielimy wartość większą o rząd wielkości niż dzielnik i wyprowadzając wynik w tysięcznych stopnia  możemy wykonać bez problemowo dzielenie liczby całkowitej, a dodatkowo nie stracimy wiele na precyzji pomiaru.

Oczywiście możemy zrealizować zadanie na wiele sposobów w kodzie, a nawet sprzętowo w końcu możemy użyć źródła Vref ustalonego na określonym napięciu co pozwoliło by lepiej wykorzystać 12 bitowy ADC, możemy tez przyjąć alternatywnie wartość Vcc i zastosować ją przy inicjalizacji do obliczenia współczynników.

Wracając do naszego pierwszego równania :

Vo = (6,25 mV / º C x T º C) + 424mV

szybko wyliczymy że:

  • +125°C       +1205 mV
  • +100°C       +1049 mV
  •   +25°C       +580 mV
  •       0°C       +424 mV
  •   ?25°C       +268 mV
  •   ?40°C       +174 mV

 

A oto przykładowy kod dla Arduino który możemy napisać na podstawie powyższych informacji:

Oczywiście nie jest to specjalnie wyuzdany przykład i w zasadzie czysto teoretyczny choć powinien zadziałać. Jednak chciałem tylko co nieco tak w miarę prosto przedstawić ten mały czujniczek temperatury gdyż niebawem będziemy go używać z Xmegą.

Co ważniejsze i o czym bym zapomniał,  schemat połączeń dla LM60 w zasadzie jest prosty i znajdziemy go w nocie :

custom_diagram_1_LM60

 

alt_snis119d

Toteż zastosujemy się do noty i do typowego schematu połączeń a jako że używamy wersji w obudowie SOT-23 wykonamy sobie małą płyteczkę której schemat wygląda następująco:

lm60-circuit

dlatego też nie będę jej prezentować bo przecież żaden kłopot prawda? :)

Miłego eksperymentowania z temperaturami :)

 

 

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay