iControlSensor. Czujnik do pomiaru temperatury dla iControl

iControlSensor. Czujnik do pomiaru temperatury dla iControl
Pobierz PDF Download icon
Na łamach Elektroniki Praktycznej (część 1 - EP 1/2015, część 2 - EP 2/2015) przedstawiłem projekt systemu typu "inteligentny dom", który w roli medium transmisyjnego używa sieci energetycznej (technologia Power Line Communication). W artykule opisano podstawowe elementy systemu nazwanego iControl, tj. urządzenia sterującego iControlMaster oraz urządzenia wykonawczego iControlSwitch pełniącego rolę wyłącznika jedno- lub dwubiegunowego. Kolejnym rodzajem modułu, jaki obsługiwany jest przez nasz system "inteligentnego budynku" jest moduł iControlSensor przeznaczony do pomiaru temperatury. Rekomendacje: czujnik temperatury do systemu iControl. Może przydać się do pomiaru lub sterowania ogrzewaniem.

Rysunek 1. Schemat ideowy modułu iControlSensor

Schemat czujnika temperatury do systemu iControl pokazano na rysunku 1. "Sercem" urządzenia jest mikrokontroler ATmega8 odpowiedzialny za realizację całej założonej funkcjonalności. Mikrokontroler za pomocą wbudowanego, sprzętowego interfejsu TWI steruje pracą modemu CY8CPLC10. Dane są transmitowane oraz analizowane z użyciem przerwania zewnętrznego INT1.

Ponadto wykorzystano programową implementację obsługi interfejsu 1-Wire (wyprowadzenie PD2 mikrokontrolera), dzięki czemu zrealizowano współpracę sterownika ze scalonym termometrem typu DS18S20 zapewniając dokładny pomiar temperatury otoczenia.

Część analogowa iControlSensor jest w zasadzie taka sama, jak w module iControlSwitch, więc nie będę powielał szczegółowego opisu zastosowanych rozwiązań sprzętowych odsyłając dociekliwych Czytelników do artykułu wspomnianego we wstępie.

Ustawienie ważniejszych fusebitów:

CKSEL3...0: 0100
SUT1...0: 10
CKOPT: 1
EESAVE: 0

Rysunek 2. Schemat montażowy modułu iControlSensor

Jedyne, co należy podkreślić to fakt, iż rozbudowana aplikacja toru analogowego wynika wyłącznie z chęci sprostania wymogom norm CENELEC EN50065-1:2001 oraz FCC part 15 (w jej konstrukcji posłużono się zresztą schematem aplikacyjnym firmy Cypress - nota aplikacyjna CY3274).

Z uwagi na fakt, że moduł iControlSensor "zadowala się" znacznie mniejszym zapotrzebowaniem na energię, niż wspomniany moduł iControlSwitch, w jego zasilaczu zastosowano typowy transformator do druku (15 V/2,6 VA) oraz dwa stabilizatory liniowe (78M12 i 78M05) zapewniającą odpowiednie napięcie zasilające.

Wykaz elementów

Rezystory: (obudowy SMD 0805)
R1: 20 kΩ
R2, R3, R25: 4,7 kΩ
R4: 2,1 kΩ/1%
R5...R7, R16, R17, R19, R20: 10 kΩ
R8: 7,5 kΩ/1%
R9: 36,5 Ω/1%
R10, R13: 37,4 kΩ/1%
R11: 3,.83 kΩ/1%
R12: 41,2 Ω/1%
R14, R26, R27: 1 kΩ/1%
R15: 4,99 Ω/1%
R18: 4,02 kΩ/1%
R21: 22,1 Ω/1%
R22: 2 kΩ/1%
R23, R24: 20 kΩ

Kondensatory: (SMD 0805):
C1, C28: 330 nF
C2, C5, C9, C17...C20, C29: 100 nF
C3, C4: 22 pF
C6, C10, C25: 10 nF
C7, C11, C12, C22, C23: 1 µF
C8, C13...C16: 1000 pF/1%
C21: 10 µF (SMD 1206)
C24: 1,5 nF
C26: 150 nF/300 V (polipropylenowy klasy X1, r=15 mm)
C27: 100 µF/16 V (r=2,5 mm)
C30: 100 µF/25 V (r=2,5 mm)

Półprzewodniki:
U1: ATmega8 (TQFP32)
U2: CY8CPLC10 (SSOP28)
U3...U5: LMH6639MF (SOT23-6)
U6: 78M12 (DPAK)
U7: 78M05 (DPAK)
U8: DS18S20 (TO-92)
T1: BC817 (SOT23)
T2: FCX591A (SOT89)
T3: FCX491A (SOT89)
D1: SMAJ12CA (DO-214AC)
D2: BAT54S (SOT23)
STATUS: zielona dioda LED (SMD 0805)
BIU: czerwona dioda LED (SMD 0805)
B1: mostek prostowniczy 1A/50 V (raster 5 mm)

Inne:
TR1: transformator izolacyjny SMD Murata 78250MC
TR2: transformator do druku HAHN BV EI 304 2043 (15 V/2,6 VA)
L1: dławik SMD 1 mH (1812)
Q1: rezonator kwarcowy CFPX217 (SMD 32768 Hz)
V1: warystor V250LA4P

Listing 1. Realizacja bufora kołowego i deklaracje zmiennych odpowiedzialnych za proces wysyłania danych PLC

Przejdźmy do szczegółów implementacyjnych programu obsługi aplikacji, które nie zostały opisane w poprzednim artykule. Wszystkie moduły systemu iControl wykorzystują wbudowany w modem CY8CPLC10 mechanizm detekcji zajętości magistrali danych (Band In Use), więc wysłanie pojedynczego pakietu danych, w zależności od parametrów transmisji i stanu tejże magistrali, może zając nawet 1,5 sekundy.

Dlatego rozwiązanie przesyłania danych w postaci inicjacji transmisji danych i oczekiwania na rezultat jej wykonania byłoby nieefektywne. Z punktu widzenia programu sterującego wstrzymywałoby obsługę innych, ważnych procesów. W związku z tym w aplikacji programu obsługi urządzeń systemu iControl zaimplementowano specjalny mechanizm wysyłania, synchronizacji i kontroli pakietów danych.

Listing 2. Funkcja odpowiedzialna za dodanie danych do nadawczego bufora kołowego

Po pierwsze, zastosowano specjalny bufor kołowy pakietów transmisji (z odpowiednimi wskaźnikami miejsca zapisu i odczytu), którego elementem jest struktura danych opisująca kompletną ramkę transmisji, a której konstrukcję (wraz z odpowiednimi zmiennymi) pokazano na listingu 1.

Dodatkowo, przewidziano 2 funkcje obsługi przerwań ISR: od Timera1 (dokładnie, od porównania wartości Timera1 z wartością rejestru ORC1A), wywoływaną cyklicznie co 100 milisekundy, której zadaniem jest sprawdzanie czy są jakiekolwiek dane przeznaczone do wysłania, inicjacja procesu wysłania danych, jego nadzór i obsługa bufora kołowego oraz funkcję obsługi przerwania zewnętrznego INT1, której zadaniem jest zarówno odbiór "zwykłych" danych przesyłanych przez moduł sterujący iControlMaster oraz odbiór statusów bieżącej i zainicjowanej we wcześniej wspomnianej procedurze obsługi przerwania, transmisji danych.

Fotografia 3. Widok obwodu drukowanego modułu iControlSensor od strony BOTTOM.

W tym, drugim przypadku, funkcja obsługi przerwania zewnętrznego INT1 sprawdza status wysyłania bieżącej transmisji danych i w zależności od jego stanu modyfikuje bieżąca strukturę danych dając asumpt do ponowienia tejże transmisji (w przypadku jej niepowodzenia i nie przekroczenia maksymalnej liczby retransmisji) lub też kończąc jej przebieg poprzez ustawienie odpowiednich flag w strukturze danych (przeprowadzenia transmisji zakończonego powodzeniem lub niepowodzeniem) jak i flag dla pętli głównej aplikacji, dzięki czemu program główny informowany jest na bieżąco o aktualnym stanie systemu.

W ten prosty sposób unika się niepożądanego wstrzymywania pracy aplikacji w przypadku problemów z komunikacją po magistrali PLC.

W celu zrealizowania powyższej funkcjonalności, po pierwsze, przewidziano prostą funkcję narzędziową, której zadaniem jest dodanie do nadawczego bufora kołowego, danych przeznaczonych do wysłania, a którą pokazano na listingu 2.

Kolejnym krokiem jest implementacja funkcji, której cykliczne wywoływanie (co 100 ms) zapewnia sprawdzanie czy są jakiekolwiek dane przeznaczone do wysłania, inicjacja procesu wysłania danych, jego nadzór i obsługa bufora kołowego, a którą to pokazano na listingu 3.

Listing 3. Funkcja odpowiedzialna za inicjowanie i nadzór procesu wysyłania danych PLC

Jak widać, przedstawiona implementacja wspomnianej funkcji zapewnia wykonanie 3 prób wysyłania kompletnej wiadomości PLC, przy czym dla każdej z wymienionych prób zmieniana jest wartość progu dla mechanizmu BIU, który to dla kolejnych transmisji przyjmuje następujące ustawienia:

  • próba pierwsza: 96 dBmVrms,
  • próba druga: 99 dBmVrms,
  • próba trzecia: wyłączenie mechanizmu BIU.

Po trzech, nieudanych próbach wysłania pakietu PLC, aplikacja główna otrzymuje informację o błędzie transmisji danych, co pozwala podjąć odpowiednie akcje.

Ostatnią funkcją, niezbędną z punktu widzenia zastosowanego mechanizmu transmisji, jest funkcja obsługi przerwania zewnętrznego INT1, której zadaniem jest odbiór "zwykłych" danych przesyłanych przez moduł sterujący iControlMaster oraz odbiór statusów bieżącej i zainicjowanej we wcześniej wspomnianej funkcji obsługi przerwania (list. 3), transmisji danych. Funkcji pokazano na listingu 4.

Funkcję inicjalizacji modułu iControlSensor zawiera odpowiednie procedury konfigurujące obsługę przerwań odpowiedzialnych za realizację procesu wysyłania danych - pokazano ją na listingu 5.

Montaż

Listing 4. Funkcja ISR INT1 współodpowiedzialnej za obsługę procesu wysyłania danych PLC

Schemat montażowy modułu iControlSensor pokazano na rysunku 2. Sposób wykonania obwodu drukowanego umożliwia zamontowanie gotowego urządzenia w typowej puszcze elektroinstalacyjnej o średnicy 60 mm i głębokości 40 mm. Z uwagi na sporą liczbę elementów i małą powierzchnię, zastosowano dość gęsty montaż elementów SMD po obu stronach laminatu.

Na płytce urządzenia poprowadzono obszerne pola masy po obu stronach obwodu drukowanego oraz zastosowano szereg przelotek pomiędzy nimi w celu zmniejszenia pojemności pasożytniczych. Z uwagi na zastosowanie niewielkich elementów SMD, montaż tego typu układu najlepiej jest przeprowadzić z użyciem stacji lutowniczej wyposażonej w grot o niewielkiej średnicy, odpowiedniej jakości topników lutowniczych oraz dysponując sporym doświadczeniem w tej kwestii.

Jak zwykle, montaż taki zaczynamy od przylutowania wszystkich półprzewodników w obudowach SMD (po obu stronach laminatu), następnie lutujemy rezystory, kondensatory, elementy indukcyjne, a na samym końcu wszystkie elementy przeznaczone do montażu przewlekanego. Wygląd obwodu drukowanego modułu od strony BOTTOM pokazano na fotografii 3. W układzie prototypowym, w odróżnieniu od projektu docelowego, zastosowano rezonator kwarcowy przeznaczony do montażu przewlekanego.

Co ważne, poprawnie zmontowany układ nie wymaga żadnych regulacji i powinien działać tuż po włączeniu zasilania. Tak jak w poprzednim module typu Slave, na płytce drukowanej modułu iControlSensor przewidziano specjalną zworkę oznaczoną "UNBIND". Służy ona do wyzerowania stanu modułu wykonawczego do stanu wyjściowego (moduł nieskonfigurowany), przy czym stan jej sprawdzany jest wyłącznie podczas włączania urządzenia, zaś potwierdzeniem zadziałania tego mechanizmu jest zaświecenie diody STATUS przez 0,5 sekundy.

Listing 5. Funkcja odpowiedzialna za inicjalizację modułu iControlSensor

Funkcji tej można użyć na przykład w przypadku, gdybyśmy odłączyli zalogowany wcześniej i skonfigurowany moduł wykonawczy od sieci (z nadanym adresem LA) i chcieli go użyć w innej sieci. W takim przypadku, jako że moduł ten miałby już nadany adres LA, nie zgłosiłby się automatycznie w nowej sieci i jedynym sposobem "zmuszenia" go do tej czynności byłoby sprzętowe, lokalne zresetowanie jego stanu. Niemniej jednak, nie polecam tego scenariusza postępowania, gdyż konfiguracja czy rekonfiguracja sieci powinna być procesem przemyślanym i wykonywanym z poziomu modułów sterujących.

Na płytkach obu układów zbudowano kompletne układy zasilające zasilane napięciem sieciowym 230 V AC i dlatego istnieje niebezpieczeństwo porażenie elektrycznego, co stanowi zagrożenie dla życia i zdrowia. W związku z tym, montaż układów w tym zakresie powierzyć należy osobie posiadającej uprawnienia elektryczne w zakresie eksploatacji urządzeń o napięciu do 1 kV. Miejsca na obwodach płytek drukowanych, gdzie występuje wysokie napięcie groźne dla życia i zdrowia oznaczone zostały odpowiednimi opisami.

Robert Wołgajew, EP

Artykuł ukazał się w
Maj 2015
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik styczeń 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio luty 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje styczeń 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna styczeń 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich styczeń 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów