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: