Lekcja 15: Cyfrowy czujnik temperatury.

Tematem tej lekcji jest cyfrowy czujnik temperatury DS18B20+ z podstawka ułatwiającą montaż.
Nasz projekt będzie wymagał umiejętności korzystania z zewnętrznych bibliotek przygotowanych dla czujnika i obsługi cyfrowych urządzeń I/O. Przyda się tu umiejętność obiektowego programowania w C++ oraz znajomość tworzenia i korzystania z klas i metod (funkcji) w klasach.
Specyfikacja czujnika poniżej:

  • Napięcie zasilania: od 3,0 V do 5,5 V
  • Zakres pomiarowy: od -55 °C do 125 °C
  • Dokładność: +/- 0,5 °C w zakresie -10 °C do 85 °C
  • Rozdzielczość: od 9 do 12 bitów

Wyprowadzenia:

Poniżej przedstawiona jest tabela relacji między temperaturą a wyjściem cyfrowym.

Łączymy układ wg schematu:


Piszemy kod:

        #include < DallasTemperature.h>
        #include < OneWire.h>
        #define ONE_WIRE_BUS 7
        OneWire oneWire(ONE_WIRE_BUS);
        DallasTemperature sensors(&oneWire);

        void setup(void){
            Serial.begin(9600);
            sensors.begin();}
        void loop(void){
            sensors.requestTemperatures();
            Serial.println("");
            delay(500);
            Serial.print("Temperatura: ");
            Serial.println(sensors.getTempCByIndex(0));}

W linii 1 i 2 deklarujemy dwie biblioteki producenta, które można ściągnąć stąd: DallasTempDigital.zip oraz OneWire.zip. Obie biblioteki należy rozpakować do folderu libraries w folderze Arduino (w systemie Ubuntu jest to folder: /usr/share/arduino/libraries/).
W linii 3 deklarujemy pin nr 7.
W linii 4 z klasy OneWire definiujemy obiekt oneWire, który będzie operował na zdeklarowanym pinie 7.
W linii 5 z klasy DallasTemperature definiujemy obiekt sensors operujący danymi z oneWire.
W linii 8 definujemy prędkość przesułu danych portem szeregowym.
W linii 9 definujemy start czujnika obiektem sensors.
W linii 11 funkcją requestTemperature() uruchamiamy odczyt temperatury czujnika.
Po wypisaniu piustej linii oraz przerwie 500ms w linii 14 wypisujemy na ekran napis Temperatura: by w wlinii 15 wypisać wartość temperatury funkcją getTempCByIndex(0).



Powrót do spisu materiałów

Nowy zakup

Zakupiliśmy nowy moduł Arduino Leonardo i Yun z obsługą sieci przez Ethernet i WiFi.

Nowe czujniki

Mamy nowe czujniki żyroskopowe. Możemy kontrolować położenie robota.

Zajęcia otwarte

Zapraszamy na zajęcia otwarte uczniów klas SP, które odbywają się w każdy poniedziałek w godz. 15.00-16.00 (Prosimy o kontakt w celu zebrania grupy).