mikroprocesorowej Osiej łączki. Rysunek 10 przedstawia mapę pamięci czujnika z rozmieszczeniem poszczególnych rejestrów, tzw. SCRATCHPAD. Nas interesują dwie pierwsze komórki. W momencie włączenia zasilania domyślnie rozdzielczość przetwarzania wynosi 12 bitów, w przeliczeniu na jednostki temperatury to 0,0625°C. Pomijając błąd podstawowy dla przedziału -I0°C do +85UC równy 0.5°C, termometr będzie wyświetlał wynik po zaokrągleniu z dokładnością U,1°C.
Sposób podłączenia czujnika oraz opis wyprowadzeń przedstawia rysunek 11. DS18B20 podobnie jak DS1820 może być zasilany na sztywno lub w trybie pasożytniczym z linii DQ. Jeżeli wybieramy drugi sposób, należy pamiętać o podłączeniu nóżki zasilania do masy. W przeciwnym razie układ nic będzie pracował poprawnie. W moim modelu wybrałem bezpośrednie zasilanie Nie zapomnijmy również o rezystorze 4,7ki2 podciągającym linię DQ do zasilania.
Na schemacie pozostały jeszcze dwa elementy do omówienia. DS1813 to układ scalony, którego zadaniem jest wygenerowanie prawidłowego impulsu resetu dla uP. Ze względów ekonomicznych w modelu z niego zrezygnowałem. W zamian użyłem kondensa toru IpK SN75176 (MAX485) odpowiedzialny jest za konwersję poziomów Tł'L na pozio my KS485. Układ ten wykorzystywany jest do przesyłania danych szeregowo na spore od leg łości (1200m). W pracy zespołowej, gdzie na szynie znajduje się kilka tablic, jest on nieza
stąpiony. a relatywnie wysokie prędkości przesyłu informacji pozwalają w „mgnieniu oka” modyfikować treść wyświetlanego obrazu. Na potrzeby opisywanego projektu jest on zbędny, jak również R33. Rezystor ten zamyka pętlę prądową, montuje się go na szynie RS485 w układzie najbardziej oddalonym
Oprogramowanie pod AT90S8515 napisałem w Bascomic. Można je ściągnąć ze strony internetowej EdW. Po włączeniu zasilania uP konfiguruje porty, a następnie przechodzi do fragmentu programu odpowiedzialnego za
SCRATCHPAD <Power-u|j Stuło)
byte O byte 1 by to 2 byto 3 byto 4 byto 5 byto 6 byto 7 byto 8
Temperatura LSB (50h]
Tomperaturo MSB i06h)
Th Register or User Byte 1
Tl Register or User Byte 2
Configuration Hegister
Rese^ed IFFh)
Rese^-ed [OCh)
R9Serv©d HOh)
CRC
Rys. 10 Mapa pamięci DS18B20
Rys. 11 Wygląd i opis wyprowadzeń DS18820
Odczyt temperatury z DS18B20 wywołuj: procedura Gosub ReadI820. Jej skład przed stawia listing 2. Po wydaniu polecenia Iwreset uP sprawdza, czy na szynie jest obc cny czujnik. W przypadku jego braku lub zwarcia linii wyświetlany zostaje komunikat „Brr”. Jeśli jest OK. procesor dokonuje kor wfersji temperatury z wcześniejszym pominię ciem identyfikacji. Kolejne czynności spro wadzają odczytane dwa bajty temperatury MS i LS do postaci składającej się z bajtów repa zentująeych wartość całkowitą oraz ułamko włą. Warunek ujemnych temperatur sprawdza ny jest dla jednego bitu Bd(2).7 zgodni: z tym, co podałem wcześniej.
Temperatura jest wyświetlana za każdym razem, kiedy zmieni się jej wartość. Repiezen tuje ją zmienna całko wńta, z tym że część ułamkowa jest na po zycji jedności zmiennej T. Np. liczba 234 oznacza 23,4W(J. l aki sposób zapisu upraszcza dekodowanie każdej z cyt i za pomocą operatorów dzielenia całkowitego (/) i reszty modulo 10. Podobnie jak dla napi su Brr grupa cytr jest zdeklarowana w kodzu programu. Listing 3 przedstawia wygląd zde liniowanej cyfry 7. Obwiednia jedv:iki tworzy w lustrzanym odbiciu wyświetlana cyfrę.
Termometr pozwala na pomiar temperatu ry z zakresu U,9 do 99,9JC, poszerzenie zakresu wymagałoby zdefiniowania innego wyglądu czcionek, aby wszystkie znaki zmieściły się na tablicy. Po przekroczeniu zakresu wyświetlany jest komunikat OL.
Urządzenie takie budzi za każdym razem wielką sensację wśród osób odwiedzających mnie.
EEPROM
Register or User Byte
Tl Register or User Byte 2
Conhguraton Register
Opis wyprowadzeń;
1 - GND
2 - DQ (Data in/Out)
3 • VDD (Power Supply N/ottagei
wyświetlenie napisu EdW na tab licy (listingi). Procedura Gosub Czyscjablicć_danych wy mazu i e fragment KAM-u, (tablice zmiennej Tablicą_danych(56)) w której przechowywana jest treść obrazu. Zmienna jest stablicowana i przy jmuje wielkość równą podwóinej liczby kolumn naszej tablicy autobusowej, czyli 56 bajty. W następnej kolejności proce sor inicjalizuje statyczną tablicę danych, która została umiesz ezona w kodzie programu pole eeniem Restore Edw. Odczytu dokonuje 51 razy, a dane umieszcza w zmiennej lubi ica_danych( liczn iic). Ostatnia czynność to wywołanie fragmentu programu. który wyświetla zmienne na tablicy.
Usting 1. | |
Gesub Czy.sc_t.abi Restore Edw |
ice_danych |
For Liszr.ik - |
3 To 54 |
Read Tablic N9Xt |
adanych(l-ccnik) |
Gesub Wyswiet1 t Wait 1 |
aoiice_danycta |
16 Kwiecień 2005 Elektronika dla Wszystkich