Serwisy partnerskie:
Close icon
Serwisy partnerskie

Infinity: system automatyki domowej - lokalne wyświetlanie danych pomiarowych cz.2

AVT3232
kit
Kontynuujemy omawianie ostatniego elementu systemu automatyki – zespołu, którego zadaniem jest lokalna prezentacja danych pomiarowych. Poprzednią część zakończyliśmy stwierdzeniem, że po uruchomieniu i zaprogramowaniu modułu należy go odpowiednio skonfigurować.
Article Image

Oczekiwaną instalację pokazuje rysunek 12 (moduły wyświetlające będą opisane w dalszej części), gdzie moduł zarządzający wyświetlaniem współpracuje z dwoma wyświetlaczami o identyfikatorach SCR01 i SCR02. Życzeniem użytkownika (moim) jest, by jeden wyświetlacz zawsze pokazywał temperaturę wody w kotle, drugi zaś różne dane pomiarowe: temperaturę spalin, temperaturę na zewnątrz, temperaturę wewnątrz itp. Wybór wyświetlanych informacji dokonywany jest przez naciśnięcie odpowiedniego przycisku. Każdemu przyciskowi może być przyporządkowana funkcja w wyniku odpowiedniej konfiguracji modułu.

Rys.12 Moduł sterujący wyświetlaniem i dwa moduły wyświetlające

Szczegóły konfiguracji są opisane w tabeli 2 (dostępnej w Elportalu). Konfiguracja jest realizowania za pośrednictwem transmisji szeregowej z interfejsem RS232, co oznacza, że nie ma konieczności wysyłania polecenia REPLY. Do tej operacji zalecane jest użycie odpowiedniego programu konfiguracyjnego, który można pobrać jako materiały dodatkowe do poprzednich części artykułu.

Po zakończeniu konfiguracji połączonej z zapisem do pamięci nieulotnej, moduł jest przygotowany do pracy w środowisku z dwoma modułami wyświetlaczy.

Ostatnim elementem biorącym udział w prezentacji danych jest moduł wyświetlający. Jest to maksymalnie uproszczone rozwiązanie (przykładowo nie ma własnego stabilizatora napięcia), gdzie mikrokontroler AVR obsługuje czterocyfrowy siedmiosegmentowy wyświetlacz LED. Schemat jednostki centralnej pokazuje rysunek 13.

Rys.13 Moduł wyświetlający - schemat jednostki centralnej

Jest to typowa aplikacja mikrokontrolera AVR. Do budowy modułu został wybrany mikrokontroler ATMEGA8515. Jest to ulepszona wersja poprzednika, mikrokontrolera AT90S8515 (który również może być zastosowany do tego celu). W szufladzie mam trochę takich „starych” procesorów, więc jest to doskonała forma „utylizacji” elementów, dla których szanse zastosowania są coraz mniejsze.

W przypadku użycia układów o symbolu AT90S8515 należy dodać zewnętrzną pamięć EEPROM (U102, rysunek 13), gdyż wbrew informacjom zawartym w dokumentacji, wewnętrzna pamięć nieulotna EEPROM jest trochę ulotna, jest to wiedza wynikająca z praktyki. Nowszy procesor ATMEGA8515 tej wady nie ma (to znaczy nie zauważyłem, by taką miał) i montaż wspomnianej pamięci U102 nie jest konieczny.

Rys.14 Wyświetlacz obsługiwany w trybie multipleksowanym - schemat rozwiązania

Sam wyświetlacz, jako złożenie z wyświetlaczy jednocyfrowych, jest obsługiwany w trybie multipleksowanym, schemat rozwiązania pokazuje rysunek 14. Oznacza to, że w danej chwili procesor przez swój PORT A (rysunek 13) steruje włączaniem każdego segmentu niezależnie. W torze znajduje się układ U201 pełniący funkcję układu zwiększającego wydajność prądową na potrzeby wyświetlacza.

Włączanie do świecenia określonych segmentów musi dotyczyć odpowiedniego jednocyfrowego wyświetlacza. Realizowane jest to w ten sposób, że tylko jeden z czterech ma włączone napięcie na anodach diod świecących. Pozostałe, pomimo wspólnego wysterowania segmentów, są wyłączone. Włączaniem napięcia na anodach zajmują się tranzystory Q201–Q204 (rysunek 14), które z kolei są wysterowane odpowiednimi pinami PORT B mikrokontrolera (rysunek 13). W trakcie prac nad oprogramowaniem nieocenioną pomoc stanowił zespół LEDów (rysunek 15), obecnie ich znaczenie zmalało, ale nadal są wykorzystywane.

Rys.15 Schemat zespołu LEDów
Rys.16 Interfejs przetwarzający sygnały transmisji szeregowej - schemat

Istotnym elementem modułu wyświetlającego jest interfejs przetwarzający sygnały transmisji szeregowej, schemat pokazuje rysunek 16. Jak we wszystkich dotychczasowych rozwiązaniach, jest zastosowany układ SN75C176. Jak wielokrotnie już pisałem, do pracy półdupleksowej wymaga on rezystorów podciągających odpowiednie linie układu do stanu logicznej jedynki (R401 i R402, rysunek 16).

Wyjście układu jest wyprowadzone na dwa identyczne złącza (są one połączone równolegle). Oprócz wymaganych dwóch pinów sygnału RS485 występują tam piny zasilające (moduł zasila się z zewnątrz). Uzasadnieniem zastosowania podwójnego złącza jest to, że w ten sposób bardzo łatwo uzyskuje się lokalną magistralę zasilająco-transmisyjną, co symbolicznie pokazuje rysunek 12.

Poszczególne moduły są ze sobą połączone czterożyłowym przewodem. Pierwszy przewód to połączenie złącza P401 (rysunek 4, EdW 2/2020) ze złączem P401 (rysunek 16). W ten sposób do modułu wyświetlającego doprowadzone jest napięcie zasilające oraz sygnał transmisji szeregowej. Kolejny przewód to połączenie złącza P402 (rysunek 16) ze złączem P401 (rysunek 16) w następnym module wyświetlającym. W sumie można zbudować łańcuch modułów o dowolnej długości.

Rys.17 Schemat płytki PCB (TOP) modułu wyświetlania - Infinity
Rys.18 Schemat płytki PCB (BOTTOM) modułu wyświetlania - Infinity

Płytkę PCB zaprojektowaną do powyższego schematu pokazuje rysunek 17 (strona TOP) oraz rysunek 18 (strona BOTTOM). Zmontowany moduł prezentuje fotografia 3. Montaż elementów należy wykonać bardzo starannie. Moduł nie zawiera własnego stabilizatora napięcia, więc nie zachodzi potrzeba jego uruchomienia. Przed zaprogramowaniem pamięci FLASH mikrokontrolera należy odpowiednio ustawić bity fuse (w przypadku użycia układu AT90S8515 tę operację należy pominąć, gdyż ten układ nie wymaga zmian w obszarze fuse, rysunek 19).

Fot.3 Zmontowany moduł do wyświetlania pomiarów - Infinity

Oczekiwaną postać bitów (ATMEGA8515) pokazuje rysunek 20. Program sterujący zawarty w module wyświetlacza w swoich rozwiązaniach nie odbiega od dotychczasowych rozwiązań. Obsługa transmisji szeregowej jest identyczna jak w każdym module realizujących rolę SLAVE: odbiera wszystkie dane, wysyła dane jedynie w sytuacji, gdy otrzyma na to odpowiednią zgodę (dla lokalnej magistrali RS485 funkcję elementu MASTER spełnia wyżej opisany moduł sterujący wyświetlaniem danych).

Analiza i rozpakowanie odbieranego poprzez UART polecenia jest identyczna. Różni się realizacja poleceń, gdyż każdy moduł oprócz poleceń obsługiwanych przez każdy element systemu Infinity realizuje swoje specyficzne działania. Takim fragmentem programu, który może wymagać wyjaśnień, jest obsługa wyświetlacza. Z wyświetlaczem związanych jest kilka zmiennych:

  • DigitCounter – inkrementowany modulo 4 licznik, określa jedną z czterech cyfr wyświetlacza, która jest aktywowana do pracy,
  • DispBuffer [ 4 ] – bufor wyświetlacza, zawiera stan włączenia każdego z segmentów (siedem segmentów plus kropka) dla każdej z cyfr wyświetlacza.

W wyniku odebrania odpowiednich poleceń nakazujących wyświetlanie danych, program umieszcza je w buforze wyświetlacza (zmienna DispBuffer). W funkcji obsługi przerwań od upływu czasu realizowana jest jego obsługa – algorytm pokazuje listing 6. W obsłudze każdego przerwania od upływającego czasu realizowane jest odświeżanie wyświetlanych danych. Patrząc na schemat (rysunek 14), można zauważyć, że podanie na bazę tranzystorów Q201–Q204 stanu logicznego zera powoduje aktywowanie odpowiedniej cyfry wyświetlacza.

Rys.19 Ustawianie bitów fuse
Rys.20 Oczekiwana postać bitów (ATMEGA7515)

Z tego powodu pierwszą czynnością, jaka jest wykonywana w obsłudze, jest wyłączenie wszystkich tranzystorów (żadna cyfra nie jest aktywowana) jako operacja ustawienia wybranych wyjść portu do stanu logicznej jedynki. W dalszej kolejności jest inkrementowany numer cyfry z zachowaniem dwóch najmłodszych bitów (zmienna będzie przyjmować wartości od 0 do 3). W zależności od stanu tego licznika, do wysterowania segmentów jest użyty odpowiedni element bufora wyświetlacza oraz określone jest wysterowanie portem wpływającym na pracę tranzystorów, które z kolei aktywują odpowiednią cyfrę wyświetlacza.

Odebranie danych (znakowych) do wyświetlenia wymaga konwersji z postaci znakowej na postać wymaganą przez wyświetlacz siedmiosegmentowy. Wbudowana funkcja (listing 7) do wspominanej konwersji potrafi przetwarzać liczby szesnastkowe (i nie reaguje na pisownię małymi lub wielkimi literami). Zauważmy, że moduł ma za zadanie wyświetlić napis, postać znakową liczby, która może być zapisana dziesiętnie, szesnastkowo czy binarnie (nie ma znaczenia jej wartość).

Procedura reakcji na polecenia wyświetlenia odebranej znakowo liczby dokonuje niewielkiej analizy. W ciągu znaków możne znajdować się znak przecinka, który oddziela część całkowitą od ułamkowej. Jest on zamieniany na wysterowanie segmentem kropki i połączony z sąsiednią cyfrą (znak kropki dziesiętnej nie „rozpycha się” na wyświetlaczu).

Fot.4 Moduł do wyświetlania podłączony do zestawu badawczego

Podobnie wydzielany jest znak minus (jeżeli wyświetlana liczba jest ujemna). W przypadku odebrania znaku plus (na oznaczenie liczby dodatniej) jest on pomijany (nie bardzo daje się sensownie zaprezentować znak plus na wyświetlaczu siedmiosegmentowym). Po skompletowaniu całej postaci znakowej liczby jest ona dosunięta na wyświetlaczu prawostronnie. Omawiany algorytm pokazuje listing 8.

Moduł sterowania wyświetlaniem danych pomiarowych rozpoznaje polecenia, wyszczególnione w tabeli 3 (dostępnej w Elportalu).

Po zaprogramowaniu pamięci FLASH mikrokontrolera należy go odpowiednio skonfigurować. W przypadku modułu wyświetlacza jedynym elementem, jaki należy zmienić, jest jego identyfikator. W opisanej instalacji potrzebne są dwa zespoły wyświetlacza, którym należy przydzielić identyfikatory: SCR01 i SCR02. Można to przeprowadzić w laboratoryjnym zestawie badawczym (fotografia 4). Jest on do tego przygotowany, ma odpowiedni zestaw przewodów dedykowanych dla określonych modułów.

Zaprezentowane właśnie moduły zamykają cykl artykułów opisujących poszczególne składniki systemu Infinity. Kolejny odcinek zostanie poświęcony kwestiom mechanicznym i instalacyjnym.

Wykaz elementów - moduł sterujący wyświetlaniem
R101,R102,R401,R402
10kΩ (0805)
R103
330Ω (0805)
R301-R309
430Ω (0805)
R310
drabinka rezystorowa, przewlekana 10kΩ
R312
510Ω (0805)
R403-R405
rezystor przewlekany 150Ω
R503
3kΩ (0805)
R504
1kΩ (0805)
C101
1μF (0805)
C102,C103
15pF (0805)
C203-C206
tantalowy SMD rozmiar A, 10μF (0805)
C501
przewlekany, 220μF
C502,C507,CB101A,CB101B,CB101C,CB101D,CB301,CB401
100nF (0805)
C506
przewlekany niskoimpedancyjny 1000μF
X101 
rezonator kwarcowy przewlekany 7.3728MHz
L501
dławik ekranowany rozmiar DE0704, 150μH
D101
BAT54C (SOT23)
D303
LED zielony przewlekany 3mm
D304
LED żółty przewlekany 3mm
D305-D312
LED czerwony przewlekany 3mm
D501,D502
SS14 (DO214)
U101
ATMEGA324 (TQFP 44)
U102
LTV356T
U202
MAX232 (SO-16)
U301
74HC541 (SO-20)
U401
SN75C176 (SO-8)
U501
LM2575S-ADJ (D2PAK)
SW101
mikroprzycisk 6mm (przewlekany)
SW309-SW316
mikroprzycisk 12mm (przewlekany)
P502
GOLDPIN, przewlekany 2 piny plus jumperek
P101
GOLDPIN, przewlekany 2×5 pin
P102
przewlekany terminal o rozstawie 5mm
P201
GOLDPIN, przewlekane 2×5 pin plus złącze DB9 zaciskane na kabel, żeńskie
P301, P303
GOLDPIN, przewlekane 2×10 pin plus złącze na kabel płaski
P401
złącze przewlekane typu JS1125, 4 pin wraz z wtykiem
P501
złącze męskie przewlekane MOLEX 2×2 pin rozstaw 4,2mm plus wtyk
Wykaz elementów - moduł wyświetlacza
R101,R103,R104,R209-R212,R401,R402
 10kΩ (0805)
R201-R208
360Ω (0805)
R213-R216
4,3kΩ (0805)
R301-R303
220Ω (0805)
R304
470Ω (0805)
C101
1μF (0805)
C102,C103
15pF (0805)
CB101,CB102,CB401
100nF (0805)
X101
rezonator kwarcowy 7,3728MHz
D101
dioda Schottky'ego BAT54C (SOT23)
D301, D302, D303
dioda LED żółta, SMD (1206)
D306
dioda LED zielona, SMD (1206)
L201-L204
wyświetlacz siedmiosegmentowy, KW1-521
Q201-Q204
tranzystor, BC857 (SOT23)
U101
mikrokontroler ATMEGA8515 (PLCC44)
U102
EEPROM (warunkowo), AT24C02A (SO-8)
U201
ULN2803 (SO-18)
U401
SN75C176 (SO-8)
SW101
mikroprzycisk (przewlekany)
P101
GOLDPIN dwurzędowy, 5×2 pin
P201
GOLDPIN dwurzędowy, 8×2 pin
P401,P402
złącze przewlekane typu JS1125, 4 pin wraz z wtykiem
Do pobrania
Download icon Infinity: system automatyki domowej - lokalne wyświetlanie danych pomiarowych cz.2
Tematyka materiału: ATMEGA8515
AUTOR
Źródło
Elektronika dla Wszystkich marzec 2020
Udostępnij
UK Logo