Systemy wbudowane Obsługa interfejsu 1
Transkrypt
Systemy wbudowane Obsługa interfejsu 1
Systemy wbudowane Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20 Dokumentacja projektu. Temat projektu: Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20 zrealizowana z wykorzystaniem mikrokontrolera LPC1768 LandTiger. Autorzy: Kania Filip, Kolasa Natalia Kraków, 2016 1. Cel projektu Projekt ma na celu wykorzystanie mikrokontrolera LPC 1768 oraz termometrów Dallas 18B20 w celu zaprezentowania pomiaru temperatur na wykresie. W tym celu wykorzystaliśmy wiedzę zdobytą na wykładzie oraz na laboratorium a w szczególności: 1) Konfiguracja GPIO 2) Konfiguracja UART 3) Konfiguracja oraz wyświetlanie na LCD 4) Wykorzystanie przycisków płytki (button’u) 5) Konfiguracja komunikacji za pomocą 1-Wire 6) Konfiguracja SysTick’a 7) Konfiguracja i obsługa przerwań 2. 1-Wire – opis standardu. Interfejs elektroniczny, opracowany przez firmę Dallas Semiconductor służący do komunikacji między urządzeniami. Jego największą zaletą jest przesyłanie danych oraz zasilania 1 linią ( stąd jego nazwa ). Jest to możliwe dzięki temu, że urządzenia korzystające z tego protokołu korzystają z własnego kondensatora o pojemności 800 pF, który w momencie przesyłania danych zalewania energie do zasilania urządzenia. Możliwe jest to dzięki temu, że na magistrali w gdy urządzenia się nie komunikują jest 1 (wysokie napięcie) co zapewnia energię dla urządzenia i ładuje kondensator a przesyłanie danych odbywa się na podstawie ustawiania linii na 0 (stan niski) - na te krótkie chwile ( rzędu nanosekund ) energię zapewnia kondensator. Największą wadą tego rozwiązania jest natomiast niewielka przepustowość transmisji danych na poziomie 16kbps (tryb regular) oraz 142kbps (tryb overdrive). 1-Wire znalazł zastosowanie w komunikacji między małymi urządzeniami np. termometry cyfrowe, czujniki metrologiczne, zamki elektroniczne iButton itp. 3. Opis specyfikacji termometru DS18B20 oraz podstawy konfiguracji 1wire. Termometr DS18B20 firmy Dallas Semiconductors jest termometrem cyfrowym o programowalnej rozdzielczości 9-12bitów. Parametry: Zakres odczytu temperatury: -55°C do 125°C Dokładność odczytu ±0.5°C w zakresie: -10°C do 85°C Posiada unikatowy 64bit’owy kod identyfikujący urządzenie Zasilanie 3V do 5.5V Zdjęcie termometru Schemat 4. Podstawy obsługi 1-Wire do komunikacji z DS18B20 w języku C a) Konfiguracja SysTick’a do dokładnego odliczania czasów komunikacji. SysTick_Config( SystemCoreClock / 500000 ) Dzięki temu nasze przerwanie odliczające czas będzie wykonywało się co 2µs. Wykorzystuje to funkcja: void wait(int){} Która odliczy nam potrzebną ilość mikrosekund przekazaną jako parametr. b) Reset magistrali w celu otrzymania informacji o obecności na niej termometru: Przez minimum 480µs nasz mikrokontroler utrzymuje na lino stan 0, następnie stan linii ustawiamy na 1 i nasłuchujemy linie w celu odczytania ponownego 0 na linii gdy termometr będzie utrzymywał na niej 0. c) Komunikacja z termometrem – wysłanie i odczyt 1 bit’u. W programie funkcjami realizującymi komunikacje są: d) Krótki algorytm odczytu temperatury: 1. Reset połączenia. 2. Pominięcie wybierania urządzenia. ( SkipRom 0xCC) 3. Wysłanie informacji o konwersji temperatury we wszystkich termometrach, które przechowują ją w 2 bajtowym rejestrze ( scratchpad ). ( ConvertT 0x44) 4. Reset połączenia. 5. Połączenie z wybranym termometrem. ( MatchRom 0x55 ) 6. Odczyt temperatury. ( ReadScratchpad 0xBE ) 5. Schemat układu oraz opis działania. Pin 1.20 Masa układu. Napięcie 3.3V Przycisk do dodawania termometrów. (Pin 2.10 ) Rezystor podciągający (Pull-up resistor) Termometry DS18B20 Mikrokontroler komunikuje się z termometrami za pomocą pinu 1.20, którym przesyła dane. Po w obwodzie mamy wpięty rezystor podciągający odpowiedzialny za powrót stanu linii z 0 na 1. Aby dodać nowy termometr: Należy go wpiąć do układu, wypiąć inne termometry i nacisnąć przycisk INT0 – informacja o dodaniu lub nie powodzeniu wyświetli się na ekranie. Mikrokontroler zapamiętuje 4 ostatnio wpięte termometry ( przechowuje je w tabeli ). Termometry są przechowywane w postaci struktury: color – kolor wykresów serialCode – tablica 8 bajtów kodu identyfikującego data – tablica ostatnich 180 odczytów active – flaga informująca czy przypisano termometr 6. Zdjęcia działającego układu: