Politechnika Białostocka
Wydział Elektryczny
Katedra Telekomunikacji i Aparatury Elektronicznej
INSTRUKCJA
(do użytku wewnętrznego)
Nazwa przedmiotu:
UKAADY ELEKTRONIKI PROFESJONALNEJ 2
(Laboratorium)
ĆWICZENIE Nr 4
(Czas trwania: 2 x 2 godz.)
Zaawansowane układy analogowo-cyfrowe w technice sensorowej
(pomiary wielkości nieelektrycznych)
Opracował:
Dr inż. Jerzy Kołłątaj
Białystok, 2007 r.
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Cel ćwiczenia
- Poznanie wybranych, praktycznych rozwiązań w zakresie zastosowania
zaawansowanych układów analogowo-cyfrowych w technice sensorowej.
W ramach ćwiczenia studenci mają zmontować i oprogramować (na
płycie prototypowej) zaproponowane przez prowadzącego wybrane
układy pomiarowe z poniższego zakresu techniki sensorowej
- układy mikroprocesorowe do pomiarów: napięcia, prądu, rezystancji,
częstotliwości, mocy, temperatury, wilgotności, ciśnienia, przesunięcia,
odkształcenia, naprężenia, siły, odległości itp.
Liczba i stopień złożoności zadań do wykonania w poszczególnych grupach uzależniony jest
od stopnia przygotowania studentów oraz sprawności w realizacji poszczególnych ćwiczeń.
1. Wprowadzenie
Współczesna elektronika nacechowana jest w dużej mierze potrzebą pomiarów wielu
wielkości występujących w otaczającym nas środowisku.
Zapotrzebowanie na coraz bardziej wydajne procesy technologiczne prowadzi do
nieuchronnego rozwoju różnego rodzaju czujników, w tym tzw. czujników inteligentnych
(smart sensors) ułatwiających pracę w sieci i komunikację z układami sterowania.
Właściwości tego rodzaju czujników do samokalibracji, uczenia się oraz wyboru najbardziej
optymalnych parametrów metrologicznych daje realną możliwości wykrywania awarii,
zapobiegania katastrofom ekologicznym oraz budowlanym. Możliwości takich czujników do
autotestowania i diagnozowania czyni procesy technologiczne bardziej wydajnymi i
upraszcza pracę różnych służb podczas stanów awaryjnych. Złożoność, nietypowość i
wieloetapowość wielu procesów technologicznych wymusza coraz częściej stosowanie
czujników na miarę , to jest czujników przystosowanych wyłącznie do indywidualnych cech
danego procesu, uwzględniających wiele niestandardowych rozwiązań technicznych i
organizacyjnych.
Oczujnikowanie obiektów skupionych (nie rozproszonych terytorialnie) często nie jest
związane z dużą liczbą czujników przystosowanych do pomiaru jednej wielkości. Poza tym,
akwizycja danych pomiarowych w miejscu pomiaru (np. pokój laboratoryjny) nie wymaga
stosowania złożonych sieci pomiarowych i transmisyjnych. Pomiary laboratoryjne często
wykonywane sÄ… w warunkach komfortowych, nie wymagajÄ…cych stosowania specjalnych
rozwiązań technicznych.
Konieczność oczujnikowania obiektów technologicznych przy wzroście stopnia
automatyzacji zakładów, wdrażania nowych norm (w tym bezpieczeństwa) są pochodną nie
tylko wymogów czysto technicznych, ale także wejścia Polski do Unii Europejskiej i
zaostrzenia przepisów dotyczących bezpieczeństwa pracy, projektowania i użytkowania
urządzeń. Różnego typu czujniki okazują się podstawowym elementem stosowanych maszyn
i urządzeń. Możliwości w tym zakresie są w zasadzie bardzo duże. Jednak od strony
praktycznej, zaprojektowanie, wykonanie i wdrożenie konkretnych aplikacji są powodem
wielu problemów natury projektowej, konstrukcyjnej, technologicznej i organizacyjnej.
2
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Wiele obiektów technologicznych z powodu swojej rozległości lub rozproszenia
wymaga stosowania nowych, nietypowych technik w zakresie czujników, sprzętu
pomiarowego i transmisji danych pomiarowych.
Rozwój automatyki pozwala nam łatwiej egzystować i radzić sobie z codziennymi
problemami. Dzięki konstrukcjom, jakie powstają obecnie, możemy wykonywać czynności,
których sami nie bylibyśmy w stanie nigdy zrealizować. Roboty, urządzenia jakie znamy
dzisiaj, są podstawowym wyposażeniem nowoczesnych hal produkcyjnych. Według
szacunków, pod koniec roku 2003, przemysł światowy wspomagało nie mniej niż 800 tys.
robotów. Są jednak sytuacje, w których wciąż się wydaje, człowiek jest niezastąpiony.
Budujemy maszyny, których uczynienie w pełni autonomicznymi jest bardzo kosztowne i
wymagałoby niezwykle zaawansowanych technologii oraz systemów zabezpieczeń. Taniej
jest wiec zatrudnić kierowcę czy też operatorów, niż zaimplementować w nich rozwiązania z
obszaru sztucznej inteligencji. Jednak, aby praca ludzka była bardziej bezpieczna i
precyzyjna, w maszynach stosuje się różnego rozwiązania monitorujące i zabezpieczające.
Częstokroć, systemy te są na tyle zaawansowane, że praca człowieka ograniczona jest
wyłącznie do wydawania poleceń maszynie.
Ważną rolę w automatyce i w sterowaniu robotów odgrywają ich sensory. Są one
jedynym zródłem informacji na podstawie których, jednostka sterująca podejmuje działania
lub dokonuje wyboru odpowiednich algorytmów.
2. Zakres ćwiczenia
W ramach ćwiczenia studenci zapoznają się z układami elektronicznymi
współpracującymi z różnymi odmianami czujników (sensorów) do percepcji otoczenia (do
pomiaru m.in. temperatury, wilgotności, czujnikami ultradzwiękowymi do pomiaru
odległości, natężenia oświetlenia itp.). Współpraca ta możliwa jest dzięki różnym układom
towarzyszącym (analogowym i cyfrowym), bez których pomiar danej wielkości nie jest
możliwy. Układami tymi są np. przetworniki analogowo-cyfrowe, cyfrowo-analogowe,
układy kondycjonujące, itp. Realizacja pomiarów, gromadzenie wyników odbywa się pod
nadzorem mikrokontrolera oraz jednostki centralnej (PC). Współpraca układów analogowych
i cyfrowych wymaga dokładnego poznania zasady działania i właściwości samych czujników
oraz zasad ich implementacji do środowiska w zakresie techniki cyfrowej. Z tego powodu,
celowym jest całościowe poznanie różnych dziedzin tej gałęzi wiedzy technicznej. Możliwość
samodzielnego modyfikowania i programowania stosowanych w ćwiczeniu układów
pomiarowych jest niezwykle cennym, poznawczym uzupełnieniem procesu dydaktycznego.
Zastosowany w ćwiczeniu mikrokontroler programowany jest w łatwym do opanowania
języku wyższego poziomu (PBASIC), nie wymagającym dokładnej znajomości techniki
mikroprocesorowej (tj. architektury mikroprocesorów, technik ich programowania w języku
asemblera itp.). Pozwala to na skoncentrowanie się na problemach układowych i
aplikacyjnych.
Takie podejście umożliwia bardziej skuteczne pogłębienie i lepsze zrozumienie
rozwiązań sprzętowych stosowanych w rzeczywistych układach elektroniki profesjonalnej,
które są stosowane w produktach komercyjnych. W ćwiczeniach ważną sprawą jest nabycie
praktycznych umiejętności w zakresie samodzielnego rozumienia, prób tworzenia oraz
weryfikacji poprawności działania zarówno cudzych jak i własnych topologii układów
elektronicznych, których stopień złożoności znajduje swoje odbicie w rozwiązaniach
profesjonalnych. Wcześniej poznane rozwiązania (na semestrach wcześniejszych) miały na
3
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
celu zasygnalizowanie (na ogół teoretycznie) podstawowych układów elektronicznych bez ich
powiązania funkcjonalnego w całościowych rozwiązaniach sprzętowych.
Praktyczna weryfikacja rzeczywistych układów elektronicznych pobudza wyobraznię i
jest dalece motywująca w dalszej nauce. Poza tym, rozwija samodzielność, a nie tylko
przyjmowanie na wiarę rozwiązań czysto teoretycznych. Przekonanie, że układ działa
poprawnie, jest ważnym elementem psychologicznym w dalszych, twórczych poszukiwaniach
o charakterze projektowym, konstrukcyjnym i technologicznym. Twórcze podejście
studentów do rozwiązywania bardzo zróżnicowanych problemów jest celem wszystkich
ćwiczeń w ramach tego laboratorium.
Możliwość programowania stosowanych w ramach ćwiczeń układów elektronicznych
nie jest celem samym w sobie, ale atrakcyjnym (choć bardzo ważnym) elementem w
realizacji celu końcowego, jakim jest poznanie i sprawdzenie poprawności działania
rozwiązań docelowych o większym stopniu złożoności. Zaproponowane w ramach ćwiczenia
(gotowe) programy sÄ… przystosowane do ich modyfikacji (a nie zawsze do tworzenia ich od
początku). Zmiany w poszczególnych (wybranych) liniach programowych (w edytorze
programowym) daje możliwość dokonywania efektywnych zmian, widocznych od razu w
działaniu układów.
3. Układ do pomiaru temperatury i wilgotności (typ SHT11 firmy
SENSIRION)
3.1. Wprowadzenie
Wilgotność jest wielkością uważaną za trudną w pomiarach. Szereg naukowych i
inżynierskich opracowań w literaturze fachowej dotyczy specjalizowanych rozwiązań
układowych (analogowo-cyfrowych) zawierających zewnętrzne układy analogowe do
kompensacji wpływu temperatury w celu określenia tzw. punktu rosy oraz oddzielne układy
cyfrowe do transmisji zmierzonego sygnału. Poza tym, trudną sprawą jest właściwa
kalibracja sygnału na znaną wartość wilgotności. Część elektroniczna czujnika wilgotności
musi być dobrze zabezpieczona przed działaniem wilgoci oraz charakteryzować się
adekwatnym czasem odpowiedzi na zmiany wartości wielkości mierzonej w rzeczywistym
otoczeniu.
Czujniki wilgotności w układach z serii SHT są czujnikami pojemnościowymi i z tego
powodu posiadają szereg zalet w porównaniu z czujnikami rezystancyjnymi. Rezystancyjne
czujniki wilgotności mogą być używane wyłącznie w środowisku, w którym nie występuje
kondensacja pary wodnej. Poza tym, rezystancyjne czujniki wilgotności nie pracują
prawidłowo przy wilgotności względnej poniżej poziomu 20% oraz charakteryzują się małą
stabilnością długoterminową w odróżnieniu od pojemnościowych czujników wilgotności
względnej.
Układ SHT11 jest zaawansowanym układem analogowo-cyfrowym przeznaczonym do
precyzyjnych pomiarów temperatury i wilgotności względnej zawierając w jednym układzie
scalonym wszystkie wymienione wyżej właściwości, dzięki zastosowaniu bardzo
nowoczesnej technologii wytwarzania. Układ ten jest tzw. czujnikiem inteligentnym (smart
sensor). Elementem pomiarowym jest bardzo wysokiej jakości miniaturowy kondensator
(scalony) umożliwiający pomiar wilgotności względnej w zakresie 0-100% (są w pełni
zanurzalne). Zintegrowany z czujnikiem wilgotności czujnik temperatury pozwala na
4
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
obliczanie temperatury punktu rosy . Czujnik jest już fabrycznie skalibrowany w taki
sposób, że temperatura jest odczytywana przez zewnętrzny system mikroprocesorowy
(poprzez szeregowy, dwuprzewodowy interfejs) z rozdzielczoÅ›ciÄ… 0,01°C (14 bitów) a
wilgotność z rozdzielczością 0,03% (12 bitów). Rozdzielczość dla obu parametrów może być
zredukowana (programowo) do wartości odpowiednio 12-tu i 8-miu bitów. Obliczenia
matematyczne (wykonywane przez system mikroprocesorowy) wymagane sÄ… w celu
skalowania i uwzględnienia przesunięcia sygnału (offset). Dokładność pomiaru temperatury
(w najmniej korzystnych warunkach temperaturowych) wynosi Ä…2,0°C. W zakresie
temperatur pokojowych, dokÅ‚adność wynosi ok. Ä…1,0°C (w temperaturze 25°C dokÅ‚adność
wynosi Ä…0,5°C). DokÅ‚adność pomiaru wilgotnoÅ›ci wzglÄ™dnej wynosi Ä…3,5% w zakresie zmian
wilgotności względnej od 20% do 80%. Podane wartości dokładności pomiaru temperatury i
wilgotności względnej są adekwatne dla czujników o niskim poziomie ich ceny.
Zastosowanie czujników SHT11 dotyczy wielu aplikacji o charakterze komercyjnym.
Bardziej dokładne czujniki z tej serii dotyczą egzemplarzy o symbolu SHT15 (Rys. 4.1).
Rys. 4.1. Zależność dokładności pomiaru wilgotności względnej, temperatury oraz
punktu rosy dla czujników z serii SHT.
5
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Typowe zastosowania czujników z serii SHT1x.
- Układy kontroli klimatu (HVAC)
- Technika samochodowa
- Stacje meteorologiczne (pogodowe)
- Systemy nawilżania i osuszania
- Systemy kontrolno-pomiarowe
- Akwizycja danych (Data Logging)
- Technika medyczna
W celu łatwiejszej implementacji i testowania tego układu przy wykorzystaniu płyty
montażowej, został on zmontowany w formie modułu DIP o ośmiu wyprowadzeniach. Moduł
jest wyposażony w linię danych (Data) (podciąganą do napięcia zasilania Vdd) oraz
szeregowy ogranicznik (rys. 4.2) umożliwiający bezpośrednie podłączenie modułu do
mikrokontrolera BASIC Stamp używanego w ćwiczeniu.
Rys. 4.2. Schemat modułu zawierającego czujnik SHT11 (stosowanego w ćwiczeniu).
Wygląd modułu przedstawiono na Rys. 3.3 (a) oraz samego układu SHT11 (b)
(a) (b)
Rys. 4.3. Widok modułu z układem SHT 11 (a) oraz samego układu (b) (w powiększeniu)
6
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Inne wykonania modułów zawierających czujniki z serii SHT7x oraz SHT1x pokazano na
Rys. 4.4.
Rys. 4.4. Moduły zawierające czujniki z serii SHT7x oraz SHT1x
Schemat blokowy czujnika z serii SHT pokazano na Rys. 4.5.
Rys. 4.5. Schemat blokowy czujnika z serii SHT.
Bezpośrednie podłączenie czujnika SHT1x do mikrokontrolera jest prostym
dwuprzewodowym interfejsem podobnym do interfejsu I2C. Różnica polega na tym, że linia
danych (Data) wymaga podciągnięcia jej (pull-up) do poziomu napięcia zasilania (Vdd) w
celu uzyskania komunikacji w obu kierunkach (dane mogą być wysyłane lub odbierane po
linii danych). Linia zegarowa (Clock) jest sterowana bezpośrednio. Rezystor o wartości 330
ohm (Rys. 4.2) pomiędzy mikrokontrolerem BASIC Stamp oraz SHT1x zabezpiecza oba
układy w przypadku konfliktu poziomu sygnałów (tzn. wówczas, gdy mikrokontroler ustawia
linię danych (Data) w stan wysoki, a układ SHT1x usiłuje ustawić tą linię (Data) w stan
niski).
7
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
3.2. Opis interfejsu
Poznanie układu SHTxx wymaga poznania nie tylko jego struktury układowej (blokowej), ale
niezbędne jest dokładne poznanie zasad jego programowania, aby w pełni skorzystać z jego
zalet. Z tego powodu, w dalszych rozdziałach przedstawiono najważniejsze zasady
komunikacji układu SHTxx z zewnętrznym mikrokontrolerem (w tym przypadku BASIC
Stamp).
3.2.1. Zasilanie
Typowy układ aplikacyjny czujnika z serii SHT1x przedstawiono na Rys. 4.6.
Układ SHTxx wymaga zasilania o napięciu od 2,4V do 5,5V. Po włączeniu układ potrzebuje
11 ms w celu wprowadzenia go w stan uśpienia ( sleep ). Żaden rozkaz nie powinien być
wysyłany przed upłynięciem tego czasu. Wyprowadzenia zasilania (Vdd, GND) mogą być
zrównoleglone kondensatorem o pojemności 100 nF.
Rys. 4.6. Typowy układ współpracy czujnika z serii SHT1x z mikrokontrolerem.
3.2.2. Interfejs szeregowy (dwukierunkowy, dwuprzewodowy)
Interfejs szeregowy układu SHTxx jest zoptymalizowany dla potrzeb odczytu i zużycia mocy.
UWAGA: Interfejs szeregowy układu SHTxx jest podobny do interfejsy I2C lecz nie jest z
nim kompatybilny.
3.2.3. Wejście sygnału zegarowego (SCK)
Sygnał zegarowy (SCK) jest używany do synchronicznej komunikacji między
mikrokontrolerem i układem SHTxx. Ponieważ interfejs jest zbudowany w oparciu o logikę
statyczną, nie istnieje potrzeba stosowania minimalnej częstotliwości impulsów zegara SCK.
3.2.4. Linia szeregowa danych (DATA)
Linia szeregowa danych (DATA) jest trójstanowym pinem używanym jako wejście lub
wyjście układu. Pin DATA zmienia swoją funkcję po opadającym zboczu i jest ważna na
wzrastającym zboczu szeregowego sygnału zegarowego SCK. Podczas transmisji linia
DATA musi pozostawać stabilna w czasie wysokiego stanu sygnału SCK. W celu uniknięcia
kolizji mikrokontroler musi ustawić linię DATA w stan niski. Wymagany jest rezystor
podciągający (np. 10 kohm) w celu ustawienia tego sygnału w stan wysoki (Rys. 4.6).
Rezystory podciągające są często zawarte w układach wejścia/wyjścia mikrokontrolerów.
8
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
3.3. Wysyłanie rozkazu
W celu zainicjowania transmisji musi być najpierw wysłany komunikat zerujący
( conncection reset sequence ) szeregowy interfejs układu SHTxx. Komunikat zerujący
zawiera sekwencję 9-ciu impulsów w czasie utrzymywania linii danych (DATA) w stanie
wysokim. Za tym komunikatem jest następnie wysyłana sekwencja startowa ( Transmission
Start sequence ) polegająca na ustawieniu linii danych (DATA) w stan niski w połowie
trwania następnego impulsu zegarowego (tj. impulsu nr 10). Stan niski linii danych (DATA)
musi trwać do połowy czasu trwania następnego impulsu zegarowego (tj. impulsu nr 11).
Sekwencja startowa przedstawiona jest na Rys. 4.7.
Rys. 4.7. Sekwencja startowa ( Transmission Start sequence).
Obie sekwencje: inicjującą (która poprzedza sekwencję startową) oraz sekwencję startową
przedstawiono na Rys. 4.8.
Rys. 4.8. Dołączenie sekwencji inicjującej (zerującej interfejs szeregowy) do sekwencji
startowej.
Stosowanie sekwencji inicjujÄ…cej (zerujÄ…cej) jest dobrÄ… praktykÄ… w wypadku komunikacji z
układem SHTxx po raz pierwszy oraz w wypadku jego zawieszenia się (tj. utratą
możliwości komunikowania się z układem).
Po zainicjowaniu układu i wysłaniu sekwencji startowej następuje wysłanie kolejnej
sekwencji bitów dotyczącej np. rozkazu: pomiaru wilgotności lub pomiaru temperatury. Ta
część rozkazu składa się z 3-ech bitów adresu (w wypadku układu SHTxx dostępna jest
aktualnie tylko sekwencja bitów 000 ) oraz z kolejnych 5-ciu bitów następujących po
wspomnianych pierwszych 3-ech bitach adresowych. Układ SHTxx sygnalizuje właściwe
przyjęcie rozkazu (tj. potwierdzenie) przez ustawienie linii danych DATA w stan niski (ACK
bit) po zakończeniu opadającego zbocza ósmego impulsu zegarowego. Linia danych (DATA)
9
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
jest następnie zwolniona (i ustawiona w stan wysoki) po zakończeniu opadającego zbocza 9-
ego impulsu zegarowego SCK.
Lista rozkazów dla układu SHTxx przedstawiona jest na Rys. 4.9. Przykładowy przebieg
impulsów na linii danych (DATA) oraz impulsów zegarowych SCH dla pomiaru wilgotności
przedstawiono na Rys. 4.10.
Rys. 4.9. Lista rozkazów układu SHTxx.
Rys. 4.10. Przykładowa sekwencja impulsów dla pomiaru wilgotności względnej dla
wartości 0000 1001 0011 0001 = 2353 = 75,79 %RH (bez kompensacji temperatury)
4. Realizacja programu do pomiaru wilgotności i temperatury przy
użyciu układu SHTxx.
Omówiony wcześniej protokół transmisji może być zrealizowany programowo przy użyciu
mikrokontrolera. Zastosowany w ćwiczeniu mikrokontroler BASIC Stamp 2 - pozwoli na
łatwiejsze zrozumienie działania poszczególnych instrukcji realizujących wszystkie
10
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
sekwencje protokołu transmisji. Z tego powodu niezbędnym jest bardzo dokładne
zrozumienie zasad samego protokołu transmisyjnego oraz działania poszczególnych
rozkazów mikrokontrolera.
Poniżej zostaną pokazane fragmenty programu ilustrujące najważniejsze elementy transmisji
odpowiadajÄ…ce za wyzerowanie interfejsu szeregowego oraz sekwencjÄ™ startowÄ… (patrz Rys.
4.7 oraz 4.8).
SHT_Connection_Reset:
SHIFTOUT ShtData, Clock, LSBFirst, [$FFF\9]
SHT_Start:
INPUT ShtData
LOW Clock
HIGH Clock
LOW ShtData
LOW Clock
HIGH Clock
INPUT ShtData
LOW Clock
RETURN
Pierwsza część fragmentu programu jest łatwo zrealizowana w wyniku użycia instrukcji
SHIFTOUT, powodującej wysłanie danych do układu SHTxx. Moment wysłania określony
jest przez sygnał zegarowy (komunikacja synchroniczna). Pełny opis tej instrukcji podano w
dalszej części tego rozdziału (Uwaga: należy dokładnie zapoznać się z instrukcją SHIFTIN
oraz SHIFTOUT). W tym przypadku został określony stan $FFF w celu utrzymania linii
danych (DATA) w stanie wysokim podczas generowania kolejnych 9-ciu impulsów (w
instrukcji został użyty parametr \9 informujący mikrokontroler o wysłaniu właśnie 9-ciu
impulsów).
Następny fragment programu jest również prosty - jednak przy zachowania wymogu
uzyskiwania stanu niskiego i wysokiego linii danych (DATA) w połowie czasu trwania
impulsów zegarowych. Realizacja tego fragmentu programu nie może być jednak skuteczna
przy zastosowaniu instrukcji SHIFTOUT. Należy więc ten fragment zrealizować ręcznie ,
stosując znane już instrukcje jak: INPUT, LOW oraz HIGH. Instrukcja INPUT jest użyta w
celu podciągnięcia tej linii (pull-up) do stanu wysokiego w sytuacji uczynienia jej jako linii
wejściowej (dla mikrokontrolera). Linia zegarowa sterowana jest bezpośrednio przez
mikrokontroler, natomiast instrukcje HIGH oraz LOW sÄ… stosowane do kreowania
odpowiednich poziomów impulsów.
Należy zauważyć, że procedura nazwana SHT_Start został umieszczona w środkowej części
tego fragmentu programu. Sekwencja startowa jest wymagana przed każdorazowym
skomunikowaniem się z układem SHT1x, tak więc procedura SHT_Start jest wygodna do
stosowania.
11
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Na Rys. 4.11 przedstawiono szczegóły protokołu transmisji dla układu SHTxx. Po starcie
transmisji (TS) wysyłany jest rozkaz do układu (5 bitów), poprzedzony adresem (3 bity).
Aktualnie, dla tego układu, adres ten jest ustalony na stałą wartość ( 000 ). W przyszłości
przewidziano możliwość podłączenia 8-miu czujników do tej samej magistrali.
Rys. 4.11. Protokół transmisji układu SHTxx (TS = Transmission Start)
Instrukcje i dane wysyłane są do układu SHT1x jednocześnie w wyniku zastosowania
poniższej procedury:
SHT_Write_Byte:
SHIFTOUT ShtData, Clock, MSBFirst, [ioByte]
SHIFTIN ShtData, Clock, LSBPre, {ackBit\1]
RETURN
Ten kod programu jest prosty: generuje osiem bitów do układu SHT1x (druga linia
programowa od góry), który generuje bit potwierdzający przyjęcie rozkazu. Ten właśnie bit
jest wprowadzany do mikrokontrolera, przez użycie instrukcji SHIFTIN (trzecia linia
programowa od góry).
Po zakończeniu czasu trwania impulsu potwierdzającego, musi nastąpić czas oczekiwania
(opóznienie) na zakończenie procesu pomiarowego i następnie odczytanie wyniku pomiaru.
Zakończenie procesu oczekiwania sygnalizowane jest przez układ SHT1x poprzez ustawienie
linii danych (DATA) w stan niski. Poniżej podano procedurę (fragment programu) do
monitorowania stanu linii danych (DATA).
SHT_Wait:
INPUT ShtData
FOR toDelay = 1 TO 250
timeout = Ins.LowBit (ShtData)
IF (timeout = No) THEN SHT_Wait_Done
PAUSE 1
NEXT
SHT_Wait_Done:
RETURN
Według dokumentacji technicznej dotyczącej układu SHT1x wynika, że czas pomiaru wynosi
maksymalnie 210 ms (+15%), dlatego pętla FOR-NEXT powinna zapewnić właśnie taki czas
trwania tej procedury (związanej z samym pomiarem). Jeśli po całkowitym wykonaniu pętli,
12
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
mogłoby się okazać, że czas nieco przekracza 250 ms, to wynika to z faktu sprawdzania stanu
linii danych, który dodaje się do całkowitego czasu.
W czasie trwania pętli sprawdzany jest stan linii danych i zapamiętywany w zmiennej o
nazwie timeOut. Jeśli linia danych osiąga stan niski przed zakończeniem pętli, instrukcja IF-
THEN zostaje przerwana i następuje wyjście poza pętlę. Stała o nazwie No uzyskuje
wartość zero. Yes uzyskuje wartość równą 1. Jeśli linia danych DATA nie osiągnie stanu
niskiego przed zakończeniem pętli, timeOut uzyska wartość 1 ( Yes ). Jeżeli coś nie jest w
porządku, prawdopodobnie nie będzie znana przyczyna tego stanu rzeczy.
Po zakończeniu pomiaru można teraz pobrać dane z układu SHT1x. Procedura ta (o nazwie
SHT_Read_Byte) pozwala na odczytanie 8-miu bitów z układu SHT1x i następnie
wystawieniu (przez mikrokontroler) bitu potwierdzenia (ackBit).
SHT_Read_Byte:
SHIFTIN ShtData, Clock, MSBPre, [ioByte]
SHIFTOUT ShtData, Clock, LSBFirst, [ackBit\1]
INPUT ShtData
RETURN
Tak jak w interfejsie I2C, bit potwierdzenia będzie miał wartość zero (stan niski) do czasu
ostatniego odczytu i następnie zmienia swój stan na wartość jeden (stan wysoki). Należy
zauważyć, że w dalszej kolejności należy ręcznie zwolnić linię danych (DATA), ponieważ
instrukcja SHIFTOUT wysyłając bit potwierdzenia ustawia linię danych w stan wyjściowy.
Po zestawieniu omówionych wyżej procedur otrzymujemy poniżej fragment programu w
celu odczytu temperatury z układu SHT1x.
SHT Measure Temp:
GOSUB SHT_Start
iobyte = ShtTemp
GOSUB SHT_Write_Byte
GOSUB SHT_Wait
ackBit = Ack
GOSUB SHT_Read_Byte
soT.HighByte = ioByte
ackBit = NoAck
GOSUB SHT_Read_Byte
soT.LowByte = ioByte
Powyższa procedura rozpoczyna się od przywołania sekwencji startowej , następnie
wysłaniu instrukcji ShtTemp (odczyt temperatury; %00011). Jest to poprzedzone procedurą
oczekiwania na zakończenie pomiaru w układzie SHT1x. Ostatecznie odczytywane są dwa
bajty z układu SHT1x. Wartość temperatury jest reprezentowana jako 14-to bitowa zmienna,
z bardziej znaczącymi bitami (MSB) wysyłanymi jako pierwszymi.
13
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Obliczenia wartości temperatury.
Wartość temperatury otrzymanej z układu SHT1x jest przeliczana do standardowych
jednostek (tj. stopnie Celsjusza) według następujących równań:
Celsius = soT x 0,01 - 40
Gdzie:
soT - dane otrzymane z układu SHT1x
WedÅ‚ug danych katalogowych zakres mierzonych temperatur wynosi: od - 40,0°C do
+123,8°C.
Odpowiada to przedziałowi temperatur:
+123,8 - ( - 40) = 163,8
Wynik pomiaru reprezentowany jest w ramach rozdzielczości odpowiadającej 14-tu bitom,
czyli liczbie równej 214 = 16384.
Przeliczenie liczby soT (w ramach 14-tu bitów, czyli w zakresie od 0 do 16384) otrzymanej z
układu SHT1x na stopnie Celsjusza należy wykonać następujące działanie
tempCelsius = soT x 0,01 40
Uwzględnienie w wyniku dziesiątych części stopni Celsjusza wymaga pomnożenia prawej
strony ostatniego równania przez liczbę 10, czyli mamy
tC = soT x 0,1 400
W arytmetyce mikrokontrolera BASIC Stamp 2 działania wykonywane są na liczbach
całkowitych, dlatego mnożenie przez liczbę mniejszą od jedności (tutaj 0,1) lepiej jest
zastąpić dzieleniem przez liczbę 10.
Czyli mamy:
tC = soT/10 400 (wynik jest w dziesiątych częściach stopni Celsjusza)
Pomiar wilgotności względnej
Poniżej podano procedurę pomiaru wilgotności względnej (RH). Podobnie jak w przypadku
procedury pomiaru temperatury, występują podobne fragmenty w programie odwołujące się
do procedury startowej , następnie wysłaniu instrukcji ShtHumi (odczyt wilgotności;
%00101). Jest to poprzedzone procedurą oczekiwania na zakończenie pomiaru w układzie
SHT1x. Ostatecznie odczytywane są dwa bajty z układu SHT1x. Wartość wilgotności jest
reprezentowana jako 12-to bitowa zmienna, z bardziej znaczącymi bitami (MSB) wysyłanymi
jako pierwszymi.
14
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Poniżej przedstawiono procedurę pomiaru wilgotności:
SHT_Measure_Humidity:
GOSUB SHT_Start
iobyte = ShtHumi
GOSUB SHT_Write_Byte
GOSUB SHT_Wait
ackBit = Ack
GOSUB SHT_Read_Byte
soRH.HighByte = ioByte
ackBit = NoAck
GOSUB SHT_Read_Byte
soRH.LowByte = ioByte
Obliczenia wartości wilgotności względnej
Proces odczytu wilgotności z układu SHT1x jest podobny do odczytu temperatury. Wynik
dostarczany jest w postaci 12-to bitowej liczby. Poniżej podana jest zależność linearyzująca
wartość odczytaną (soRH) na wartość wilgotności względnej (rhLin):
rhLin = (soRH x 0,0405) (soRH2 x 0,0000028) 4
Zależność wilgotności względnej (%RH) w stosunku do wartości odczytanej z układu jest
nieliniowa (Rys. 4.12).
Rys. 4.12. Zależność wilgotności względnej (RH) od odczytu (SORH)
Poniżej podana jest zależność linearyzująca wartość odczytaną (soRH) na wartość
wilgotności względnej (rhLin):
rhLin = (soRH x 0,0405) (soRH2 x 0.0000028) - 4
15
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
W zależności tej występuje podnoszenie do kwadratu wartości odczytanej soRH. Działanie
takie szybko prowadzi do błędu przepełnienia (wartości większe niż liczba 16-to bitowa, tj.
65535). Wartość stała w tym równaniu (równa 4) jest bardzo mała.
Pomnożenie prawej strony powyższej zależności przez 10 pozwoli na otrzymanie wyniku w
dziesiątych częściach.
rhLin = (soRH * 0.405) - (soRH * 0.000028 * soRH) - 40
W drugim członie prawej strony wyrażenia mamy mnożenie przez siebie soRH. Liczbę
0.000028 można zapisać jako pomnożenie przez siebie wartości pierwiastka kwadratowego z
tej liczby.
Czyli 0.00028 = 0.005291502 x 0.005291502
Czyli można zapisać:
rhLin = soRH * 0,405 (soRH * 0,005291502 * soRH * 0.005291502) 40
W arytmetyce mikrokontrolera BASIC Stamp 2 działania wykonywane są na liczbach
całkowitych, dlatego mnożenie przez liczbę mniejszą od jedności (tutaj 0.405 oraz
0.005291502) lepiej jest zastąpić mnożeniem będącym ułamkiem liczby 65536 (= 216).
Dla mikrokontrolera BASIC Stamp mnożenie przez liczbę mniejszą od 1, realizowane jest
przez operator * * (podwójne użycie operatora *). Liczba mniejsza od jedności musi być
wyrażona w jednostkach będących krotnością ułamka 1/65536. Oczywiście, będzie to wartość
przybliżona, niemniej w większości przypadków przybliżenie to będzie wystarczająco
dokładne.
Aby znalezć cząstkowy argument, należy pomnożyć część ułamkową przez liczbę 65536.
Przykładowo, liczba 0.405 będzie reprezentowana przez 26542 (0.405 * 65536 = 26542.08 =
ok. 26542).
0.405 = 26542/65536 (wartość przybliżona)
Krotność ułamka 1/65536 dla liczby 0.005291502 wynosi:
0.005291502 * 65536 = 346.78
Aby poprawić dokładność drugiego członu zależności na wartość rhLin można pomnożyć
przez 10 otrzymaną każdą liczbę 346.78, czyli 346.78 x 10 = 3467.8 = ok. 3468. Aby wynik
nie uległ zmianie, należy podzielić przez liczbę 100 cały drugi człon w wyrażeniu na rhLin.
Tak więc otrzymamy
rhLin = soRH * * 26542 (soRH * * 3468 * soRH * * 3468)/100 40
Kolejne obliczenia (po linearyzacji) dotyczą obliczenia rzeczywistej (prawdziwej) wartości
wilgotności względnej rhTrue przy uwzględnieniu temperatury występującej w miejscu
pomiaru.
16
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Producent podaje następującą zależność na wartość prawdziwej wartości wilgotności
względnej rhTrue:
rhTrue = (tC 25) * (soRH * 0.00008 + 0.01) + rhLin
Temperatura tC wyrażona była w dziesiątych częściach stopnia, dlatego w celu uniknięcia
błędu przepełnienia (w wyniku pomnożenia przez drugi człon powyższego wyrażenia) należy
wyznaczyć ją w całkowitych stopniach. Wartość tC musi więc być podzielona przez liczbę
10.
W celu uzyskania większej dokładności pomnóżmy środkową część ostatniego przez liczbę
100.
0.00008 x 100 = 0,008
0.01 x 100 = 1
W języku mikrokontrolera tak otrzymaną liczbę można wyrazić jako: 0.0008 x 65536 = 524
Po pomnożeniu współczynników przez liczbę 100 należy zmienną rhLin pomnożyć przez 10
w celu ujednolicenia skali. Zmienna rhLin wyrażona jest w dziesiątych częściach: po
pomnożeniu przez 10 będzie wyrażona w setnych częściach tak jak poprzedni człon
wyrażenia. Aby przywrócić wartość wyrażenia rhTrue w dziesiątych częściach cały wynik
dzielimy przez 10.
rhTrue = (tC/10 - 25) * (soRH ** 524 + 1) + rhLin * 10 / 10
Powyższe rozważania dotyczące stosowania zależności matematycznych w celu
zlinearyzowania czujnika i uwzględnienia wpływu temperatury na zmianę wskazań są
dobrym przykładem użycia inteligentnego czujnika do pomiarów temperatury i wilgotności.
Dokładne zrozumienie omówionych szczegółowo problemów może być pomocne przy
stosowaniu innych rodzajów czujników (szczególnie wymagających linearyzacji), które
wymagają ich zaprogramowania przy użyciu mikrokontrolera. Ponadto, pokazano w jaki
sposób dokonywać konwersji odczytywanych wartości (binarnych) z rejestrów na użyteczne
wartości wyrażane w konkretnych jednostkach (stopnie Celsjusza, procentowa zawartość
itp.).
Zaproponowany program pozwala na prezentacjÄ™ danych pomiarowych oraz zweryfikowanie
działania czujnika.
W dalszej części zostanie omówiona dodatkowa możliwość zastosowania podgrzewania
struktury czujnika w warunkach szybkiej zmiany temperatury i wilgotności. Stosowany w
ćwiczeniu czujnik SHT11 posiada wbudowany miniaturowy grzejnik, umożliwiający
podgrzewanie jego struktury. Urządzenie może być testowane poprzez dokonywanie
odczytów, włączenie grzałki (programowe) na kilka sekund i dokonanie kolejnych pomiarów.
Temperatura powinna wzrastać i wilgotność maleć. Podgrzewanie czujnika zapobiega
powstawaniu kondensacji pary wodnej w bezpośrednim otoczeniu czujnika i ułatwia pomiary
w mocno zawilgoconym środowisku.
17
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
W celu włączenia grzałki, należy ustawić bit w rejestrze statusu czujnika SHT1x.
Odpowiadający fragment programu podano poniżej:
Heater_On:
DEBUG SHT1x heater on , CR
Status = %00000100
GOSUB SHT_Write_Status
DEBUG Waiting 2 seconds , CR
PAUSE 2000
Heater_Off:
DEBUG SHT1 heater off , CR, CR
Status = %00000000
GOSUB SHT_Write_Status
Jak można zauważyć w powyższym zestawie instrukcji, grzejnik jest włączony, kiedy drugi
bit w bajcie rejestru jest ustawiony w stan logiczny 1 .
Należy podkreślić, że nie należy pozostawiać włączonego grzejnika na długi okres czasu. Nie
jest wymagany długi czas włączenia grzejnika w celu zauważenia znaczących zmian w w
odczytywanych wartościach.
Poniżej podano procedurę wysłania bajtu statusu do układu SHT1x.
SHT_Write_Status:
GOSUB SHT_Start
iobyte = ShtStatW
GOSUB SHT_Write_Byte
iobyte = status
GOSUB SHT_Write_Byte
RETURN
Zapisanie statusu rejestru jest sekwencją dwubajtową. Najpierw wysyłana jest instrukcja,
następnie wpisywane są dane. Instrukcja informuje układ SHT1x, że następna instrukcja jest
bajtem statusu i jest on zapisywany do SHT1x. Inny bit w rejestrze statusu pozwala na zmianÄ™
rozdzielczości odczytywanych wielkości: 8 bitów dla wilgotności i 12 bitów dla temperatury.
W ramach tego ćwiczenia nie istnieje potrzeba ustawiania tych bitów.
Po uruchomieniu programu następuje sprawdzenie działania czujnika, następnie w ciągłej
pętli stale wyświetlane są (w okienku terminala) mierzone wielkości temperatury i
wilgotności względnej.
18
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
OPIS UŻYTYCH INSTRUKCJI
SHIFTIN:
Postać instrukcji:
SHIFTIN Dpin, Cpin, Tryb, [Dane {\Bity } { Wynik {\ Bity}& }]
Wykonywana funkcja:
Pobieranie danych z urządzenia (układu) z szeregową transmisją synchroniczną
Dpin - zmienna/stała/wyrażenie (0-15), określająca przez który pin I/O będzie
Odbierana transmisja synchroniczna. Pin ten jest definiowany jako wejście i
zostaje w tym stanie po skończeniu instrukcji.
Cpin - zmienna/stała/wyrażenie (0-15), określająca który pin I/O będzie połączony
Z wejściem zegarowym. Pin ten jest definiowany jako wyjście.
Tryb - jest wartością (0-3) lub jednym z czterech predefiniowanym symbolem, który
określa porządek w jakim bity danych są przesyłane oraz ich pozycję
względem impulsów zegara. Symbole, wartości i ich znaczenie dla zmiennej
Tryb przedstawiono w Tabeli Nr 1.
Tabela 1. Symbole, wartości i ich znaczenie dla zmiennej Tryb w instrukcji SHIFTIN
Symbol Wartość Znaczenie
MSBPRE 0 Najpierw bardziej znaczÄ…ce bity (MSB),
dane przed impulsem zegarowym
LSBPRE 1 Najpierw mniej znaczÄ…ce bity (LSB), dane
przed impulsem zegarowym
MSBPOST 2 Najpierw bardziej znaczÄ…ce bity (MSB),
dane po impulsie zegarowym
LSBPOST 3 Najpierw mniej znaczÄ…ce bity (LSB), dane
po impulsie zegarowym
Dane - zmienna, w której będzie zachowany przychodzący bit, połówka bajtu, bajt lub
słowo.
Bity - opcjonalna zmienna określająca, ile bitów (1-16) będzie pobieranych przez
dany rozkaz SHIFTIN. Wartość domyślna wynosi 8 bitów.
19
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Objaśnienie:
Instrukcja SHIFTIN (oraz instrukcja uzupełniająca SHIFTOUT opisana dalej) pozwalają
w łatwy sposób na akwizycję danych z urządzeń (układów) z szeregową, synchroniczną
transmisjÄ… danych.
Szeregowa transmisja synchroniczna różni się od szeregowej transmisji asynchronicznej (jak
SERIN oraz SEROUT) tym, że moment przyjęcia (SHIFTIN) lub wysłania (SHIFTOUT)
przez urządzenie (układ) jest określony przez sygnał zegarowy (na zboczu opadającym lub
rosnącym w zależności od urządzenia. Wszystkie przyjmowane lub wysyłane bity dostarczane
są w takt impulsów zegarowych.
Praca z transmisją synchroniczną wymaga znajomości protokółu, jakim posługuje się dane
urządzenie, tj.: tryb przesyłania danych, ilość bitów itp. Większość producentów dołącza do
swoich urządzeń (układów, modułów itp.) diagramy czasowe ilustrujące relacje czasowe
między sygnałem zegarowym a danymi.
Przebieg czasowy instrukcji SHIFTIN przedstawiono na rysunku poniżej.
Rys. 1. Przebieg czasowy instrukcji SHIFTIN
Poniżej przedstawiono przykładowy, prosty przykład użycia instrukcji SHIFTIN
Wynik VAR Byte
SHIFTIN 0, 1, MSBPRE, [wynik]
W przykładzie tym, instrukcja będzie odczytywać dane z pinu o numerze 0 (Dpin),
ustawionego jako wejście oraz będzie generować sygnały zegarowe na pinie numer 1 (Cpin),
ustawionego jako wyjście. Dane, które wchodzą (szeregowo) na Dpin zależą od urządzenia,
które jest podłączone do tego pinu. Przykładowo, niech rejestr przesuwny będzie podłączony
do pinu Dpin i posiada wartość $AF (10101111) czekając na przesłanie jego zawartości.
Załóżmy dodatkowo, że rejestr przesuwny najpierw wysyła najbardziej znaczący bit, oraz, że
pierwszy bit jest na Dpin przed pierwszym impulsem zegarowym. (MSBPRE). Instrukcja
20
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
SHIFTIN w tym przykładzie wygeneruje 8 impulsów zegarowych i pobierze 8 razy dane na
pinie Dpin. Pózniej, zmienna (nazwana jako wynik) otrzyma wartość $AF.
Instrukcja SHIFTIN bez podania informacji o liczbie przyjmowanych danych samoczynnie
(by default) 8 bitów. Niemniej, można ustawić dowolną liczę bitów (od 1 do 16) w
argumencie o nazwie Bit. Na przykład:
Wynik VAR Byte
SHIFTIN 0, 1, MSBPRE, [wynik\4]
W powyższym przykładzie zostaną pobrane 4-ry bity. Zmienna o nazwie Wynik uzyska
wartość 4-ech lewych bitów rejestru przesuwnego (tj. %1010).
Niektóre urządzenia dostarczają więcej niż 16 bitów. Przykładowo, najbardziej znaczące 8
bitów rejestru przesuwnego można wielokrotnie razem połączyć (w postaci ciągu bitów) do
jakiejkolwiek 8-mio bitowej kombinacji; 16, 24, 32, 40& Aby rozwiązać ten problem należy
kilkukrotnie użyć instrukcji SHIFTIN z wielokrotnymi zmiennymi. Do każdej zmiennej może
być przypisana różna liczba bitów w argumencie o nazwie Bity. Przykładowy fragment
programu przedstawiono poniżej:
wynikLo VAR Word
wynikHi VAR Nib
SHIFTIN 0, 1, MSBPRE, [wynikHi\4, wynikLo\16]
W powyższym przykładzie, najpierw zostaną przesłane 4-ry bity do zmiennej o nazwie
wynikHi i następnie zostanie przesłanych 16 bitów do zmiennej o nazwie wynikLo.
Ostatecznie, te dwie zmienne dadzÄ… Å‚Ä…cznie wynik 20-to bitowy.
____________________________
21
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
SHIFTOUT:
Postać instrukcji:
SHIFTOUT Dpin, Cpin, Tryb, [Danej {\Bity } { Dane {\ Bity}& }]
Wykonywana funkcja:
Wysyłanie danych do urządzenia (układu) z szeregową transmisją synchroniczną
Dpin - zmienna/stała/wyrażenie (0-15), określająca, który pin I/O będzie dołączony
do wejścia urządzenia z szeregową synchroniczną transmisją danych. Pin ten
jest definiowany jako wyjście.
zostaje w tym stanie po skończeniu instrukcji.
Cpin - zmienna/stała/wyrażenie (0-15), określająca, który pin I/O będzie połączony
z wejściem zegarowym urządzenia (układu). Pin ten jest definiowany jako
wyjście.
Tryb - jest zmienną/stałą/wyrażeniem (0 lub 1) lub jednym z dwóch predefiniowanych
symboli, który określa porządek w jakim bity danych są wysyłane. Symbole,
wartości i ich znaczenie dla zmiennej Tryb przedstawiono w Tabeli poniżej.
Tabela 2. Symbole, wartości i ich znaczenie dla zmiennej Tryb w instrukcji SHIFTOUT
Symbol Wartość Znaczenie
LSBFIRST 0 Najpierw wysyłane są mniej znaczące bity
(LSB)
MSBFIRST 1 Najpierw wysyłane są bardziej znaczące
bity (MSB)
Dane - zmienna lub stała zawierająca wysyłane dane do urządzenia (układu)
Bity - opcjonalna zmienna/stała/wyrażenie określająca, ile bitów (1-16) będzie
wysyłanych przez instrukcję SHIFTOUT. Kiedy argument o nazwie Bity
jest podany, BASIC Stamp wysyła wyspecyfikowaną liczbę najbardziej
znaczących bitów, niezależnie od ustawionego Trybu. Jeśli argument o nazwie
Bity nie jest podany, instrukcja SHIFTOUT domyślnie wysyła 8 bitów.
Objaśnienie:
Instrukcje SHIFTIN oraz SHIFTOUT pozwalają w łatwy sposób na akwizycję danych z
urządzeń (układów) z synchroniczną transmisją danych.
Szeregowa transmisja synchroniczna różni się od szeregowej transmisji asynchronicznej (jak
SERIN oraz SEROUT) tym, że moment przyjęcia (SHIFTIN) lub wysłania (SHIFTOUT)
22
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
przez urządzenie (układ) jest określony przez sygnał zegarowy (na linii zegarowej). Bity
danych są ważne po osiągnięciu zbocza narastającego lub opadającego w zależności od
urządzenia). Wszystkie przyjmowane lub wysyłane bity dostarczane są w takt impulsów
zegarowych. Ten rodzaj transmisji jest nazywany interfejsem SPI (Synchronous Peripheral
Interface) i jest powszechnie stosowany do komunikacji z urządzeniami (układami) takimi jak
przetworniki analogowo-cyfrowe, cyfrowo-analogowe, układy: zegarowe, pamięciowe, itd.
Instrukcja SHIFTOUT w pierwszej kolejności powoduje ustawienie pinu zegarowego (jako
wyjście) w stan niski oraz pin danych przełączony zostaje w tryb wyjściowy (jako wyjście).
Następnie, instrukcja SHIFTOUT ustawia pin danych w stan następnego stanu i generuje
impuls zegarowy. SHIFTOUT kontynuuje generowanie impulsów zegarowych i umieszcza
następne bity danych na pinie danych w ilości wymaganych dla transmisji.
Praca z transmisją synchroniczną wymaga znajomości protokółu, jakim posługuje się dane
urządzenie, tj.: tryb przesyłania danych, ilość bitów itp. Większość producentów dołącza do
swoich urządzeń (układów, modułów itp.) diagramy czasowe ilustrujące relacje czasowe
między sygnałem zegarowym a danymi. Jedną z najbardziej ważnych spraw jest to, jaki bit
danych musi być wysłany jako pierwszy; najbardziej znaczący bit (MSB) lub najmniej
znaczÄ…cy bit (LSB).
Przebieg czasowy instrukcji SHIFOUT przedstawiono na rysunku poniżej.
Rys. 2. Przebieg czasowy w instrukcji SHIFTOUT
Przykłady:
Poniżej przedstawiono przykładowy, prosty przykład użycia instrukcji SHIFTIN
SHIFTOUT 0, 1, MSBFIRST, [250]
W przykładzie tym, instrukcja SHIFTOUT ustawi pin 0 (Dpin) jako wyjście oraz pin 1
(Cpin) będzie generować sygnały zegarowe. Instrukcja SHIFTOUT wygeneruje 8 impulsów
zegarowych, podczas których na pinie 0 (Dpin) będą szeregowo pokazywać się bity danej o
23
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
wartości 250 (łącznie 8 bitów). W tym przypadku, wysyłanie bitów rozpocznie się od
najbardziej znaczÄ…cego bitu (tak jak to zapisano w trybie: MSBFIRST).
W instrukcji SHIFTOUT ustawiono domyślnie transmisję 8-miu bitów. Można oczywiście
ustawić przesunięcie dowolnej liczby bitów (w zakresie od 1 do 16) w zmiennej Bity.
Przykładowo mamy:
SHIFTOUT 0, 1, MSBFIRST, [250\4]
Instrukcja ta wyśle tylko najmniej znaczące 4 bity (4 bity po prawej stronie) (%1010 w tym
przypadku). Co należy zrobić, jeśli musimy wysłać bity począwszy od lewej strony danej ?.
Przez dodanie do kodu i9nstrukcji operatora przesunięcia w prawo (>>) można uzyskać
przesunięcie bitów jak zażądano poniżej:
SHIFTOUT 0, 1, MSBFIRST, [(250 >>2)\6
W tej instrukcji nastąpi przesunięcie 6-ciu bitów (%111110)
Niektóre urządzenia wymagają więcej niż 16 bitów. Aby rozwiązać ten problem należy
kilkukrotnie użyć instrukcji SHIFOUT z wielokrotnymi zmiennymi. Do każdej zmiennej
może być przypisana różna liczba bitów w argumencie o nazwie Bity. Przykładowy fragment
programu przedstawiono poniżej:
SHIFTOUT 0, 1, MSBFIRST, [250\4, 1045\16]
Powyższa instrukcja najpierw wyśle 4-ry bity liczby 250 (%1010) i następnie 16 bitów liczby
1045 (%0000010000010101). Dwie wartości dają razem wielkość 20-to bitową.
W powyższych przykładach, konkretne liczby zostały wpisane jako dane do wysłania.
Oczywiście, instrukcja SHIFTOUT akceptuje także zmienne oraz wyrażenia o nazwie Dane
oraz argumenty w wyrażeniu o nazwie Bity.
24
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Przebieg ćwiczenia
1. Przed przystąpieniem do ćwiczenia należy bardzo dokładnie zapoznać się (w
domu) z układem SHT11 oraz zasadami jego oprogramowania (podanymi w
instrukcji do ćwiczenia).
2. Poznać (szczegółowo) zasady transmisji synchronicznej i praktycznego jej
zastosowania przy wykorzystaniu mikrokontrolera BASIC Stamp 2
współpracującego z układem SHT11. W szczególności należy poznać dwie nowe
instrukcje mikrokontrolera SHIFTIN oraz SHIFTOUT. Pozostałe instrukcje były
już wykorzystywane w innych ćwiczeniach.
3. Zmontować prosty układ na płycie montażowej wykorzystując informacje podane
w opisie układ SHT11 (punkt 3.1 w instrukcji do ćwiczenia).
UWAGA: Należy zwrócić uwagę na właściwe podłączenie zasilania (uwaga na
biegunowość !!) oraz właściwe numery pinów układu SHT11 podłączonych do
odpowiednich pinów mikrokontrolera.
4. Po zmontowaniu i sprawdzeniu układu (również przez prowadzącego ćwiczenie)
włączyć zasilanie.
5. Wpisać (z pliku) gotowy program do edytora programu PBASIC, demonstrujący
działanie układu SHT11.
6. Uruchomić program i sprawdzić poprawność działania układu (obserwując
wyświetlane na monitorze informacje).
7. Przeanalizować poszczególne procedury programowe oraz kolejność ich
wykonywania w trakcie realizacji programu.
UWAGA: W programie używane są poznane wcześniej instrukcje programowe.
Należy przypomnieć zasadę ich działania.
Zadania do samodzielnego wykonania
Zadanie Nr 1.
Napisać i wkomponować w już istniejący program procedurę jednoczesnego wyświetlania
temperatury zarówno w stopniach Celsjusza i Fahrenheita, stosując następującą zależność:
degFahrenheit = soT x 0.018 40
Gdzie:
soT - dane otrzymane z układu SHT1x
25
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
UWAGI (do Zadania Nr 1):
- Należy wykorzystać informacje podane w instrukcji do tego ćwiczenia dotyczące sposobu
obliczania temperatury.
- Zależność między temperaturą wyrażoną w stopniach Celsjusza i stopniach
Fahrenheita jest następująca:
degF = degC * 9 / 5 + 32
W celu zaprogramowania mikrokontrolera lepiej jest wykorzystać zależność w której stosuje
się daną soT otrzymaną bezpośrednio z układu SHT11. Przeliczanie ze stopni Celsjusza na
stopnie Fahrenheita jest oczywiście także możliwe.
Zadanie Nr 2.
Narysować pełny schemat układu sterowania grzejnika elektrycznego i wentylatora
pozwalającego na regulację sterowania temperaturą i wilgotnością powietrza w pojemniku
o pojemności ok. 5-10 litrów. Do pomiarów temperatury i wilgotności należy zastosować
układu SHT11. Do sterowanie grzejnika i wentylatora należy użyć układ L293D
współpracujący z mikrokontrolerem (będący na wyposażeniu płyty montażowej).
Zasilanie układu L293D z oddzielnego zasilacza (12 VDC/1A).
Należy z odpowiednich katalogów dobrać grzałkę i wentylator (oba urządzenia
mogą być zasilane z napięcia stałego lub zmiennego).
UWAGA: Układ L293D ma sterować grzejnikiem i wentylatorem poprzez
tranzystor (z optoizolacjÄ…) przekaznik (elektroniczny lub elektromagnetyczny).
Należy podać typy wybranych elementów (oraz zródło, np. z jakiego katalogu).
Zadanie Nr 3.
Napisać własny program (na mikrokontroler BASIC Stamp 2) sterujący grzejnikiem i
wentylatorem (patrz Zadanie Nr 2).
Założenia (do programu):
Temperatura ma być utrzymywana w granicach od 30-50°C poprzez wÅ‚Ä…czanie i wyÅ‚Ä…czanie
grzejnika. Natomiast wilgotność ma być regulowana poprzez włączanie wentylatora w
momencie przekroczenia tej wielkości ponad 85%RH. Po przekroczeniu 85%RH powinien
włączać się wentylator (i ewentualnie również grzejnik) w celu osuszenia wnętrza pojemnika.
Zadanie Nr 4
Wykorzystać ciekłokrystaliczny, szeregowy wyświetlacz LCD (poznany wcześniej w jednym
z ćwiczeń) do prezentacji wyników pomiaru temperatury i wilgotności realizowanych przez
układ SHT1x. Należy podać schemat układu oraz napisać stosowny program (lub uzupełnić
gotowy program dla układu SHT1x z uwzględnieniem wyświetlacza ciekłokrystalicznego
LCD).
26
POLITECHNIKA BIAAOSTOCKA WYDZIAA ELEKTRYCZNY
Układy Elektroniki Profesjonalnej (Laboratorium)
Część 1 (2 x 45 min.)
Przetwornik A/D (ADC0831)
Układy do pomiaru temperatury i wilgotności (Sensirion SHT11)
DS1620 Digital Thermometer
Pomiar częstotliwości (555)
Czujnik pojemnościowy (QT301)
Interfejs UTI
Część 2 (2 x 45 min.)
DS2760 Thermocouple Kit
Czujnik temperatury LM35
Ultrasonic Distance Sensor
TSL230 Light to Frequency Converter
Fotorezystor
27
Wyszukiwarka
Podobne podstrony:
BADANIE PRZETWORNIKÓW AC CA REGULATORA MOCYkoszałka,teoria sygnałów, Konwersja AC CA5 Przetwarzanie AC i CAMap Sensor Technical SpecificationMechanika Techniczna I Skrypt 2 8 Prety, układy pretów04? PEiM Sensory i Układy scalone doctechnikiplan nauczania technik informatyk wersja 1Mudry energetyczne układy dłoni(1)Debugowanie NET Zaawansowane techniki diagnostyczne?bnetwięcej podobnych podstron