w w w. e p . c o m . p l
ELEKTRONIKA PRAKTYCZNA •
Międzynarodowy magazyn elektroników konstruktorów
Międzynarodowy magazyn elektroników konstruktorów
10/2004
•
październik •
9 zł 50 gr
(w tym 7% VAT)
DOTYKOWY WYŁĄCZNIK URZĄDZEŃ ZASILANYCH Z SIECI 230 V/50 HZ ZDALNIE STEROWANY POTENCJOMETR DO APLIKACJI AUDIO REGULOWANY ZASILACZ WYSOKIEGO NAPIĘCIA ZMIENNEGO WIELOKANAŁOWY OPTOIZOLOWANY PRZETWORNIK A/C KARTA PRZEKAŹNIKÓW Z INTERFEJSEM 1WIRE UNIWERSALNY STABILIZATOR IMPULSOWY 5 V INTERFEJS SPI DO PROGRAMATORA PUNCH MODUŁOWY INTERFEJS USB<->RS2327
PODZESPOŁY:
SPRZĘT:
B
ED
D
ED
???? DLA PRAKTYKÓW ARM RABBIT 3000
EM
10/2004 • październik
ET H ER N ET
16-BITOWCE RODEM Z RENESASU
PRICE: 4 EUR
w w w. e p . c o m . p l
ELEKTRONIKA PRAKTYCZNA •
EMBEDDED ETHERNET
on/off LINE
Międzynarodowy magazyn elektroników konstruktorów
Międzynarodowy magazyn elektroników konstruktorów
10/2004
•
październik • 15 zł 50 gr
(w tym 0% VAT) Nakład: 14500 egz.
DOTYKOWY WYŁĄCZNIK URZĄDZEŃ ZASILANYCH Z SIECI 230 V/50 HZ ZDALNIE STEROWANY POTENCJOMETR DO APLIKACJI AUDIO REGULOWANY ZASILACZ WYSOKIEGO NAPIĘCIA ZMIENNEGO WIELOKANAŁOWY OPTOIZOLOWANY PRZETWORNIK A/C KARTA PRZEKAŹNIKÓW Z INTERFEJSEM 1WIRE UNIWERSALNY STABILIZATOR IMPULSOWY 5 V INTERFEJS SPI DO PROGRAMATORA PUNCH MODUŁOWY INTERFEJS USB<->RS2327
CD-EP10/2004A Katalog produktów i ewaluacyjne wersje programów firmy Siemens
PODZESPOŁY:
16-BITOWCE RODEM Z RENESASU
CD-EP10/2004B
▪ Wzory płytek drukowanych ▪ Oprogramowanie do projektów oraz kursów ▪ Programy narzędziowe Dokumentacje ▪ Programy dla elektroników: 10/2004 • październik
SPRZĘT:
ARM DLA PRAKTYKÓW RABBIT 3000
PRICE: 8 EUR
• • • • • • • • •
AVR Studio 4.10 Mikroluk 1.0 OrCAD 10 Eval Quartus II 4.1 SP1 WinPICprog LCDdesigner HALL2002 GOLEM Kompilator C dla mikrokontrolerów R8C firmy Renesas
▪ Programy narzędziowe dla mikrokontrolerów µPSD3300 ▪ Atmel Product Guide 2004/2005
Europejskie święto elektroniki 2004
Okładka Projekt okładkowy ilustruje pierwszy, niezbędny krok w stronę integracji mikrokontrolerów z Ethernetem. Otwierają się przed nami podwoje Internetu!
Szczegóły na str. 120
W połowie listopada (dokładnie w dniach 9...12.11) odbędą się w Monachium największe w Europie targi elektroniczne Electronica 2004. Jak wynika z zapowiedzi organizatorów, wystawi się na nich w sumie blisko 3500 firm (nie tylko z Europy), które będą miały stoiska rozlokowane w 14 halach wystawowych. Spodziewana liczba gości odwiedzających targi ma przekroczyć 80000 (w roku 2002 było ich 78000) W tym doborowym towarzystwie pojawi się tradycyjnie niezbyt wiele – bo tylko 9 – firm z Polski, co w pewnym stopniu ilustruje nienajlepszą sytuację naszego przemysłu elektronicznego. Targi Electronica obchodzą w tym roku 40 rocznicę istnienia. W tym czasie z niewielkiej, lokalnej imprezy przekształciły się w ogromną, teraz już kultową, imprezę elektroników europejskich, dla których są okazją zarówno do spotkania się i wymiany doświadczeń, jak i zapoznania się z najnowszymi trendami występującymi w elektronice pomiarowej i podzespołowej. Niestety, nie wszyscy “wielcy” rynku elektronicznego będą uczestniczyć w Electronice 2004, ale reprezentacja liderów jest na tyle silna, że można się spodziewać wielu interesujących prezentacji. Niestety, ze względu na odległość i koszty (szczęśliwie granica nie jest już żadnym problemem) nie wszyscy polscy elektronicy będą mogli uczestniczyć w tym święcie. Specjalnie z myślą o nich redakcyjni wysłannicy przygotują sprawozdanie z najważniejszych wydarzeń targowych, przede wszystkim tych, które mają szansę odegrać ważną rolę w rozwoju elektroniki. Tymczasem zachęcam do zapoznania się z treścią październikowego wydania EP, w którym poruszamy wiele tematów ważkich dla elektroników chcących być “na bieżąco”. Szczególnej uwadze polecam artykuł okładkowy, którym inicjujemy prezentację informacji o możliwościach stosowania modułów mikrokontrolerowych w sieciach Ethernet, a także interesującą aplikację mikrokontrolera SX28 – jako sterownika wielokanałowego modułu akwizycji danych. Audiofili zainteresuje efektowny, zdalnie sterowany potencjometr firmy Alps zintegrowany z silnikiem elektrycznym, a elektroników-automatyków – projekt karty przekaźnikowej sterowanej za pomocą magistrali 1Wire. Poza projektami, sporo miejsca przeznaczyliśmy także na prezentację sprzętowych narzędzi dla mikrokontrolerów H8S i ARM. Jest więc w czym wybierać!
Redaktor Naczelny Miesięcznik Elektronika Praktyczna (12 numerów w roku) jest wydawany przez “AVT-Korporacja sp. z o. o.” we współpracy z wieloma redakcjami zagranicznymi. Wydawca: AVT Korporacja Sp. z o.o., 01-939 Warszawa, ul. Burleska 9, tel. (22) 568-99-99, fax: (22) 568-99-00 Dyrektor Wydawnictwa: Wiesław Marciniak
Adres redakcji: 01-939 Warszawa, ul. Burleska 9, tel.: (22) 568-99-41, fax: (22) 568-99-44 e-mail:
[email protected] http://www.ep.com.pl Redaktor Naczelny: Piotr Zbysiński Zastępcy Redaktora Naczelnego: Jarosław Doliński, Mieczysław Kręciejewski Sekretarz Redakcji: Małgorzata Sergiej, tel.: (22) 568-99-41, fax: (22) 568-99-44 Główny Specjalista ds marketingu i reklamy: Ewa Kopeć tel. (22) 568-99-49, 0-501-497-404, fax: (22) 568-99-44, e-mail:
[email protected] Prenumerata: tel. (22) 568-99-22, fax: (22) 568-99-00,
[email protected] Okładka i DTP: BTC Sklep: tel. (22) 568-99-50
Elektronika Praktyczna 10/2004
Copyright AVT-Korporacja Sp. z o.o., Warszawa, ul. Burleska 9.
Projekty publikowane w Elektronice Praktycznej mogą być wykorzystywane wyłącznie do własnych potrzeb. Korzystanie z tych projektów do innych celów, zwłaszcza do działalności zarobkowej, wymaga zgody redakcji Elektroniki Praktycznej. Przedruk całości lub fragmentów publikacji zamieszczanych w Elektronice Praktycznej jest dozwolony wyłącznie po uzyskaniu zgody redakcji. Redakcja nie odpowiada za treść reklam i ogłoszeń zamieszczanych w Elektronice Praktycznej.
Wydawnictwo
AVT Korporacja Sp. z o.o.
należy do Izby Wydawców Prasy
Stali Współpracownicy: Jacek Bogusz, Marek Dzwonnik, Andrzej Gawryluk, Krzysztof Górski, Tomasz Gumny, Tomasz Jabłoński, Krzysztof Pławsiuk, Sławomir Skrzyński, Jerzy Szczesiul, Ryszard Szymaniak, Marcin Wiązania Uwaga! Z osobami, których nazwiska zaznaczono pochyłą czcionką można się kontaktować via e-mail, pod adresami:
[email protected]
5
Interfejs SPI do programatora Punch
Na str. 19 przedstawiamy przystawkę sprzętową do programatora Punch, dzięki której można programować układy różnego typu (głównie mikrokontrolery) po ich zainstalowaniu w systemie.
Zdalnie sterowany potencjometr do aplikacji audio Konstrukcja charakteryzuje się niezwykłą prostotą i dużymi możliwościami. Zastosowanie wysokiej jakości potencjometru z napędem elektrycznym firmy Alps zapewnia minimalizację zniekształceń i dużą żywotność urządzenia. Str. 15.
Wielokanałowy optoizolowany przetwornik A/C Zintegrowany system akwizycji danych przedstawiamy w artykule na str. 37. Jego „mózgiem” jest mało znany w naszym kraju mikrokontroler SX28.
Niezwykle oryginalne opracowanie przedstawiamy na str. 25. Prezentowany zasilacz może być przydatny m.in. do testowania zasilaczy sieciowych, a także uruchamiania układów lampowych.
Modułowy interfejs USB<->RS232
O tym, że także w Polsce można zrobić coś interesującego w automatyce całkowicie zdominowanej przez wielkie koncerny, przekonuje autor artykułu opublikowanego na str. 126.
Czytelników zainteresowanych nietypowymi mikrokontrolerami szczególnie zachęcamy do przeczytania artykułu znajdującego się na str. 56.
Uniwersalny czytnik RFID Systemy bezstykowej identyfikacji cieszą się wśród naszych Czytelników dużym zainteresowaniem. W artykule na str. 50 przedstawiamy możliwości jednego z wielu dostępnych fabrycznych, uniwersalnych czytników do systemów RFID.
TPS2000 – nowa rodzina oscyloskopów firmy Tektronix
Turbo 8032 µPSD Rdzeń ’51 nie wybiera się w zaświaty! Nowe mikrokontrolery pochodne ’51 przedstawiamy na str. 52.
Wielcy świata pomiarowego nie śpią: na str. 73 przedstawiamy nową rodzinę oscyloskopów firmy Tektronix.
SCATEC
Na str. 75 przedstawiany interesującą aplikację dwóch kitów opisanych niegdyś w EP.
Więcej niż procesor – Rabbit 3000
GOLEM dla automatyków
ARM dla praktyków W artykule na str. 59 publikujemy opis zestawu startowego firmy Keil dla mikrokontrolerów LPC2100 (ARM7TDMI) firmy Philips.
Regulowany zasilacz w.n.
Nową rodzinę mikrokontrolerów firmy Renesas przedstawiamy na str. 43.
16-bitowce rodem z Renesasu
System precyzyjnego wykrywania krawędzi małych i dużych obiektów prezentujemy na str. 132.
6
Elektronika Praktyczna 10/2004
Nr 10 (140) Październik 2004
Projekty Embedded Ethernet, część 1 ...............................................................10 Zdalnie sterowany potencjometr do aplikacji audio ........................15 Interfejs SPI do programatora PUNCH .................................................19 Regulowany zasilacz wysokiego napięcia zmiennego .....................25 Karta przekaźników z interfejsem 1Wire ..............................................32 Wielokanałowy optoizolowany przetwornik A/C ...............................37
Miniprojekty Modułowy interfejs USB<->RS2327 ........................................................75 Uniwersalny stabilizator impulsowy 5 V ................................................76
Podzespoły 16-bitowce rodem z Renesasu .............................................................43 Turbo 8032mPSD ......................................................................................52 Więcej niż procesor – Rabbit 3000, część 1 ........................................56 ARM dla praktyków................................................................................59 AVR-owe „fusy”, część 2 ........................................................................94
Sprzęt Uniwersalny czytnik RFID ........................................................................50 Zasilacze awaryjne firmy Traco Power ...............................................66 TPS2000 – nowa rodzina oscyloskopów firmy Tektronix .....................73 Koniec ery 5 V, część 1 .........................................................................81
Kurs W głośnikowym żywiole, część 12. Obudowy bas-refleks, część 4 ...... 69 Obsługa RS485 w Bascomie, część 2 ..................................................86 Układy programowalne, część 8 .........................................................90
Automatyka GOLEM dla automatyków ..................................................................126 SCATEC – precyzyjne wykrywanie krawędzi .....................................132
Projekty Czytelników Dotykowy wyłącznik urządzeń zasilanych z sieci 230 V/50 Hz ..........97
Info Kraj, Info Świat .................................................................... 116 Biblioteka EP .............................................................................. 123 Kramik+Rynek ............................................................................. 99 Listy ............................................................................................. 105 Ekspresowy Informator Elektroniczny ...................................... 111 Wykaz reklamodawców........................................................... 114 Elektronika Praktyczna 10/2004
7
P R O J E K T Y
Embedded Ethernet, część 1 Do czego służy Internet wiedzą wszyscy. Używamy go prawie codziennie do przeglądania poczty e-mail, wyszukiwania informacji bądź oglądania stron WWW. O tym, co znajduje się z drugiej strony naszego okna Internet Eksplorera, wie znacznie mniej osób, chociaż „postawienie” własnego serwera nie jest już sprawą zbytnio skomplikowaną. Natomiast zbudowanie własnego urządzenia, udostępniającego dynamiczne strony HTML, jest nadal pewnym problemem. Jeśli dodatkowo ma ono kosztować mniej niż 50 zł i mieścić się w pudełku od zapałek, to z pewnością niewielu elektroników podejmie trud wykonania takiego „serwerka”. Temu, jak to zrobić, będzie poświęcony cykl artykułów, zakończony (w trzeciej części) opisem praktycznie zrealizowanego projektu. Rekomendacje: Artykuł polecamy wszystkim zainteresowanym łącznością poprzez ethernet, którzy chcieliby zapoznać się podstawami działania sieci i zdobycie tej wiedzy uwieńczyć samodzielnym wykonaniem mini-serwera sieciowego.
10
Aby zrozumieć działanie sieci Ethernet, na której opiera się współczesny Internet, należy poznać dokładnie jej podstawy. Zacznijmy więc od kabla.
Co w kablu piszczy?
Sieć Ethernet (obecnie najszerzej stosowana w wersji II, zdefiniowanej w normie IEEE802.3) wykorzystuje medium transportowe w postaci szynowej, do którego mogą być przyłączane 2 lub więcej urządzenia. Medium tym może być kabel koncentryczny, światłowód lub para skręconych przewodów. W zależności od parametrów nośnika i urządzeń do niego przyłączonych możliwe do uzyskania szybkości zazwyczaj zawierają się w przedziale 10 Mbd...1 Gbd. W większości obecnie użytkowanych komputerów klasy PC wykorzystuje się karty sieciowe systemu 100BaseT, działające na 2 parach skręconych przewodów. Standard ten umożliwia pracę także z mniejszą szybkością – 10 Mbd (10BaseT), po wykonaniu procesu negocjacji sesji. W przypadku wielodostępu do sieci konieczne jest rozstrzyganie konfliktów, które występują podczas próby jednoczesnego nadawania przez więcej niż jedno urządzenie. Nad prawidłowym przebiegiem tego pro-
cesu czuwa technologia CSMA/CD (Carrier Sense Multiple Access/Collision Detect), zaimplementowana w strukturze kontrolera sieci. W kablu sieciowym, łączącym ze sobą urządzenia sieci Ethernet, przemieszczają się ramki komunikacyjne, których celem jest prawidłowe dotarcie do odbiorcy. W treści ramki jest „zaszyty” także adres nadawcy (rys. 1) tak, aby wiedzieć kto wyemitował daną serię danych. O spójności danych wewnątrz ramki świadczy suma kontrolna, dołączana na końcu całego ciągu bitów. Ramki sieci Ethernet mają ściśle określony rozmiar – nawet jeśli nie niosą odpowiedniej ilości danych, i tak są rozszerzane do minimum 64 bajtów. Powyższa ramka uzupełniana jest na początku sekwencją startową (preamble), w celu zsynchronizowania ze sobą nadawcy i odbiorcy. Kabel łączący dwie końcówki standardu 10/100BaseT może być zgodny lub krzyżowy, w zależności od typu urządzeń, jakie są nim sprzęgnięte. Sposób jego wykonania jest zasadniczo ściśle określony
Rys. 1. Ramka IEEE802.3
Elektronika Praktyczna 10/2004
Embedded Ethernet ku, przy bezpośrednim połączeniu tylko dwóch urządzeń ich adresy mogą być nawet całkowicie zignorowane!
Adres MAC
Rys. 2. Typowy obwód wejściowy PoE
(EIA568A/B), chociażby ze względu na łatwość identyfikacji jego typu na podstawie kolorów przewodów. Szczegółom wykonania i testowania takich kabli poświęcony był artykuł w EP12/2003. W typowym kablu sieciowym UTP do transmisji wykorzystywane są tylko 2 z 4 istniejących par przewodów sygnałowych. Pozostałe przewody pozostają niepodłączone. Można je więc użyć do zasilania urządzenia, które komunikuje się przez sieć. Ale należy to zrobić prawidłowo! Nowo przyjęta norma IEEE802.3af Power Over Ethernet (PoE) specyfikuje, które z przewodów RJ45 mogą być używane do przesyłania zasilania i jak należy to zrobić. Zazwyczaj na ten cel przeznacza się wolne linie 4-5 i 7-8, chociaż można także użyć linii sygnałowych 1-2 i 3-6, które typowo są przyłączone do wejść różnicowych transformatora (rys. 2). Zasilane urządzenie (PD) powinno umieć poinformować zasilacz (PSE), że jest zgodne z normą i gotowe do odebrania energii. W skrócie proces ten przebiega następująco (po włożeniu wtyczki RJ45 do gniazda): – PD przyłącza minimalne obciążenie w postaci rezystora 25 kV, – PSE sprawdza obecność tego rezystora i steruje napięcie 48 V, – PD uaktywnia przetwornicę DC/ DC i odbiera nie więcej niż 13 W mocy. Opcjonalnie może być także wykonany wybór klasy, do której należy PD. Pozwala to elastycznie
Elektronika Praktyczna 10/2004
dystrybuować moc w ilości zgłaszanej przez zasilane urządzenie. PD musi cały czas pobierać minimalny prąd obciążenia, inaczej PSE odłączy źródło napięcia 48 V i zacznie od nowa testować obecność rezystora 25 kV. Stosowanie przetwornicy DC/DC jest konieczne celem zapewnienia izolacji galwanicznej między PD a PSE.
Warstwy, protokoły i stosy
Zapewne każdy, kto miał kontakt z siecią Ethernet, zetknął się z pojęciem stosu TCP/IP bądź modelem OSI (rys. 3). Próbując zrozumieć te pojęcia, należy uzmysłowić sobie, co tak naprawdę dzieje się podczas wysyłania ramki od nadawcy do odbiorcy. Prawdę mówiąc, do prawidłowej komunikacji siecią Ethernet wcale nie są potrzebne żadne dodatkowe struktury bądź protokoły, poza oczywiście tą, która definiuje samą ramkę. Bez problemu można bowiem zrealizować połączenie punkt-punkt, korzystając wyłącznie z fizycznego adresu nadawcy i odbiorcy. W krańcowym przypad-
W rozległej sieci nie można jednak pozwolić sobie na taką swobodę. Każde urządzenie musi mieć przypisany unikalny w skali globalnej adres fizyczny, nazywany adresem MAC. Jest on przydzielany przez niezależną instytucję, która dba o jego właściwy rozdział i stosowanie. Rozmiar adresu MAC wynosi 6 bajtów, przy czym 3 pierwsze z nich są traktowane jako kod producenta, zaś pozostałe jako kolejne w zakresie jego wyrobów. Adres ten rzadko bywa zaszyty na stałe w kontrolerze sieciowym. Zwykle jest umieszczany w zewnętrznej pamięci EEPROM i ustawiany na właściwą wartość na etapie produkcji. Specyficznym adresem jest FF:FF:FF: FF:FF:FF. Jest on używany do rozsyłania informacji do wszystkich odbiorców (broadcast), przy czym zazwyczaj odpowiadają tylko te zainteresowane.
Model OSI
Komunikacja między urządzeniami podpiętymi do sieci opiera się na wymianie danych, przesyłanych w odpowiednim formacie. Do tego celu został skonstruowany i ogólnie przyjęty warstwowy model sieci OSI (Open System Interconnection), logicznie dzielący system sieciowy na warstwy (poziomy). W każdej z nich może być używany jeden lub więcej protokołów, formatujących dane do postaci zrozumiałej dla warstw sąsiadujących. W zależności od potrzeb liczba warstw może zostać zredukowana (np. TCP/IP do 5 – rys. 3), zaś ich rzeczywista implementacja może trafić nawet w całości do kontrolera sieci.
Rys. 3. Model OSI
11
Embedded Ethernet Tab. 1. Podstawowe parametry PoE Parametr
Min.
Typ.
Max.
Napięcie wyjściowe PSE [V]
44
48
57
Rezystancja doprowadzeń [V]
–
–
20
Moc pobierana z PSE [W]
–
–
15,4
Średni prąd obciążenia PD [A]
–
–
0,35
Z każdą warstwą powiązana jest właściwa nazwa strumienia danych, wymienianego pomiędzy węzłami sieci. Zazwyczaj wymianę informacji inicjuje warstwa aplikacji, która przekazuje swoje dane do warstwy niższej. Ta z kolei dodaje własne dane np. nagłówek (header) i przekazuje dalej. Ostatnim etapem jest wysłanie ciągu bitów po kablu UTP. Węzeł, który go odebrał, dokonuje odwrotnego procesu – usuwa zbędne nagłówki i przekazuje do warstwy wyższej. Implementacja modelu OSI (np. części odbiorczej) zdaje się być więc prosta – należy odczytać dane z ramki ethernetowej, a następnie sukcesywnie sprawdzać, jaki protokół się w nich znajduje. Do jednoznacznej identyfikacji jego typu jest wykorzystywany nagłówek, który zwykle niesie także szereg dodatkowych informacji (np. długość pola danych, sumę kontrolną itp.). Sprawa zaczyna się nieco komplikować, jeśli odebrane dane dla jakiejś warstwy (np. TCP) są powiązane z danymi poprzednio wysyłanymi lub odbieranymi. Jeśli liczbę takich stanów da się przedstawić w skończonym, opisywalnym grafie przejść, to możemy wówczas mówić o stosie.
Adres IP
Ważną rolę w procesie komunikacji odgrywają adresy logiczne IP. Nie są one na stałe powiązane z konkretnym kontrolerem sieci i mogą być dynamicznie zmieniane. Daje to ogromną zaletę podczas wymiany uszkodzonego węzła, gdyż wystarczy poznać jego nowy adres fizyczny MAC, a następnie przypisać mu poprzednią wartość adresu logicznego. Od tego momentu nowy węzeł będzie adresowany jak jego poprzednik. Adres IP bazuje na 4- lub 6-bajtowej liczbie (IPv4/v6), przy czym jej wartości są różnie rozpoznawane
12
przez urządzenia pracujące w sieci. Część adresów, np. z zakresu 192.168.0.0 do 192.168.255.255, służy do budowy lokalnych intranetów, zaś pakiety z takimi wartościami nie są dystrybuowane (routowane) na zewnątrz.
Co nieco o protokołach
Funkcjonalnie protokoły odpowiadają za prawidłowe przedstawienie i dostarczenie danych istniejących w danej warstwie. Nie wnikając zbytnio w szczegóły ich działania (do tego celu służą dyrektywy RFC), należy jednak krótko przedstawić kilka najważniejszych z nich.
ARP
Protokół ten umożliwia pobranie adresu fizycznego MAC od urządzenia, dla którego znany jest adres logiczny IP. W tym celu pytający wysyła ramkę z adresem fizycznym FF:FF:FF:FF:FF:FF oraz docelowym adresem IP. Posiadacz takiego adresu odpowiada własnym MAC, podając jako adres przeznaczenia adres nadawcy. Stworzona w ten sposób para MAC-IP umożliwia późniejsze fizyczne wysyłanie ramek z adresem logicznym.
IP
Jest to protokół bezpołączeniowy, co oznacza, że nie wymusza potwierdzania każdego wysłanego pakietu danych. Urządzenie odbierające taki pakiet może go przesłać dalej, obsłużyć lub też zignorować, jeśli wymaga tego warstwa wyższa, której dane są właśnie transportowane. Jeśli dane przesyłane tym protokołem nie zmieszczą się w jednym pakiecie, to mogą one zostać podzielone na szereg mniejszych datagramów i być wysłane oddzielnie. Nie świadczy to jednak o tym, że dotrą one do miejsca przeznaczenia we właściwej kolejności! Na szczęście nad prawidłowym scalaniem pakietów czuwa proces defragmentacji protokołu IP.
ICMP
Częściej kojarzony z komendą ping protokół ten ma szereg użytecznych funkcji. Pozwala przesyłać po sieci informacje o aktywnych lub nieosiągalnych hostach, testować ścieżkę przesyłu danych bądź też powiadamiać o zaniku datagramów (np. przekroczony czas życia pakietu).
UDP
Ten protokół jest także bezpołączeniowy – jak IP z tym, że umożliwia komunikację między różnymi odbiorcami w obrębie tego samego węzła. Do ich rozróżnienia używa 16-bitowej liczby – portu, traktowanej praktycznie jako rozszerzenie adresu IP. Niektóre z numerów portów są zarezerwowane (well-known-ports) i pozwalają na uzyskanie informacji np. o bieżącej dacie i godzinie. Główną cechą tego protokołu jest szybkość, zaś podstawową wadą brak potwierdzenia wysłanych danych. Ale niedobór ten można łatwo uzupełnić wyższą warstwą aplikacji. Tego protokołu używa między innymi TFTP, służący do transferu plików.
TCP
Protokół wykorzystuje mechanizm potwierdzania transmitowanych danych, przez co zapewnia istnienie połączenia logicznego między odległymi węzłami. Wbudowanie mechanizmu retransmisji segmentów zwalnia także wyższe warstwy aplikacji z troski o pewność dostarczenia danych. Daje to ogromne ułatwienie przy tworzeniu programów odpornych na błędy transmisji i pozwala skupić troskę programisty na warstwie aplikacyjnej. Algorytm funkcjonowania stosu TCP zakłada wzajemną symetryczność połączenia. Zarówno serwer, jak i klient muszą monitorować ciąg wymienianych danych tak, aby zapewnić ich prawidłowy przepływ. Do tego celu służą dwa wskaźniki – Seq oraz Ack. Pierwszy z nich niesie informację o względnym początku danych właśnie przesyłanych, zaś drugi oznacza liczbę danych ostatnio odebranych. Każda ze stron połączenia posiada własny zestaw Seq i Ack, przez co może wykrywać fakt zagubienia segmentu lub jego nadejścia w niewłaściwej kolejności. Do synchronizacji stanu połączenia używa się zestawu flag, które pozwalają zidentyfikować typ segmentu właśnie obsługiwanego. Flaga SYN umożliwia zainicjowanie połączenia, ACK potwierdza segment danych, zaś FIN żąda zakończenia sesji. Odebranie RST powoduje zerwanie połączenia. Stany, w jakich może się znajdować stos TCP, najlepiej jest przedstawić w postaci grafu możliwych
Elektronika Praktyczna 10/2004
Embedded Ethernet przejść. Zmiana aktualnego stanu odbywa się na skutek odebrania flagi lub też przeterminowania czasu połączenia. Nawiązanie połączenia klient-serwer odbywa się przez wysłanie segmentu z ustawioną flagą SYN. Aktywny serwer w trybie LISTEN nasłuchujący na aktywnym porcie potwierdza odebranie żądania i jednocześnie żąda połączenia z klientem. Ten z kolei potwierdzając go własnym ACK, ustanawia połączenie. W stanie ESTABLISHED obydwie strony mogą dowolnie wymieniać dane. Nie jest konieczne natychmiastowe potwierdzanie odebrania danych – można to zrobić później, pod warunkiem że łączna liczba danych nie przekroczy szerokości okna (window). Strona, która chce zakończyć połączenie, wysyła w segmencie aktywną flagę FIN. Odpowiadając z własnym FIN połączenie między węzłami (sockets) zostaje zakończone.
Podobnie jak w protokole UDP, tak i tutaj można nawiązać połączenie na wybranym porcie. Część z nich wzajemnie się pokrywa (np. echo, daytime), lecz generalnie przyjmują one różne, całkowicie niezależne wartości. Warstwy aplikacji wykorzystują predefiniowane porty do realizacji standardowych zadań, wymagających pełnej kompatybilności między różnymi systemami.
HTTP
Protokół warstwy aplikacji wykorzystujący port TCP o wartości 80 do dwustronnej wymiany danych w postaci tekstu, bitmap i innych predefiniowanych formatów. Łatwość implementacji tego protokołu bazuje na prostym przetwarzaniu komunikatów tekstowych, które po formatowaniu tworzą zawartość okna przeglądarki internetowej. Przykładowe przesłanie ciągu: HTTP/1.0 200 OK\r\nContent-type: text/html\n\n\n\n
To proste\n\n\n\n
spowoduje wyświetlenie pogrubionego komunikatu „To proste” w oknie IE. Przesyłanie danych binarnych np. plików .wav wymaga jedynie poprzedzenia bloku danych właściwym nagłówkiem. Inne z protokołów aplikacyjnych, np. Telnet, TFTP lub DHCP, umożliwiają realizację bardzo użytecznych programów, przy minimalnej wiedzy potrzebnej do ich implementacji. Bazując wyłącznie na specyfikacji RFC protokołu FTP, można z łatwością stworzyć interfejs między systemem plików Windows a mikrokontrolerem. Standardowe operacje typu drag and drop, wykonywane między oknami, mogą wówczas bez problemu przyjąć za cel pamięć wewnętrzną mikrokontrolera. O technicznych możliwościach stworzenia prostego systemu typu embedded ethernet dowiecie się w drugiej części naszego cyklu. Grzegorz Oleszek
[email protected]
Promocja prenumeraty szczegóły na str. 119
Elektronika Praktyczna 10/2004
13
P R O J E K T Y
Zdalnie sterowany potencjometr do aplikacji audio AVT-594
Elementem wykonawczym w prezentowanym układzie jest potencjometr sprzężony mechanicznie z miniaturowym silnikiem elektrycznym, umożliwiającym obracanie osi potencjometru. Urządzenie doskonale nadaje się do zamontowania do każdego wzmacniacza audio, wyposażonego w standardowy potencjometr obrotowy. Sterownik nie jest „związany” z żadnym konkretnym pilotem i może współpracować z dowolnym nadajnikiem kodu RC5. Rekomendacje: prezentowany w artykule sterownik – oprócz zastosowań audio – po wyposażeniu w silnik z odpowiednią przekładnią może pełnić również rolę sterownika żaluzji lub rolety okiennej.
Elektronika Praktyczna 10/2004
Opis działania układu
Schemat elektryczny układu przedstawiono na rys. 1. Sterownik zbudowano na 8-wyprowadzeniowym mikrokontrolerze AT90S2343, który jest wyposażony między innymi w nieulotną pamięć EEPROM, gdzie przechowywane są kody poszczególnych komend sterujących pracą układu. Elementy R2, C2 odpowiedzialne są za zerowanie procesora podczas włączania zasilania. Mikrokontroler nie wymaga zastosowania zewnętrznego rezonatora kwarcowego, gdyż ma wbudowany generator RC. Odbiornik podczerwieni TFMS5360 dołączono do wejścia PB4 procesora. Dioda świecąca D1 służy do sygnalizacji stanu przekaźnika PK1 sterowanego tranzystorem T7 z wyjścia PB2 procesora, pełni także użyteczną rolę podczas programowania kodów wysyłanych przez pilota. Układ powinien być zasilany napięciem stałym o wartości ok. 12 VDC. Część cyfrowa urządzenia zasilana
jest napięciem +5 VDC, dostarczanym przez scalony stabilizator napięcia US2. Każda odebrana komenda pochodząca z nadajnika kodu RC5 jest przez procesor analizowana. Jeżeli odebrana komenda odpowiada jednemu z zarejestrowanych wcześniej poleceń, to następuje wprowadzenie w ruch silnika na czas określony czasem transmisji i w zadanym kierunku. Każde odebranie komendy przypisanej przekaźnikowi PK1 powoduje zmianę jego stanu na przeciwny. Przekaźnik typu RM96 jest przeznaczony do przełączania prądów o wartości do 8 A, co w większości przypadków powinno w zupełności wystarczyć do załączania obwodów wzmacniacza. Dioda D2 zabezpiecza tranzystor T7 przed skutkami przepięć pojawiających się na cewce przekaźnika w chwili wyłączania. Cześć wykonawcza jest typowym dwukierunkowym sterownikiem silnika prądu stałego, którego
15
Zdalnie sterowany potencjometr do aplikacji audio List. 1. Główna pętla programu sterującego pracą mikrokontrolera w sterowniku Sub Main Set Portb.2: Set Portb.3 Readeeprom Com1 , 1 Readeeprom Com2 , 2 Readeeprom Com3 , 4 Do Getrc5(address , Command) Command = Command And &B10111111 If Command = Com3 And Portb.2 = 0 Then Set Portb.3: Set Portb.2 End If If Command = Com3 And Portb.2 = 1 Then Reset Portb.3: Reset Portb.2 End If If Command = Com1 Then Reset Portb.1: Set Portb.0 Do Getrc5(address , Command) Command = Command And &B10111111 If Command <> Com1 Then Exit Do Loop Reset Portb.0 End If
'ustalenie stanu wysokiego na wyjściach sterujących 'przekaźnikiem i diodą LED 'odczytaj z pamięci EEPROM wartość komendy 'nakazującej obracanie silnika 'odczytaj z pamięci EEPROM wartość komendy 'nakazującej obracanie silnika 'odczytaj z pamięci EEPROM wartość komendy sterującej 'przekaźnikiem 'próba odebrania kodu RC5 'jeżeli odebrana komenda odpowiada komendzie 'sterującej przekaźnikiem i przekaźnik nie jest 'załączony to: 'załącz przekaźnik i diodę LED 'jeżeli odebrana komenda odpowiada komendzie 'sterującej przekaźnikiem i przekaźnik jest załączony 'to: 'wyłącz przekaźnik i diodę LED 'jeżeli odebrana komenda odpowiada komendzie 'nakazującej obracanie silnika w jednym kierunku to: 'wysteruj jeden z tranzystorów
'jeżeli odebrana komenda jest inna niż komenda 'nakazująca obracanie silnika w jednym kierunku to 'wyjdź z pętli: 'zakończ obracanie silnikiem
If Command = Com2 Then
'jeżeli odebrana komenda odpowiada komendzie 'nakazującej obracanie silnika w drugim kierunku to:
Reset Portb.0: Set Portb.1
'wysteruj drugi z tranzystorów
Do Getrc5(address , Command) Command = Command And &B10111111 If Command <> Com2 Then Exit Do Loop Reset Portb.1 End If
'jeżeli odebrana komenda jest inna niż komenda 'nakazująca obracanie silnika w drugim kierunku to 'wyjdź z pętli: 'zakończ obracanie silnikiem
Loop End Sub
pracą sterują dwa sygnały cyfrowe. Silnik włączono w przekątną mostka utworzonego przez tranzystory mocy typu BD139 i BD140. Pojawienie się stanu wysokiego na wyjściu PB0 układu US1 spowoduje spolaryzowanie tranzystora T5, a także tranzystorów T4 i T1. Prąd elektryczny popłynie na drodze: +zasilania, tranzystor T1, uzwojenie silnika, tranzystor T4 i masa zasilania. Silnik podłączony do złącza CON1 zacznie
się obracać w jedną stronę. Analogiczna sytuacja wystąpi, jeżeli zostanie spolaryzowany tranzystor T6 z tym że silnik zacznie obracać się w przeciwną stronę.
Programowanie i obsługa
Aby w pamięci układu zapisać komendy sterujące, należy wyłączyć zasilanie układu i założyć zworkę na styki JP1. Po włączeniu zasilania procesor przejdzie w tryb programowania, sygnalizu-
WYKAZ ELEMENTÓW Rezystory R1: 100V R2: 10kV R3: 220V R4: 1kV R5, R6, R13: 2kV R7, R8, R9, R10, R11,R12: 300V Kondensatory C1, C3: 100mF/16V C2: 4,7mF /16V Półprzewodniki US1: 90S2343 zaprogramowany US2: 7805 US3: TFMS5360 lub podobny T1, T3: BD138 T2, T4: BD139 T5, T6, T7: BC547 D1: LED D2: 1N4148 Inne PK1: RM96P12 JP1: Jumper + goldpin 1x2 ARK2/500 ARK3/500 3,5mm Potencjometr obrotowy z silniczkiem nie wchodzi w skład zestawu i należy zamówić go oddzielnie.
jąc ten fakt krótkotrwałym obracaniem się potencjometru w jednym kierunku. Po zakończeniu ruchu silnika musimy usunąć zworkę JP1 oraz nacisnąć ten przycisk w pilocie, który będzie odpowiedzialny za ruch silnika w tymże kierunku. Odebranie poprawnej transmisji sygnalizowane jest krótkim błyskiem diody D1 oraz krótkotrwałym obrotem silnika w przeciwnym kierunku, co jest zachętą do podania kolejnej komendy
Rys. 1. Schemat elektryczny płytki sterownika
16
Elektronika Praktyczna 10/2004
Zdalnie sterowany potencjometr do aplikacji audio
Rys. 2. Schemat montażowy płytki drukowanej sterownika
z pilota. Jeżeli procesor odebrał poprawną komendę, błyśnie dioda D1, a układ przejdzie w tryb programowania przycisku sterującego przekaźnikiem, powodując równocześnie z diodą LED jego krótkotrwałe załączenie. Po odebraniu poprawnej komendy urządzenie jest gotowe do pracy. Po zarejestrowaniu komend program sterujący pracą procesora pozostaje w niekończącej się pętli, przedstawionej na list. 1 (program sterujący napisano w Bascomie).
Elektronika Praktyczna 10/2004
Rys. 3. Funkcje wyprowadzeń typowego potencjometru z silniczkiem RK16814MG firmy ALPS
Jeżeli po jakimś czasie chcielibyśmy zmienić komendy sterujące potencjometrem i przekaźnikiem, to ponowne wejście w tryb rejestracji komend jest możliwe po wyłączeniu zasilania, zwarciu jumpera JP1, ponownym włączeniu zasilania i usunięciu jumpera. Na rys. 2 przedstawiono rozmieszczenie elementów na płytce drukowanej wykonanej na laminacie dwustronnym z metalizacją. Montaż układu rozpoczynamy od wlutowania w płytkę rezystorów,
podstawki pod procesor, kondensatorów, a zakończymy, montując tranzystory, odbiornik podczerwieni oraz przekaźnik, o ile zdecydujemy się na jego użycie. Na rys. 3 pokazano funkcje wyprowadzeń potencjometru RK16814MG firmy ALPS. Sterownik zmontowany ze sprawdzonych elementów nie wymaga regulacji i po zarejestrowaniu poleceń wysyłanych przez pilota nadaje się od razu do eksploatacji. Proponowany układ, głównie dzięki zastosowaniu procesora, jest prosty w obsłudze i łatwy do wykonania nawet dla zupełnie początkującego elektronika. Jego praktyczne zalety zostały potwierdzone podczas długotrwałego używania sterownika do regulacji głośności wzmacniacza audio. Grzegorz Becker Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb.ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB.
17
P R O J E K T Y
Interfejs SPI do programatora PUNCH AVT-595
Prezentowana przystawka SPI dla programatora PUNCH, którego projekt przedstawiliśmy w EP12/2002 (AVT-5092), służy poszerzeniu możliwości tego narzędzia. Dzięki niej PUNCH jest w stanie programować zamontowane w układzie docelowym różnego typu mikrokontrolery wyposażone w pamięć typu Flash. Rekomendacje: polecamy obecnym i przyszłym użytkownikom programatora PUNCH, którego funkcjonalność zdecydowanie wzrośnie.
Elektronika Praktyczna 10/2004
Do tej pory mikrokontrolery z pamięcią Flash mogły być zapisywane i odczytywane wyłącznie w trybie równoległym. Przy takim sposobie programowania zarówno bajt danej, jak i adres określający, do której komórki pamięci Flash dana ma być zapisana, są podawane jednocześnie na odpowiednie porty mikrokontrolera. Wymaga to podłączenia co najmniej kilkunastu sygnałów do wyprowadzeń układu. Wiąże się to z koniecznością umieszczenia mikrokontrolera na czas programowania w odpowiedniej podstawce typu ZIF, a potem przeniesienia do podstawki w urządzeniu docelowym, w którym będzie pracował. Na etapie pisania i poprawiania oprogramowania może to oznaczać nawet kilkaset powtórzeń tych operacji! W dodatku, coraz częściej nowe układy pojawiają się w obudowach przystosowanych do montażu powierzchniowego, co powoduje dodatkowe kłopoty. Po pierwsze, podstawki do programowania elementów w obudowach typu TQFP są drogie. Po drugie, po wlutowaniu zaprogramowanego układu do płytki nie istnieje już praktycznie możliwość jego ponownego przeprogramowania w taki sposób. Z tego powodu producenci mikrokontrolerów wy-
posażają je w funkcję programowania bezpośrednio w układzie. w którym pracują. Programowanie odbywa się za pośrednictwem kilku wyodrębnionych wyprowadzeń mikrokontrolera, które służą do szeregowego przesyłania danych pomiędzy kostką a programatorem. W czasie programowania mikrokontroler pobiera zasilanie z układu, w którym jest zamontowany. Prezentowana przystawka pozwala programować wybrane mikrokontrolery w tym właśnie trybie. Na początek opracowano i przetestowano metody programowania kilku rodzajów mikrokontrolerów firmy Atmel, m.in.: AT90S2313, AT90S515, ATMEGA515, AT89S52, AT89S8252, chociaż nic nie stoi na przeszkodzie, by przystawka współpracowała także z innymi układami.
Interfejs SPI Atmela
Wybór mikrokontrolerów Atmela jako pierwszych układów, na których przystawka była testowana, wynika z dużego ich rozpowszechnienia na polskim rynku. Są one łatwo dostępne i stosunkowo tanie. Zanim przejdziemy do omawiania budowy samej przystawki, warto poznać chociaż ogólne zasady działania interfejsu SPI. Na
19
Interfejs SPI do programatora PUNCH
Rys. 1. Funkcje wyprowadzeń i sposób transmisji danych przez interfejs SPI
szczęście nie są one zbyt skomplikowane. Interfejs SPI, służący do programowania w układzie mikrokontrolerów Atmela, składa się z 4 linii sygnałowych. Do tego należy dodać wyprowadzenia masy i napięcia zasilania mikrokontrolera – będzie ono potrzebne w niektórych trybach pracy przystawki. Nazwy i opis funkcji poszczególnych wyprowadzeń przedstawiono poniżej (rys. 1): MOSI – wejście szeregowe danych, tą linią dane są zapisywane do programowanego układu, MISO – wyjście szeregowe danych, tą linią dane są odczytywane z programowanego układu, SCK – wejście sygnałów zegarowych, tą linią podawane są do programowanego układu sygnały zegarowe synchronizujące transmisję danych wejściowych i wyjściowych, RESET – wejście sygnału zerowania mikrokontrolera, podczas programowania układu sygnał ten jest cały czas aktywny.
gólnych układów można znaleźć w ich dokumentacji technicznej. Na rys. 1 pokazano przebiegi czasowe sygnałów interfejsu. Dane są przesyłane po liniach MOSI i MISO bajt za bajtem z najstarszym bitem jako pierwszym. Z rysunku wynika, że kolejne bity danych wejściowych na linii MOSI są synchronizowane zboczem narastającym zegara SCK i gdy ma on poziom wysoki, nie powinny się zmieniać. Z kolei dane wyjściowe z mikrokontrolera można odczytywać tuż przed zboczem opadającym zegara SCK. Informacje na liniach MOSI i MISO mogą ulegać zmianie, gdy impuls zegara SCK ma poziom niski. W czasie programowania napięcie zasilania Vcc powinno być stabilne, a jego wartość jest określona w dokumentacji technicznej dla każdego z typów mikrokontrolera. W przypadku niektórych z grupy AVR napięcie zasilania może się mieścić w przedziale 3...5,5 V, dla pozostałych wynosi zazwyczaj 4...5,5 V.
Jak to wcześniej napisano, podczas programowania mikrokontroler powinien być zasilany, powinien także pracować jego oscylator, co najczęściej oznacza dołączenie do wyprowadzeń XTAL zewnętrznego kwarcu. W czasie programowania układu za pomocą interfejsu SPI podstawowa konfiguracja mikrokontrolera zamontowanego w docelowym układzie powinna wyglądać tak jak na rys. 2. Jako przykład pokazano mikrokontroler AT89S52 z sygnałem zerowania aktywnym przy poziomie wysokim. Mikrokontrolery z grupy AVR są zerowane poziomem niskim. Przyporządkowanie linii interfejsu SPI do konkretnych wyprowadzeń poszcze-
Schemat elektryczny przystawki pokazano na rys. 3. Składa się ona z bramek z wyjściem trójstanowym i z klucza tranzystorowego. Zadaniem bramek jest dopasowanie poziomów sygnałów programatora do poziomów akceptowanych przez programowany mikrokontroler oraz odcięcie wszelkich napięć, gdy programowanie dobiegnie końca. Dopasowanie poziomów sygnałów jest istotne w sytuacji, gdy programowany mikrokontroler pracuje w układzie o zasilaniu mniejszym niż +5 V. Jeżeli do budowy przystawki zastosujemy bramki z serii AHC lub LVHC, to uzyskamy niezbędną konwersję poziomów. Bramki te mają bowiem miłą ce-
20
Budowa przystawki
chę – przy zasilaniu napięciem o wartości od +3 do +5 V tolerują sygnały wejściowe o poziomie przewyższającym poziom napięcia zasilania. Jeżeli dokładnie obejrzymy schemat, to okaże się, że bramki U2A-D zasilane są napięciem Vz pobieranym ze styku 2 złącza JP6. Zależnie od potrzeb napięcie to może być pobierane z programatora i mieć wartość +5 V lub z układu, w którym pracuje programowany mikrokontroler, czyli ze styku JP6-3 oznaczonego jako External Vz. O źródle zasilania decyduje zwarcie odpowiednich styków JP6. Jeżeli układ, w którym pracuje mikrokontroler, jest zasilany napięciem +3,3 V, to taką samą wartość będzie miało napięcie External Vz zasilające bramki U2A-D. Pomimo że sygnały z programatora doprowadzone do wejścia tych bramek mają poziom TTL, na ich wyjściach sygnały będą miały wartości 0/3,3 V, czyli w pełni akceptowaną przez programowany mikrokontroler. Jedynym wyjątkiem jest bramka U1A typu HCT – na stałe zasilana +5 V. Bramka ta pełni rolę konwertera poziomu sygnału odczytywanego z programowanego mikrokontrolera. Ponieważ bramki z rodziny HCT prawidłowo współpracują z sygnałami z przedziału 2...5 V, sprawdzą się także w roli pośrednika pomiędzy programatorem a mikrokontrolerem zasilanym w przykładowym układzie napięciem +3,3 V. Bramki sterowane są sygnałem ST, mającym podczas programowania poziom wysoki, który je otwiera. Po zakończeniu cyklu programowania sygnał ST będzie miał poziom niski, co na wyjściach
Rys. 2. Konfiguracja mikrokontrolera AT89Sxx podczas programowania ISP
Elektronika Praktyczna 10/2004
Interfejs SPI do programatora PUNCH
Rys. 3. Schemat elektryczny przystawki
bramek wymusi stan wysokiej impedancji. Dzięki temu wyeliminowane zostają stany nieustalone w czasie dołączania i odłączania programatora mogące grozić uszkodzeniem programowanego elementu. Klucz tranzystorowy Q1 i Q2 służy do polepszenia parametrów sygnału zerowania podawanego na wejście RESET mikrokontrolera. Zależnie od typu programowanego elementu tranzystory mogą wymuszać na wejściu RESET poziom wysoki lub niski. Po zakończeniu programowania, gdy bramki U2A i U2B są zamykane, oporniki tak polaryzują bazy tranzystorów, aby i one były odcięte i nie obciążały wyprowadzenia RESET.
Elektronika Praktyczna 10/2004
Rys. 4. Schemat montażowy płytki dolnej
Rys. 5. Schemat montażowy płytki górnej
21
Interfejs SPI do programatora PUNCH
Montaż
Przystawka składa się z dwóch jednostronnych płytek drukowanych (schematy montażowe pokazano na rys. 4 i 5) skręconych ze sobą w postać „kanapki” za pomocą kołków dystansowych. Do dolnej płytki są wlutowane dwa jednorzędowe grzebienie po 20 styków każdy, przeznaczone do mocowania przystawki w gnieździe programatora PUNCH. Na górnej płytce znajduje się właściwy układ przystawki. Ponieważ do budowy zostały użyte elementy SMD, należy je przylutować do płytki od strony druku. Jeżeli przystawka będzie wyłącznie służyć do programowania mikrokontrolerów zasilanych napięciem +5 V, można w miejsce układu U2 wlutować jego łatwiej dostępną wersję 74HCT126. Zdziwionych obecnością na schemacie i płytce elementów oznaczonych jako oporniki o wartości 0V chciałbym uspokoić – to nie pomyłka. Ponieważ ze względów ekonomicznych została użyta płytka jednostronna, elementy te pełnią po prostu rolę zworek umożliwiających właściwe poprowadzenie wszystkich ścieżek. Na górnej części tej płytki znajdują się gniazda JP3, 4 i 5 dla przewodów łączących programator z programowanym mikrokontrolerem oraz styki JP6 pola wyboru napięcia zasilania układu. Dolną i górną płytkę przystawki należy połączyć przewodami w ten sposób, aby styki złącza JP1 oznaczone na schemacie symbolami MISO, MOSI, SCK, RESET i ST łączyły się z sygnałami w gnieździe programatora oznaczonymi jako F1...F5. Rozkład wyprowadzeń F1... F5 w gnieździe programatora można znaleźć, uruchamiając program sterujący PUNCH-a i przechodząc do pulpitu serwisowego. Oprócz tego trzeba pamiętać o połączeniu ze sobą styków JP1-1 i JP2-20 dolnej i górnej płytki. Jako połączenie pomiędzy programatorem a programowanym mikrokontrolerem może służyć 6-przewodowa taśma o długości do 40 cm. Przewody z jednej strony trzeba zamocować w gniazdach JP3-5 np. zaciskowych typu ARK, z drugiej taśma powinna być zakończona wtykiem dla złącza w układzie, w którym znajduje się programowany mikrokontroler.
22
Projektowanie urządzeń przystosowanych do programowania w systemie
Aby mikrokontroler mógł być zaprogramowany w układzie, urządzenie, w którym pracuje, musi być odpowiednio zaprojektowane. Najwygodniej jest, gdy wyprowadzenia MISO, MOSI i SCK programowanego mikrokontrolera nie są połączone z innymi elementami układu lub gdy takie połączenie na czas programowania można przerwać. Jeżeli nie jest to możliwe, należy przynajmniej zadbać, aby wyprowadzenia nie były specjalnie obciążane dołączonymi elementami. Najlepiej jeśli wyprowadzenia pełnią funkcję wyjść połączonych z wejściami np. innych bramek. Jeśli w czasie programowania na wyprowadzeniach portu SPI zaczną pojawiać się sygnały z układu, w którym pracuje mikrokontroler, to programowanie zostanie zakłócone i ulegnie przerwaniu. Należy o tym pamiętać, gdyż mikrokontroler programowany jest we włączonym urządzeniu, z którego przecież pobiera energię. Kolejnym problemem jest wejście RESET, a właściwie dołączone do tego wejścia układy zerujące mikrokontroler. Na czas programowania powinny zostać odcięte. Wyjątkiem są niewielkie kondensatory, które często bywają wykorzystywane do wytwarzania impulsu zerującego po włączeniu zasilania. Mają one na tyle małą pojemność, że układ klucza przystawki powinien sobie z nimi poradzić. Bardzo wygodne jest umieszczenie na płytce drukowanej urządzenia, w którym pracuje programowany mikrokontroler, grzebienia z wyprowadzonymi liniami portu SPI. Ułatwi to dołączanie programatora i jest lepszym rozwiązaniem niż każdorazowe lutowanie przewodów do odpowiednich wyprowadzeń mikrokontrolera.
Korzystanie z przystawki
Po zmontowaniu przystawka od razu nadaje się do pracy, należy włożyć ją do gniazda programatora i połączyć jej wyjścia z odpowiednimi wyprowadzeniami mikrokontrolera. Przystawka jest przystosowana do pracy z mikrokontrolerami pobierającymi zasilanie z układu, w którym pracują.
Przed rozpoczęciem programowania należy doprowadzić napięcie zasilania procesora do styku złącza JP5 oznaczonego jako Vz EXTERNAL. Następnie należy zewrzeć ze sobą wyprowadzenia 2 i 3 złącza JP6 opisane jako VZ i EXT. Po włączeniu zasilania w urządzeniu, w którym znajduje się programowany mikrokontroler i wybraniu odpowiedniego skryptu, można przystąpić do programowania. Jeżeli układ, w którym pracuje mikrokontroler, potrzebuje do zasilania niewielkiego prądu rzędu 80...100 mA, to napięcie do zasilania procesora o wartości +5 V może być doprowadzone bezpośrednio z programatora. W takim przypadku w czasie programowania urządzenie, w którym znajduje się mikrokontroler, nie musi być włączone. Tak jak poprzednio należy połączyć wyprowadzenie końcówki Vcc programowanego elementu ze złączem JP5 oznaczonym jako Vz EXTERNAL. Następnie należy połączyć zworą wszystkie trzy wyprowadzenia złącza JP6, co po rozpoczęciu programowania umożliwi podanie na mikrokontroler napięcia +5 V. Skrypty napisano w taki sposób, aby po podaniu przez programator zasilania wystąpiła pauza ok. 1 s, co zazwyczaj wystarcza do przeładowania pojemności filtrujących w urządzeniu z mikrokontrolerem i do ustabilizowania się zasilania. Nigdy nie należy jednocześnie doprowadzać zasilania z programatora i włączać własnego zasilacza urządzenia!
Skrypty
U ż y t ko w n i c y p r o g r a m a t o r a PUNCH doskonale wiedzą, że do zaprogramowania elementu potrzebny jest skrypt będący rodzajem instrukcji dla programatora. Do projektu przystawki dołączono kilka skryptów pozwalających programować różne wymienione wcześniej mikrokontrolery. Skrypt jest plikiem tekstowym i każdy zainteresowany może podejrzeć jego strukturę, korzystając ze zwykłego edytora tekstu. Pisanie skryptu dla nowego elementu bywa zadaniem uciążliwym, ale można sobie ułatwić życie, korzystając z już napisanych skryptów. Zainteresowanych zapraszam na swoją stronę www. aries-rs.com.pl\femto, gdzie można znaleźć bezpłatne skrypty do pro-
Elektronika Praktyczna 10/2004
Interfejs SPI do programatora PUNCH WYKAZ ELEMENTÓW Rezystory i kondensatory w obudowach typu 1206 Rezystory R1 R2: 4,7kV R3, R4: 22kV R5, R11: 100V R6: 10kV R7, R8, R9, R10: zworki U2: 74AHC126 U1: 74HCT126 Kondensatory C1, C2: 100nF Półprzewodniki Q1: BC547 lub dowolny tranzystor typu NPN w obudowie do montażu powierzchniowego Q2: BC557 lub dowolny tranzystor typu PNP w obudowie do montażu powierzchniowego
gramowania różnych elementów, opis języka skryptów FEMTO oraz narzędzia do pisania skryptów, czyli edytor Skryptorium (wszystkie te materiały publikujemy także na CD-EP10/2004B). W niektórych przypadkach potrzeba bardzo niewiele czasu, aby
Elektronika Praktyczna 10/2004
przystosować już istniejący skrypt do nowego elementu. Jako pierwszy „z brzegu” przykład niech posłużą mikrokontrolery AT90S2313 i AT90S8515. Wystarczy ze strony producenta firmy ATMEL ściągnąć dokumentację techniczną obydwu mikrokontrolerów i porównać te fragmenty, które dotyczą sposobu programowania – są identyczne. Jedyna różnica polega na rozmiarze dostępnej pamięci programu i pamięci EEPROM. Po małej modyfikacji ten sam skrypt służy do programowania obydwu elementów. Co bardziej dociekliwi Czytelnicy łatwo mogą go odszukać na stronie, a potem przeanalizować strukturę. W podobny sposób można rozbudować o nowe elementy skrypty napisane dla elementów programowanych za pomocą przystawki SPI.
Niezbędna nowa wersja oprogramowania PUNCH-a
Na koniec istotna uwaga: do prawidłowego działania przystawki, a zwłaszcza skryptów sterujących programowaniem, niezbędne jest,
aby program procesora PUNCH miał numer 2.1 lub 3.1. Numer wersji oprogramowania wyświetla się w okienku oznaczonym jako „wersja czytnika” znajdującym się na pulpicie serwisowym. W trybie serwisowym wystarczy jedna transmisja, żeby w okienkach informacyjnych pojawił się numer programatora i wersja jego oprogramowania. Pojawienie się numeru niższego niż 2.1 oznacza konieczność unowocześnienia oprogramowania (nową wersję programu sterującego publikujemy na CD-EP10/2004B). Na wszelki wypadek proponuję zachować mikrokontroler ze starą wersją programu, a nową wersję oprogramowania wgrać do pamięci innego mikrokontrolera AT89C52 lub AT89S52. W razie problemów proszę o kontakt na adres poczty elektronicznej. Ryszard Szymaniak, EP
[email protected] Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb.ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB.
23
P R O J E K T Y
Regulowany zasilacz wysokiego napięcia zmiennego
Opisy konstrukcji zasilaczy warsztatowych, różnego typu i przeznaczenia, są stałym tematem w literaturze dla elektroników. Niestety publikacji zawierających opisy zasilaczy napięcia przemiennego o częstotliwości elektroenergetycznej sieci zasilającej nie ma zbyt dużo. Rekomendacje: opisany zasilacz zainteresuje z pewnością dotychczasowych użytkowników autotransformatorów. Oferuje łatwość nastawiania napięcia i jednocześnie izolację galwaniczną od sieci elektrycznej. Może być stosowany do prac związanych z naprawami, uruchamianiem lub testowaniem rozmaitych urządzeń, a także przyda się do zasilania silników elektrycznych lub regulacji oświetlenia. Elektronika Praktyczna 10/2004
W artykule autor proponuje budowę właśnie takiego zasilacza. Jego zasadniczym elementem jest odpowiedniej konstrukcji transformator sieciowy z przekaźnikowym układem przełączającym. Zasilacz jest źródłem napięcia przemiennego, regulowanego w zakresie 0...255 V z rozdzielczością 1 V i obciążalności zróżnicowanej w zależności od nastawionego napięcia wyjściowego. Proponowane rozwiązanie, przy założonym zakresie i założonej rozdzielczości regulacji napięcia, zdecydowanie upraszcza sposób regulacji oraz do minimum redukuje liczbę uzwojeń lub odczepów transformatora sieciowego i połączeń wewnętrznych zasilacza. Zastosowanie mikrokontrolera do sterowania tym urządzeniem wydatnie podnosi jego walory użytkowe. Nie znam odpowiedzi na pytanie, dlaczego podjęty temat nie cieszy się większą popularnością.
Przecież zasilacz potrafiący dostarczyć regulowanego w szerokich granicach napięcia przemiennego jest urządzeniem bardzo przydatnym w warsztacie elektronika amatora (i nie tylko), a obszar jego zastosowań jest bardzo szeroki. Ponadto może być on wygodnym i tanim źródłem zasilania posiadanych elektronarzędzi, takich jak: miniwiertarka, lutownica, dodatkowe oświetlenie itp. W swej praktyce konstruktorskiej niejednokrotnie spotkałem się z potrzebą dysponowania źródłem zasilania napięcia przemiennego o wyraźnie określonym lub regulowanym napięciu wyjściowym. Korzystałem wtedy z ciężkiego i nieporęcznego autotransformatora regulacyjnego lub w „lżejszych” przypadkach z różnych posiadanych w swoich „zapasach” transformatorów sieciowych. Konfigurując na różne sposoby układ połączeń ich uzwojeń wtórnych otrzymywałem pożądane
25
Regulowany zasilacz wysokiego napięcia zmiennego
Rys. 1. Sposób regulacji napięcia wyjściowego
napięcie zasilające. Jak dalece prymitywny i niewygodny był to sposób nie muszę przekonywać nikogo, kto trzymał lutownicę w ręku. Opracowałem wtedy i wykonałem prezentowane w niniejszym artykule urządzenie. W przyjętych założeniach zasilacz powinien dostarczać napięcia przemiennego, ustawianego z rozdzielczością 1 V w zakresie od 0 do 250 V i mocy 100...150 W. Ponadto, co jest sprawą bardzo istotną z punktu widzenia bezpieczeństwa pracy, powinien zapewniać galwaniczną separację od elektroenergetycznej sieci zasilającej. Założenia te jednoznacznie wskazywały, że sercem tej konstrukcji powinien być transformator sieciowy. Pozostał do rozwiązania sposób regulacji napięcia wyjściowego. Na samym wstępie odrzuciłem w miarę proste i powszechnie stosowane regulatory oparte na technice tyrystorowej. Oczywistym powodem były zniekształcenia kształtu sinusoidy napięcia wyjściowego oraz zakłócenia radioelektryczne, jakie te układy generują. Tradycyjny sposób, wykorzystujący odczepy wykonane na uzwojeniu wtórnym transformatora oraz wielopozycyjny przełącznik był również nie do przyjęcia z uwagi na znaczną (aż 250) liczbę potrzebnych odczepów. Zastosowałem zatem niekonwencjonalny sposób regulacji eliminujący opisane powyżej niedogodności. Prezentowany zasilacz jest konstrukcją stosunkowo prostą, ma jednak, moim zdaniem, jedną kapitalną zaletę. Zastosowane rozwiązanie układu regulacji napięcia, przy założonym zakresie i rozdzielczości regulacji, do minimum redukuje liczbę uzwojeń i odczepów transformatora sieciowego, jak również znakomicie upraszcza metodę regulacji.
Metoda regulacji napięcia wyjściowego
Przystępując do projektowania zasilacza, zadałem sobie zasadnicze pytanie: w jaki sposób wyeliminować olbrzymią liczbę od-
26
czepów na uzwojeniu wtórnym transformatora oraz jak uprościć jego układ połączeń wewnętrznych i montaż? Z pomocą przyszła technika cyfrowa. Dla potrzeb projektowanego urządzenia zaadaptowałem rozwiązania stosowane w niektórych typach kompensacyjnych przetworników analogowo-cyfrowych. Ideę tego rozwiązania przedstawiono na rys. 1. Jest to układ czterech źródeł napięcia oznaczonych symbolami U0 do U3. Wartości napięć poszczególnych źródeł są kolejnymi wyrazami ciągu 2 n i wynoszą 1 V, 2 V, 4 V i 8 V. Każde z tych źródeł posiada przynależny mu przełącznik (klucz), oznaczony S0 do S3. Analizując działanie układu, nietrudno spostrzec, że napięcie na zaciskach wyjściowych tego układu zależne będzie od położenia poszczególnych kluczy. W przypadku gdy wszystkie ustawione będą w pozycji „0”, napięcie wyjściowe równe będzie 0 V. Przestawienie do pozycji „1”, np. przełącznika oznaczonego S 3 , spowoduje pojawienie się na wyjściu napięcia 8 V, natomiast przełącznika oznaczonego S1, napięcia 2 V. W sytuacji przedstawionej na rysunku, gdy w pozycji „1” znajdują się przełączniki S0 i S3, a przełączniki S 1 i S 2 pozostają w pozycji „0”, napięcie wyjściowe będzie sumą napięć źródeł U 0 oraz U 3 i będzie miało wartość 1 V + 8 V = 9 V. Dozwolona jest każda kombinacja położenia kluczy, zatem w drugim krańcowym przypadku, gdy wszystkie klucze znajdą się w pozycji „1”, napięcie wyjściowe przyjmie wartość 1 V + 2 V + 4 V + 8 V = 15 V. Zakładamy naturalnie, że wszystkie napięcia źródłowe mają tę samą fazę. W dolnej części rysunku przedstawiony jest binarny zapis położenia poszczególnych przełączników reprezentowany liczbą 1001. Należy zwrócić uwagę na fakt, że liczba 1001 w zapisie binarnym to liczba 9 w zapisie dziesiętnym, a to oznacza, że przedstawiony układ
niejako bezpośrednio konwertuje binarny zapis położenia poszczególnych kluczy na wartość napięcia wyjściowego. Ten fakt miał zasadnicze znaczenie przy realizacji układu odpowiedzialnego za sterowanie kluczy przełączających oraz wizualną prezentację wartości zaprogramowanego napięcia wyjściowego. Omawiany układ może zatem realizować funkcję przełącznika wartości napięcia na jego zaciskach wyjściowych, a napięcie to zależne jest od położenia poszczególnych kluczy i może przyjmować wartości z przedziału od 0 V do 15 V z rozdzielczością 1 V. Ponadto wartość napięcia wyjściowego wyrażona jest liczbą binarną, która odzwierciedla położenie poszczególnych kluczy. W praktycznym zastosowaniu wyżej omówionego układu, źródła napięcia zastąpiłem uzwojeniami wtórnymi transformatora sieciowego, zwiększyłem ich liczbę do 8, a rolę kluczy powierzyłem przekaźnikom o stosownej wytrzymałości prądowej. Uzwojenia wtórne transformatora wykonałem tak, aby dostosować się do zasad omówionych powyżej, tzn. napięcia znamionowe uzwojeń tworzą ciąg: 1 V, 2 V, 4 V, 8 V, 16 V, 32 V, 64 V, 128 V. Tak rozbudowany układ realizuje funkcję regulacji napięcia wyjściowego zasilacza w granicach od 0 V do 255 V z założoną rozdzielczością 1 V.
Opis konstrukcji zasilacza
Schemat elektryczny zasilacza pokazano na rys. 2 (sekcja przełączników) i rys. 3 (sekcja sterownika). Zasadniczym elementem zasilacza jest transformator sieciowy i od jego wykonania rozpoczynamy budowę urządzenia. Gruntowna znajomość transformatorów jest stosunkowo rzadkim zjawiskiem, nawet wśród doświadczonych konstruktorów. Jest nieomal regułą, że zarówno początkujący hobbysta, jak i wieloletni praktyk posługują się uproszczonymi wzorami matematycznymi pozwalającymi dobrać przekrój rdzenia oraz wyznaczyć dane nawojowe potrzebnego transformatora. Przytoczę zatem te wzory dla mniej doświadczonych Czytelników. Transformator Tr naszego zasilacza powinien posiadać uzwojenie sieciowe, inaczej zwane pierwotnym, które dostosowane jest do napięcia elektroenergetycz-
Elektronika Praktyczna 10/2004
Regulowany zasilacz wysokiego napięcia zmiennego kiej obciążalności prądowej przeznaczone do zasilania obwodów pomocniczych. Gotowego transformatora, spełniającego powyższe wymagania, z całą pewnością nie kupimy. Pozostaje zatem wykonanie go samodzielnie. Może się zdarzyć, a tak było w moim przypadku, że w swych zapasach będziemy mieli transformator z rdzeniem o odpowiednim przekroju i nawiniętymi już uzwojeniami. Wprawdzie istniejące uzwojenia wtórne będą dla nas bezużyteczne, ale możemy przecież wykorzystać gotowe i na pewno dobrze nawinięte uzwojenie sieciowe przystosowane do napięcia 230 V. Należy podkreślić, że przezwojenie transformatora jest łatwiejsze oraz mniej pracochłonne od wykonania go niejako od nowa. Co należy zrobić w takiej sytuacji? W pierwszej kolejności, dla posiadanego transformatora, należy wyznaczyć parametr, który określa liczbę zwojów przypadających na 1 V napięcia (w skrócie lz/1V). Wykorzystamy go w obliczeniach dla nowych uzwojeń. Możemy to zrobić na dwa sposoby. Metoda pierwsza to prowizoryczne nawinięcie, na nierozebranym jeszcze transformatorze, uzwojenia kontrolnego, np. 10 zwojów. Następnie do uzwojenia sieciowego podłączamy napięcie 230 V i wykonujemy dokładny pomiar napięcia zaindukowanego na uzwojeniu kontrolnym. Z poniższej zależności obliczymy wartość interesującego nas parametru: [1.1]
Rys. 2. Schemat elektryczny zasilacza (sekcja przełączników)
nej sieci zasilającej, standardowo 230V/50Hz. Ponadto powinien posiadać 8 odrębnych, izolowanych od siebie uzwojeń wtórnych o napięciach znamionowych 1 V, 2 V, 4 V, 8 V, 16 V, 32 V, 64 V, 128 V. Obciążalność prądowa poszczególnych uzwojeń wtórnych może być
Elektronika Praktyczna 10/2004
różna, trzeba jednak pamiętać, aby iloczyn napięcia i prądu obciążenia tych uzwojeń nie przekroczył mocy znamionowej transformatora. Dodatkowo transformator powinien posiadać dwa pomocnicze uzwojenia wtórne, o napięciach: 10 V oraz 18 V o stosunkowo niewiel-
Ale tu uwaga! W czasie wykonywania tych czynności zachowajmy szczególną ostrożność. Trzeba zawsze pamiętać, że praca w pobliżu napięcia sieci elektroenergetycznej 230 V jest niebezpieczna dla zdrowia i życia człowieka. Drugim sposobem liczbę zwojów przypadających na 1V możemy określić w trakcie usuwania zbędnych uzwojeń. Odwijając jedno z nich, najlepiej o małej liczbie zwojów, trzeba dokładnie policzyć ich liczbę. Następnie, wiedząc na jakie napięcie to uzwojenie było wykonane, należy obliczyć interesujący nas parametr ze wzoru:
27
Regulowany zasilacz wysokiego napięcia zmiennego
Rys. 2. Schemat elektryczny zasilacza (sekcja sterownika)
28
Elektronika Praktyczna 10/2004
Regulowany zasilacz wysokiego napięcia zmiennego [1.2]
Po ustaleniu parametru lz/1V, należy odwinąć wszystkie niepotrzebne uzwojenia, pozostawiając tylko sieciowe. Czynność tę należy wykonać bardzo staranie, aby nie uszkodzić izolacji pokrywającej to uzwojenie. Jak wspomniałem, w mojej konstrukcji wykorzystałem posiadany transformator typu TS180/5 o mocy 180 VA. Celowo wybrałem rdzeń o większej mocy, aby tą drogą zyskać więcej przestrzeni na pomieszczenie w karkasie dosyć dużej liczby uzwojeń wtórnych. Liczbę zwojów przypadających na 1 V napięcia wyznaczyłem metodą uzwojenia kontrolnego i dla tego typu transformatora wynosi ona 3,44 zw/1 V. Dopuszczalną obciążalność prądową zasilacza, z uwagi na moc zastosowanego transformatora, zróżnicowałem w zależności od napięcia wyjściowego: – W zakresie napięć od 1 V do 63 V przyjąłem obciążenie prądem do 2 A. Wartość maksymalnej pobieranej mocy (dla maksymalnego napięcia wyjściowego i maksymalnego prądu) sprawdzamy według zależności przedstawionej poniżej. W tym przedziale napięć wyjściowych zasilacz wykorzystuje uzwojenia o napięciu 1 V, 2 V, 4 V, 8 V, 16 V oraz 32 V, zatem średnicę drutu nawojowego tych uzwojeń dobrałem do założonego obciążenia prądem 2 A. [1.3] 2 A · 63 V = 126 VA < 180 VA – W przedziale napięć wyjściowych od 64 V do 127 V obciążalność jest mniejsza i wynosi 1 A. Maksymalny pobór mocy wyznaczamy z poniższego wzoru. Tutaj zasilacz wykorzystuje uzwojenia sprawdzone powyżej oraz uzwojenie o napięciu znamionowym 64 V, tak więc średnicę drutu nawojowego dla tego uzwojenia dostosowałem do prądu 1 A. [1.4] 1 A· 127 V = 127 VA < 180 VA – Dla napięć wyjściowych od 128 V do 255 V przyjęta obciążalność prądowa wynosi 0,5 A, a maksymalna pobiera-
Elektronika Praktyczna 10/2004
na moc wynika z zależności przedstawionej poniżej. Podobnie jak poprzednio i tutaj zasilacz wykorzystuje uzwojenia obliczone powyżej oraz uzwojenie o napięciu znamionowym 128 V, zatem średnicę drutu nawojowego tego uzwojenia dostosowałem do prądu 0,5 A. [1.5] 0,5 A · 255 V = 127,5 VA < 180 VA Liczbę zwojów poszczególnych uzwojeń wtórnych wyznaczyłem, korzystając ze wzoru: [1.6] Z w = U zn · liczba zwojów/1V natomiast średnicę drutu nawojowego opisuje zależność: [1.7] d [mm]= 0,7 · √I[A] W tab. 1 zebrano wszystkie wyniki dokonanych obliczeń. Zastosowany w moim zasilaczu transformator posiada rdzeń zestawiony z blach w kształcie litery L. Cechą charakterystyczną rdzenia tego typu jest to, że posiada dwa karkasy, na których nawinięte są jego uzwojenia. Teoria mówi, że każde uzwojenie takiego transformatora powinno być symetrycznie rozdzielone na oba karkasy (po połowie na każdy z nich). Dla nowych uzwojeń wtórnych odstąpiłem od tej zasady i rozmieściłem uzwojenia tak, aby wypełnić równomiernie dostępną przestrzeń w karkasie. Podczas nawijania nowych uzwojeń nie można dopuścić do uszkodzenia izolacji drutu. Zwoje powinny być ułożone równo obok siebie, nie mogą pozostać luźne. Gorąco polecam oznaczenie końcówek wykonywanych uzwojeń. Założone kolorowe koszulki izolacyjne z pewnością ułatwią ich późniejsze rozpoznanie. Po nawinięciu nowych uzwojeń, a przed nałożeniem ich na rdzeń, należy koniecznie sprawdzić izolację pomiędzy poszczególnymi uzwojeniami. Zakończeniem tego etapu powinno być staranne złożenie rdzenia i sprawdzenie wyników dokonanego przezwojenia transformatora. Jako przełączniki (klucze) przełączające poszczególne uzwojenia transformatora Tr zastosowałem popularne, ogólnie dostępne i sprawdzone w praktyce przekaźniki typu R15. Wybrałem typ w wykonaniu bez obudowy z potrójnym układem styków przełączających i cewkami
sterującymi przystosowanymi do napięcia 24 VDC. Gorąco go polecam z uwagi na szereg zalet, jakimi się charakteryzuje. Ma prostą konstrukcję, odpowiednią dla naszych celów obciążalność prądową zestyków i stosunkowo duże przerwy izolacyjne pomiędzy nimi. Ta ostatnia cecha ma duże znaczenie, gdyż w ekstremalnych przypadkach napięcie pomiędzy zestykami może osiągać wartość 255 VAC. Uważnego Czytelnika może zastanowić pokazana na rys. 2 konfiguracja połączeń uzwojeń transformatora Tr z przekaźnikami przełączającymi Pk0...Pk7, w której wykorzystane są dwa zespoły zestyków każdego z nich. Wybrałem ten układ nieprzypadkowo. W chwili zmiany położenia styków przekaźnika generuje on dwie przerwy izolacyjne pomiędzy stykami, a to wydatnie poprawia warunki gaszenia łuku elektrycznego, który pojawia się w tym momencie. Dodatkowo eliminuje konieczność stosowania elastycznych połączeń dla styków ruchomych przekaźnika. Wystarczy „na sztywno” połączyć dwa sąsiadujące ze sobą wyprowadzenia styków ruchomych, a pozostałe przewody będą wymagały podłączenia wyłącznie do jego styków stałych. Znacząco upraszcza to montaż urządzenia. W trakcie prac nad tą częścią zasilacza należy zwrócić uwagę na sposób podłączenia każdego z uzwojeń wtórnych transformatora Tr z przynależnym przekaźnikiem. Istotny jest kierunek nawinięcia uzwojenia, a zatem jego połączenie z przekaźnikiem nie może być przypadkowe. Generalną wskazówką jest informacja, że w trakcie załączania kolejnych przekaźników Pk0...Pk7 napięcia z tych uzwojeń powinny się sumować. Z całą pewnością pomocne będą tu oznaczenia ich początku i końca, o których wspominałem wcześniej. Pozostała aparatura tej części naszego zasilacza nie wymaga komentarza. Centralnym elementem sterownika zasilacza jest zaprogramowany mikrokontroler US1 typu AT89C2051. Zastosowanie mikrokontrolera wynika ze złożonych funkcji, jakie pełni sterownik. Na bieżąco odczytuje on i przetwarza parametry nastaw zasilacza wprowadzane przez użytkownika z klawiatury, zajmuje się obsługą 3-dekadowego, 7-segmentowego
29
Regulowany zasilacz wysokiego napięcia zmiennego Tab. 1. Zestawienie wyników wykonanych obliczeń Oznaczenie uzwojenia
Napięcie znamionowe
Prąd znamionowy
Liczba zwojów
Średnica drutu
U w1
1 V
2 A
4
1,00 mm
U w2
2 V
2 A
7
1,00 mm
U w3
4 V
2 A
14
1,00 mm
U w4
8 V
2 A
27
1,00 mm
U w5
16 V
2 A
55
1,00 mm
U w6
32 V
2 A
110
1,00 mm
U w7
64 V
1 A
220
0,75 mm
U w8
128 V
0,5 A
440
0,50 mm
U p1
10 V
0,2 A
34
0,30 mm
U p2
18 V
0,5 A
62
0,50 mm
Us
230 V
wyświetlacza LED, na którym eksponuje aktualne położenie przełącznika oraz steruje jego przekaźnikami wykonawczymi. Za zerowanie procesora w chwili włączenia zasilania układu odpowiadają elementy C1 i R1. Sygnał zegarowy potrzebny do jego pracy generuje wewnętrzny oscylator mikrokontrolera, a jego częstotliwość 12,000 MHz ustalają elementy Q, C2, C3. Linie portu P3 przeznaczone są do czytania stanu przycisków matrycowej klawiatury sterującej i aktywowania anod wskaźników LED podczas ich sekwencyjnego wyświetlania. Trzy młodsze bity tego portu pracują jako wyjścia, a pozostałe jako wejścia. Port P1 jest wyjściem danych dla dekodera BCD/7segm (US2), który steruje wskaźnikiem LED oraz dla rejestrów US3 i US4. Rejestry te pełnią rolę bufora, w którym procesor zapisuje 4 młodsze i 4 starsze bity 1-bajtowej liczby określającej aktualne położenie „przełącznika zaczepów”. Odpowiednie dane procesor wystawia na cztery młodsze bity portu P1, a następnie generuje sygnał zapisu tych danych; na linii P1.4 dla rejestru US3, na linii P1.5 dla rejestru US4 oraz na linii P1.7 dla dekodera US2. Linia P1.6 wykorzystywana jest do zerowania rejestrów US3 i US4 podczas startu układu, do zerowania tych rejestrów w procesie załączenia lub wyłączania napięcia z zacisków wyjściowych zasilacza, jak również uruchamia „buzzer” informujący użytkownika o pewnych stanach zasilacza. Zastosowanie takiego rozwiązania podyktowane zostało
30
Uzwojenie fabryczne
ograniczoną liczbą portów „małego” procesora. Za wyjątkiem linii P1.7 portu P1, wszystkie pozostałe linie są podciągnięte do plusa zasilania za pomocą rezystorów Rp1 i Rp2. Układ scalony US5 jest wzmacniaczem prądowym, umożliwiającym bezpośrednie sterowanie cewkami przekaźników „przełącznika zaczepów” ustalającego napięcie wyjściowe zasilacza. Zawiera on w swej strukturze osiem wzmacniaczy o maksymalnym prądzie wyjściowym 500 mA. Struktura zawiera również diody zabezpieczające wyjścia wzmacniaczy przed przepięciami, co umożliwia bezpośrednie sterowanie elementów indukcyjnych, w tym przypadku cewkami przekaźników. Elementy C4, C5, C6, C7, C8, C9 zapewniają blokowanie ścieżek zasilania systemu, a tranzystor T1 z potencjometrem montażowym R5 pozwala na dostosowanie intensywności świecenia wskaźnika LED do indywidualnych upodobań użytkownika. Napięcia zasilającego 5 VDC dostarcza prostownik Pr1 z elementami C10, C11, C12, C13 i stabilizatorem scalonym US6. Napięcie 24 VDC wykorzystywane do zasilania cewek przekaźników Pk0...Pk7 pobierane jest z prostownika Pr2. Oba układy prostownicze zasilane są z uzwojeń pomocniczych transformatora Tr. Program sterujący pracą mikrokontrolera, należącego do popularnej rodziny ’51, napisany został w języku asemblera i zajmuje około 1,4 kB pamięci (publikujemy go na CD-EP10/2004B). W tym miejscu chciałbym wyrazić podziękowanie mojemu przyjacielowi Mi-
chałowi, autorowi programu, który znalazł czas i zajął się tą częścią projektu. Pomijając szczegóły programu sterującego mikrokontrolera, działanie sterownika jest następujące: po załączeniu napięcia zasilającego, procesor US1 zerowany jest za pomocą obwodu różniczkującego zestawionego z kondensatora C1 i rezystora R1. Równocześnie zerowane są rejestry US3 i US4 poprzez wymuszenie na ich wejściach RST poziomu niskiego oraz „zgłasza” się buzzer, informując akustycznie o załączeniu zasilacza pod napięcie. Za te operacje odpowiada tranzystor T5, a dzieje się tak dlatego, ponieważ w wyniku zerowania procesora wszystkie linie jego portów ustawione zostają w stan wysoki. Ta faza pracy sterownika trwa około 1 s, a procesor wykonuje kolejno czynności: – ustawia wewnętrzne rejestry i komórki pamięci danych potrzebne do pracy programu, – linie P3.0, P3.1, P3.2 portu P3 ustawia jako wyjścia, a linie P3.3, P3.4, P3.5, P3.7 jako wejścia, – wchodzi w pętlę czasową, która trwa około 1s, po czym linie portu P1 ustawia jako wyjścia i wystawia na nich poziom niski, – przechodzi do głównej pętli programu. Po tej sekwencji milknie sygnał akustyczny, wyświetlacz wskazuje cyfrę 0, która jest aktualną pozycją „przełącznika zaczepów” zasilacza, a procesor, oczekując na reakcję użytkownika tzn. użycie klawiatury sterującej, cyklicznie czyta stan jej przycisków i zajmuje się obsługą wskaźnika LED. W tym trybie pracy sterownika możliwa jest zmiana wartości napięcia wyjściowego zasilacza z krokiem 1 V oraz załączenie lub wyłączenie tego napięcia z zacisków wyjściowych. Przeznaczone są do tego klawisze klawiatury sterującej oznaczone [ # ], [ 0 ], [ – ], a ich działanie jest następujące: – efektem naciśnięcia i zwolnienia klawisza [ # ] jest zwiększenie o 1 aktualnej pozycji „przełącznika zaczepów”, a tym samym napięcia wyjściowego zasilacza o 1 V, dłuższe przytrzymanie tego klawisza uruchamia mechanizm autorepetycji i procesor samoczynnie inkrementuje bieżącą pozycję
Elektronika Praktyczna 10/2004
Regulowany zasilacz wysokiego napięcia zmiennego
WYKAZ ELEMENTÓW: Rezystory: R1: 10kΩ R2, R3, R4, R13: 1,2kΩ R5: 2,2kΩ R6, R7, R8, R9, R10, R11, R12: 47Ω R14: 1,5kΩ R15: 33Ω Rp1 (drabinka rezystorowa 8x): 1kΩ Rp2 (drabinka rezystorowa x):10kΩ Kondensatory: C1: 10mF C2, C3: 33pF C4, C6, C7, C9: 47nF C5, C8, C13: 47mF C10: 470mF/16V C11, C12: 100nF C14: 2200mF/25V C15: 220nF/400V Półprzewodniki: US1: AT89C2051 (zaprogramowany mikrokontroler) US2: 4543 US3, US4: 40175 US5: ULN 2803 US6: 7805 T1: BC211 T2, T3, T4: BC308 T5: BC107 D1, D2, D3: 1N4148 D4, D5, D6: 1N4007 Pr1, Pr2 (prostownik): RBI157 Ds1: LED-g (LED zielona) Ds2: LED-r (LED czerwona): Ds3: LED-g (LED zielona): W1-W3: E10562 (wyświetlacz 7-segmentowy): Inne: Tr: Transformator wg opisu Pk0-Pk7: Przekaźnik R15 24V DC Ws: Wyłącznik zasilania B1, B2: Bezpiecznik radiowy 630mA B3: Bezpiecznik radiowy 1,6A W1, W2: Zacisk laboratoryjny A: Amperomierz elektrodynamiczny 0-2,5A Key: Klawiatura 12-stykowa Q: 12,000 MHz Buz: Buzzer z generatorem 6V X1m, X1ż: Złącze CANON 13-stykowe
na, z tym że bieżąca pozycja przełącznika, a tym samym napięcia wyjściowego zasilacza jest zmniejszana o 1 V, tutaj pozycją końcową, w której następuje blokowanie procesu dekrementacji, jest stan 0, – klawisz [ 0 ] pełni funkcję wyłącznika napięcia na zaciskach wyjściowych zasilacza; w reakcji na jego użycie procesor zeruje rejestry US2 i US3, czego efektem jest wyłączenie przekaźników Pk0... Pk7, stan ten jest sygnalizowany wskaźnikiem LED, który eksponuje aktualną pozycję „przełącznika zaczepów”, pulsując w „wolnych” odstępach czasowych (około 500 ms), ponowne użycie tego klawisza przywraca poprzedni stan. Sterownik umożliwia również zaprogramowanie dowolnej wartości napięcia wyjściowego, oczywiście ograniczonego zakresem, jaki pokrywa nasz zasilacz. Proces ten inicjuje naciśnięcie jednego z klawiszy [ 1, 2, 3, 4 ,5, 6 ,7, 8, 9 ] klawiatury sterującej, a zachowanie sterownika jest następujące: – zerowane są rejestry US2 i US3, co powoduje wyłączenie napięcia na wyjściu zasilacza, – wskaźnik LED przechodzi w tryb pulsowania „szybkiego” (co około 200 ms) i eksponuje numer użytego klawisza, który jest pierwszą cyfrą programowanej wartości napięcia wyjściowego, zgłasza się również buzzer, informując akustycznie użytkownika, że sterownik jest w trybie programowania napięcia wyjściowego,
– ewentualne kolejne naciśnięcia klawiszy wprowadzają drugą i trzecią cyfrę programowanej wartości napięcia, – działają mechanizmy blokujące wprowadzenie liczby spoza zakresu 0...255, – błędnie wprowadzoną wartość można wykasować klawiszem [ – ], – zakończenie procesu programowania umożliwia klawisz [ # ]. Użycie klawisza [ # ] niejako akceptuje wprowadzoną wartość, milknie sygnał akustyczny, wskaźnik LED przechodzi w tryb pulsowania „wolnego”, informując o wyłączeniu napięcia z zacisków wyjściowych zasilacza. Teraz wystarczy nacisnąć klawisz [ 0 ], aby załączyć zaprogramowaną wartość napięcia na zaciski wyjściowe zasilacza i powrócić do trybu, w którym sterownik realizuje funkcję zmiany napięcia wyjściowego z krokiem 1 V.
Uwagi końcowe
Na zakończenie kilka uwag, o których warto pamiętać podczas użytkowania zasilacza: – napięcie wyjściowe może osiągać wartości niebezpieczne dla zdrowia i życia człowieka, – pozycja „przełącznika zaczepów” prezentowana wskaźnikiem LED nie odzwierciedla rzeczywistej wartości napięcia wyjściowego zasilacza, a jest tylko jej przybliżoną wartością, – napięcie na zaciskach wyjściowych nie posiada zabezpieczenia przed skutkami zwarć. Edward Ogórek
o 1, stan 255 jest pozycją końcową, w której następuje blokowanie procesu inkrementacji, wskaźnik LED wyświetla bieżącą pozycję przełącznika, – reakcja sterownika na użycie klawisza [ – ] jest podob -
Elektronika Praktyczna 10/2004
31
P R O J E K T Y
Karta przekaźników z interfejsem 1Wire AVT-597
Urządzenia z magistralą 1Wire najczęściej kojarzą się nam z termometrami lub zamkami elektronicznymi na tak zwane „pastylki”, gdyż do takich celów jest najczęściej wykorzystywana jednoprzewodowa komunikacja. Powodem takiego stanu rzeczy przez długi czas był brak układów posiadających większą liczbę programowanych wejść lub wyjść. Czasy się jednak zmieniły! Rekomendacje: urządzenie opracowane z myślą o użytkownikach systemów mikroprocesorowych wyposażonych w niewielką liczbę wolnych linii I/O, którzy chcą w prosty sposób zwiększyć liczbę dostępnych w systemie wyjść.
Jedynymi układami umożliwiającymi zmianę stanu linii wyjściowej były układy DS2405 (posiadające jedną linię I/O) oraz DS2406 (posiadające dwie linie I/O). Ich wykorzystanie do sterowania kilkoma przekaźnikami, wymagało zastosowania dużej liczby układów DS2405, co znacznie komplikowało komunikację, gdyż zmiana stanu wszystkich przekaźników wymagałaby nawiązania komunikacji kolejno z każdym układem, co „blokowało” magistralę na dłuższy czas. Dopiero pojawienie się 8-bitowego ekspandera typu DS2408 umożliwiło w prosty sposób sterowanie większą liczbą układów wykonawczych, gdyż przesyłanie danych odbywa się w tym układzie poprzez słowa bajtowe, dzięki czemu możliwy jest równoczesny zapis lub odczyt stanu wszystkich wyprowadzeń portu układu DS2408. Układ ten został zastosowany w przedstawionej karcie przekaźników, przez co posiada ona wszystkie funkcje układów komunikujących się po magistrali 1Wire i może być dołączona w dowolnym miejscu istniejącej już sieci. W zależności od parametrów układu nadrzędnego długość przewodu komunikacyjnego może wynieść nawet 500 metrów, łącząc ze sobą kilka lub kilkadziesiąt układów z interfejsami 1Wire. Karta przekaźników jest traktowana jako jeden układ, więc do jednej magistrali można podłączyć także większą liczbę kart, a identyfikacja konkretnej karty jest przeprowadzana na podstawie unikalnego numeru seryjnego każdego układu DS2408. Układ nadrzędny może dowolnie włączać i wyłączać poszczególne przekaźniki, a także sprawdzać ich aktualny stan.
Budowa
Schemat elektryczny karty przekaźników przedstawiono na rys. 1. Głównym jej elementem jest układ DS2408, odpowiada on za komunikację z układem sterującym poprzez magistralę 1Wire zamieniając odebrane dane na jednobajtowe sło-
32
wo, które jest wysyłane na wyjście portu P. Port ten poprzez układy wzmacniające steruje przekaźnikami. Ponieważ stanem aktywnym na wyjściu układu DS2408 jest stan niski, konieczne stało się zastosowanie inwertera w postaci układu 74HC240, gdyż po włączeniu zasilania na wyjściach układu DS2408 panują stany wysokie, co powodowałoby załączenie wszystkich przekaźników. Dzięki zastosowanemu inwerterowi po włączeniu zasilania wszystkie przekaźniki są wyłączone. Drabinka rezystorów w obudowie R-Pack pełni rolę rezystorów podciągających do plusa zasilania wyjścia układu DS2408, gdyż są one typu otwarty kolektor. Po odwróceniu w fazie sygnały sterujące kierowane są na wejście wzmacniaczy tranzystorowych zawartych w układzie ULN2803A. Układ ten zawiera osiem tranzystorów wraz z rezystorami wejściowymi umożliwiającymi bezpośrednie podłączenie do układu sterującego. Dodatkowo wyjście każdego tranzystora jest zabezpieczone przed uszkodzeniem w przypadku sterowania odbiornikiem indukcyjnym przez wewnętrzne diody. Diody te zwierają napięcia wyższe niż napięcie panujące na wejściu „COM” do plusa zasilania, doskonale nadają się więc do sterowania przekaźnikami, bez konieczności stosowania dodatkowych zewnętrznych zabezpieczeń. Jako przekaźniki wykonawcze zastosowane zostały przekaźniki typu RM96P o jednym styku przełącznym i maksymalnym prądzie przewodzenia równym 10 A. Przekaźniki umożliwiają załączanie odbiorników zasilanych zarówno napięciem przemiennym, jak również stałym. Do sygnalizacji załączenia przekaźnika zastosowano diody świecące D1...D8. Dioda zostaje zapalona w momencie załączenia przekaźnika. Rezystory R1...R8 ograniczają prąd płynący przez te diody. Do stabilizacji napięcia zasilającego zastosowano monolityczny stabilizator typu LM7805. Natomiast do filtracji napięcia zastosowane zostały kondensatory C1...C4.
Elektronika Praktyczna 10/2004
Karta przekaźników z interfejsem 1Wire
Montaż
Kartę przekaźników zmontowano na płytce, której schemat montażowy przedstawiono na rys. 2. Montaż elementów należy rozpocząć od wlutowania układu scalonego US1, gdyż umieszczony jest on w obudowie SMD, a dodatkowo montowany jest od strony „lutowania”. W dalszej kolejności należy wlutować rezystory, podstawki pod układy scalone i kondensatory. W kolejnym etapie należy wlutować przekaźniki P1...P8 i złącza CON1... CON10. Diody świecące należy zamontować na samym końcu, aby dopasować ich wysokość do ewentualnej obudowy. Po prawidłowym zmontowaniu układu można przejść do sprawdzenia jego funkcjonowania. W tym celu do złącza CON9 należy podłączyć napięcie zasilania o wartości około 12 V i wydajności prądowej 300 mA, należy przy tym zwrócić szczególną uwagę na polaryzację przyłożonego napięcia, gdyż karta nie posiada zabezpieczenia przed odwrotną polaryzacją. Do złącza CON10 należy podłączyć przewody magistrali 1Wire i przejść do procedury sterowania kartą.
Obsługa
Układ DS2408 posiada wszystkie funkcję typowe dla układów dołączonych do magistrali 1Wire (numer seryjny, szukanie ROM, przeskakiwanie ROM, itd.). Na list. 1 przedstawiono procedury umożliwiające zmianę stanu przekaźników oraz odczyt ich aktualnego stanu. Procedura DS2408_ init() ustawia wyprowadzenie !RSTZ jako wyjście strobujące (po każdym zapisie lub odczycie z portu na wyjściu !RSTZ pojawi się ujemny impuls o stanie niskim- w karcie przekaźników wyjście to nie jest wykorzystywane), procedura DS2408_write_byte(char data) umożliwia zapis do portu P, a jako parametr zwraca stan tego portu umożliwiając weryfikację, czy wysłana wartość została zapisana. Ponieważ sygnały z wyjścia układu DS2408 są negowane przez układ 74HC240, to załączenie przekaźnika następowałoby, gdy odpowiadający bit jest wyzerowany. Aby przekaźnik był załączany dla odpowiadającego
Elektronika Praktyczna 10/2004
Rys. 1. Schemat elektryczny karty przekaźników z interfejsem 1Wire
33
Karta przekaźników z interfejsem 1Wire List. 1. Procedury sterowania kartą przekaźników //*************************************************************************// // Konfiguracja układu DS2408 //*************************************************************************// void DS2408_init() { char i; touch_present(); //1wire reset touch_write_byte(0xCC); //przeskocz ROM touch_write_byte(0xCC); touch_write_byte(0x8D); //Adres touch_write_byte(0x00); touch_write_byte(0x04); //zapis do rejestru kontrolnego touch_present(); } //*************************************************************************// // Zapis do portu i zwrot stanu przekazników //*************************************************************************// char DS2408_write_byte(char data) { char i; touch_present(); touch_write_byte(0xCC); //przeskocz ROM touch_write_byte(0x5A); //komenda zapisu touch_write_byte(~data); //zapisz dana zanegowana touch_write_byte(data); //zapisz dana nie zanegowana i=touch_read_byte(); //jesli i=AA to zapis prawidlowy return(~touch_read_byte()); //zwrot zanegowanych stanow portu P } //*************************************************************************// // Odczyt stanu przekaznikow //*************************************************************************// char DS2408_read_byte() { char i; touch_present(); touch_write_byte(0xCC); //przeskocz ROM touch_write_byte(0xF5); //komenda odczytu z portu return(~touch_read_byte()); // zwrot zanegowanych stanow portu P //tu mozna odczytac dwa bajt sumy kontrolnej CRC16 }
Rys. 2. Rozmieszczenie elementów na płytce drukowanej
bitu będącego jedynką następuje dodatkowe zanegowanie bajtu będącego parametrem wywoływanej funkcji. Także zwracana wartość stanów portu układu DS2408 jest negowana tak, aby ustawiony bit zwróconego bajtu odpowiadał załączonemu przekaźnikowi. Do sprawdzenia stanu przekaźników służy procedura DS2408_read_ byte(), która odczytuje stan portu układu DS2408 i zwraca zanegowaną wartość jako parametr. Negacja stanu portu sprawia, że otrzymany bajt ma ustawione bity dla załączonych przekaźników i wyzerowane dla przekaźników wyłączonych. Procedura main() jest główną pętlą programu powodującą wysyłanie do karty przekaźników kolejnych wartości od 0 do 255 co 500ms, załączając tym samym kolejne przekaźniki. Przekaźniki i diody świecące reprezentują wy-
34
//*************************************************************************// // Glowna petla //*************************************************************************// main() { i=0; DS2408_init(); //inicjalizacja DS2408 while(1) { DS2408_write_byte(i++); //zapis stanu przekaznikow delay_ms(500); //pauza 500ms putc(DS2408_read_byte()); //wyswietlanie stanu przekaznikow } }
słaną wartość w postaci binarnej. Po zapisie kolejnej wartości następuje załączenie odpowiednich przekaźników, następnie jest odczytywany ich stan i wyświetlany funkcją putc(DS2408_read_byte()). Opisane procedury nie uwzględniają sterowania portu mikrokontrolera i fizyczne sterowanie portem zgodnie ze specyfikacją 1Wire muszą wykonywać d o d a t ko w e p r o c e d u r y. Po n a d to w przykładach podany jest uproszczony tryb sterowania zakładający, że do magistrali jest dołączony tylko jeden układ (pomijany jest adres układu poprzez polecenie „przeskocz ROM”). Krzysztof Pławsiuk, EP
[email protected] Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb.ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB.
WYKAZ ELEMENTÓW Rezystory R1...R8: 1kV R-Pack: 10kV Kondensatory C1: 470mF/25V C2: 100nF C3: 220mF/16V C4: 100nF Półprzewodniki D1...D8: dioda LED 5 mm, czerwona US1: DS2408 US2: ULN2903A US3: LM7805 US4: 74HC240 Inne: P1...P8: przekaźnik RM96P-12 CON1...CON9: ARK3(5mm) CON10, CON11: ARK2(5mm) Podstawka DIP18, DIP20
Elektronika Praktyczna 10/2004
P R O J E K T Y
Wielokanałowy optoizolowany przetwornik A/C
Przetwarzanie analogowo – cyfrowe przy dzisiejszej ofercie rozmaitych przetworników stało się tematem w znacznym stopniu banalnym. Często wystarczy wybrać odpowiedni model mikrokontrolera wyposażony w przetwornik A/C aby szybko i sprawnie zrealizować pomiar wielkości analogowej. Nadal jednak kłopotliwe jest obsługiwanie dużej liczby kanałów pomiarowych. Rozwiązujemy to albo budując każdorazowo docelowy układ z multipleksowaniem wejść, albo składając system z jednostki centralnej i podrzędnych modułów pomiarowych. Prezentowany projekt jest rozwiązaniem pośrednim. Jest to niezależny 32-kanałowy moduł 12-bitowego przetwornika A/C, wyposażony w optoizolację wejść analogowych oraz uniwersalny interfejs odczytowy zgodny ze standardem I2C. Pozwala to na zastosowanie modułu w wielu rozmaitych systemach akwizycji danych. Rekomendacje: polecamy wszystkim projektantom lubiącym rozwiązania alternatywne i nieco nietypowe, a także Czytelnikom zainteresowanym nowoczesnymi systemami akwizycji danych analogowych.
Elektronika Praktyczna 10/2004
Opis układu
Schemat elektryczny modułu przedstawiono na rys. 1. Zasada jego działania nie jest skomplikowana: dwa 16-kanałowe multipleksery analogowe z optoizolowanymi liniami sterującymi pozwalają na wybór jednego z 32 wejść napięciowych wyprowadzonych na złącza szpilkowe HD1 i HD2. Wybrany sygnał dociera na wejście jednokanałowego 12-bitowego przetwornika A/C poprzez rezystory R1 i R2 eliminujące ewentualne krótkotrwałe konflikty poziomów w chwili przełączania pomiędzy U2 i U3. Przetwornik U5 jest wyposażony w interfejs szeregowy, co pozwala w prosty sposób zrealizować optoizolowany tor odczytu (według przykładu przedstawionego w nocie katalogowej). Posiada on także wbudowane źródło napięcia referencyjnego 4,096 V. Taki zespół może być sterowany praktycznie dowolnym mikrokontrolerem. W tym projekcie zastosowano stosunkowo mało popularny układ SX28AC, między innymi właśnie w celu praktycznego wypróbowania go. Mikrokontroler dokonuje cyklicznie odczytu kolejno wszystkich kanałów wejściowych oraz realizuje programowy interfejs I2C Slave, za pośrednictwem którego przesyła żądane wartości do urządzenia Master.
J a ko o p t o i z o lator stosunkowo powoli przełączanych linii adresowych A0...A3 multiplekserów służy poczwórny transoptor U4 o całkowicie przeciętnych parametrach. Natomiast w interfejsie szeregowym przetwornika A/C (U5 – MAX187) użyto szybkich transoptorów T2 i T3 (zastosowanie szybkiego T1 do przełączania wejść EN multiplekserów jest nadmiarowe – wynikło z będących do dyspozycji zapasów). Odseparowane galwanicznie zasilanie części analogowej modułu zapewnia przetwornica DC/DC U7. Urządzenie – ze względu na znaczny sumaryczny pobór prądu – jest zasilane za pomocą stabilizatora impulsowego step-down (U6 oraz elementy towarzyszące), co umożliwia użycie dość szerokiego zakresu napięć zasilających (projektowo 8...15 V) bez konieczności stosowania dużego radiatora. Dioda D3 ma charakter kontrolny – sygnalizuje pracę modułu i oddaje duże usługi przy uruchamianiu. Poczwórny DIP-switch dołączony do linii wejściowych mikrokontrolera pozwala na dowolne ustawienie adresu slave modułu (moż-
37
Wielokanałowy optoizolowany przetwornik A/C
Rys. 1. Schemat elektryczny modułu przetwornika
na więc obsłużyć maksymalnie 16 * 32 = 512 wejść pomiarowych). Złącze szpilkowe P1...P4 służy do podłączenia programatora – mikrokontroler SX28 posiada interfejs ISP i kod programu wpisujemy po zamontowaniu go w układzie.
38
Kilka słów o rodzinie mikrokontrolerów SX
Mikrokontrolery SX są produkowane przez firmę Ubicom (dawniej Scenix). Są one udoskonaloną i przyśpieszoną wersją popularnych procesorów PIC16C5x. Zgadzają się
wyprowadzenia obydwu rodzin (dla wersji 18 i 28), rejestry i banki RAM, pojemność pamięci programu (2048 słów 12-bitowych dla SX28), kody instrukcji i szybkość ich wykonywania w trybie kompatybilności. Różnice obejmują:
Elektronika Praktyczna 10/2004
Wielokanałowy optoizolowany przetwornik A/C
Rys. 2. Rozmieszczenie elementów na płytce
– programowanie szeregowe przez wyprowadzenia oscylatora (nie są zajmowane żadne linie I/O), – zapis kodu programu w pamięci Flash (o trwałości 10000 przeprogramowań), – wbudowany w każdą kostkę mechanizm wspomagający debugowanie, który umożliwia realizację funkcji ICE bez żadnych dodatkowych urządzeń (używany jest ten sam programator SX-Key podłączany do wyprowadzeń oscylatora), – dodatkowe mnemoniki dla ułatwienia nawigacji wśród banków RAM i stron Flasha, – wprowadzenie 4-poziomowego potokowania (pipelining), które pozwala w trybie Turbo na 4-krotne przyspieszenie wykonania programu, – znaczne przyśpieszenie taktowania – częstotliwość zegarowa może wynosić maksymalnie 75 MHz, – dostępne są dodatkowe bity konfiguracyjne kostki (fuses), – ośmiopoziomowy sprzętowy stos, – automatyczne zachowywanie kontekstu podczas przerwań (w dodatkowych rejestrach niewidocznych dla programu), – wbudowany wewnętrzny generator sygnału zegarowego o częstotliwości od 31 kHz do 4 MHz, – wszystkie linie I/O są dowolnie konfigurowalne (wejście/wyjście, włączanie podciągnięcia) i mają symetryczną wydajność prądową 30 mA.
Elektronika Praktyczna 10/2004
Dodatkowe ułatwienia aplikacyjne to: – wbudowany watchdog, – wbudowany układ zerujący mikrokontroler po włączeniu zasilania, – możliwość zerowania CPU przy spadku napięcia (brownout), – tryb obniżonego poboru mocy z wybudzeniem zboczem na wybranej linii portu B. Mikrokontroler SX oferuje całkiem odmienne podejście do konstrukcji i sposobu programowania niż wiele innych mikrokontrolerów. Jest praktycznie pozbawiony często obecnie spotykanych sprzętowych peryferiów (typu SPI, UART, I2C, PWM), natomiast jego szybkość działania pozwala większość tego typu usług i protokołów realizować na drodze programowej. Dotyczy to zwłaszcza wszelkich komunikacji szeregowych – dlatego też serię SX nazywa się również procesorami komunikacyjnymi. Rozwiązanie to producent określił mianem wirtualnych peryferiów (Virtual Peripherals) i opracował oraz udostępnił szereg gotowych procedur. Zasoby VP są znaczne (łącznie ze stosem TCP/IP). Obecnie jednak Ubicom promuje zupełnie nowe linie produktów i wsparcie dla SX na firmowej witrynie zostało znacznie zredukowane – trzeba więc raczej szukać w starszych archiwach (dużo materiałów zawierała m.in. jedna z płyt EP) oraz na innych tematycznych stronach WWW. Realizacja VP jest oparta o przerwanie sprzętowego 8-bito-
wego licznika (RTCC). Częstotliwość jego występowania możemy w szerokim zakresie dopasowywać do potrzeb aplikacji za pomocą programowanego preskalera. W obsłudze przerwania podejmujemy odpowiednie czynności – często (jak np. w przedstawianym projekcie) jest to realizacja działania kolejnego stanu programowego automatu stanów. Im częściej wyzwalamy przerwanie – tym szybsze procesy możemy obsłużyć. Jest to zarazem atrakcja dla miłośników asemblera – np. przy 50 MHz przerwanie co 1ms daje nam 50 cykli zegarowych (20 ns/ cykl) dla zrealizowania obsługi – i pozostawienia jeszcze zapasu na główną pętlę programu. Żadne języki wyższego poziomu nie wchodzą tu już w grę – dopasowanie kodu wymaga wyliczania przebiegu instrukcji co do cyklu (SX ma wszystkie instrukcje całkowicie jednoznaczne czasowo, można więc takie wyliczenia precyzyjnie przeprowadzić). Sprawa jest dodatkowo utrudniona dosyć niewdzięczną strukturą pamięci danych oraz kodu. W SX28 pamięć kodu jest podzielona na 4 strony (pages) po 512 słów, co wynika z 9-bitowego adresowania w instrukcjach skoków. Przejście do odpowiedniej strony musi być jawnie wykonane w programie (instrukcja page ustawiająca bity adresu strony w rejestrze statusu) przed realizacją fragmentu kodu. Aby dodatkowo „uprościć” sprawę, instrukcje wywołania procedur (call) posługują się adresowaniem tylko 8-bitowym. Wszystkie wejścia do procedur muszą się więc mieścić w pierwszych 256 słowach strony (natomiast oczywiście można wewnątrz procedury wykonać skok do wyższej połówki strony jeśli brakuje miejsca na kod). Z kolei pamięć danych podzielona jest na banki (8 w SX28). Są to 32-bajtowe strony, jednak dolne adresy (00...0x0F) są wspólne dla wszystkich banków, natomiast górne (0x10...0x1F, 0x30...0x3F itd. ) są rozdzielone. Adresowanie bezpośrednie w SX używa tylko 5 bitów (zakres 0...0x1F), czyli za mało dla rozróżnienia banków. Pozostałe 3 bity adresu musimy jawnie ustawić w rejestrze FSR (file select register) przed wyko-
39
Wielokanałowy optoizolowany przetwornik A/C List. 1. Kod obsługi przetwornika MAX187 org $400 ;******************************************************************* ; Max187 Interrupt Service Routines ;******************************************************************* ;**************************************************************** ; Function: ADC_ISR ; AD multichannel conversion Interrupt-Driven State Machine ;**************************************************************** ADC_isr mov w,ADC_state ;1 add PC,w ;3 ;Add the state to the program counter ;and go to the state in the jump table. ;************************************************************* ; States for ADC while channel changing ;************************************************************* ADC_channel = $ jmp ADC_change_channel ;3 new channel is set jmp ADC_change_delay_lo ;3 some delay to stabilize input jmp ADC_change_delay_hi ;3 some delay to stabilize input ;************************************************************* ; States for ADC measure cycle ;************************************************************* ADC_conversion = $ jmp ADC_start ;3 start conversion jmp ADC_startdelay ;3 wait min. 8,5 us before reading jmp ADC_firstpulse ;3 generate first SCK pulse jmp ADC_highpart ;3 load 4 high conversion bits jmp ADC_lowpart ;3 load 8 low conversion bits jmp ADC_end ;3 jmp ADC_store_delay ;wait for storing values ADC_init
jmp Do_ADC_init
;**************************************************** ;Jump to the next channel and set all the control lines ;**************************************************** ADC_change_channel inc channel_number snb channel_number.5 ; is 32 ? clr channel_number setb lo_channel_mux setb hi_channel_mux
;disable both 4067
and rb_buff,#%00000011
;keep scl, sda lines
snb channel_number.0 setb rb_buff.2 snb channel_number.1 setb rb_buff.3 snb channel_number.2 setb rb_buff.4 snb channel_number.3 setb rb_buff.5
inc ADC_state retp ADC_startdelay dec start_delay sz retp setb start_delay.2 inc ADC_state retp
;state unchanged, continue delay ;means start_delay = 4, ;ready for the next delay
ADC_firstpulse ;set sclk if low and then reset it snb max_sclk jmp :done setb max_sclk retp ; sclk is set :done
setb high_counter.2 setb low_counter.3 clrb max_sclk
; means high_counter = 4 ; means low_counter = 8 ; ask for bit 11.
inc ADC_state retp ADC_highpart ;if sclk is low set it to enable data bit snb max_sclk jmp :bitvalid setb max_sclk ;enable data bit retp :bitvalid
;after previous raising sclk edge ;we have valid data bit on max_data_in ;read it and write into buffer
clc ;clear carry snb max_data_in stc ; set carry if data bit high rl ADC_buf_hi clrb max_sclk
;and now clear sclk again to ask for next bit
;then check if all the 4 high bits are ready dec high_counter sz retp ; not yet inc ADC_state ; ready – go to low bits retp
sb channel_number.4 clrb lo_channel_mux
;enable 0-15 inputs 4067 multiplexer
snb channel_number.4 clrb hi_channel_mux
;enable 16-31 inputs 4067 multiplexer
inc ADC_state retp ;************************************************ ;wait a moment to stabilize input after switching ; we use 5* 200*2,7 us = 2,7 ms ;************************************************ ADC_change_delay_lo dec chan_delay_lo sz retp ; state unchanged mov chan_delay_lo,#200 inc ADC_state retp ADC_change_delay_hi dec chan_delay_hi snz jmp :end_delay dec ADC_state retp ; state unchanged :end_delay mov chan_delay_hi,#5 inc ADC_state retp ;************************************************* ; Start max187 conversion cycle ; ;***************************************************** ADC_start clrb max_cs ;start conversion (low level active) clr ADC_buf_lo ;buffers ready for new value clr ADC_buf_hi
naniem instrukcji używającej tego trybu adresowania (służy do tego specjalny mnemonik bank). Prezentowane informacje są oczywiście wysoce wyrywkowe, ale wydaje się, że właśnie te specyficzne aspekty konstrukcji oraz programowania SX najbardziej przeszkadzają podczas pierwszego czytania manuali. Uprzedzenie o nich może więc znacznie przyspieszyć zapoznanie się z proceso-
40
cd. List. 1.
ADC_lowpart ; quite the same but 8 times snb max_sclk jmp :bitvalid setb max_sclk ;enable data bit retp :bitvalid clc ;clear carry snb max_data_in stc ; set carry if data bit high rl ADC_buf_lo ; and now reset sclk again to ask for next bit clrb max_sclk ;then check if all the 8 low bits are ready dec low_counter sz retp ; not yet inc ADC_state ; done, sclk remains low retp ;************************************************* ; Switch off CS line, ; reload temporary value buffers into target memory ; be ready to change channel ;************************************************* ADC_end setb max_cs ; switch Max187 off (active low level) setb ADC_ready_flag ; conversion done, main loop will use it inc ADC_state retp ADC_store_delay clr ADC_state retp
rem oraz ułatwić analizę przykładowych kodów. Jako środowisko programistyczne do realizacji projektu posłużył pakiet SX Key z www.parallax.com. Jest on – jako program – bezpłatny, ale niestety współpracuje z komercyjnym sprzętowym programatorem o tej samej nazwie. Zestaw umożliwia zarówno programowanie jak i pracę w trybie debuggera w docelowym układzie oraz
dowolne ustawianie częstotliwości zegara, stanowi więc narzędzie bardzo silne i uniwersalne. Za mniejszą cenę można się zaopatrzyć w skromniejszy programator – SX Blitz – pozbawiony funkcji debugowania. Oszczędność pinów używanych do programowania wiąże się niestety z dość skomplikowanym i wymagającym protokołem. Chociaż został on opublikowany, nie znajdziemy więc zbyt
Elektronika Praktyczna 10/2004
Wielokanałowy optoizolowany przetwornik A/C wielu alternatywnych amatorskich rozwiązań programatorów. Wydaje się, że jedynym rzeczywiście dopracowanym projektem jest Fluffy 2 – też jednak oparty na mikrokontrolerze PIC i wymagający sporego nakładu pracy przy złożeniu i uruchomieniu. Jeśli chcielibyśmy korzystać w mniej wymagających czasowo aplikacjach z języków wyższego poziomu, warto sięgnąć m.in. na stronę www.picant.com, gdzie znajdziemy shareware’owe kompilatory C, C++ i Pascala dla PIC oraz SX.
Montaż i wstępne uruchomienie
Cały układ został wykonany na elementach w obudowach przewlekanych (rys. 2). Wynikło to m.in. z chęci wykorzystania starszych, szufladowych zapasów (jak np. multipleksery 4067). Jednak dzięki temu montaż i kontrola nie sprawiają żadnych nietypowych kłopotów ani niespodzianek. Zaczynamy tradycyjnie od obwodów zasilania – po ich złożeniu sprawdzamy działanie oraz dostarczane napięcia przy zewnętrznym zasilaniu zmienianym w zakresie 8...15 V. Wtedy dopiero składamy dalej płytkę. W prototypie uzyskano dokładne +5 V z przetwornicy impulsowej oraz ok. 5,3 V z przetwornicy separującej DC/DC. Wprawdzie wykracza to nieco poza zalecane warunki pracy użytego przetwornika A/C, ale nie przekracza wartości dopuszczalnych i całość działa prawidłowo. Jeśli nie będziemy dalej modyfikować programu wlutowujemy także elementy obwodu oscylatora (C13, C14 oraz rezonator kwarcowy Y1). Pozostawimy je nie wmontowane, gdy mamy w planie dalsze debugowanie za pomocą SX Key. Wpisanie kodu do pamięci Flash wykonujemy przy pomocy jednego ze wspomnianych programatorów SX Key albo SX Blitz podłączonych do listwy P1...P4 (uwaga na kolejność wyprowadzeń!). Program powinien ruszyć od razu. O pracy procesora świadczy miganie diody kontrolnej D3. Po chwili elementy zasilaczy oraz mikrokontroler SX28 lekko się rozgrzewają – jest to objaw prawidłowy i nie świadczy o żadnej usterce. Pobór prądu ( bez programatora ) wynosi ok. 100mA.
Elektronika Praktyczna 10/2004
Dokładniejsze sprawdzenie funkcji przetwornika wymagać będzie zestawienia bardziej rozbudowanego układu odczytowego.
Oprogramowanie
Działanie programu polega na cyklicznym przełączaniu wejść pomiarowych, obsłudze sekwencji konwersji A/C przetwornika MAX 187 i wpisywaniu wyników w odpowiednie miejsca buforów pamięciowych. Jednocześnie monitorowany jest stan linii magistrali I2C: – po wykryciu sekwencji start odbierany jest adres slave, – sprawdzana jest zgodność przesłanego adresu z własnym, – w przypadku odebrania zgodnego adresu wysyłane jest potwierdzenie ACK, – jeśli odebrano adres do zapisu – następujący po nim jeden bajt danych określa numer kanału, z którego master chce otrzymać wynik; na tej podstawie zostają załadowane do bufora nadajnika odpowiednie pozycje pamięci pomiarów, – jeśli odebrano adres do odczytu – wysyłane są dwa bajty wyniku pomiaru z żądanego kanału. Uzupełniająco pracuje 16-bitowy timer, który poprzez przełączanie diody kontrolnej LED pozwala na stwierdzenie poprawnego działania układu. Jako podstawa do napisania programu posłużył firmowy moduł VP – urządzenie slave I2C. Jest to programowy automat stanów przełączany w obsłudze przerwania RTCC zgodnie z aktualną sytuacją na magistrali. Kod programu jest dostępny na CD-EP10/2004B. Z kolei obsługa przetwornika MAX 187 wymagała napisania programu od podstaw. Przebieg pojedynczego cyklu konwersji przetwornika przedstawiono na rys. 3: – wyzwolenie konwersji niskim poziomem CS, – odczekanie min. 8,5 ms do zakończenia konwersji (EOC), – s z e r e g o w y o d c z y t w y n i ku (pierwszy takt zegara zwraca zawsze 1, następne 12 taktów pobiera 12 bitów wyniku począwszy od MSB, zera kończące można pominąć). Do realizacji tego przebie gu został również użyty automat stanów – przedstawia ono go na
list. 1 – który dodatkowo wykonuje przełączanie kolejnych kanałów z odpowiednim opóźnieniem na ustabilizowanie (przeładowanie pojemności) wejścia. Automat nie zapewnia nam wprawdzie wykorzystania pełnej szybkości odczytu przetwornika, ale w przypadku naszego stosunkowo powolnego urządzenia nie jest to wcale wadą. Zwróćmy też uwagę na prosty ale wydajny mechanizm lokalizacji procedur dla poszczególnych stanów – numer stanu jest dodawany do licznika rozkazów czego efektem jest wybranie odpowiedniej pozycji w tabeli skoków i przejście bezpośrednio do kodu obsługi tego stanu. Program był uruchamiany tylko do momentu uzyskania stabilnej pracy modułu. Dalsze udoskonalenia i modyfikacje (użycie watchdoga, autoinkrementacja numerów kanałów przy odczycie itd.) są pozostawione do uznania użytkowników.
Przykład sprawdzenia i wykorzystania modułu
W materiałach pomocniczych opublikowanych na CD-EP10/2004B znajdziemy cały projekt Delphi do testowego odczytu naszego modułu. Program odczytuje cyklicznie wszystkie kanały pomiarowe i wyświetla pobrane wartości na 32 bargrafach o zakresach znormalizowanych do przedziału <0...1>. Jako testowy zadajnik napięć posłużyły wieloobrotowe potencjometry montażowe (10 sztuk – czyli używamy tylko wybranych kanałów) ulokowane prowizorycznie na kawałku płytki uniwersalnej. Magistrala I 2C jest zrealizowana programowo poprzez sterowanie indywidualnymi wyprowadzeniami portu szeregowego. Służy do tego dodatkowy komponent TRsPin, którego źródła są również załączone. Dopasowanie poziomów elektrycznych linii SDA i SCL a także całkowita separacja galwaniczna portu szeregowego od modułu zapewnione są dzięki zastosowaniu optoizolatora magistrali I2C opisanego w miniprojektach EP11/02. Metoda ta wymaga na ogół dopasowania generowanych przebiegów do szybkości używanego PC – w unicie u_i2c znajdziemy stałe DsrDelay oraz LineDelay, które decydują o opóźnieniach i mogą wymagać eksperymentalnych zmian (wpisane w kodzie wartości doty-
41
Wielokanałowy optoizolowany przetwornik A/C
Rys. 3. Przebieg cyklu konwersji A/C w MAX187
czą Athlona 1,33 GHz). Ponieważ program ma charakter tylko testowo – warsztatowy nie przewidziałem specjalnych kontrolek do nastawy tych parametrów przez użytkownika. Należy je korygować (podobnie jak numer używanego portu) z poziomu Delphi bezpośrednio w kodzie źródłowym. Można natomiast zmieniać adres slave modułu SX dla uzgodnienia z położeniem przełącznika adresowego na płytce. Ekran uruchomionego testu przedstawiono na rys. 4. Dodatkowe etykiety liczbowe widoczne na tle okienka są składową całkiem oddzielnego programu współpracującego z odczytem wartości pomiarowych.
Uniwersalny program do prostej wizualizacji danych
Program do uniwersalnej tekstowej wizualizacji danych powstał wcześniej przy zupełnie innej okazji – teraz zaś nadarzyła się sposobność do jego przykładowego zastosowania. Pozwala on na wyświetlenie do 24 etykiet (kanałów) prezentujących tekstowo wartości liczbowe. Etykiety mają właściwość stay-on-top więc zawsze pozostają ponad dowolnym tłem (aplikacją). Każdą z etykiet możemy indywidualnie skonfigurować (jednostka, liczba miejsc po przecinku, mnożnik, filtr, częstotliwość aktualizacji, opis, kol o r y s t y ka ) i p r z e sunąć myszą w dowolne miejsce ekranu. Dzięki temu możemy w prosty i szybki sposób wyposażyć dowolną grafikę (obraz obiektu technologicznego, schemat elektryczny lub elektroniczny, rysunek przekrojowy pomieszczeń itp.) w dynamiczny opis dowolnych parametrów. Wizualizacja nie jest bowiem powiązana na stałe z żadnym interfejsem pomiarowym i samodzielnie nie dostarcza żadnych danych. Udostępnia natomiast funkcję bib l i o t e c z n ą , z a p ośrednictwem
42
której wszelkie inne aplikacje bezpośrednio obsługujące pomiar mogą przekazać niezbędne wartości w postaci tablicy liczb typu double. Nasz przykładowy czytnik modułu SX pokazuje dokładnie jak to zrobić. Program wizualizacji załączono w materiałach pomocniczych jako gotowy plik instalacyjny setup.exe. Instalator kopiuje wszystkie potrzebne pliki i biblioteki, w tym pomoc, która bardziej szczegółowo opisuje sposób użytkowania. Nie WYKAZ ELEMENTÓW Półprzewodniki U1: mikrokontroler SX28AC/DP Ubicom U2, U3: multiplekser analogowy CMOS 4067 U4: poczwórny transoptor K847 (lub zbliżony) U5: 12-bitowy przetwornik AC MAX 187 BCPA U6: stabilizator impulsowy LM 2671 N – 5.0V U7: przetwornica DC/DC NME 0505 S (C&D – dawniej Newport Components) T1...3: szybki podwójny transoptor HCPL (ICPL) 2630 D1: dioda prostownicza 1A D2: dioda Schottky 1N5817 D3: dioda LED Rezystory: wszystkie 1/8 W R1, R2: 1kV R3: 3,3V R4...7, R16, R17, R21, R22: 4,7kV R8...13, R23...26: 330V R14, R15, R19,R 20: 3,3kV R18: 470V R27: 560V Kondensatory C1: 10nF monolityczny C2: kondensator elektrolityczny niskoimpedancyjny 470mF/25V (CapXon) C3: kondensator elektrolityczny niskoimpedancyjny 100mF/10V (Sanyo OS-CON)
Rys. 4. Uruchomiony program testowy z wyświetlonymi etykietami wizualizacji
miałem jednak okazji sprawdzić instalatora i programu na platformach NT/2000/XP – prosiłbym o informacje w razie wystąpienia kłopotów. Jerzy Szczesiul, EP
[email protected] Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb.ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB. C4, C5, C6, C8, C12: odsprzęgające 100 nF monolityczne C13, C14: 15 pF ceramiczny C7, C11: 22mF/16V tantalowy C10: 4,7mF/25V tantalowy C9: 1 nF monolityczny (wartość dobrana przy uruchamianiu, 100nF ze schematu nieaktualne) Elementy indukcyjne L1: dławik 100mH DSZ6/100/0.8 Feryster Inne Listwy goldpin – proste podwójne i kątowe pojedyncze. Przełącznik DIPswitch 4-pozycyjny. Y1 – rezonator kwarcowy 50,00 MHz (częstotliwość podstawowa). Element ten okazał się niestety stosunkowo trudno dostępny. Na schemacie opisano kwarc jako 48,00 MHz – jest to wartość wystarczająca, jednak okazało się, że posiadany w zapasach jest nie podstawowy ale overtonowy co uniemożliwiło prawidłową pracę. Na witrynach poświęconych SX można znaleźć opisy wykorzystania również overtonów, ale wiąże się to z przeróbkami układu. Zwróćmy też uwagę, że programowanie można wykonywać przy dołączonym rezonatorze (kwarcowym lub ceramicznym), natomiast wszelkie inne źródła taktowania – np. oscylatory – muszą być odłączane gdyż zazwyczaj nie wytrzymują używanego do programowania napięcia 12V.
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y Przekazanie technologii wytwarzania elementów półprzewodnikowych przez Mitsubishi Electric i Hitachi firmie Renesas Technology Corporation dokonane 1 kwietnia 2003 roku nie było bynajmniej dowcipem primaaprilisowym. Od tej daty takie podzespoły jak: mikrokontrolery, układy logiczne, układy analogowe, niektóre rodzaje pamięci, a także elementy dyskretne produkowane przez dwie pierwsze firmy oznaczane są nowym znakiem towarowym. Mimo, że przekazanie technologii jest już faktem, użytkownicy zapewne długo jeszcze będą kojarzyć niektóre wyroby ze starymi producentami. Mikrokontrolery produkowane do tej pory przez firmę Hitachi nie zdobyły w Polsce chyba zbyt dużej popularności, lecz z pewnością znajdą się u nas konstruktorzy bardzo przywiązani do tej marki.
Elektronika Praktyczna 10/2004
16-bitowce rodem
z Renesasu
43
P O D Z E S P O Ł Y Tab. 1. Zestawienie bloków funkcjonalnych układu H8S/2239 Nazwa bloku 16-bitowy kontroler szyny (BSC) Kontroler transferu danych (DTC) Kontroler DMA (DMAC) Kontroler tzw. PC Break (PBC) 16-bitowa impulsowa jednostka czasowa (TPU) 16-bitowy timer (TMR) Watchdog Interfejs komunikacji szeregowej (SCI) Interfejs I2C Przetwornik cyfrowo-analogowy Przetwornik analogowo-cyfrowy Flash Pamięć RAM
Liczba 1 1 1 2 6 4 2 4 2 (opcja) 2 8 384 kB 32 kB
Rys. 1. Schemat blokowy procesora rodziny H8S/2239
44
Wielu z nich twierdzi, że są to elementy niezastąpione w pewnych zastosowaniach. Byłbym ostrożny z wygłaszaniem takich opinii, nie mniej jednak te głosy świadczą o głębokim zaufaniu zarówno do samych podzespołów, jak i do narzędzi uruchomieniowych dostępnych dla nich. Przyjrzyjmy się zatem rodzinie H8S. Jej praktyczne poznanie ułatwi nam specjalnie do tego celu zaprojektowana płytka demonstracyjna Demoboard 2239.
Budowa rdzenia H8S/2200
Nazwa płytki demonstracyjnej sugeruje, że będziemy mieli do czynienia z mikrokontrolerem H8S/ 2239 – przedstawicielem rodziny H8S/2200. I tak jest w rzeczywistości, przy czym producent nazywa ten układ 16-bitowym mikrokomputerem jednoukładowym. Tak czy inaczej na pewno warto go poznać bliżej. W tab. 1 przedstawiono ważniejsze bloki funkcjonalne układu, a na rys. 1 widnieje jego wewnętrzny schemat blokowy. Układy rodziny H8S/2200 są zbudowane w oparciu o ten sam rdzeń, a różnice między poszczególnymi typami wynikają z liczby zaimplementowanych komponentów. Niektóre z nich w pewnych wersjach mogą w ogóle nie występować. Jednostka centralna H8S/ 2000 posiada 32-bitową architekturę wewnętrzną, przy czym rejestry robocze (jest ich 16) są 16-bitowe. Można je jednak wykorzystywać również w trybie 16 rejestrów 8-bitowych lub 8 rejestrów 32-bitowych. CPU może adresować 16 MB przestrzeń liniową (zarówno dla danych, jak i dla programu). Jednostka centralna obsługuje 65 rozkazów, wśród których są 8-, 16- i 32-bitowe rozkazy arytmetyczne i logiczne, rozkazy mnożenia i dzielenia, a także bardzo wydajne rozkazy operacji bitowych. Dostępnych jest osiem trybów adresowania: adresowanie rejestrów – bezpośrednie, pośrednie, pośrednie z przemieszczeniem, pośrednie z post-inkrementacją i pre-dekrementacją, a także adresowanie absolutne, bezpośrednie, relatywne względem licznika rozkazów oraz pośrednie adresowanie pamięci. Większość najczęściej używanych rozkazów procesor wykonuje w jednym lub dwóch cyklach (stanach).
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y Wy j ą t k i e m s ą r o z k a z y mnożenia i dzielenia, które mogą wymagać aż 20 stanów. System zarządzania mocą pozwala wprowadzić CPU w stan uśpienia – power-down, można również ustawiać szybkość pracy zegara systemowego. W zależności od założeń aplikacji, dla której projektowany jest system, konstruktor powinien zdecydować się na zastosowanie jednego z dwóch możliwych trybów pracy CPU. Są to tryby: normal i advanced. Pierwszy z nich powinien być wykorzystywany wtedy, gdy przewiduje się jedynie 64 kB przestrzeń adresową. Pełne możliwości, o których była mowa wyżej, uzyskuje się zaś w trybie advanced. Ciekawostką jest to, że lista rozkazów jest wspólna dla obu trybów pracy. W trybie normal trzeba pamiętać, że we wszystkich wyrażeniach adresowych istotnych jest tylko 16 najmłodszych bitów. Niewielkie różnice w pracy CPU objawiają się podczas wykonywania skoków pośrednich, w dostępie do tzw. Exception Vector Table oraz w strukturze stosu. Na rys. 2 przedstawiono strukturę rejestrów jednostki centralnej H8S/2000. Jak widać, można tu wyróżnić dwa typy rejestrów: o g ó l n e go pr zezn acze nia i sterujące. Rejestry sterujące to 24-bitowy licznik programu (PC – Program Counter), 8-bitowy rozszerzony rejestr sterujący (ECR – Extended Control Register) i 8-bitowy rejestr warunków (CCR – Condition Code Register). W zależności od sposobu wykorzystania danego rejestru lub pary rejestrów zmieniają się ich oznaczenia. Na przykład, gdy wykorzystujemy je jako rejestry 32-bitowe lub adresowe, będziemy stosować oznaczenia ER0 – ER7, gdy używamy ich jako 16-bitowe rejestry
Elektronika Praktyczna 10/2004
robocze, to będą się nazywały E0 – E7. Analogicznie podczas traktowania ich jako 8-bitowe rejestry robocze będziemy oznaczać je RH0 – RH7 i RL0 do RL7. Sposób traktowania każdego rejestru jest niezależny, trzeba jednak pamiętać, że rejestr ER7 pełni funkcję wskaźnika stosu, jest więc praktycznie wyłączony dla użytkownika, trudno bowiem wyobrazić sobie program niewykorzystujący stosu. Jednostka centralna H8S/2000 udostępnia programiście atrakcyjne formaty danych, przydatne w zależności od wykonywanych operacji. Mogą być one traktowane jako 1-bitowe, 4-bitowe (BCD), 8-bitowe (bajt), 16-bitowe (słowo), 32-bitowe (długie słowo). Dane bitowe operują na pojedynczych bitach danej 8-bitowej, natomiast rozkazy DAA i DAS traktują daną bajtową jako dwie cyfry BCD. Powyższe formaty obowiązują zarówno dla danych przechowywanych w rejestrach procesora, jak i zapisanych w pamięci RAM. W drugim przypadku ograniczeniem jest to, aby dane 16- i 32-bitowe były umieszczane w parzystych adresach. Na podstawie wyżej przedstawionych parametrów można spodziewać się, że układy rodziny H8S/2000 są przeznaczone raczej do poważnych aplikacji, w których otoczenie procesora najczęściej będzie dość rozbudowane. Od jednostki centralnej będzie wymagana efektywna obsługa wielu zewnętrznych urządzeń we/wy oraz wewnętrznych bloków funkcjonalnych. Takim wymaganiom będzie mógł sprostać jedynie system wykorzystujący przerwania. Na skuteczność jego pracy będą miały wpływ zarówno umiejętnie napisane procedury obsługi, jak i część sprzętowa – tzw. kontroler
45
P O D Z E S P O Ł Y
Rys. 2. Struktura rejestrów jednostki centralnej H8S/2000
przerwań, który w omawianej rodzinie stanowi dość rozbudowany blok wewnętrzny. Będziemy mieli oczywiście do czynienia z systemem priorytetowym, sterowanym poprzez rejestr IPR (Interrupt Priority Register). Każdemu modułowi działającemu w systemie przerwań można przypisać jeden z ośmiu poziomów priorytetów. Nie dotyczy to oczywiście przerwania niemaskowalnego NMI. NMI posiada zawsze najwyższy priorytet i jest dostępny w każdej chwili, niezależnie od stanu CPU i ustawienia bitów w rejestrze IER (Interrupt Enable Register). Sposób działania systemu przerwań jest określony odpowiednim wpisem do rejestru sterującego SYSCR (System Control Register). Możliwe są dwa tryby pracy. W trybie 0 przyjęcie przerwania odbywa się jedynie na podstawie odpowiedniego bitu żądania obsługi. W trybie 2 dodatkowo jest analizowany stan rejestru IPR. Jeśli priorytet danego przerwania ustawiony w rejestrze IPR jest większy od poziomu maskowania danego przerwania, to CPU przechodzi do odpowiedniej procedury obsługi. Poprzez odpowiednie manipulowanie wpisami do rejestru IPR można zrealizować bardzo wydajny system ze zmiennymi priorytetami. Taka metoda pozwala uniknąć sytuacji, w której jedno z urządzeń
46
zablokuje pracę systemu np. przez zbyt częste generowanie przerwań. Innymi słowy, obsłużone urządzenie spada na koniec kolejki i czeka cierpliwie, aż ponownie przyjdzie na nie czas. Wiąże się to oczywiście z pewnymi konsekwencjami, ale niekiedy jest jedynym możliwym wyjściem z sytuacji. Każde źródło przerwania ma przypisany niezależny wektor, pod którym jest umieszczana odpowiednia procedura obsługi. Skok do tej procedury następuje automatycznie po przyjęciu żądania obsługi przez kontroler przerwań. Zgłoszenie przerwania może być realizowane zboczem narastającym lub opadającym, a także poziomem. Odpowiednia konfiguracja jest ustawiana niezależnie dla każdego wejścia IRQ0 do IRQ7 i NMI. Jedną z ciekawszych cech procesorów H8S/2000 jest możliwość zatrzymania licznika programu, niezwykle przydatna podczas debugowania programów. Pozwala ona na tworzenie autonomicznych debugerów, dzięki którym zbędne staje się stosowanie zewnętrznych emulatorów sprzętowych. Można wykorzystywać 24-bitowe adresy zatrzymań w dwóch kanałach, przy czym do określania odpowiednich w a r u n kó w d o s t ę p n e s ą operacje bitowe na adresach. Do wstrzymania pra-
cy CPU wykorzystuje się cztery typy warunków porównania: pobranie rozkazu, czytanie danych, zapis danych lub czytanie/zapis danych. Jeśli odpowiednie parametry odpowiadają ustawionym wcześniej wartościom, to następuje zatrzymanie pracy CPU. Wiadomo, że o wydajności systemu decyduje zawsze jego najsłabsze ogniwo. W przypadku urządzeń mikroprocesorowych ogniwem tym może być osiągana szybkość transferu danych pomiędzy poszczególnymi blokami funkcjonalnymi procesora oraz urządzeniami zewnętrznymi. Aby usprawnić ten element, w układach rodziny H8S/2000 zastosowano odpowiedni kontroler szyny (Bus Controller). Blok ten zarządza zewnętrzną przestrzenią adresową, dzieląc ją na osiem 2 MB obszarów. Pełni również funkcje arbitrażu szyny i steruje operacjami wykorzystującymi szynę wewnętrzną – komunikacja pomiędzy CPU, DMA (DMAC) i DTC (Data Transfer Controller). Parametry szyny mogą być ustawiane niezależnie dla każdego z ośmiu obszarów. Z zagadnieniem transferu danych pomiędzy poszczególnymi blokami systemu wiąże się również układ DMA. W układzie H8S/ 2239 zastosowano jego 4-kanałową wersję. DMA może pracować w trybie pojedynczym lub podwójnym, wykorzystując adresowanie skrócone lub pełne. W trybie podwójnym jeden z dwóch adresów (źródła i przeznaczenia) jest 24-bitowy, drugi natomiast 16-bitowy. W trybie pojedynczym obydwa adresy są 24-bitowe. Kontroler DMA pozwala zdefiniować jednostkę transferu danych. Może to być bajt lub słowo. Kolejnym ważnym układem usprawniającym wymianę danych jest DTA (Data Transfer
Controller). Układ realizuje transmisję danych w trybie normalnym, blokowym oraz transmisję z powtórzeniami. Operuje na 16 MB przestrzeni adresowej, wykorzystując podobnie jak DMA bajt lub słowo jako jednostkę transferu. Jak widać z rys. 1, procesory rodziny H8S/ 2000 są bogato wyposażone w porty zewnętrzne. Mogą być one bardzo wygodnie konfigurowane jako wyjściowe lub wejściowe za pomocą rejestrów DDR (Data Direction Register), przy czym rozdzielone są rejestry wejściowe (PORT) i wyjściowe (DR). Porty posiadają wbudowane wejściowe, MOS-owe układy podciągające typu pull-up. Ich konfiguracja odbywa się poprzez specjalny rejestr PCR. Porty 3 i A współpracują z rejestrem ODR (Open-drain Control Register). Każde wyprowadzenie może sterować jedną standardową bramką TTL przy dopuszczalnej pojemności 30 pF. Wyprowadzenia P34 i P35 portu 3 mają wyjścia NMOS typu push-pull. W układach rodziny H8S/2000, podobnie jak ma to miejsce w większości mikrokontrolerów, konstruktor może decydować o ich ogólnym zastosowaniu lub wybraniu przypisanych na sztywno funkcji alternatywnych. I tak na przykład Port 1 może być użyty jako uniwersalny port we/wy, ale w przypadku wykorzystywania przerwań zewnętrznych część jego wyprowadzeń stanowi wejścia zgłoszenia przerwań \IRQ0 i \IRQ1, zaś inne wyprowadzenia są wykorzystywane przez TPU i DMAC. Przypisanie wyprowadzeń pozostałych portów jest przedstawione na schemacie blokowym (rys. 1), a szczegóły można znaleźć w dokumentacji technicznej. W większości urządzeń zbudowanych w oparciu
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y o system mikroprocesorowy zachodzi potrzeba odmierzania czasu. Procesory rodziny H8S/2000 zawierają bardzo wydajny blok funkcjonalny, niezwykle ułatwiający konstruktorowi tworzenie odpowiednich procedur. Jest to TPU (Timer Pulse Unit), czyli zestaw sześciu 16-bitowych timerów (w procesorze H8S/2227 tylko 3). Każdy kanał (timer – taką nomenklaturę przyjęła firma Hitachi) można ustawić w najbardziej odpowiednim dla danego zastosowania trybie pracy. Wiele z nich znamy z popularnych mikrokontrolerów, jak na przykład funkcję wejściowego przechwytywania czy automatycznego wyzwalania konwersji przetwornika A/D, ale mamy też nieczęsto spotykane operacje synchroniczne na wielu kanałach. Na uwagę zasługuje również 15-fazowy PWM możliwy dzięki operacjom synchronicznym oraz możliwość kaskadowego łączenia kanałów. O rozbudowanych możliwościach TPU świadczy fakt, że jest on źródłem aż 26 przerwań. Efektywne wykorzystywanie tego komponentu wymaga sporego doświadczenia od konstruktora, w prostszych sytuacjach wystarczające może się okazać zastosowanie 4-kanałowego timera 8-bitowego. Może on pracować np. jako licznik zdarzeń zewnętrznych lub jako wielofunkcyjny układ czasowy. Posiada wewnętrzny preskaler o stopniach podziału: 3, 64 i 8192. Mimo prostszej budowy niż TPU, timer ten może również pracować w takich trybach jak compare-match lub PWM, a także sterować przetwornikiem A/D. I w tym przypadku możliwe jest również kaskadowe łączenie dwóch kanałów. Oprócz opisanych wyżej układów czasowych, w procesory rodziny H8S/
Elektronika Praktyczna 10/2004
2000 wbudowano również 8-bitowy, podwójny timer typu watchdog, generujący sygnał zerowania CPU po osiągnięciu stanu przepełnienia. Jeśli nie ma potrzeby stosowania takich zabezpieczeń w systemie, układ ten może pracować jako timer interwałów. Procesory H8S/2000 m o g ą s i ę ko m u n i ko w a ć z otoczeniem poprzez interfejs szeregowy SCI (Serial Communication Interface) lub poprzez dobrze znany interfejs I2C (ten interfejs występuje jako opcja w układach oznakowanych literą W). SCI umożliwia prowadzenie transmisji zarówno asynchronicznej, jak i synchronicznej. Obsługuje również karty Smart Card (ISO/IEC 7816-3). W zależności od typu procesora dostępne są 4 lub 3 kanały transmisyjne. Transmisja może być prowadzona w trybie full-duplex. Nadajnik i odbiornik jest wyposażony w podwójny bufor, co znacznie podnosi pewność prowadzenia ciągłej transmisji w obu kierunkach. Transmisyjna podstawa czasu może być wytwarzana przez wbudowany wewnętrzny generator lub z wykorzystaniem zegara zewnętrznego (nie dotyczy obsługi karty Smart Card). Interfejs szeregowy współpracuje oczywiście z systemem przerwań. Wykrywane są typowe błędy transmisji, takie jak: błąd parzystości, naczytania i błąd ramki. Ramka może się składać z danej 7- lub 8-bitowej, 1 lub 2 bitów stopu oraz bitu parzystości lub nieparzystości, bitu tego można również nie stosować. Średnia prędkość transmisji może wynosić 720, 460784, lub 115192 kb/s dla rezonatora 16 MHz. Zaimplementowany opcjonalnie w niektórych układach rodziny H8S/2000 interfejs I 2 C jest zgodny ze specyfikacją Philipsa.
47
P O D Z E S P O Ł Y Może być on wykorzystywany jedynie w przypadku, gdy napięcie zasilające jest większe niż 2,7 V. Transmisja może być prowadzona w trybie master oraz slave. W pierwszym przypadku sekwencje startu i stopu są generowane automatycznie. Układ może generować sygnał żądania wstrzymania transmisji, który jest „zdejmowany” po osiągnięciu gotowości do pracy. Interfejs I2C jest źródłem trzech przerwań. Ostatnimi z omawianych bloków są przetworniki analogowo-cyfrowe i cyfrowo-analogowe. W układach rodziny H8S/2000 zaimplementowano 8-kanałowy, 10-bitowy przetwornik A/D działający na zasadzie kolejnych przybliżeń. Czas konwersji dla każdego kanału przy kwarcu 13,5 MHz wynosi 9,6 ms. Przetwornik może pracować w trybie pojedynczej konwersji lub w trybie skanowania – ciągłe wyzwalanie 1 do 4 kanałów. Wyzwalanie przetworników może nastąpić na skutek wykonania odpowiedniego polecenia programowego, wytworzenia impulsu wyzwalającego przez TPU oraz sygnałem zewnętrznym. Zakończenie konwersji jest sygnalizowane odpowiednim przerwaniem. Przetwornik współpracuje z wbudowanym układem próbkująco-pamiętającym (sample-and-hold). Do prawidłowego wykonania konwersji wymagane jest, aby impedancja źródła nie była większa niż 5 kV. Jeśli warunek ten nie będzie zachowany, może nie być spełniona gwarantowana dokładność przetwarzania. W przypadku stosowania przetworników A/D i D/A należy zapewnić dostateczną separację układów analogowych i cyfrowych. Wymaga to starannego zaprojektowania obwodu drukowanego, w szczególności odpowiedniego prowadzenia ścieżki zasilającej i masy.
48
Rys. 3. Okno robocze programu „Hitachi Embedded Workshop”
Wbudowany przetwornik cyfrowo-analogowy ma rozdzielczość 8 bitów i udostępnia dwa niezależne kanały. Czas konwersji jest równy 10 ms. Sygnał wyjściowy może się zmieniać w zakresie od 0 do VREF.
Płytka demonstracyjna Demoboard 2239
P ł y t ka t a u m o ż l i w i a praktyczne zapoznanie się z możliwościami procesora H8S/2239. Wraz z nią użytkownik dostaje darmowe narzędzia programowe do tworzenia i uruchamiania programów. Ich instalacja jest dość prosta, choć trzeba zachować odpowiednią kolejność wgrywania programów i service-packów. Firma Renesas nie prowadzi jednak dla nich wsparcia technicznego. Chcąc uzyskać pełny komfort pracy, należy zakupić zestaw EDK2239. Uwaga: płytka jest przystosowana do zasilania napięciem stałym 3V, dołączenie napięcia wyższego niż 3,3 V może spowodować uszkodzenie procesora. Niestety w zestawie nie ma odpowiedniego zasilacza, nie ma też kabla
transmisyjnego umożliwiającego dołączenie płytki do komputera PC. Przed przystąpieniem do prób należy odpowiednio ustawić mikroprzełączniki konfiguracyjne. Dzięki temu możliwe będzie programowanie procesora w układzie oraz debugowanie programu. Pojawienie się napięcia zasilającego jest sygnalizowane diodą świecącą. Za pomocą odpowiednich zworek konfiguruje się sygnał zerowania procesora, przerwania NMI, LED-y użytkownika oraz interfejsy szeregowego. Końcówki portów procesora są wyprowadzone na złącza szpilkowe, użytkownik może więc wykorzystać je ewentualnie w zewnętrznych układach dołączonych do płytki. Jedno z gniazd interfejsu szeregowego służy do debugowania programu, drugie natomiast może być w trakcie prób dowolnie wykorzystane przez użytkownika. Wraz z płytką testową dostarczany jest CD-ROM z oprogramowaniem narzędziowym: „Hitachi Embedded Workshop” i „Flash D e v e l o p m e n t To o l k i t ” .
Pierwszy program stanowi zintegrowane środowisko, w którym projektant może przygotować swój projekt począwszy od etapu pisania wersji źródłowych programów, skończywszy na etapie debugowania. Programy mogą być pisane zarówno w asemblerze, jak i w języku C. Przykładowy ekran roboczy przedstawiono na rys. 3. Drugi z programów stanowi wsparcie podczas programowania procesorów. W niniejszym artykule została zaprezentowana w formie skrótowej rodzina 16-bitowych mikrokontrolerów H8S/2000. Z pewnością wielu Czytelnikom ta ilość informacji nie wystarczy. Do podjęcia jakichkolwiek prób praktycznych niezbędne będzie zapoznanie się ze szczegółami dokumentacji technicznej. Jest ona dostępna na CD-ROM-ie dostarczanym wraz z płytką demonstracyjną lub na stronach internetowych firmy Renesas: http://www. renesas.com/eng/ Jarosław Doliński
[email protected]
Elektronika Praktyczna 10/2004
S P R Z Ę T
Uniwersalny czytnik
RFID
Identyfikacja bezkontaktowa RFID (Radio Frequency IDentification) wpisała się już na stałe w krajobraz naszego świata i błyskawicznie zdobywa coraz to nowe segmenty rynku. Ogromna popularyzacja tej technologii oraz chęć optymalizacji konstrukcji sprawiły, że na rynku funkcjonuje wiele standardów RFID. W tej sytuacji najnowsza propozycja firmy Texas Instruments – moduł czytnika łączący obsługę kilku standardów w jednym urządzeniu – okazała się bardzo trafiona i spełniła oczekiwania klientów, pragnących uproszczenia i obniżenia kosztów swoich projektów.
Elektronika Praktyczna 10/2004
Technologia RFID zrewolucjonizowała podejście inżynierów do wielu aplikacji. Jej niezawodność, wygoda użytkowania, brak konieczności serwisowania części mechanicznych (jak np. złącza czytników kontaktowych czy głowice czytników kart z paskiem magnetycznym) oraz zautomatyzowanie procesu identyfikacji sprawiły, że możliwości zastosowania są wprost nieograniczone. Od aplikacji bankowych, poprzez zabez-
49
S P R Z Ę T
Fot. 1. Transpondery są stosowane w bardzo wielu różnych dziedzinach życia pieczenia antykradzieżowe, segregację bagażu na lotnisku, oznaczanie odzieży w pralniach, aż po identyfikację zwierząt czy bezobsługowe systemy magazynowe (fot. 1). W dążeniu do optymalizacji rozwiązania pod kątem konkretnych zastosowań, konstruktorzy poszukują nie tylko różnorodnych form transponderów fot. 2), ale także technologii najlepiej działającej w danych warunkach pracy. Podczas gdy systemy LF (Low Frequency, pracujące z częstotliwością 125...134 kHz) znakomicie sprawdzają
się w środowisku przemysłowym, to systemy HF (High Frequency, pracujące z częstotliwością 13,56 MHz) stosowane są m.in. w aplikacjach bankowych i magazynowych. Coraz częściej okazuje się, że na terenie jednego obiektu albo w zasięgu jednej aplikacji optymalne jest zastosowanie kilku standardów, każdy przeznaczony do konkretnych zadań. W takim przypadku istnieje konieczność instalowania zdublowanego systemu urządzeń odczytująco/zapisujących (popularnie zwanych czytnikami), co komplikuje i zwiększa koszty systemu. Dlatego od pewnego czasu prowadzone są prace nad skonstruowaniem uniwersalnego czytnika średniego zasięgu, obsługującego kilka standardów. Takie właśnie urządzenie zaproponowała firma Texas Instruments: czytnik MFR (Multi Function Reader) serii S4100 (fot. 3). Moduł obsługuje najbardziej popularne na rynku standardy: – ISO/IEC14443 A oraz B, – ISO/IEC15693, pracujące z częstotliwością 13,56 MHz oraz LF – dla częstotliwości 134,2 kHz, oczywiście korzystając z osobnego, dla każdej częstotliwości, wejścia antenowego (rys. 4). Czytnik wyposażono w mechanizmy antykolizyjne, czyli detekcję i obsługę więcej niż jednego transpondera w zasięgu działania. Dzięki tak elastycznej konstrukcji możliwe jest zastosowanie transponderów pochodzących od jednego z wielu producentów na świecie, wytypowanych ze względu na wymogi techniczne bądź też po prostu najlepszą cenę i dostępność w danym momencie.
Fot. 2. Wygląd przykładowych transponderów firmy Texas Instruments
50
Fot. 3. Wygląd uniwersalnego czytnika serii S4100 Czytnik wyposażono także w mechanizm łatwego upgrade’u oprogramowania sterującego, aż do poziomu procedur ISO, co przy dynamicznym rozwoju technologii RFID umożliwia przystosowanie urządzenia do nowych standardów w przyszłości, bez konieczności zmian sprzętowych. Takie rozwiązanie jest bardzo ważne dla klientów, którzy obawiają się, że galopujący postęp technologiczny bardzo szybko spowoduje konieczność przebudowy instalowanych dzisiaj systemów. Firma Texas Instruments zadbała o to, aby w przypadku zmian, które teraz jeszcze ciężko przewidzieć, niezbędna była jedynie zmiana oprogramowania sterującego na nowsze z zachowaniem istniejącej infrastruktury sprzętowej. Mechanizm ten jest także idealnym rozwiązaniem w aplikacjach wymagających opracowania dedykowanego oprogramowania w miejsce standardowych procedur oferowanych przez producenta. Modułowa struktura oraz otwarta platforma programowa znakomicie upraszczają wszelkie prace projektowe. Urządzenie wyposażono w trzy wyjścia TTL, które mogą być użyte do dowolnych celów, jak np. dźwiękowa lub świetlna sygnalizacja trybu pracy. Zintegrowanie modułu (rys. 5) z docelową aplikacją nie powinno nastręczać trudności, ze względu na dość standardowe wymagania (tab. 1): – zasilanie 5V ±5%/200mA, – komunikacja poprzez USART w standardzie TTL, – wymiary 69 x 38 x 10mm. Urządzenie zostało zaprojektowane z myślą o systemach krótkiego/średniego zasięgu. Zastosowanie stosunkowo małych i tanich anten (o średnicy 3...5 cm) oraz równie małych transponderów jest wystarczające do uzyskania zasięgu ok. 10 cm, zarówno w standardzie HF (13,56 MHz, ISO15693), jak i LF (134,2 kHz). Oczywiście, system o większych antenach oraz transponderach pozwala na zwiększenie zasięgu działania. Należy jednak pamiętać, że nie jest to czytnik dalekiego zasięgu, czyli osiągający odległości 1...2 metrów.
Elektronika Praktyczna 10/2004
S P R Z Ę T
Rys. 4. Schemat blokowy modułu S4100
Rys. 5. Sposób integracji modułu S4100 z aplikacją
Tab. 1. Podstawowe parametry czytnika S4100 Parametr
RF-MGR-MNMN-N0
Częstotliwość pracy HF/LF
13,56 MHz/134,2 kHz
Obsługiwane transpondery
Tag-IT (Texas Instruments), zgodne z ISO15693, zgodne z ISO14443 typ A oraz B, Low Frequency (DST, R/W, R/O)
Moc nadajnika HF
200 mW
Prąd nadajnika LF
1,1A peak
Interfejs
USART, szybkość do 38,4 kbd
Wymiary
69 mm x 38 mm x 10 mm
Zakres temp. pracy
-20...+70°C
W ogromnej większości przypadków, przy prawidłowej konfiguracji oraz dobrze przemyślanej aplikacji, średni zasięg w zupełności wystarcza. Każde dodatkowe kilka centymetrów oznacza drastyczny wzrost ceny komponentów RFID. W systemach dalekiego zasięgu, przy tak małych mocach sygnałów, z jakimi mamy do czynienia, konieczne jest stosowanie zaawansowanych technicznie i bardzo drogich czytników oraz idealnie dopasowanych anten. Bardzo często tygodnie pracy poświęcone na zestrojenie anteny oraz tysiące euro wydane na skomplikowany czytnik są całkowicie niepotrzebną inwestycją, której można uniknąć, stosując proste w zastosowaniu systemy średniego zasięgu i odpowiednio przemyślaną konfigurację sprzętu. Właśnie z myślą o takich aplikacjach powstał opisywany czytnik.
Elektronika Praktyczna 10/2004
Warto także poświęcić czas na wytypowanie odpowiedniej technologii. W przypadku przemysłowych systemów w zakresie LF doskonałym rozwiązaniem jest stosowanie urządzeń i transponderów firmy Texas Instruments, których zasada działania gwarantuje bardzo dobrą odporność na zakłócenia i pozwala na zwiększenie zasięgu działania w stosunku do innych, podobnych produktów. Robert Panufnik, Microdis Electronics Opracowano na podstawie materiałów firmy Texas Instruments.
Informacje dodatkowe Więcej informacji można uzyskać w firmie Microdis Electronics, tel.: (71) 301 04 00, rfi
[email protected], www.microdis.net), która zajmuje się promocją i sprzedażą systemów RFID.
51
P O D Z E S P O Ł Y
...czyli STMicroelectronics przyśpiesza: w ofercie firmy pojawiły się nowe, szybsze, 8-bitowce w tradycyjnej architekturze '51 z licznymi dodatkami „na pokładzie”.
Pr o d u c e n c i m i k r o ko n t r o l e r ó w prześcigają się w oferowaniu coraz ciekawszych rozwiązań. Nowe mikrokontrolery z oferty STMicroelectronics – Turbo mPSD – które są rozwinięciem poprzedniej generacji mikrokontrolerów mPSD3200, mają szansę podbić serca konstruktorów i to nie tylko dlatego, że zastosowano w nich rdzeń zgodny z 8051. Nowe mikrokontrolery wykonano na bazie architektury PSD (Programmable System Device), co oznacza, że w układach zintegrowano nie tylko mikrokontroler, ale także wiele programowanych peryferii. Wszystkie układy mPSD charakteryzują się dwoma niezależnymi pamięciami Flash (o pojemnościach do 256 kB i 32 kB), pamięcią SRAM o pojemności do 32 kB, a także wbudowanym modułem logiki programowalnej z 16 makrokomórkami (do 3000 bramek). Dziś nie ma na rynku innego 8-bitowego mikrokontrolera łączącego w sobie pamięć o tak dużej pojemności, wielu uniwersalnych peryferii i matrycy PLD.
grammable Counter Array), – dwa timery 16-bitowe i kontroler dwóch zewnętrznych przerwań, – bloki nadzorujące, takie jak: watchdog i wykrywanie spadku napięcia zasilania. Duża moc obliczeniowa rdzenia jest osiągana dzięki zastosowaniu podręcznej kolejki rozkazów i pamięci skoków (branching cache). Ponadto, istotne korzyści daje wbudowany interfejs programowania w układzie JTAG, który prócz programowania, umożliwia również emulację, eliminując potrzebę stosowania zewnętrznego emulatora sprzętowego (ICE). M i k r o ko n t r o l e r y Tu r b o mP S D są dostępne w obudowie TQFP o 52 lub 80 wyprowadzeniach. Wersje 80-wyprowadzeniowe mają możliwość połączenia magistral danych i adresów 8032 z zewnętrznymi peryferiami.
Zalety architektury PSD
Zastosowanie w prezentowanych mikrokontrolerach architektury PSD pozwoliło uzyskać im unikatowe właściwości, takie jak: – jedne z największych na rynku (wśród mikrokontrolerów 8-bitowych) pojemności pamięci SRAM i Flash, – podwójny bank pamięci Flash, – elastyczne zarządzanie pamięcią i dostępem do niej, – zintegrowana logika programowalna ogólnego przeznaczenia (PLD), – możliwość programowania przez JTAG.
Rodzina Turbo mPSD
Układy z rodziny Turbo mPSD, oznaczone symbolem mPSD3300, wyposażono w rdzeń 8032 taktowany sygnałem zegarowym o częstotliwości 40 MHz (rdzeń 4-taktowy). Rdzeń osiąga wydajność do 10 MIPS i współpracuje z zestawem peryferii, w których skład wchodzą (rys. 1): – kontroler master/slave magistrali I2C, – interfejs SPI i IrDA, – 8-kanałowy, 10-bitowy przetwornik A/C, – sześć 8-bitowych kanałów PWM, – dwa kanały UART, – do 46 wejść/wyjść ogólnego zastosowania, – 16-bitowy licznik-timer PCA (Pro-
52
Rys. 1
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
3,3 i 5 V Mikrokontrolery mPSD 3300 są dostępne w dwóch wersjach, różniących się między sobą napięciem zasilania. Układy oznaczone sufiksem D są przystosowane do zasilania napięciem 5 V, natomiast wersje oznaczone sufiksem DV napięciem o wartości 3,3 V.
Rys. 2
Orientacja na języki wysokiego poziomu
Turbo mPSD mają pamięć Flash o bardzo dużej pojemności, co wynika z wymagań kompilatorów języków wysokiego poziomu, a także coraz większych wymagań implementowanych programowo interfejsów użytkownika. Są one niezbędne także w urządzeniach, w których trzeba obsługiwać zestawy znaków kilku różnych języków i zapisywać dane. Układy Turbo mPSD charakteryzują się do 288 kB pamięci Flash, podzielonej na dwie części: główną o wielkości od 64 kB do 256 kB i pamięć dodatkową o pojemności 32 kB. Obszary pamięci są całkowicie niezależne, co oznacza, że rdzeń procesora może czytać dane z jednej z nich i jednocześnie wymazywać i zapisywać w drugiej. Obie mogą być użyte do przechowywania tak programu, jak i danych. Ponadto mikrokontrolery zawierają 2, 8 lub 32 kB (w zależności od wersji) pamięci SRAM, której zawartość może być podtrzymywana po zaniku zasilania, co wymaga jednak podłączenia zewnętrznej baterii. Układy z 32 kB pamięci SRAM nadają się doskonale do buforowania dużej ilości danych podczas szybkich transferów kanałami USB i UART i do przechowywania dużych zestawów zmiennych. Żaden inny 8-bitowy mikrokontroler „flashowy” nie ma pamięci SRAM o tak dużej pojemności.
Podwójna pamięć Flash i programowanie w aplikacji
W tradycyjnych procesorach z rdzeniem ‘51 pamięć Flash nie może być czytana w tym samym czasie, gdy jakakolwiek jej część jest wymazywana lub zapisywana, co utrudnia programowanie w aplikacji (IAP). Architektura z dualną pamięcią Flash przynosi rozwiązanie tego problemu (rys. 2). Mikrokontroler może czytać i wykonywać program
54
ulokowany w jednej z pamięci (tzw. loader), wymazując jednocześnie i uaktualniając drugą. Przy jego wykonywaniu program odbiera uaktualniony firmware poprzez USB, UART, modem, I 2 C, SPI lub inny kanał i zapisuje nowy firmware w pamięci Flash, której zawartość jest poddawana modyfikacji. Zapewnia to całkowitą elastyczność, ponieważ projektant może stworzyć własny loader, wykonujący specyficzne zadania. Nie jest to możliwe w przypadku większości dostępnych na rynku, flashowych kontrolerów 8-bitowych, gdzie trzeba stosować dla IAP z góry określony protokół lub kanał komunikacji.
Elastyczne zarządzanie pamięcią – przełamanie tradycyjnych ograniczeń 8051
Programowanie w aplikacji (IAP) tradycyjnych wersji 8051 napotyka jeszcze na inną przeszkodę. Jak wiadomo, posługują się one dwoma przestrzeniami adresowymi: przestrzenią kodu i przestrzenią danych. Jednak wymazywanie i zapisywanie danych jest możliwe tylko w przestrzeni danych. W przestrzeni kodu możliwość taka została celowo zablokowana dla zabezpieczenia przed przypadkowym uszkodzeniem programu. Jak zatem można uaktualnić oprogramowanie w urządzeniu znajdującym się w eksploatacji, jeśli przestrzeń kodowa nie jest zapisywalna? Odpowiedź przynosi tzw. Decode PLD (DPLD), w którą wyposażone są mPSD. Dzięki niej można spowodować, aby zawartość macierzy Flash
(kod programu) podczas uaktualniania firmware’u rezydowała tymczasowo w przestrzeni danych, a po zakończeniu programowania jej zawartości powróciła do przestrzeni kodu. Jest to możliwe dla każdej z dwóch pamięci Flash zintegrowanych w mPSD. Dzięki DPLD projektant ma możliwość podziału pamięci Flash na przestrzeń kodu i przestrzeń danych w proporcjach optymalnych dla danej aplikacji. Niektóre aplikacje potrzebują dużo pamięci programu, inne natomiast, pracujące z dużymi zestawami danych, wymagają, aby większa część pamięci Flash była dostępna w przestrzeni danych. Żaden z innych dostępnych obecnie na rynku kontrolerów pochodnych 8051 nie oferuje takiej elastyczności w zarządzaniu pamięcią. Powszechnym rozwiązaniem jest zastosowanie całego obszaru pamięci Flash wyłącznie jako pamięci programu. Inną barierą, charakterystyczną dla tradycyjnej architektury 8051, jest brak możliwości adresowania obszarów powyżej 64 kB. Wynika to z zastosowania 16-bitowego licznika adresowego. Jak zatem zapewnić dostęp do całej pamięci zintegrowanej w mPSD? Można to łatwo osiągnąć dzięki 8-bitowemu rejestrowi stronicowania zawartemu w DPLD (rys. 3). Rozwiązanie to daje efekt analogiczny do zwiększenia o 8 liczby linii adresowych, przy czym DPLD pozwala projektantowi wyznaczyć wielkość każdej ze stron. Opisane możliwości zapewniają nowym mikrokontrolerom dużą ela-
Tab. 1. Zestawienie pojemności pamięci mikrokontrolerów Typ układu
Pojemność głównej pamięci Flash [kB]
mPSD3312 mPSD3333 mPSD3334 mPSD3354
64 128 256 256
Pojemność pomocniczej pamięci Flash [kB] 16 32 32 32
mPSD3300 Pojemność pamięci SRAM [kB] 2 8 8 32
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 3
styczność, co sprawia, że przeniesienie istniejącej aplikacji z 8051 do mPSD jest bardzo proste i wymaga wprowadzenia nieznacznych zmian w programie źródłowym. W przypadku nowych projektów programista ma całkowitą swobodę przy mapowaniu pamięci.
Programowalna logika ogólnego przeznaczenia
Prócz programowalnej logiki Decode PLD, wszystkie mikrokontrolery mPSD mają 16 makrokomórek programowalnej logiki ogólnego przeznaczenia. Pozwala to projektantowi wyeliminować zewnętrzne układy logiczne PAL, PLD i 74xxx. Architektura wewnętrznej matrycy PLD jest podobna do architektury tradycyjnych układów 22V10. Typowe funkcje realizowane przez PLD to: pomocnicze operacje logiczne (glue logic), maszyny stanu, rejestry przesuwające, liczniki, przełączanie zewnętrznych układów peryferyjnych, interfejsy klawiatury, generatory opóźnienia, dekodery i wiele innych. Konfigurację tej części układu umożliwia firmowe oprogramowanie o nazwie PSDsoft Express, dostępne nieodpłatnie (publikujemy je na CD-EP10/2004B).
Programowanie w systemie z wykorzystaniem interfejsu JTAG
Programowanie w systemie (In-System Programming, w skrócie ISP), w odróżnieniu od programowania w aplikacji (w skrócie IAP, od In-Application Programming) polega na programowaniu lub zmianie programu w mikrokontrolerze bez angażowania jego rdzenia. Zupełnie „pusty” mikrokontroler mPSD może być połączony z komputerem PC przy użyciu standardowego czteroprzewodowego interfejsu JTAG i zaprogramowany w ciągu zaledwie 10 do 25 sekund. Oznacza to, że opracowanie programu w laboratorium może odbyć się szybko i sprawnie, ale także, co ważniejsze, że nie jest potrzebne stosowanie podstawek pod mikrokontrolery, a na linię montażową nie muszą trafiać elementy uprzednio zaprogramowane. Programowanie ISP za pomocą interfej-
Elektronika Praktyczna 10/2004
Fot. 4 su JTAG ułatwia również znakomicie dokonywanie w ostatniej chwili zmian wersji kodu w wyrobie i zarządzanie zapasami. Jest ono wspomagane przez rozmaite narzędzia programujące, takie jak na przykład opracowany przez STMicroelectronics FlashLINK, podłączany do portu równoległego komputera PC. Z kolei ULINK i RLINK, opracowane odpowiednio przez Keil Software i Raisonance, umożliwiają programowanie poprzez port USB, a dodatkowo jeszcze usuwanie błędów (debugowanie). Są również dostępne liczne inne programatory JTAG oferowane przez innych producentów, w tym umożliwiające jednoczesne programowanie wielu mikrokontrolerów.
Zestaw rozwojowy DK3300
Dla ułatwienia opracowania, uruchamiania i optymalizacji projektów wykorzystujących mikrokontrolery Turbo µPSD przygotowano zestaw rozwojowy DK3300 Development Kit. Zestaw (fot. 4) składa się z płyty bazowej, interfejsów sprzętowych i pakietu narzędzi programowych. Projektant ma dostęp do funkcji debugowania dzięki wchodzącym w skład zestawu interfejsom USB-JTAG, nie jest więc konieczne stosowanie kosztownego emulatora sprzętowego. Zestawy DK3300 są dostarczane z ewaluacyjną wersją zintegrowanego środowiska rozwojowego mVision2 firmy Keil Software i pakietem rozwojowym Rkit Development Suite firmy Raisonance. Oba pakiety zawierają kompilator assemblera, linker oraz IDE (zintegrowane środowisko programistyczne), są też specjalnie przysto-
sowane do obsługi funkcji ISP i JTAG dla rodziny mPSD3300. W skład zestawu wchodzi również oprogramowanie PSDsoft Express, a także program demonstracyjny, sterowniki i przykładowe programy.
Zakończenie
Układy Turbo mPSD mają wbudowane wszystkie popularne zasoby stosowane w tradycyjnych aplikacjach mikrokontrolerów 8-bitowych, wymagających zwiększonych pojemności pamięci SRAM i Flash, zintegrowanej logiki pomocniczej i konfigurowalnych interfejsów. W porównaniu z rozwiązaniami konkurencyjnymi umożliwiają one redukcję kosztów i jednocześnie charakteryzują się dodatkowymi możliwościami w postaci programowania ISP poprzez interfejs JTAG, opcji zdalnych uaktualnień poprzez IAP, zapewnienia bezpieczeństwa zawartości pamięci, minimalizacji problemów z zakłóceniami elektromagnetycznymi, niewielkiego poboru mocy, a także niewielkiej powierzchni zajmowanej na płytce (w przypadku obudowy TQFP52 wynosi ona 10 x 12 mm). Kolejnym etapem ewolucji tych interesujących mikrokontrolerów będzie rodzina Turbo Plus mPSD3400, której próbne egzemplarze ukażą się na rynku jeszcze w tym roku. W porównaniu z Turbo mPSD nowa rodzina będzie wzbogacona o interfejs USB 2.0.
Informacje dodatkowe www.stmcu.com, www.st.com/micropsd oraz STMicroelectronics Oddział w Warszawie, ul. Nowogrodzka 11, 00-513 Warszawa, tel.: (22) 5290529
55
P O D Z E S P O Ł Y
Więcej niż procesor, część 1
Rabbit 3000 to szczególne połączenie wielu układów peryferyjnych ze zmodyfikowanym rdzeniem procesora Z180, a wszystko to wykonane w nowoczesnej technologii 0.35 µm. Nie byłoby w tym pewnie nic szczególnego, gdyby nie specyficzny klimat, który udało się stworzyć producentowi wokół tych urządzeń. Składają się na to: doskonała dokumentacja dostępna na stronach WWW, dobre narzędzia programistyczne oraz gotowe, atrakcyjne cenowo moduły mikrokontrolera pozwalające na bardzo szybkie przygotowanie aplikacji, co ma szczególne znaczenie przy produkcji niskoseryjnej oraz w zastosowaniach hobbystycznych.
Rabbit 3000 Atrakcyjność wyrobu zdecydowanie podnosi obsługa protokołów TCP/ IP. Lista układów peryferyjnych Rabbita 3000 jest imponująca, a szczegóły ich obsługi mogą wprawić w zakłopotanie. W praktyce nie musimy się jednak tym wszystkim martwić, ponieważ dostarczany kompilator języka C obsługuje wszystkie zasoby mikrokontrolera za pomocą gotowych funkcji bibliotecznych. Obecnie jest dostępna już druga generacja układów Rabbita. Spróbujmy przyjrzeć się wewnętrznym zasobom tego mikrokontrolera.
Rdzeń Z180
Jak zostało wspomniane, Rabbit 3000 został zbudowany na bazie zmodyfikowanego rdzenia procesora Z180, będącego rozwinięciem Z80. Celem każdej modyfikacji jest ulepszenie pierwowzoru. Skutkiem ubocznym poczynionych poprawek jest brak możliwości wykorzystania narzędzi od Z180. Niektóre instrukcje zostały po prostu usunięte, inne zmienione. Zrezygnowano również z metody bezpośredniego dostępu do pamięci (DMA). Rabbit 3000 ma więc własne narzę-
56
dzia programistyczne uwzględniające wszystkie jego specyficzne aspekty. Można się zastanawiać, dlaczego wybrano rdzeń Z180 zamiast np. nowoczesnego rdzenia RISC-owego. Odpowiedź jest prozaiczna: firma Z-World bazuje na wieloletnim doświadczeniu zdobytym podczas produkcji systemów mikroprocesorowych z procesorem Z180. Wykorzystano między innymi istniejące narzędzia programistyczne, poza tym człowiek łatwo się przyzwyczaja, a procesory z linii 8080/Z80/180 mają ugruntowaną, ponad 20-letnią tradycję. Jeśli dodamy do tego wydajny kompilator języka C, to wcale nie będą nam przeszkadzały nieco długie cykle maszynowe czy wymyślne tryby adresowania.
Zasilanie
Zastosowanie nowych techno logii pozwoliło na zasilanie układu napięciem z zakresu od 1,8 do 3,6 V. Większość wejść toleruje napięcie 5 V, co umożliwia bezproblemową współpracę z 5-woltowym otoczeniem HCT CMOS. Układ pobiera ze źródła zasilania prąd o natężeniu 65 mA przy częstotliwości oscylatora
równej 30 MHz i napięciu zasilania 3,3 V. Pobór prądu jest proporcjonalny do częstotliwości taktowania i napięcia zasilającego. Dla napięcia 1,8 V i częstotliwości 1 MHz wynosi ok. 1 mA i może być obniżony do poziomu 20 mA przy taktowaniu sygnałem 32,768 kHz. Warto również zwrócić uwagę na szeroki zakres temperatury pracy od –55 oC do +85oC. Na rys. 1 przedstawiono schemat blokowy Rabbita 3000.
Taktowanie
Sygnał taktujący rdzeń procesora otrzymywany jest z głównego oscylatora współpracującego z zewnętrznym rezonatorem kwarcowym lub ceramicznym z zakresu od 1,8 MHz do 25 MHz. Częstotliwość ta może zostać wewnętrznie podwojona (50 MHz) lub podzielona przez 2, 4, 6 lub 8. Możliwe jest też taktowanie rdzenia zewnętrznym sygnałem 32,768 kHz, co pozwala na obniżenie poboru prądu do poziomu ok. 20 mA. Sygnał ten steruje również pracą układu watchdoga oraz wyznacza prędkość bodową kanału szeregowego A podczas tzw. „zimnego startu”. Prędkość taktowa-
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 1 Schemat blokowy Rabbita 3000
nia może być zmieniana „w locie”, co znajduje zastosowanie w urządzeniach zasilanych bateryjnie. Na rys. 2 przedstawiony jest system rozprowadzania sygnału zegarowego w układzie Rabbit 3000.
Przestrzeń adresowa
Rabbit 3000 umożliwia fizyczny dostęp do 1 MB pamięci (20 linii adresowych). Sam procesor „widzi” jednak tylko 64 kB pamięci logicznej. Odwzorowaniem pamięci logicznej w fizyczną zajmuje się układ MMU (Memory Mapping Unit). Obszar 64 kB pamięci logicznej podzielony
Rabbit 3000 – 8-bitowy mikrokontroler o wydajności porównywalnej z układami 16-bitowymi.
Elektronika Praktyczna 10/2004
jest na 4 części: Root, Data, Stack, XPC. Każda z nich może być odwzorowana w różne regiony pamięci fizycznej. Wyjątkiem jest segment Root, który zawsze odwzorowany jest w najniższy fragment pamięci fizycznej. Jeśli korzystamy z kompilatora DynamicC, mapowanie pamięci odbywa się w sposób niewidoczny dla użytkownika. Umożliwia to tworzenie aplikacji, których kod przekracza 64 kB. Niestety kompilator nie potrafi wykorzystać dużej przestrzeni adresowej dla alokacji zmiennych statycznych. W rezultacie pozostaje do tego celu jedynie 20-40 kB – o wiele za mało dla niektórych rodzajów aplikacji. W takim przypadku pozostaje jedynie korzystanie z funkcji transferu danych między pamięcią logiczną a fizyczną. Zasady mapowania pamięci wyjaśnia rys. 3.
57
P O D Z E S P O Ł Y
Rys. 4. Interfejs pamięci
Rys. 2. System rozprowadzania sygnału zegarowego
Rys. 3. Mapowanie pamięci
Interfejs pamięci
Układ współpracuje z pamięcią statyczną za pośrednictwem 8-bito-
58
wej magistrali danych, 20-bitowej magistrali adresowej oraz kilku konfigurowalnych linii sterujących. Cykle
dostępu do pamięci mogą być sprzętowo wydłużane (wait states) w celu zapewnienia poprawnej współpracy z wolniejszymi układami. Możliwe jest podłączenie 6 układów pamięci bez stosowania dodatkowych układów dekodujących (glueless interface). Typowa konfiguracja to jeden układ pamięci Flash oraz jedna „kostka” pamięci RAM. Rabbit 3000 posiada osobną przestrzeń adresową dla urządzeń we/wy wielkości 64 kB. Przestrzeń ta posiada osobne instrukcje dostępu oraz osobne wyprowadzenia sterujące /IORD, /IOWR. Dodatkowe sygnały strobujące o programowo ustawianej funkcji są dostępne dla wyprowadzeń portu E. Magistrale adresowa i danych mogą być wspólne z układami pamięci. Istnieje jednak możliwość wykorzystania osobnej magistrali danych i adresowej (skróconej w tym przypadku do 6 bitów) kosztem zmniejszenia liczby wyprowadzeń we/wy. Rozwiązanie takie upraszcza projekt płytki drukowanej oraz wpływa na obniżenie emisji zakłóceń elektromagnetycznych, ponieważ dodatkowa magistrala we/wy jest aktywna tylko podczas operacji we/wy. Interfejs pamięci jest przedstawiony na rys. 4. Daniel Pilecki-Silva
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Zestaw startowy z procesorem ARM Philips LPC2129
dla praktyków Zestaw zawiera w środku wszystko, co jest niezbędne do rozpoczęcia pracy z nowym procesorem. Najważniejszym elementem zestawu jest płytka ewaluacyjna MCB2100 z procesorem ARM Philips LPC2129 oraz CD-ROM z dokumentacją zestawu, przewodnikiem użytkownika, kartami katalogowymi wszystkich istotnych układów scalonych oraz firmowym narzędziem do programowania procesora bezpośrednio przez port szeregowy komputera o nazwie LPC210x ISP Utility. Dla wielu Czytelników prawdziwym „daniem głównym” będzie udostępnione zintegrowane środowisko Keil Software o nazwie uVision w wersji 3 oraz wcześniejszej – 2. Podstawowe funkcje interfejsu uVision (fot. 1) obejmują nie tylko zaawansowany interaktywny edytor kodu źródłowego zintegrowany z doskonałym debugerem i narzędziem do programowania, ale także kompleksowe zarządzanie całym projektem wraz z indywidualną konfiguracją całego środowiska dla każdego z projektów. Jakby tego było mało, uVision oferuje bardzo rozbudowany symulator peryferii w którym nieocenioną rolę pełni funkcja umożliwiająca zdefiniowanie bardziej zaawansowanych „pu-
Rys. 1
Elektronika Praktyczna 10/2004
łapek” (breakpoints) w języku skryptowym opartym o składnię C. Dzięki temu możemy dokładnie prześledzić zachowanie się programu pod kątem zmian, jakie zachodzą w układach peryferyjnych obsługiwanych przez docelowy procesor i tworzony na bieżąco program. Generowanie przerwań zewnętrznych, symulacja odbioru i nadawania danych przez port szeregowy, symulacja napięcia mierzonego na wejściu przetwornika A/C, a nawet tak zawansowane symulacje jak odbiór i nadawanie danych przez I2C, to niespotykane do tej pory funkcje oferowane przez uVision. Do pełni szczęścia dostajemy jeszcze (na licencji GNU) pakiet narzędzi tj. kompilator i linker firmy Cygnus uzupełniony przez rozbudowane biblioteki wielu użytecznych funkcji niezbędnych przy codziennej pracy. Dysponując dowolnym zasilaczem małej mocy (6 V/150 mA), tzw. „prostym” kablem do transmisji szeregowej (DB9F/DB9M) oraz komputerem PC, można od razu przystąpić do zabawy. A tej jest naprawdę sporo, zważywszy na to, co oferuje procesor Philipsa i jakie narzędzia udostępnia producent zestawu.
Płytka startowa
Przejdźmy do krótkiego opisu płytki ewaluacyjnej (fot. 2). Jej głównym elementem jest wyposażony w rdzeń ARM7TDMI procesor z 256 kB wewnętrznej pamięci Flash, 16 kB wbudowanej SRAM, interfejs ISP oraz dodatkowo bardzo przydatny ASP (In-Application Programming), który pracuje dzięki zapisanemu w pamięci Flash-ROM boot-loaderowi. Dodatkowo układ ma wbudowane 2 porty CAN, 4-kanałowy szybki
Otrzymany do testów zestaw firmy Keil jest przeznaczony dla wszystkich entuzjastów mikrokontrolerów z rdzeniem ARM. Układy te są coraz bardziej popularne nie tylko w zastosowaniach profesjonalnych, ale także i na rynku amatorskim. Doskonałe połączenie prostoty podstawowej aplikacji procesora wraz z wyczerpującą dokumentacją zestawu, uzupełnioną multimedialną prezentacją podstawowych jego możliwości, pozwala przełamać „pierwsze lody” i wprowadzić użytkownika w arkana projektowania systemów z wykorzystaniem najnowszych produktów Philipsa.
59
P O D Z E S P O Ł Y
Fot. 2
10-bitowy przetwornik A/C z czasem konwersji ok. 2,44 ms, 2 porty szeregowe (w tym jeden z pełną obsługą sprzętowego handshakingu), dwa porty SPI oraz – jak przystało na Philipsa – szybki sprzętowy interfejs I2C (400 kB/s). Dwa 32-bitowe timery (z 4 niezależnymi komparatorami oraz 4 pułapkami) oraz 6 wyjść typu PWM pozwolą rozwinąć skrzydła wszystkim, którzy projektują układy sterowania silnikami wielofazowymi lub falownikami. Wbudowany w mikrokontroler układ zegara czasu rzeczywistego RTC oraz dodatkowy timer typu watchdog z pewnością okażą się niezbędne zwłaszcza w krytycznych aplikacjach pracujących w czasie rzeczywistym. Ciekawostką jest fakt, iż procesor może współpracować z zewnętrznym oscylatorem z zakresu 1...30 MHz, a dla tych, którzy chcieliby jeszcze szybciej, producent procesora wbudował pętlę fazową PLL, dzięki której przy dołączeniu zewnętrznego sygnału zegarowego z zakresu 10...25 MHz efektywna częstotliwość procesora może wynosić nawet do 60 MHz! Układ LPC2129 posiada wbudowany port JTAG, dzięki któremu jest możliwe śledzenie i debugowanie pracy procesora, a multipleksowany charakter interfejsu (za pomocą pinów portu P1) pozwala na pełne wykorzystanie wszystkich zalet pracy procesora, tak jakby pracował on już w układzie docelowym. Jeśli komuś nie wystarcza praca z JTAG-iem i śledzenie pracy procesora na podstawie stanów zewnętrznych pinów, może skorzystać z dodatkowego interfejsu współpracującego z modułem Embedded Trace Macrocell. To właśnie wbudowany w strukturę ETM pozwala na „prawdziwe” śledzenie pracy procesora, a to dzięki temu, że jest on bezpośrednio podłączony do rdzenia pro-
60
cesora, a nie – jak to zwykle bywa – do jego wewnętrznej magistrali. Niestety płytka ewaluacyjna wchodząca w skład kitu posiada jedynie nieobsadzone punkty lutownicze pod gniazdo interfejsu ETM. Nic nie stoi na przeszkodzie, aby w bardziej zaawansowanych zastosowaniach uzupełnić brakujący element. Rdzeń procesora jest zasilany napięciem 1,8 V, a jego układy peryferyjne 3,3 V, jednak w aplikacjach wymagających komunikacji w środowisku peryferii pracujących na poziomach TTL procesor sobie poradzi, a to ze względu na akceptujące ten zakres uniwersalne porty I/O, których w przypadku LPC2129 mamy aż 46! O ile 32-bitowa magistrala adresowa procesora pozwala na teoretyczne sterowanie obszarem aż 4 GB pamięci czy I/O, o tyle LPC2129 umieszczony 64-wyprowadzeniowej obudowie typu LQFP nie posiada odpowiedniego interfejsu. Ci, których interesują aplikacje wykorzystujące tę cechę, powinni skierować swoją uwagę na bliźniacze procesory LPC2xxx, ale z drugą cyferką „2” (np. LPC2292), co oznacza, że mamy do czynienia z wersją procesora w 144-pinowej obudowie z wyprowadzoną magistralami adresową i danych na zewnątrz układu. Na płytce oprócz układu zewnętrznego pracującego oscylatora znajduje się także kilka innych ciekawych układów, m.in. dwa szybkie (do 1MBd) transceivery wbudowanych w mikrokontroler portów CAN (TJA1040). Na nie mniejszą uwagę zasługują zastosowane na płytce miniaturowe stabilizatory produkcji STMicroelectronics z serii LD1117. Dzięki bardzo niskiemu efektywnemu spadkowi napięć przy konwersji (typowo 1 V) możliwe jest zasilanie całej płytki ewaluacyjnej już napięciem 6 V. Dwa takie stabilizatory zapewniają zasilanie procesora oraz nielicznych układów peryferyjnych, a dodatkowy jeden dostarcza wymaganego do pracy transceiverów CAN napięcia 5 V. Obsługa komunikacji poprzez standardowe porty szeregowe przy zastosowaniu procesora pracującego przy obniżonym napięciu wymagała zastosowania odpowiedniego niskonapięciowego podwójnego nadajnika/odbiornika linii. Jego rolę pełni układ MAX563, jak nietrudno się domyślić – firmy Maxim. Jest 3-woltowa, nieco rozbudowana wersja popularnego transceivera MAX232. Gwarantowana
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 3
szybkość sygnałów na każdym kanale na poziomie 115200 bd, aktywny obwód odbiornika nawet w trybie shutdown (kiedy układ pobiera jedynie 10mA) oraz 3-stanowe wyjścia TTL/CMOS odbiornika pozwalają na bezpieczną komunikację procesora z magistralą RS232. Płytka MCB2100 posiada dodatkowo wizualizację stanów ośmiu wybranych pinów portu P1 procesora w postaci miniaturowych diod LED, sterowanych za pośrednictwem niskonapięciowej „bramy” 74LV244. Sprawdzenie działania wbudowanego w mikrokontroler przetwornika A/C przy pomiarze napięć z zakresu 0...3,3 V jest możliwe dzięki dodatkowemu potencjometrowi z wygodnym pokrętłem, podłączonemu bezpośrednio do wejścia AIN0 przetwornika. Ponadto płytka posiada nieobsadzone gniazda z wyprowadzeniem pierwszych 24 uniwersalnych (typu GPIO) pinów osobno dla portów P0, jak i P1 procesora oraz niewielkie, ale przydatne przy pierwszych próbach prototypowe pole lutownicze o wymiarach 30x20 mm. Do opisanego zestawu dystrybutor dołączył dodatkowy produkt, tym razem firmy Hitex. Jest to alternatywne środowisko m.in. do obsługi narzędzi do uruchamiania złożonych aplikacji, także dla procesorów ARM Philipsa w tym opisanego LPC2129. Zasadniczą, czysto praktyczną cechą
Rys. 4
62
odróżniającą wspomniany już starter-kit Keilaa od produktu Hiteksa jest obecność sprzętowego interfejsu JTAG, który podłączony do komputera poprzez standardowe gniazdo Centronics (LPT) a np. płytkę ewaluacyjną MCB2100 pozwala na pełny sprzętowy debugging w docelowym układzie. Do obsługi interfejsu Hitex proponuje zintegrowane środowisko o nazwie HiTOP-5. Podobnie jak w przypadku produktu Keila, IDE Hiteksa oferuje programiście wygodną, a co najważniejsze, efektywną pracę, tym razem jednak w uruchamianym układzie docelowym. HiTOP-5 oferuje nowoczesny, dla użytkownika systemu Windows, wręcz intuicyjny IDE. Do najistotniejszych cech oprogramowania HiTOOL należy m.in.: – Zaawansowane okno programu źródłowego source window, w którym użytkownik ma nie tylko możliwość śledzenia wykonywania programu w języku wysokiego poziomu, ale także dzięki opcji edit możliwe jest bieżące dokonywanie poprawek z poziomu języka C i rekompilacja bez potrzeby przełączania się do innego narzędzia, a następnie powtórzenie symulacji w układzie docelowym. – Breakpoints, czyli pułapki, zarówno te dotyczące kodu (code breakpoints), jak i danych (data breakpoints) mogą być od teraz nie tylko ustawianie albo kasowane, ale także – co często jest wygodne – dezaktywowane, co w praktyce oznacza, że dana pułapka nadal istnieje i jest widoczna w oknie źródła, lecz debugger nie zatrzyma na niej programu do momentu symulacji, w której programista postanowi ją ręcznie uaktywnić (rys. 3). Bardziej zaawansowane funkcje edytora pułapek umożliwiają także np. zatrzymanie programu, kiedy zaznaczona jako breakpoint instrukcja wykonana zostanie określoną ilość razy, a nawet kiedy określona zmienna w pamięci procesora zostanie zapisana albo wywołana bez względu na znajdujący się w analizowanej linii warunek (rys. 4). Co więcej, każda pułapka może mieć dowolną długość. Oznacza to, że można zdefiniować warunek zatrzymania programu w momencie, kiedy np. podana struktura danych zostanie w całości zapisana lub odczytana przez program. W najbardziej skomplikowanych przypadkach odnajdywania błędów nieoceniona
Rys. 5
może okazać się funkcja, w której programista może zdefiniować całe sekwencje warunków, które po wykonaniu się zatrzymają program (opcja Define sequence w oknie Breakpoints). – Oparta o wygodną strukturę drzewa, rozwijalna lista zawierająca wszystkie składniki całego projektu, począwszy od plików źródłowych, poprzez zadeklarowane przez użytkownika zmienne i zdefiniowane w projekcie funkcje (rys. 5). – Inteligentne okno podglądu watch window, nie tylko samoczynnie wyświetlające po aktywacji zmienne lokalne aktualnie wskazywanej w oknie źródła funkcji, lecz także w przypadku bardziej złożonych struktur, pozwalające rozwinąć wielopoziomowo nawet najbardziej zagnieżdżone zmienne dzięki użyciu struktury drzewa, podobnie jak to ma miejsce w przypadku opisywanego wcześniej widoku workspace (rys. 6); w przypadku bardziej złożonych podglądów użytkownik może podzielić ją na grupy i umieścić każdą z nich w osobnej zakładce okna watch, a nawet nazwać ją według swojego uznania. – Dla wszystkich, którzy chcieliby prześledzić program na poziomie asemblera, HiTOP oferuje m.in. możliwość edycji komend programu „na gorąco” w zakresie, który nie wymaga ponownej kompilacji pro-
Rys. 6
Rys. 7
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 8
gramu (np. kasowanie wybranych instrukcji za pomocą wypełniania ich poleceniem pustym NOP albo ręczna zmiana atrybutów poszczególnych instrukcji), ręczną możliwość zmiany wartości rejestrów oraz flag, niezwykłe łatwą obserwację tych ostatnich dzięki automatycznemu wyróżnianiu w przypadku zmiany ich wartości od ostatniej pułapki. – Inna przydatna opcja oferowana przez HiTop-5 to okno podglądu/edycji rejestrów SFR procesora, w którym w kontrolowany przez środowisko sposób, można zmieniać wartości wybranych rejestrów specjalnych w dozwolonych wartościach, a przy tym z kontekstowym podglądem ich znaczenia i pełnionej w systemie funkcji z wywołaniem podręcznej pomocy o wybranym rejestrze SFR włącznie (rys. 7). – Umożliwiająca bardziej wnikliwe śledzenie programu opcja Trace pozwala np. na wyświetlenie w stosownym oknie (rys. 8) tzw. ramek (frames) w postaci tabeli (line display mode), gdzie dla ułatwienia program automatycznie zaznacza np. wszystkie skorelowane z daną instrukcją wysokiego poziomu ramki, podobnie postępując w przypadku dostępu do danych, instrukcji ich zapisu lub odczytu. Drugim sposobem wyświetlania jest tzw. instruction mode, w którym wszystkie instrukcje pokazane są jako zdekompilowane z przydzielonymi do nich automatycznie operacjami R/W na danych. Dodatkowy tryb podglądu tzw. Raw Trace Mode pokazuje wszystkie ramki w sposób, w jaki zostały one zarejestrowane, czyli każda z linii tabeli pokazuje operacje wykonane przez procesor w trakcie dokładnie jednego cyklu maszynowego. Oprócz podstawowych funkcji podstawowych, takich jak określenie zachowania się bufora trace (ciągły
64
lub cykliczny) czy momentu rozpoczęcia śledzenia, dodatkowo użytkownik ma możliwość powiązania śledzenia ze zdefiniowanymi przez siebie warunkami, np. kiedy śledzone i zapisywane w buforze mają być tylko określone operacje dostępu do zmiennych, albo peryferii, albo rozpoczęcia śledzenia w momencie wystąpienia określonego warunku, np. wykonania żądnej funkcji. – HiTOOL-5 umożliwia także tak zaawansowane funkcje definiowanie własnych widoków (okien) zawierających tylko interesujące programistę dane, np. tylko wybrane rejestry SFR procesora albo obszary peryferii nazwane w tym przypadku tak jak sami sobie tego zażyczymy. Operację tę wykonuje się, definiując za pomocą prostego w składni skryptu, którego intuicyjność i prostota pozwalają na korzystanie nawet przez początkujących użytkowników. Jeszcze nie zdążyliśmy przyzwyczaić się do opisanego środowiska Hiteksa w wersji 5, a producent już zapowiada kolejną wersję swojego produktu, tj. 5.1, w której znajdą się dodatkowo: – możliwość przygotowania pełnej emulacji programu prosto z plików utworzonych przez kompilator i linker (bez konieczności generowania plików dla symulatora), – rozszerzone definiowanie skryptów, gdzie użytkownik ma możliwość ich wykonania poprzez wygodne i szybkie ich wywołanie z dodatkowego elementu typu listbox umieszczonego w wybranym menu przycisków, – tzw. HiSCRIPT log, który na bieżąco informuje użytkownika o wykonywanych w programie poleceniach w zrozumiałym dla niego języku, – w opcji Trace można m.in. dodatkowo wyświetlić okno source pokazujące aktualnie wykonywaną instrukcję w języku wysokiego poziomu, nawet typowe przewijanie okna trace skutkuje jednoczesnym aktualizowaniem zawartości okna kodu źródłowego. Te i wiele innych funkcji znajdziecie w opisywanym pakiecie, do którego zapoznania gorąco namawiam. Sławomir Surowiński
Informacje dodatkowe Zestaw ewaluacyjny z pakietem firmy Hitex udostępniła redakcji firma Silica, tel.: (22) 640-23-51, fax: (22) 640-23-54, silica.
[email protected].
Elektronika Praktyczna 10/2004
S P R Z Ę T
Zasilacze awaryjne firmy Traco Power Z dotychczasowych prezentacji można było wyciągnąć – zresztą słuszne – wnioski, że Traco Power specjalizuje się w produkcji wyłącznie hybrydowych przetwornic impulsowych. W ostatnim czasie oferta produkcyjna tej firmy powiększyła się o nowe urządzenia – zasilacze z podtrzymaniem napięcia wyjściowego i zasilacze zintegrowane ze sterownikami zasilania awaryjnego. Zasilacze z serii TSP są nowością w ofercie produkcyjnej firmy Traco Power. Za ich pomocą można w wygodny sposób budować systemy bezpiecznego zasilania (także tzw. systemy zasilania redundantnego) w konfiguracjach dobrze dopasowanych do potrzeb użytkowników.
Seria TSP – cechy szczególne
Zaczniemy od przedstawienia cech charakterystycznych urządzeń należących do rodziny TSP. W jej ramach są oferowane wysokosprawne
Rys. 1
66
przetwornice AC/DC przystosowane do zasilania napięciem o wartości 85...132 lub 187...246 VAC i częstotliwości z zakresu 47...63 Hz. Przetwornice automatycznie dostosowują się do wartości napięcia zasilającego, zapewniają także stabilizację wartości napięcia wyjściowego w dopuszczalnym zakresie zmian napięcia wejściowego. Moc dostarczana do obciążenia wynosi od 72 do 600 W, w zależności od modelu przetwornicy (zestawienie znajduje się w tab. 1). Typowa sprawność przetwornic wy-
nosi 87 %, a zastosowane w nich rozwiązania układowe zapobiegają konieczności stosowania radiatorów. Napięcie wyjściowe jest stabilizowane i – w zależności od wersji – może mieć wartość 12 lub 24 V. Jakość stabilizacji jest bardzo dobra: zmiana wartości napięcia wyjściowego w funkcji obciążenia i w funkcji zmian napięcia wejściowego nie przekracza (w żadnym przypadku) ±0,5%. Wartość napięcia wyjściowego zmienia się w zależności od temperatury, ale dzięki stabilnej termicznie konstrukcji zmiany te nie przekraczają 0,02%/ K. Wartość tego parametru ma duże znaczenie praktyczne, ze względu na szeroki zakres temperatur pracy, który wynosi –25...+70oC. Amplituda tętnień na wyjściu stabilizatorów nie przekracza 200 mV przy maksymalnej dopuszczalnej wartości prądu wyjściowego, co pozwala stosować przetwornice bez konieczności stosowania dodatkowych filtrów.
Zasilanie redundantne... ...czyli nadmiarowe, polega na zapewnieniu zasilanemu urządzeniu co najmniej dwóch niezależnych źródeł zasilania. Powoduje to zmniejszenie ryzyka niepoprawnej pracy urządzenia, spowodowanej awarią zasilania.
Elektronika Praktyczna 10/2004
S P R Z Ę T Przetwornice z serii TSP wyposażono w wejścia zdalnego sterowania (za pomocą którego można ją włączyć i wyłączyć) oraz wyjścia sygnalizacyjne DC-OK (sygnalizujące poprawną wartość napięcia wyjściowego) oraz Power Good, które służy do sygnalizacji poprawnego zasilania na wejściu. W zależności od modelu, niektóre typy przetwornic są wyposażone w dodatkowe wyjścia sygnalizacyjne oraz optyczne sygnalizatory stanu pracy przetwornicy.
Moduły redundancji
Za pomocą modułu o symbolu TSP-REM360 i dwóch zasilaczy z rodziny TSP (o mocy do 360W) można stworzyć system zasilania rendundantnego (rys. 1). Stosowanie takich układów zapewnia zwiększenie pewności zasilania, wymaga to jednak zasilenia każdego konwertera AC/DC z osobnego źródła. Moduł TSP-REM360 wyposażono w optyczną sygnalizację redundancji zasilania i – dodatkowo – w wyjście przekaźnikowe, którego styki są zwierane, gdy obydwa lub jedno ze źródeł zasilających nie działają poprawnie.
Moduły współpracujące z akumulatorami
Modele oznaczone symbolem TSP-BCM24 spełniają rolę podobną do UPS-ów z wyjściem stałoprądowym. Rolę awaryjnego źródła zasilania spełnia akumulator o napięciu 24 VDC, który jest doładowywany przez przetwornicę i automatycznie dołączany do obciążenia po zani-
Elektronika Praktyczna 10/2004
Rys. 2
Tab. 1. Zestawienie podstawowych parametrów przetwornic AC/DC z rodziny TSP Typ
Maksymalna moc wyjściowa [W]
Napięcie wyjściowe [VDC]
Prąd wyjściowy [A]
TSP070-112 TSP090-124 TSP090-124N TSP140-112 TSP180-124 TSP360-124 TSP600-124
72 90 90 144 180 360 600
12 24 24 12 24 24 24
6,0 3,8 3,8 12,0 7,5 15,0 25,0
ku napięcia sieciowego (rys. 2). Maksymalna moc wyjściowa wynosi 360 W przy napięciu 24 VDC. Moduły TSP-BCM24 wyposażono w trzy przekaźnikowe wyjścia sygnalizacyjne oraz trzy sygnalizatory optyczne (sygnały: DC-OK Input, DC-OK Output, BATT-OK).
Moduły do podtrzymania napięcia wyjściowego
Moduły TSP-BFM24 o maksymalnej mocy wyjściowej 600 W są przystosowane do krótkotrwałego podtrzymywania napięcia zasilającego obciążenie po odłączeniu zasilania sieciowego. Ich najważniejszym
67
S P R Z Ę T sieciowego przez 30 s pozostaje w stanie nieaktywnym (ładowane są kondensatory). Przejście do stanu aktywnego jest sygnalizowane za pomocą wyjścia Ready, a zanik napięcia sieciowego jest sygnalizowany za pomocą wyjścia Power Fail. Obydwa wymienione wyjścia wyposażono w transoptory, a ich stany są sygnalizowane za pomocą dwukolorowej diody LED.
Podsumowanie
Rys. 3
elementem jest bateria kondensatorów o dużej pojemności (rys. 3), które umożliwiają utrzymanie poprawnego napięcia wyjściowego przez ok. 200 ms przy prądzie
68
wyjściowym 25 A i ok. 4 s przy prądzie obciążenia 1,2 A. Z powodu dużej pojemności wbudowanych kondensatorów buforujących, moduł TSP-BFM24 po włączeniu zasilania
Przetwornice i moduły prezentowane w artykule są pierwszymi w ofercie Traco Power urządzeniami przystosowanymi do wygodnego budowania systemów zasilania o obniżonej awaryjności. Wydaje się, że oferta przedstawiona przez producenta spełnia typowe wymagania większości aplikacji przemysłowych, wydatnie zwiększając komfort pracy ich projektantów. Andrzej Gawryluk Dystrybutorem firmy Traco Power jest Amtek spol. s r.o., tel. (22) 866 41 40,
[email protected], www.amtek.pl.
Elektronika Praktyczna 10/2004
K U R S
Niezbędnik dla amatorów i profesjonalistów
W głośnikowym żywiole, część 12 Obudowy bas-refleks, część 4 Poprzedni odcinek cyklu, poświęcony konstruowaniu obudów basrefleks, zakończyliśmy następującymi wnioskami: nie dysponując programami komputerowymi ustalającymi dla dowolnego strojenia charakterystyki impulsowe i obciążenia amplitudowego, musimy zdać się na przedstawione miesiąc temu tabele i ogólne wskazówki. Stosowanie się do nich pozwoli zrealizować strojenia poprawne, chociaż niekoniecznie najlepsze z możliwych. Strojenie niekonwencjonalne, ale oparte na śledzeniu wszystkich charakterystyk, może okazać się jeszcze lepsze. Takimi eksperymentami zajmiemy się jednak za dwa miesiące, a w ciągu dwóch najbliższych odcinków przedstawimy sposoby obliczenia parametrów samego tunelu, dla danej częstotliwości rezonansowej i objętości obudowy. W tunelu i w obudowie
Przypomnijmy w skrócie procedurę – dysponując głośnikiem o danej wartości Qts (skorygowanej ze względu na rezystancje szeregowe), wybieramy jeden z dostępnych dla tej dobroci modeli strojenia. Współczynnik alfa pozwala obliczyć objętość obudowy (musimy w tym celu znać VAS), a współczynnik H częstotliwość rezonansową systemu bas-refleks. Częstotliwość rezonansowa obudowy, jak już wiemy, zależy od podatności (powietrza w obudowie) i masy (powietrza w otworze). Przypomnijmy też, jeszcze z zajęć poświęconych obudowie zamkniętej, że podatność powietrza w obudowie zależy nie tylko od jego objętości, ale i od powierzchni, jaka na nią działa – im jest ona większa, tym podatność jest mniejsza. Dlatego, im większa powierzchnia otworu, tym mniejsza podatność powietrza w obudowie o danej objętości, a w ślad za tym wyższa częstotliwości rezonansowa. Z drugiej jednak strony, im większa powierzchnia otworu przy tunelu o danej długości, tym większa masa drgająca powietrza, a więc... niższa częstotliwość rezonansowa. Ostatecznie jednak wzrost powierzchni otworu powoduje wzrost częstotliwości rezonansowej, ponieważ na zmniej-
Elektronika Praktyczna 10/2004
szenie podatności wpływa on w drugiej potędze, a na zwiększenie masy liniowo. Mając określoną objętość obudowy, możemy regulować częstotliwość rezonansową obudowy zmianami powierzchni otworu i zainstalowanego w nim tunelu. Z tego wynika, że x-razy większa powierzchnia otworu będzie wymuszała około x-razy większą długość tunelu (rys. 44). Układ bas-refleks może funkcjonować i bez tunelu, i czasami konstrukcje takie można spotkać. Chociaż i sama grubość ścianek obudowy tworzy tunel, to nawet przy nieskończenie cienkich ściankach (czyli przy nieskończenie krótkim tunelu), pojawi się masa drgająca w otworze – będzie ona miała kształt „soczewki”. Wybrzuszenie powietrza drgającego po obydwu stronach otworu pozostaje i przy założonym tunelu i powoduje wprowadzenie we wzorach odpowiedniej poprawki, zwanej poprawką wlotu i wylotu. Wzór określający z dobrym przybliżeniem częstotliwość rezonansową obudowy bas-refleks, w zależności od jej objętości, powierzchni otworu i długości tunelu, jest następujący:
gdzie: Vb – objętość obudowy [cm3] Lv – długość tunelu [cm] Sv – powierzchnia tunelu [cm2] Przy określonej objętości obudowy, zadaną częstotliwość rezonansową możemy więc osiągnąć różnymi kombinacjami powierzchni otworu i długości jego tunelu. Co jest lepsze – mały otwór z krótkim tunelem czy duży otwór z długim tunelem? Najlepszy byłby duży otwór z krótkim tunelem... otwierają się kolejne zagadnienia.
Otwór duży czy mały?
Niegdyś dość rozpowszechnione było mniemanie, że duże otwory, spotykane np. w konstrukcjach estradowych, pracują efektywniej, ale bardziej zaznaczają zjawisko rezonansu bas-refleks i w ślad za tym są narażone na gorsze charakterystyki impulsowe, a małe otwory są rozwiązaniem „delikatniejszym”, lepiej dostosowanym do wysokiej klasy urządzeń hi-fi. Powody stosowania mniejszych otworów w domowych zespołach głośnikowych są jednak zupełnie inne. Duża powierzchnia tunelu jest jednoznacznie korzystna ze względu na liniowość pracy układu rezonansowego. Tym razem nie chodzi o liniowość częstotliwościowej charakterystyki przetwarzania, ale o liniowość w funkcji mocy. Otwór powinien przenosić zawartą w nim masę powietrza bez zahamowań, a te powstają, jeżeli wymuszamy zbyt duże prędkości przepływu. Otwór większy pod tym względem zawsze będzie lepszy, zwłaszcza jeżeli bierzemy pod uwagę wykorzystywanie głośnika w pełnym zakresie dopuszczalnych dla niego wychyleń. Dopiero bardzo duże otwory, o powierzchni 1/ 4 powierzchni głośnika i większe, pozwalają uznać problem nieliniowości za rozwiązany. Ale poziom zniekształceń generowanych przez nieliniowość działania układu rezonansowego zależy od tego, w jakim podzakresie
69
K U R S
Rys. 44. Taką samą częstotliwość rezonansową obudowy o określonej objętości możemy uzyskać za pomocą otworów i tuneli o różnych wymiarach. Dla utrzymania określonej częstotliwości rezonansowej, wraz ze zwiększaniem powierzchni otworu, należy proporcjonalnie zwiększać długość tunelu
wychyleń membrany się znajdujemy; jeżeli więc mając duży głośnik o dużej amplitudzie liniowej, najczęściej używamy go do słuchania przy umiarkowanych poziomach wysterowania, to możemy stosować mały otwór, bo problemy „przesterowania” układu rezonansowego nie będą się często ujawniały. W opozycji do tej sytuacji są właśnie instalacje nagłośnieniowe, które bezwzględnie wymagają dużych otworów, gdyż często pracują na „pełnych obrotach”. Dlaczego jednak, na wszelki wypadek, nie stosuje się dużych otworów również w konstrukcjach do użytku domowego? Już się domyślamy, dlaczego: nie z powodu ich nadmiernej „rezonansowości”, bo takie zjawisko nie istnieje (o ile ustalona jest prawidłowa częstotliwość rezonansowa w obudowie o prawidłowej objętości), ale z konieczności – bezkompromisowo duży otwór bardzo często wymuszałby zastosowanie bardzo długiego tunelu (dla ustalenia określonej częstotliwości rezonansowej w obudowie o określonej objętości), trudnego do zrealizowania w praktyce. Oczywiście, jeżeli powiększymy otwór, nie wydłużając tunelu, to przesuniemy w górę częstotliwość rezonansową, i jeżeli wcześniej była ona prawidłowa, to teraz będzie za wysoka, a za wysoka częstotliwość rezonansowa pogarsza zarówno charakterystykę przetwarzania, wywołując na niej podbicie, jak i charakterystykę impulsową. Zamieszczony niegdyś w książce A. Witorta „Głośniki i zespoły głośnikowe” (WKiŁ 1976) rysunek zatytułowany „charakterystyki przenoszenia w zależności od wymiarów otworu”, pokazujący zwiększające się podbicie na charakterystyce wraz ze zwiększaniem powierzchni otworu, poważnie wpro-
70
wadzał w błąd – bezpośrednim powodem tego podbicia było przestrajanie obudowy w stronę wyższych częstotliwości rezonansowych, a nie zwiększanie powierzchni otworu. Na marginesie można jeszcze dodać, że małe otwory, właśnie na skutek swojej „niewydolności”, są pomocne w ograniczeniu wychyleń membrany przy najniższych częstotliwościach, poniżej częstotliwości rezonansowej obudowy. Niezdolne do przeniesienia dużej masy powietrza, hamują jego ruch w całym układzie, i poprzez to hamują ruch samej membrany. Oczywiście właśnie to jest równocześnie powodem powstawania zniekształceń.
Rezonanse pasożytnicze
Na otwory o umiarkowanej powierzchni nie należy się jednak obrażać. Niezależnie od kłopotów z zainstalowaniem długich tuneli, tunele takie wprowadzają swoje własne problemy – pasożytnicze rezonanse „piszczałkowe”. Jeżeli tunel jest dłuższy od swojej średnicy, zaczyna być narażony na powstawanie w nim fal stojących między wlotem i wylotem – właśnie rezonansów „piszczałkowych” (rys. 45). Przypomnijmy, że dla utrzymania określonej częstotliwości rezonansowej, wraz z powiększeniem powierzchni otworu, musimy proporcjonalnie wydłużyć tunel. Ale dwukrotne zwiększenie powierzchni otworu oznacza zwiększenie jego średnicy tylko o pierwiastek z dwóch i jeżeli równocześnie wydłużamy dwukrotnie tunel, to stosunek średnicy i długości tunelu ulega zmniejszeniu, czyli pogorszeniu ze względu na podatność na fale stojące. Istotny jest nie tylko stosunek średnicy otworu do długości tunelu, określający narażenie takiego ustroju akustycznego na powstawanie w nim fal stojących, ale i sama długość tunelu, określająca, w jakim zakresie częstotliwości zjawiska rezonansowe mogą zaistnieć. Należy to skonfrontować z zakresem częstotliwości, w jakim pracuje głośnik. Jeżeli projektujemy obudowę dla subwoofera, który będzie pracował najwyżej do 150 Hz, to potencjalne rezonanse leżące powyżej nie muszą nas interesować – nie będą powstawać, bowiem nie będą pojawiały się sygnały, które mogłyby je pobudzać. W takiej sytuacji tunel może mieć długość nawet metra, bowiem półfalowy rezonans przypada
Rys. 45. W otworach o bardzo małej powierzchni (w stosunku do powierzchni membrany głośnika), na skutek wymuszania dużych prędkości przepływu powietrza, pojawia się zjawisko kompresji i nieliniowość działania układu rezonansowego, ale w tunelach znacznie dłuższych niż średnica otworu powstają rezonanse pasożytnicze
w nim na ok. 170 Hz. Jeżeli jednak chcielibyśmy uniknąć rezonansów piszczałkowych w obudowach głośników nisko-średniotonowych, wówczas zakładając, że zakres ich pracy sięga do ok. 3 kHz, tunel nie powinien mieć więcej niż 6 cm – warunek bardzo kłopotliwy, bowiem zwykle z obliczeń, wraz z „przyzwoitą” powierzchnią otworu, wynikają jednak większe długości. Starajmy się wtedy uniknąć następnego rezonansu, pojawiającego się wraz z ułożeniem się w tunelu całej fali, która dla 3 kHz ma długość ok. 12 cm. Często i to jest trudne do spełnienia. Ostatecznie jednak rezonanse pasożytnicze w tunelach są uznawane za mniej szkodliwe niż silna kompresja powodowana przez zdecydowanie zbyt małe otwory. Należy więc szukać kompromisu. Czasami będzie się on wiązał z lekkim przestrojeniem obudowy w kierunku częstotliwości wyższych, co ułatwia założenie większego otworu przy krótszym tunelu, ale bez kontroli charakterystyk za pomocą symulacji komputerowych nie należy tym sposobem wykraczać dalej niż o 15% wobec wartości wynikających z obliczeń. Trudności w realizacji otworu i tunelu mogą też być powodem dokonania wyboru określonego modelu strojenia, który okaże się pod tym względem najmniej wymagający.
Liczba otworów
Jedną z płonnych nadziei rozwiązania tych problemów jest koncepcja stosowania większej liczby mniejszych otworów, które jakoby pozwolą „oszukać” obudowę – gdyby liczyć dostrojenie każdego otworu z tunelem oddzielnie, a potem dowolnie zwiększać ich liczbę dla
Elektronika Praktyczna 10/2004
K U R S
Rys. 46. Zamiast jednego otworu, można zastosować kilka mniejszych, i ewentualnie zróżnicować długość ich tuneli, co pomoże rozproszyć częstotliwości rezonansów pasożytniczych, ale nie pozwoli uzyskać z jednej obudowy różnych częstotliwości rezonansowych bas-refleks
zwiększenia całkowitej powierzchni... Oczywiście obudowa oszukać się nie da, „widzi” ona od razu całkowitą powierzchnię otworów i do niej „dostosowuje” swoją podatność. Tak samo nie można bez konsekwencji zainstalować kilku głośników w obudowie, której objętość została policzona dla jednego. Inny nieskuteczny pomysł polega na zastosowaniu kilku otworów w celu uzyskania kilku różnych częstotliwości rezonansowych z jednej obudowy – otwory mają więc różną średnicę, albo choćby różnej długości tunele, co miałoby każdy z nich dostrajać do innej częstotliwości rezonansowej, a korzyść z tego płynąca miałaby polegać na osiągnięciu równomierniejszej charakterystyki przetwarzania (tak jakby z dobrze dostrojonego pojedynczego bas-refleksu nie można było tego uzyskać). Tutaj błąd w rozumowaniu jest podobny – powstaje bowiem jeden układ rezonansowy, o podatności określonej przez objętość obudowy i sumę powierzchni otworów, i masie drgającej będącej sumą mas powietrza we wszystkich otworach (rys. 46). Zastosowanie kilku mniejszych otworów zamiast jednego dużego nie jest jednak błędem i w niektórych sytuacjach może przynieść pewne korzyści. Zanegowaliśmy możliwość uzyskania tą drogą różnych częstotliwości rezonansowych systemu bas-refleks, ale przy różnej długości tunelach jak najbardziej możliwe jest przecież uzyskanie różnych
Rys. 47. Na ostrych krawędziach otworu powstają szumy turbulencyjne, wyprofilowania na obydwu końcach tunelu pozwalają znacząco zredukować to zjawisko
72
częstotliwości rezonansów piszczałkowych, czyli ostatecznie ich rozproszenie, co jest korzystne. Obliczenie systemu zawierającego kilka otworów o takiej samej powierzchni, ale z tunelami o różnej długości, jest bardzo łatwe – w obliczeniach uwzględniamy całkowitą powierzchnię otworów i średnią arytmetyczną długości tuneli. S t o s o w a n i e k i l ku m n i e j s z y c h otworów może być też czasem podyktowane miejscem, jakie mamy do dyspozycji, zwłaszcza w przypadku małych konstrukcji podstawkowych, gdy otwór (otwory) chcemy wyprowadzić na przedniej ściance. Rzeczywistym i radykalnym rozwiązaniem omawianego wcześniej problemu kłopotliwie długiego tunelu, lub niekorzystnie małego otworu dla uzyskania określonej częstotliwości rezonansowej, jest zastosowanie membrany biernej, którą zajmiemy się później.
Kształt otworu
Najczęściej spotykane są otwory okrągłe. Ich podstawową zaletą akustyczną jest najlepszy stosunek powierzchni do obwodu, co oznacza, że możliwie najmniejsza część przepływającego powietrza znajduje się w pobliżu ścianek otworu, gdzie powstają szumy i turbulencje. Dopuszczalne są jednak i inne kształty otworów, chociaż w przypadku otworów o kształcie szczelin, ze względu na trudną do obliczenia masę powietrza „przyklejającego” się do ścia-
nek tunelu, częstotliwość rezonansową tak konstruowanego bas-refleksu trudno jest obliczyć i bezwzględnie należy przeprowadzić pomiary. Jednocześnie korygowanie długości tunelu zbudowanego w takiej postaci jest trudniejsze niż w przypadku tuneli okrągłych, gdzie otwory kupione jako gotowe elementy możemy z łatwością wyjmować i wymieniać (ewentualnie nasadzać na nie przedłużenia). Zalety otworów okrągłych s p o w o d o w a ł y w ł a ś n i e , ż e o b e cnie dostępny jest bardzo duży ich asortyment, o różnych średnicach, długościach, sposobach mocowania i wyprofilowaniach. Wyprofilowanie wylotu w postaci zaokrąglenia krawędzi stało się modne ok. dziesięciu lat temu, a obecnie jest w zasadzie obowiązkowe. Istotnie, wyprofilowanie takie jest korzystne nie tylko estetycznie i teoretycznie – znacznie zmniejsza turbulencje, jakie powstają na krawędziach, ale warto zadbać o to, aby zostało wykonane na obydwu końcach tunelu (rys. 47). Wykonanie ładnego wyprofilowania własnym sumptem przy otworze innym niż okrągły w warunkach amatorskich nie będzie łatwe. Natomiast spotykane czasami lekko stożkowe przekroje tuneli („wylot” ma powierzchnię o kilkadziesiąt procent większą niż „wlot”), mające zapobiegać powstawaniu wcześniej omawianych rezonansów piszczałkowych, nie są skuteczne, chociaż żadnej szkody nie przynoszą. Ostatecznie stosowanie otworów innych niż okrągłe powinno być konkretnie umotywowane; w standardowym przypadku otwory okrągłe będą najlepsze i najwygodniejsze. Otwory prostokątne, z tunelami ukształtowanymi jak krótkie labirynty (biegnące wzdłuż dolnej ścianki, a z tyłu zaginające się do góry wzdłuż tylnej) ułatwiają uzyskanie długich tuneli, ale jak wspomniano, są trudne do obliczenia (rys. 48). Andrzej Kisiel
Rys. 48. Najbardziej rozpowszechniony jest otwór okrągły, łatwy do obliczenia i ułatwiający eksperymenty z dostrojeniem poprzez wymianę tuneli. Otwór prostokątny, wykonany jako szczelina bezpośrednio przy dolnej ściance obudowy, ułatwia ukształtowanie długiego tunelu – labiryntu
Elektronika Praktyczna 10/2004
S P R Z Ę T
TPS2000 Przyrządy pomiarowe oferowane przez firmę Tektronix od lat należą do kategorii high-end, ustalając górną granicę standardu w swojej klasie. Od kilku lat możemy zaobserwować prawidłowość polegającą na tym, że Tektronix wprowadza na rynek oscyloskopy o najszerszym paśmie, które zwiększa się o 1 GHz rocznie.
Obecnie rekord należy do modelu TDS6804B: pasmo podane w katalogu 8 GHz, uzyskiwane w testach producenta 8,6 GHz. Nie oznacza to jednak, że Tektronix skupia się jedynie na przyrządach, o których istnieniu większość Czytelników może się jedynie dowiedzieć z notatek prasowych. Jedną z tegorocznych nowości w ofercie oscyloskopów jest seria TPS2000 (fot. 1), nie mająca odpowiednika wśród produktów innych firm. Tym co wyróżnia oscyloskopy nowej serii TPS są cztery izolowane kanały. Wszystkie wejścia są galwanicznie odizolowane od siebie oraz od pozostałych obwodów przyrządu. Pozwala to na wykonywanie w bezpieczny sposób pomiarów z tzw. potencjałem pływającym (floating), co może być szczególnie przydatne na przykład podczas pomiarów układów zasilających. Ze względu na liczbę dostępnych wejść pomiary można wykonywać w obwodach wielofazowych. Wcześniejsza seria oscyloskopów z izolowanym wejściem (THS720/THS730) umożliwia pomiary jedynie w dwóch kanałach. Jedną z metod uzyskania izolacji galwanicznej w szerokim paśmie jest podzielenie go na dwa podzakresy. Dla prądów stałych i niskich częstotliwości izolację
Fot. 1
Elektronika Praktyczna 10/2004
Nowa rodzina oscyloskopów firmy
zapewnia transoptor. Dla wysokich częstotliwości wykorzystuje się transformator. Takie rozwiązanie stosowane było np. w izolatorze A6902. W oscyloskopach TPS zastosowano opatentowaną przez Tektronix technologię IsolatedChannel, dzięki której galwaniczne odseparowanie obwodu wejściowego jest możliwe przy użyciu tylko jednego modułu pracującego w całym paśmie przyrządu. Ideę takiej konstrukcji przedstawiono na rys. 2. W praktyce pomiarowej zachodzi czasem konieczność obserwacji sygnału pomiędzy dwoma punktami, z których każ-
dy znajduje się na wysokim potencjale względem ziemi. W tradycyjnej konstrukcji oscyloskopu jedna z końcówek sondy pomiarowej połączona jest z masą, metalowym chassis oraz zerem ochronnym. W takich warunkach bezpośrednie połączenie sondy z mierzonym obwodem nie jest możliwe. Jednym z rozwiązań stosowanych w praktyce jest zasilenie oscyloskopu poprzez transformator separujący. Jakkolwiek pomiar będzie możliwy, jednak powiązany zostanie z dwoma niedogodnościami. Po pierwsze wysoki potencjał punktu pomiarowego wystąpi również na metalowym
73
S P R Z Ę T Tab. 1. Zestawienie podstawowych cech oscyloskopów z serii TPS2000 Liczba kanałów izolowanych Pasmo Częstotliwość próbkowania Rozdzielczość przetwornika AC Rekord akwizycji Wyświetlacz FFT RS232, Centronics Compact Flash Zasilanie
Rys. 2
Rys. 3
Fot. 4 elementach oscyloskopu. W szczególności napięcie pomiędzy ziemią a metalową końcówką sondy pomiarowej może być niebezpieczne dla obsługi (zilustrowano to na rys. 3). W takich warunkach zamiast skupić się nad tym co się mierzy, podstawową kwestią będzie jak zmierzyć i przeżyć. Drugim mankamentem może okazać się stosunkowo duża pojemność pomiędzy ziemią a mierzonym obwodem. Będzie tak dlatego, ponieważ jeden z punktów pomiarowych jest połączony z masą oscyloskopu. Ta zaś będzie jedną z okładek kondensatora, którego drugą okładkę stanowić będzie ziemia. Taka pojemność oczywiście spowoduje zafałszowanie pomiaru, zwłaszcza, gdy dotyczy on sygnałów z szybko
74
TPS2012 2 100 MHz 1 GS/s
narastającymi zboczami. W tym zakresie oscyloskopy serii TPS oferują możliwość wykonania pomiarów w warunkach całkowicie bezpiecznych dla mierzącego także przy zasilaniu przyrządu z sieci energetycznej. Wejścia są bowiem galwanicznie odizolowane od pozostałych obwodów przyrządu. W szczególności rozwiązanie takie pozwala również na zminimalizowanie pojemności występującej pomiędzy wejściem pomiarowym a ziemią. W omawianym przypadku wynosi ona ok. 37 pF. W przypadku oscyloskopów cyfrowych jednym z ważniejszych parametrów jest częstotliwość próbkowania. Teoretycznie powinna ona być co najmniej dwukrotnie wyższa od pasma przyrządu. Jeżeli jednak sygnał mierzony jest powtarzalny, to można pozwolić sobie na luksus próbkowania z mniejszą częstotliwością. Podczas kolejnych cykli wyzwolenia i rejestracji zgromadzona zostanie odpowiednia liczba próbek. Jest to próbkowanie w tzw. czasie ekwiwalentnym. Często jednak mamy do czynienia z sytuacją kiedy pomiar dotyczy sygnału jednorazowego i niepowtarzalnego. Wówczas wymagana liczba próbek musi być zgromadzona tylko podczas jednego cyklu akwizycji. Mówimy wtedy o próbkowaniu w czasie rzeczywistym, a oscyloskop umożliwiający taki pomiar określamy mianem DRT (Digital Real Time oscilloscope). W praktyce nazwa ta odnosi się do oscyloskopów wyposażonych w przetwornik analogowo-cyfrowy o częstotliwości próbkowania co najmniej pięciokrotnie wyższej od pasma analogowego. Seria TPS umożliwia próbkowanie do 2 GS/s w czasie rzeczywistym w każdym z kanałów. Przy maksymalnym paśmie 200 MHz zapewnia to dziesięciokrotne nadpróbkowanie. Dzięki temu podczas tylko jednego wyzwolenia może być zgroma-
TPS2014 4 100 MHz 1 GS/s 8 bitów 2500 próbek kolorowy LCD, ¼ VGA standard standard standard sieć energetyczna, bateria
TPS2024 4 200 MHz 2 GS/s
dzona informacja o większości istotnych składowych mierzonego sygnału. Nie zawsze podczas wykonywania pomiarów mamy możliwość podłączenia oscyloskopu do sieci zasilającej. Wówczas nieocenioną zaletą okaże się zasilanie bateryjne. Oscyloskopy z serii TPS posiadają możliwość zasilania z baterii zapewniających pracę przez 8 godzin. Ponieważ jednak do zasilania wymagana jest tylko jedna bateria (fot. 4), okres nieprzerwanej pracy można wydłużyć. Dzięki wyposażeniu oscyloskopu w dwa gniazda bateryjne jest możliwa wymiana rozładowanej baterii bez przerwy w zasilaniu. Dysponując dwoma zestawami baterii możemy wykonywać pomiary przyrządem zasilanym z jednej podczas gdy druga jest w tym czasie doładowywana. Dedykowane serii TPS oprogramowanie TPS2PWR1 pozwala na łatwe przeprowadzanie i dokumentację zestawu takich pomiarów jak pomiary mocy czynnej i pozornej, analizy harmonicznych, określanie strat mocy występujących w elementach przełączających (np. tranzystorach w zasilaczach impulsowych). Wszystkie modele wyposażone są w kolorowy wyświetlacz ciekłokrystaliczny (320x240 pikseli) ułatwiający przeprowadzanie pomiarów w kilku kanałach jednocześnie. Dodatkowo połączenie z komputerem możliwe jest poprzez port szeregowy, stanowiący wyposażenie standardowe. Podstawowe parametry oscyloskopów TPS są zawarte w tab. 1. Andrzej Kamieniecki
[email protected]
Informacje dodatkowe Więcej informacji można uzyskać w firmie Tespol, tel.: (71) 783-63-60, www.tespol.com.pl
Elektronika Praktyczna 10/2004
M I N I P R O J E K T Y Wspólną cechą układów opisywanych w dziale "Miniprojekty" jest łatwość ich praktycznej realizacji. Zmontowanie układu nie zabiera zwykle więcej niż dwa, trzy kwadranse, a można go uruchomić w ciągu kilkunastu minut. Układy z “Miniprojektów” mogą być skomplikowane funkcjonalnie, lecz łatwe w montażu i uruchamianiu, gdyż ich złożoność i inteligencja jest zawarta w układach scalonych. Wszystkie układy opisywane w tym dziale są wykonywane i badane w laboratorium AVT. Większość z nich znajduje się w ofercie kitów AVT, w wyodrębnionej serii “Miniprojekty” o numeracji zaczynającej się od 1000.
Modułowy interfejs USB<->RS232 Korzystanie z portu USB, od kiedy pojawiły się scalone interfejsy tej magistrali, stało się prostsze niż kiedykolwiek wcześniej. Na łamach EP pojawiło się już kilka urządzeń wykorzystujących tego rodzaju układy i kolejny projekt wywoła być może pytanie Czytelników – po co? Wychodząc z założenia, że lepiej mieć większy wybór niż żaden prezentujemy niezwykle prosty układ interfejsu USB-RS232. Rekomendacje: polecamy tym użytkownikom USB, którzy chcą zminimalizować nakład pracy podczas samodzielnego budowania dwukierunkowego interfejsu.
Zastosowanie takiego interfejsu jest niezbędne w przypadku, gdy dołączane do komputera urządzenie wyposażone jest tylko w port szeregowy, natomiast w komputerze brak wolnego złącza COM. Nowe komputery coraz częściej są sprzedawane bez portów szeregowych RS232, natomiast mają instalowane po kilka złącz USB. Ich zaletą jest duża szybkość przesyłania danych (jak na interfejs szeregowy), a także możliwość dołączania i odłączanie urządzeń zewnętrznych przy włączonym komputerze. Zaletą przedstawianego układu jest jego niezwykła prostota. Podstawowymi elementami układu są dwa moduły, które były już opisane w EP11/2003: konwerter USB-RS232 TTL i moduł konwertera sygnałów RS-T T L n a s y g n a ł y R S 2 3 2 o standardowych poziomach ±12 V. Pierwszy z konwerterów zbudowany został na popularnym układzie firmy FTDI – FT8U232BM, natomiast drugi na odpowiedniku układu MAX232. Na rys. 1 pokazano schemat połączeń pomiędzy modułami. W tym miejscu należy dodać, że taka konfiguracja odpowiada maksymalnie uproszczonemu RS-owi, w którym obsługiwane są jedynie sygnały danych na liniach TxD i RxD. W więk-
Rys. 1. Schemat elektryczny interfejsu USB<->RS232
Elektronika Praktyczna 10/2004
szości przypadków jest to zupełnie wystarczające. Układ scalony w module konwertera poziomów umożliwia obsłużenie jedynie dwóch linii wejściowych i dwóch wyjściowych. W naszym interfejsie wykorzystana jest połowa tego układu właśnie do obsługi linii danych wejściowych i wyjściowych, czyli RxD i TxD. Jeżeli jednak potrzebny nam będzie sygnał sterujący przepływem (np. DTR), należy przewodem dokonać połączeń zaznaczonych linią przerywaną. Oczywiście nawet po wykonaniu dodatkowych połączeń funkcjonowanie dołączanego do komputera układu nie ulegnie zmianie. Właściwą obsługę sygnału DTR zapewnia dopiero program sterujący uruchamiany na komputerze. Dodatkowymi elementami interfejsu są diody LED D1
i D2. Diody te świecą się w momencie, gdy interfejs odbiera dane z portu USB lub gdy je za pośrednictwem tego portu wysyła. Urządzenie nie wymaga zewnętrznego zasilania. Ponieważ pobierana moc jest niewielka, napięcie +5 V do zasilania interfejsu pobierane jest bezpośrednio z portu USB. Napięcie to z końcówki 6 (V+) modułu USB SERIAL jest podawane na oporniki i anody LED-ów oraz na końcówkę 22 (VCC) modułu konwertera poziomów RS232. Oprócz tego obydwa moduły można umieścić w podstawkach DIP32 (z kilkoma usuniętymi stykami), co bardzo ułatwia ich ewentualną wymianę. Po co? Chociaż z założenia port USB pozwala dołączać urządzenia przy włączonym zasilaniu autor osobiście „załatwił” kilka układów FT8U232BM podczas rozmaitych manipulacji. Najczęściej zdarza się to wtedy, gdy układ jest podłączony do magistrali USB i nastąpi zanik zasilania lub przez nieuwagę zostaną zwarte do masy niektóre jego wyprowadzenia. W przypadku interfejsu takie sytuacje raczej nie będą miały miejsca, jednak jeżeli już zajdzie taka potrzeba dużo szybciej wymienia się cały moduł umieszczony w podstawce, niż wylutowuje niewielki układ scalony SMD. Ws z y s t k i e e l e m e n t y wchodzące w skład interfejsu są montowane na niewielkiej jednostronnej płytce drukowanej. Są to oba mo-
75
M I N I P R O J E K T Y
Rys. 2. Rozmieszczenie elementów na płytce
duły, diody LED, dwa oporniki i gniazdo DB9. Gniazdo USB jest zamontowane na module. Wymiary druku i rozmieszczenie elementów (rys. 2) przystosowane zostały do plastikowej obudowy o wymiarach zewnętrznych 82x58x30 mm (ozn. Z23). Obudowa jest skręcana jednym centralnie umieszczo-
nym wkrętem. Płytka z modułami mieści się w obudowie „na styk” i zastosowanie niektórych typów podstawek uniemożliwi jej skręcenie. W takim przypadku moduły trzeba wlutować bezpośrednio do płytki drukowanej. Jeżeli przylutujemy tylko te z ich wyprowadzeń, które łączą się za ścieżkami ewen-
tualny późniejszy demontaż i tak nie powinien być zbyt trudny. Ostatnim etapem jest zwymiarowanie zmontowanej płytki i wycięcie w obudowie otworów na obydwa gniazda i diody sygnalizacyjne. Do działania interfejs potrzebuje sterowników odpowiednich dla systemu operacyjnego zainstalowanego w komputerze. Sterowniki nieodpłatnie udostępnia na swojej stronie firma FTDI pod adresem www.ftdichip. com/FTDriver.htm. Ściągnięte pliki należy rozpakować i umieścić w osobnym katalogu. Po dołączeniu do portu USB naszego interfejsu system powinien automatycznie zainstalować sterowniki, czasami trzeba mu pomóc wskazując katalog z rozpakowanymi plikami. Interfejs będzie widziany w systemie jako kolejny port COM komputera. Jest to bardzo wygodne, gdyż
WYKAZ ELEMENTÓW Moduł USB232: AVT553 Moduł interfejsu RS232: AVT553 D1, D1: diody LED R1, R2: 1kV Gniazdo DB9M do druku Płytka drukowana Obudowa Z23
Płytka drukowana jest dostępna w AVT – oznaczenie AVT-1407 Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb. ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB. oprogramowanie sterujące urządzenia dołączanego za pośrednictwem interfejsu nie będzie musiało być modyfikowane. Jedyne co trzeba zrobić, to wybrać numer portu COM, pod którym pracuje prezentowany interfejs. Ryszard Szymaniak, EP
[email protected]
Uniwersalny stabilizator impulsowy 5 V Najczęściej stosowanymi stabilizatorami napięcia są liniowe stabilizatory monolityczne. Największą zaletą takiego stabilizatora jest jego niska cena, jednak bardzo dużą wadą jest duża ilość wydzielanego ciepła. Stosując taki stabilizator, na przykład do układu zawierającego wyświetlacz LCD z podświetlaniem okazuje się, że już przy napięciu zasilającym o wartości większej o kilka woltów od napięcia wyjściowego niezbędny jest radiator. Stabilizator przedstawiony w artykule stanowi rozwiązanie alternatywne dla takich opracowań i został zbudowany ze specjalizowanego układu przetwornicy impulsowej typu LM2575. Rekomendacje: proste opracowanie umożliwiające ograniczenie ilości ciepła wydzielanego w układach zasilania urządzeń cyfrowych.
76
rys. 1. Oprócz pokazanych elementów do pracy stabilizatora są niezbędne kondensatory elektrolityczne wejściowy i wyjściowy. Ponieważ stabilizator ma być stosowany zamiennie w istniejącym układzie ze stabilizatorem monolitycznym, kondensatory takie znajdują się na płytce, w którą będzie wlutowany przedstawiony stabilizator. Dlatego kondensatory te nie zostały umieszczone na płytce stabilizatora. Należy tylko dopasować wartości tych kondensatorów tak, aby podłączony do wejścia miał pojemność 100 mF, a wyjściowy 220...330 mF. Modelowy stabilizator zmontowano na płytce przedstawionej na rys. 2. Układ US1 oraz złącze CON1 należy zamontować od strony elementów, natomiast cewkę i diodę od strony lutowania. Z przeprowadzonych testów wynika, że dla napięcia wejściowego tak wykonany stabilizator może być obciążony prądem o w a r t o ś c i o ko ł o 400 mA przy nie znacznym wzroście temperatury układu US1 i cewki. Natomiast przy obciążeniu 130 mA (diody Rys. 1. Schemat elektryczny stabilizato- podświetlające wyświetlacza LCD) nie ra impulsowego Układ LM2575 ma rozbudowaną strukturę wewnętrzną, w skład której wchodzą m.in. wyjściowe tranzystory mocy, dzięki czemu do pracy układu wymaganych jest tylko kilka elementów zewnętrznych. Zastosowany układ może pracować w zakresie napięć wejściowych równym 7...40 V i maksymalnym obciążeniu prądowym 1 A. Jednak w zależności od obudowy układu LM2575 wartość ta może być mniejsza. Przedstawiony stabilizator został wykonany z przeznaczeniem głównie do zasilania układów z maksymalnym poborem prądu o wartości do 500 mA, dlatego zastosowana została obudowa typu DIP16, co zapewnia niewielkie wymiary płytki drukowanej i umożliwia stosowanie przedstawionego stabilizatora zamiennie ze standardowym układem typu LM7805. Schemat elektryczny stabilizatora przedstawiono na
zaobserwowano znacznego wzrostu temperatury w całym dopuszczalnym zakresie napięć wejściowych 7...40 V, co umożliwia stosowanie takiego stabilizatora przy wysokich napięciach wejściowych bez stosowania radiatorów o dużych rozmiarach, jak to ma miejsce w stabilizatorach monolitycznych. Krzysztof Pławsiuk, EP krzysztof.pł
[email protected]
Rys. 2. Rozmieszczenie elementów na płytce stabilizatora
WYKAZ ELEMENTÓW D1: 1N5819 L1: 330mH/0,5A US1: LM2575-5.0 DIP16 CON1: goldpin 1x3 kątowy męski
Płytka drukowana jest dostępna w AVT – oznaczenie AVT-1408 Wzory płytek drukowanych w formacie PDF są dostępne w Internecie pod adresem: pcb. ep.com.pl oraz na płycie CD-EP10/2004B w katalogu PCB.
Elektronika Praktyczna 10/2004
Uwaga! Na wkładce znajdują się lustrzane widoki płytek. Są one dostępne także w postaci elektronicznej na płytach CD-EP (tylko w EPoL) oraz na naszej stronie WWW pod adresem: pcb.ep.com.pl. Sposób wykonania płytek z wykorzystaniem matryc z EP opisaliśmy w EP11/94 (str. 47). Artykuł ten jest dostępny także pod adresem: http://www.ep.com.pl/?ftp/makepcb/index.html
Elektronika Praktyczna 10/2004
WKŁADKA
77
Strona elementów. Płytka drukowana zdalnie sterowanego potencjometru do aplikacji audio. Strona lutowania.
Strona elementów. Płytka drukowana interfejsu SPI do programatora PUNCH. Strona lutowania.
Płytka drukowana modułowego interfejsu USB<->RS232.
Uwaga! Na wkładce znajdują się lustrzane widoki płytek. Są one dostępne także w postaci elektronicznej na płytach CD-EP (tylko w EPoL) oraz na naszej stronie WWW pod adresem: pcb.ep.com.pl. Sposób wykonania płytek z wykorzystaniem matryc z EP opisaliśmy w EP11/94 (str. 47). Artykuł ten jest dostępny także pod adresem: http://www.ep.com.pl/?ftp/makepcb/index.html
78
WKŁADKA
Elektronika Praktyczna 10/2004
Strona elementów. Płytka drukowana karty przekaźników z interfejsem 1Wire. Strona lutowania.
Strona elementów. Płytka drukowana uniwersalnego stabilizatora impulsowego 5 V. Strona lutowania.
Uwaga! Na wkładce znajdują się lustrzane widoki płytek. Są one dostępne także w postaci elektronicznej na płytach CD-EP (tylko w EPoL) oraz na naszej stronie WWW pod adresem: pcb.ep.com.pl. Sposób wykonania płytek z wykorzystaniem matryc z EP opisaliśmy w EP11/94 (str. 47). Artykuł ten jest dostępny także pod adresem: http://www.ep.com.pl/?ftp/makepcb/index.html
Elektronika Praktyczna 10/2004
WKŁADKA
79
Uwaga! Na wkładce znajdują się lustrzane widoki płytek. Są one dostępne także w postaci elektronicznej na płytach CD-EP (tylko w EPoL) oraz na naszej stronie WWW pod adresem: pcb.ep.com.pl. Sposób wykonania płytek z wykorzystaniem matryc z EP opisaliśmy w EP11/94 (str. 47). Artykuł ten jest dostępny także pod adresem: http://www.ep.com.pl/?ftp/makepcb/index.html
80
WKŁADKA
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Koniec ery 5 V, część 1
Przegląd rodzin współczesnych układów cyfrowych Technika cyfrowa – spotykamy się z nią dziś na każdym kroku. W czasach, gdy dominowały urządzenia analogowe, posiadanie sprzętu, w którym zastosowano moduły cyfrowe oznaczało, że mamy do czynienia albo ze sprzętem profesjonalnym, albo z wyrobami powszechnego użytku z najwyższych półek. Dziś bez układów cyfrowych trudno wyobrazić sobie postęp elektroniki. Technika ta pozwala na podwyższenie jakości i funkcjonalności urządzeń. Spotykamy ją więc nawet w najprostszych u r z ą d z e n i a c h w y ko r z y s t y w a n y c h w naszym domu. Chociaż próby budowania elementarnych funktorów logicznych były podejmowane już w epoce lamp elektronowych, to tak na prawdę prawdziwy rozwój techniki cyfrowej stał się możliwy dopiero w chwili wyprodukowania pierwszego układu scalonego. Dziś często stajemy wobec problemu doboru najbardziej odpowiedniej rodziny układów cyfrowych do swojego projektu. Zdarza się, że konstruktorzy czynią to wręcz nieświadomie, nie zwracając uwagi na kilka literek umieszczonych w oznaczeniu typu. Przyglądając się bliżej dostępnym dziś układom cyfrowym zauważamy, że tak naprawdę wszystkie wywodzą się z dwóch podstawowych technologii: bipolarnej TTL i unipolarnej CMOS. Gęstość upakowania tranzystorów uzyskiwana w strukturze bipolarnego układu scalonego dawała nadzieję na sensowne zastosowania praktyczne w technice cyfrowej. Wkrótce te oczekiwania zostały spełnione. Wraz z opanowaniem technologii produkcji układów zintegrowanych rozpoczęto rozwijanie rodziny scalonych układów cyfrowych TTL (Transistor-Transistor-Logic). To właśnie one zdominowały elektronikę lat 70. i 80. ubiegłego stulecia. Z dzisiejszego punktu widzenia są to układy niezbyt szybkie, przy tym niezwykle „prądożerne”.
Elektronika Praktyczna 10/2004
Bez układów cyfrowych trudno dziś byłoby skonstruować nawet najprostsze urządzenie elektroniczne. Po dość długim okresie w miarę spokojnego rozwoju tych podzespołów, obecnie chyba można mówić o rewolucji. Obok nowych rodzin, będących ulepszonymi wersjami poprzedników powstają nowe, dość wąsko wyspecjalizowane, przeznaczone do określonych celów. Główny nacisk jest kładziony na zwiększenie szybkości działania i minimalizację mocy strat, z czym wiąże się również obniżanie napięcia zasilającego. Z pozoru są to parametry, które trudno ze sobą pogodzić. O wiele mniejszą mocą strat charakteryzuje się seria 4000 produkowana w technologii CMOS (Complementary Metal Oxide Semiconductor). Niestety, jest ona dużo wolniejsza od TTL-i. Zalety obu wymienionych technologii zostały wykorzystane w układach BiCMOS, będących kompilacją technologii bipolarnej i CMOS w jednej strukturze półprzewodnikowej. Na bazie opisanych wyżej technologii powstało wiele rodzin cyfrowych układów scalonych. Wyraźny trend do ograniczania mocy rozpraszanej i zwiększania szybkości działania spowodował, że nowe rodziny optymalizowane są do pracy z coraz niższymi napięciami zasilającymi. Powstało w związku z tym kilka standardów poziomów logicznych. Nie ułatwia to życia konstruktorom, którzy coraz częściej stykają się z problemem dopasowania do siebie kilku wersji układów w jednej aplikacji. Aby choć trochę to zadanie ułatwić poznajmy pokrótce najbardziej popularne rodziny cyfrowych układów scalonych. Będą one omówione w kolejności alfabetycznej.
Przegląd rodzin układów cyfrowych
4000 (CD4000), 4000A, 4000B, MC1400 – pierwsza seria cyfrowych u k ł a d ó w s c a l o n y c h w y ko n a n y c h w technologii CMOS. Podstawowy
funktor logiczny – inwerter – jest zbudowany z dwóch komplementarnych tranzystorów MOS (jeden z kanałem typu P, drugi z kanałem typu N), dzięki czemu statyczny prąd spoczynkowy jest na poziomie ułamków mA. Spotykane są układy bez buforowanych wyjść (oznaczane bez dodatkowej litery, lub z sufiksem A, U lub UB) i z wyjściami buforowanymi (z sufiksem B). ABT – Advanced BiCMOS. Układy wykonane w unowocześnionej technologii BiCMOS w procesie 0,8 mm. Łączą zalety wersji TTL i CMOS. W tej technologii możliwe jest uzyskiwanie wydajności prądowej wyjść do 64 mA, a w wykonaniach specjalnych nawet do 180 mA. Moc rozpraszana jest bardzo niewielka, porównywalna z klasycznymi CMOS-ami. Układy ABT cechuje duża szybkość pracy, podobna do uzyskiwanej w technologiach bipolarnych. ABTE/ETL, ETL/VME – Advanced BiCMOS Technology/Enhanced Transceiver Logic. Układy wykonane w unowocześnionej technologii BiCMOS z dużą odpornością na szumy. Wytwarzane są w procesie 0,8 mm. Wykorzystywane do budowy wielobitowych bram we/wy umożliwiających synchroniczną, dwukierunkową komunikację pomiędzy dwoma szynami danych.
81
P O D Z E S P O Ł Y
AC, ACT – Advanced CMOS. Układy produkowane w procesie 1 mm CMOS. W tej serii znajdziemy m.in. podstawowe funktory logiczne. Rodzina ta jest przeznaczona dla aplikacji o średniej i wysokiej szybkości pracy o małym poborze mocy. Układy AC posiadają wejścia i wyjścia typu CMOS, natomiast układy ACT posiadają wejścia TTL i wyjścia CMOS. AHC (TI, Philips), VHC (Fairchild, ON, Toshiba), AHCT – Advanced High-Speed CMOS. Seria stanowiąca wygodne rozwiązanie w przypadku konieczności migracji z serii HC/HCT do innych, charakteryzujących się lepszymi parametrami, przy zachowaniu zbliżonych kosztów. Układy AHC/AHCT w porównaniu z tradycyjnymi rodzinami HCMOS osiągają 3-krotnie większe prędkości, zbliżone do serii LS. Mogą pracować przy niższym napięciu zasilającym, mają większą odporność na szumy. W tej serii oferowany jest ponadto szerszy wybór układów. Układy AHC i VHC stanowią wzajemne odpowiedniki wyrobów różnych producentów. Układy AHC posiadają wejścia i wyjścia typu CMOS, natomiast układy AHCT posiadają wejścia TTL i wyjścia CMOS. ALS – Advanced Low-Power Schottky Logic. Rodzina układów, będąca rozwinięciem i ulepszeniem jednej z najpopularniejszych i do niedawna najczęściej stosowanej serii LS. Zawiera szeroką gamę funktorów. Może być wykorzystywana w aplikacjach, w których trzeba pogodzić wymagania dotyczące szybkości i mocy rozpraszanej. Do tej pory najczęściej stosowano w takich sytuacjach układy AS. Układy ALS przy nieznacznie mniejszej prędkości charakteryzują się dużo mniejszą mocą strat. ALVC (TI, Hitachi/Renesas, IDT, Pericom, Philips), VCX (Fairchild, ON, Toshiba) – Advanced Low-Voltage CMOS. Jedna z najbardziej wydajnych rodzin niskonapięciowych układów cyfrowych (3,3 V). Obejmuje głównie interfejsy magistral, ale można w niej znaleźć również podstawowe funktory logiczne. Jest to technologia CMOS 0,6 mm, charakteryzująca się bardzo krótkimi czasami propagacji i małym statycznym prądem zasilania. Seria ALVC ma szansę stać się standardem przemysłowym w wielu 3-woltowych aplikacjach. Układy ALVC i VCX stanowią
82
wzajemne odpowiedniki wyrobów różnych producentów. ALVT – Advanced L ow-Voltage BiCMOS. Niskonapięciowa seria układów BiCMOS 0,6mm. Zarówno wersje 2,5 V, jak i 3,3 V posiadają wejścia i wyjścia tolerujące sygnały 5-woltowe. Seria ALVT odznacza się 28% wzrostem szybkości pracy w porównaniu z podobnymi układami LVT dla napięcia zasilającego 3,3 V. Jest kompatybilna pod względem wyprowadzeń z rodziną ABT i LVT, a z racji lepszych parametrów może być dobrym rozwiązaniem problemu migracji z tych serii do innych, charakteryzujących się lepszymi parametrami. Układy ALVT ze względu na tolerancję napięć wejściowych i wyjściowych do wartości 5 V nadają się świetnie do zastosowań w aplikacjach z kilkoma napięciami zasilającymi. AS – Advanced Shottky. Rodzina AS jest wytwarzana w technologii bipolarnej, stanowi bezpośrednie rozwinięcie serii S. Dzięki zastosowanym modyfikacjom w układach AS uzyskano dużo mniejszą moc strat niż w serii S. Rodzina AS zawiera większość podstawowych elementów logicznych. AUC – Advanced Ultra-Lov-Voltage CMOS. Pierwsza rodzina wśród układów cyfrowych, która została zoptymalizowana do napięcia zasilającego o wartości 1,8 V. Układy tej serii pracują jednak prawidłowo w zakresie napięć zasilających od 0,8 V do 2,5 V, przy czym wejścia zachowują tolerancję 3,6 V. Jest to jedna z najmłodszych rodzin układów cyfrowych. Ma szansę stać się jedną z wiodących wśród układów logicznych. Charakteryzuje się dużą szybkością, pracą z niskimi napięciami zasilającymi, niewielką mocą rozpraszaną i wysoką odpornością na szumy. Coraz częściej powstają w tej technologii procesory, pamięci, układy ASIC. Jest chętnie stosowana w układach Little Logic. AUP – Advanced Ultra-Low-Power CMOS. Rodzina układów cyfrowych o niezwykle niskim zapotrzebowaniu na energię, nadająca się znakomicie do urządzeń zasilanych bateryjnie. Seria AUP w porównaniu z innymi seriami niskonapięciowymi (3,3 V) odznacza się aż o 91% mniejszym statycznym prądem zasilającym i o 83% mniejszym prądem dynamicznym. Jednocześnie z tak korzystny-
mi parametrami związanymi z mocą, udało się uzyskać bardzo krótkie czasy propagacji (2 ns dla 3,3 V i 3 ns dla 1,8 V). Seria AUP (na dzień dzisiejszy) obejmuje jedynie układy Little Logic. AVC – Advanced Very-Low-Voltage CMOS. Technologia niskonapięciowa – od 1,2 V do 3,6 V (optymalnie 2,5 V). Czasy propagacji uzyskiwane w tej technologii są mniejsze od 2 ns przy napięciu zasilającym równym 2,5 V. Układy AVC umożliwiają konstruowanie magistral pracujących z częstotliwościami przekraczającymi 100 MHz. Nadają się do aplikacji wykorzystujących kilka napięć zasilających. BCT (TI, Fairchild), BC (ON, Toshiba) – BiCMOS Technology. Struktura układów BCT jest wykonana jednocześnie w technologii bipolarnej i CMOS. Uzyskano dzięki temu kompatybilność wyjść z układami TTL, przy zachowaniu pewnych cech układów CMOS. Rodzina BCT stosowana jest powszechnie do produkcji driverów, zatrzasków (latches) i transceiverów. Niska impedancja obwodów wyjściowych pozwala na pracę z dużymi prędkościami, zapewniając przy tym dużą wydajność prądową. Odmiana 64BCT (TI) może pracować w zakresie temperatur od -40°C do +85°C. CB3Q – 2.5-V/3.3-V Low-Voltage High-Bandwidth Bus-Switch Crossbar. Jest to rodzina szerokopasmowych kluczy pracujących z częstotliwością bliską 500 MHz, bazujących na tranzystorach FET (rys. 1). Charakteryzują się one niską rezystancją włączonego klucza Ron i bardzo krótkimi czasami propagacji. Umożliwiają przełączanie sygnałów w zakresie napięciowym od zera do VCC zarówno od strony wejścia, jak i wyjścia (rail-to-rail input/output – RRIO). Rodzina CB3Q jest rozwinięciem rodzin CBT i CBTLV. CB3T – 2.5-V/3.3-V Low-Voltage Translator Bus-Switch Crossbar. Budowa układów CB3T jest podobna do CB3Q. Serię tę można wykorzystywać do realizacji 2-kierunkowych translatorów poziomów w aplikacjach wykorzystujących kilka napięć zasilających. Przykładowo przy zasilaniu 3,3 V można dokonać translacji 5-woltowego sygnału wejściowego do poziomu 3,3 V na wyjściu, a przy zasilaniu 2,5 V możliwa jest translacja sygnału wejściowego o poziomach
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 1
5 V lub 3,3 V do poziomu wyjściowego 2,5 V. Parametry tej rodziny pozwalają na konstruowanie interfejsów pomiędzy różnorodnymi komponentami systemów (pamięci, procesory, urządzenia peryferyjne, układy ASIC i bloki logiczne) wykorzystujących różne standardy sygnałów cyfrowych – TTL, LVTTL, CMOS. CBT (TI), FST (Fairchild), FST/ QS (IDT), P15C (Pericom) – Crossbar Technology. Kolejna rodzina oparta na kluczach wykorzystujących tranzystory FET. Znajduje zastosowanie głównie do produkcji szybkich przełączników magistralowych, multiplekserów i demultiplekserów. Klucze CBT coraz powszechniej zastępują wysłużone bufory CMOS-owe typu HC245. Charakteryzują się dużo większą szybkością pracy i mniejszą mocą rozpraszaną, ponadto dobrą izolacją przełączanych szyn. Nadają się do realizacji 2-kierunkowych translatorów poziomów dla aplikacji wykorzystujących napięcia zasilające 5 V i 3,3 V. CBT-C – 5-V Bus-Switch Crossbar Technology Logic With -2-V Undershoot Protection. I w tej rodzinie wykorzystuje się klucze bazujące na tranzystorach FET. Układy CBT- C w porównaniu z wersją CBT posiadają dodatkowe zabezpieczenie przed podaniem na wejście zbyt dużego napięcia ujemnego – undershoot protection (chroni układy przed napięciami aż do -2 V). Mają ponadto krótszy czas włączania/wyłączania.
Elektronika Praktyczna 10/2004
CBTLV (TI, IDT), P13B (Pericom) – Low-Voltage Crossbar Technology. Rodzina CBTLV stanowi niskonapięciowe (3,3 V) uzupełnienie 5-woltowej rodziny kluczy CBT. Układy CBTLV stosuje się w systemach wieloprocesorowych m.in. do łączenia i rozgałęziania szybkich magistral, ale w pewnych aplikacjach mogą również zastępować... przekaźniki. Zapewniają przy tym dużo większą prędkość włączania i wyłączania oraz poprawiają pewność włączenia. F – Fa s t ( A d v a n c e d S h o t t key). Układy 74Fxxx są wykonane w technologii bipolarnej, udoskonalonej w porównaniu z wcześniejszymi seriami 74xxx i 74Sxxx. Rodzina 74F cechuje się większą szybkością niż 74S, przy jednoczesnym, mniejszym zużyciu energii. Seria F zawiera podstawowe funktory logiczne. F C T – Fa s t C M O S T T L . N a zwa tej rodziny jest trochę myląca. W rzeczywistości chodzi o technologię CMOS 6 mm. Umożliwia ona uzyskanie wydajności prądowej wyjść do 40 mA lub 64 mA, przy czasach propagacji na poziomie 5 ns. Rodzina jest zoptymalizowana do napięcia zasilającego 5 V i zgodna pod względem wyprowadzeń ze standardowymi rodzinami bipolarnymi i CMOS. Nie zastosowano w niej diod zabezpieczających wejścia i wyjścia. Większość układów FCT posiada wyjścia 3-stanowe. Seria FCT stosowana jest w wysokoprądowych interfejsach szyn danych. HC, HCT – High-Speed CMOS (HCMOS). Serie HC i HCT obejmują wszystkie podstawowe funktory. Są przeznaczone do nisko- i średnioszybkich aplikacji, wymagających małych mocy zasilających. Rodziny HC i HCT są nadal jednymi z najbardziej popularnych. W nowych konstrukcjach zalecane jest przechodzenie do nowocześniejszych serii AHC i AHCT, które przy porównywalnych parametrach i konkurencyjnych cenach zużywają mniej energii. Wejściowe i wyjściowe poziomy logiczne serii HC są zgodne z układami CMOS, w serii HCT natomiast wejścia odpowiadają poziomom TTL, a wyjścia CMOS. LS – Low-Power Shottky. Rodzina LS powstała w wyniku prac nad polepszeniem parametrów dwóch poprzednich rodzin – podstawowej TTL i S, w której zastosowano diody Shottky’ego. Uzyskano dużą szybkość
pracy, przy stosunkowo małej mocy strat. Dobre parametry spowodowały, że układy LS praktycznie wyparły całkowicie podstawową serię 74xxx. To właśnie układy LS przez wiele lat stanowiły de facto standard. Są stosowane dość powszechnie do dziś, choć tacy potentaci światowi, jak ON Semiconductor wycofali się już z produkcji tej serii. LV (TI, Hitachi/Renesas, Philips), LV-A (TI), LVQ/LVX (Fairchild, ON, Toshiba) – Low-Voltage CMOS Technology. Rodzina LV powstała w wyniku modyfikacji (idących w kierunku obniżenia napięcia zasilającego) stosowanych wcześniej układów HCMOS. Powstały w ten sposób układy dostosowane do napięcia zasilającego równego 3,3 V. Istnieją także kolejne odmiany, których wyróżniającą cechą jest tolerowanie 5-woltowych sygnałów wejściowych. Są to serie LV-A (TI) i LVX (pozostali producenci). Seria LV-A jest szybsza od LV. Układy LV-A mogą być zasilane napięciem od 2 do 5 V. Tego warunku nie spełnia ogólnie seria LV, w której standardowo napięcie zasilające jest równe 3,3 V (od 2 do 3,6 V). Serie LV-A i częściowo LV mogą pracować w systemach z kilkoma napięciami zasilającymi. Wybrane układy (nawet najprostsze bramki) mogą być wykorzystywane do translacji poziomów LVTTL i TTL. Produkuje się też specjalne translatory, zasilane dwoma napięciami (np. 3,3 V i 5 V). LVC (TI, Hitachi/Renesas, IDT, Philips), LCX (Fairchild, IDT, ON, Pericom, Toshiba), LPT (Pericom) – Low-Voltage CMOS Technology. Technologia CMOS z procesem 0,8 mm przeznaczona specjalnie do 3-woltowych aplikacji. Lista produkowanych w tej serii układów rozciąga się od najprostszych bramek aż do interfejsów magistralowych. Wejścia i wyjścia układów LVC/LCX tolerują sygnały 5-woltowe. Technologia LVC jest powszechnie stosowana w układach Little Logic. LVT – Low-Voltage BiCMOS Technology. LVT to 3-woltowa technologia BiCMOS 0,72 mm, tolerująca wejściowe i wyjściowe sygnały 5 V. Układy tej serii cechują się krótkimi czasami propagacji – typowo 3,5 ns przy napięciu zasilającym równym 3,3 V. Są szybsze o 28% w porównaniu z rodziną ABT. S – Shottky. Układy serii S są wykonywane w przestarzałej tech-
83
P O D Z E S P O Ł Y Tab. 1. Parametry napięciowe cyfrowych układów scalonych Wartości zalecane Standard Tolerancja Tolerancja poziomów napięć napięć wyjściowych wejściowych wyjściowych [V] [V]
Seria
Szereg napięć zasilających [V]
Roboczy zakres napięć zasilających [V]
Standard poziomów wejściowych
ABT
5
4,5...5,5
TTL/LVTTL
TTL
VCC
AC
5; 3,3
1,5...5,5
CMOS
CMOS
ACT
5
4,5...5,5
TTL
AHC
5; 3,3
2,0...5,5
AHCT
5
ALB
Wartości dopuszczalne Napięcie zasilające [V]
Dopuszczalne napięcie wejściowe [V]
Dopuszczalne napięcie wyjściowe [V]
5,5
-0,5...7
-0,5...7
-0,5...5,5 (H, PO)
VCC
VCC
-0,5...6
CMOS
VCC
VCC
-0,5...6
CMOS
CMOS
5,5
VCC
-0,5...7
-0,5...7
-0,5...VCC+0,5
4,5...5,5
TTL
CMOS
5,5
VCC
-0,5...7
-0,5...7
-0,5...VCC+0,5
3,3
3,0...3,6
custom
custom
VCC
VCC
-0,5...4,6
-0,5...VCC+0,5 (I/O) -0,5...4,6 (pozostałe)
-0,5...VCC+0,5
ALS
5
4,5...5,5
TTL
TTL
(7)
7
7
ALVC
3,3; 2,7; 2,5; 1,8
1,65...3,6
LVTTL
LVTTL
3,6
VCC
-0,5...4,6
-0,5...4,6
-0,5...VCC+0,5
ALVT
3,3; 2,5
2,3...3,6
TTL/CMOS/ LVTTL
LVTTL
5,5
(7)
-0,5...4,6
-0,5...7
-0,5...7
AS
5
4,5...5,5
TTL
TTL
(7)
7
7
AUC
2,5; 1,8; 1,5; 1,2; 0,8
0,8...2,7
LVCMOS
LVCMOS
3,6
VCC
-0,5...3,6
-0,5...3,6
-0,5...3,6 (HZ, PO) -0,5...VCC+0,5 (H)
AUP
3; 2,3; 1,65; 1,4; 1,1; 0,8
0,8...3,6
LVCMOS
LVCMOS
3,6
VCC
-0,5...4,6
-0,5...4,6
-0,5...4,6 (HZ, PO) -0,5...VCC+0,5 (H)
AVC
3,3; 2,5; 1,8; 1,5; 1,2
1,2...3,6
LVCMOS
LVCMOS
3,6
VCC - wyjścia aktywne 3,6 - HZ
-0,5...4,6
-0,5...4,6
-0,5...4,6 (HZ, PO) -0,5...VCC+0,5 (H)
BCT
5
4,5...5,5
TTL
TTL
(7)
VCC
-0,5...7
-0,5...7
-0,5...5,5 (HZ, PO) -0,5...VCC (H)
4000
5; 10; 15
3...18
CMOS
CMOS
(VDD+0,5)
-0,5...20
-0,5...VDD+0,5
F
5
4,5...5,5
TTL
TTL
(7)
VCC
-0,5...7
-1,2...7
-0,5...VCC
FCT
5
4,75...5,25
TTL
TTL
(7)
(7)
-0,5...7
-0,5...7
-0,5...7
HC
6; 5; 2
2...6
CMOS
CMOS
VCC
VCC
-0,5...7
HCT
5
4,5...5,5
TTL
CMOS
VCC
VCC
-0,5...7
LS
5
4,75...5,25
TTL
TTL
(7)
LV
5; 3,3; 2,5
2,0...5,5
CMOS
CMOS
5,5
VCC
-0,5...7
-0,5...7
-0,5...7 (HZ, PO) -0,5...VCC+0,5 (H)
LVC
3,3; 2,7; 2,5; 1,8
2,0...3,6
TTL/CMOS/ LVTTL
LVTTL
5,5
VCC
-0,5...6,5
-0,5...6,5
-0,5...VCC+0,5
LVT
3,3; 2,7
2,7...3,6
TTL/CMOS/ LVTTL
LVTTL
5,5
(VCC+0,5)
-0,5...4,6
-0,5...7
-0,5...7 (HZ, PO) -0,5...VCC+0,5 (H)
S
5
4,75...5,25
TTL
TTL
(5,5)
7
5,5
74xxx
5
4,75...5,25
TTL
TTL
(5,5)
7
5,5
VME
Legenda:
84
3,3
3,15...3,45
TTL/LVTTL
LVTTL
5,5
7
(VCC)
-0,5...4,6
-0,5...7
-0,5...7 (HZ, PO) -0,5...VCC+0,5 (H lub L port A i Y) -0,5...4,6 (H lub L port B)
HZ - obowiązuje dla stanu wysokiej impedancji PO - obowiązuje dla stanu Power-off H - obowiązuje dla stanu wysokiego L - obowiązuje dla stanu niskiego dane ujęte w nawiasy zostały powtórzone z kolumny „wartości absolutne”, gdyż nie zostały wyszczególnione w katalogach
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y nologii bipolarnej. Z tego względu, dzisiaj jest to rodzina właściwie już zupełnie bez znaczenia, została wyparta przez wiele nowocześniejszych, charakteryzujących się dużo lepszymi parametrami. Poza Texas Instruments chyba wszyscy producenci wycofali już ze swoich ofert układy serii S, tymczasem u TI nawet dziś można zamówić próbki np. układów 74S00. TTL – Transistor-Transistor Logic. Technologia bipolarna, która jako pierwsza zaczęła się liczyć w skali przemysłowej. To o niej możemy powiedzieć, że zapoczątkowała burzliwy rozwój techniki cyfrowej. Układy rodziny TTL w swojej oryginalnej, pierwotnej wersji mają oznaczenie 74xxx (bez żadnych literek). Taką nomenklaturę przyjęła większość światowych producentów. Przez długie lata „panowania”, seria 74xxx rozrosła się do bardzo pokaźnych rozmiarów. W chwili obecnej, poza firmą Texas Instruments, układy te nie są już oferowane przez żadnego wytwórcę, ale strata to nie duża, bo stosowanie układów 74xxx byłoby w dzisiejszych czasach czymś
Elektronika Praktyczna 10/2004
zupełnie niezrozumiałym. Najsłabszą stroną TTL-i (w pierwotnej postaci) jest olbrzymia prądożerność i niestety niezadowalająca współczesnych konstruktorów szybkość działania. Little Logic (TI), TinyLogic (Fairchild), Uni-Logic (Hitachi/Renesas), MiniGate (ON), SOTiny Gates (Pericom), Pico Gate (Philips), EasyGate (STM). Wszystkie wymienione tu nazwy określają rodzinę układów wykonywanych w ultraminiaturowych obudowach. Zawierają one najczęściej pojedyncze sztuki elementarnych funktorów (bramki – klasyczne, z wyjściami open-drain, wejściami Schmitta, inwertery), ale także i bufory 3-stanowe, drivery i bufory szyn, multipleksery, dwukierunkowe przełączniki, przerzutniki. Ciekawostką niespotykaną w standardowych (dużych) układach s ą u n i w e r s a l n e , ko n f i g u r o w a l n e bramki wielofunkcyjne. Realizowane przez nie funkcje logiczne zależą od stanów logicznych podanych na wejścia konfiguracyjne. Opis układów Little Logic został umieszczony poza kolejnością alfabe-
tyczną nie tylko dlatego, że istnieją różne nazwy tej rodziny. Układy Little Logic nie są produkowane w specjalnie opracowanej dla nich technologii. Wykorzystuje się do tego znane już nam wersje AHC, AUC, AUP, LVC, AHCT, CBT. Układy te są niezastąpione, gdy okazuje się np., że w dużym projekcie zabrakło jednej bramki. Dzięki nim można również dużo lepiej projektować mozaikę połączeń obwodu drukowanego. Pojedyncze bramki mogą być umieszczane w takich miejscach płytki, które pozwalają zmniejszyć liczbę połączeń i znacząco je skrócić. Układy Little Logic zużywają mało energii, są szybkie, charakteryzują się niską emisją zakłóceń. Są bardzo często wykorzystywane do translacji poziomów logicznych. W następnym odcinku będziemy kontynuować poznawanie rodzin układów cyfrowych, pod kątem możliwości łączenia w jednej aplikacji układów zasilanych różnymi napięciami. Jarosław Doliński, EP
[email protected]
85
B A S C O M O W E
P O R A D Y
W bascomowym „kąciku” staramy się w miarę przystępnie przedstawiać rozwiązania problemów napotykanych przez naszych Czytelników podczas pisania programów w Bascomie. Rubryka ta powstała z myślą o rozwiązywaniu trudności, jakie najczęściej napotykają programiści, zatem zachęcamy wszystkich Czytelników do zgłaszania przeszkód, na jakie się natknęli podczas tworzenia własnych programów.
Obsługa RS485 w Bascomie, część 2 W przypadku Slave 2, tak jak w przypadku Slave 1, dane z magistrali RS485 są odbierane w przerwaniu i ładowane do 15-bajtowego bufora odbiorczego. Na list. 2 przestawiono program obsługi układu wykonawczego (Slave 2). Timer 1 skonfigurowany został jako generator sygnału PWM o rozdzielczości 8 bitów i częstotliwości ok. 245 Hz, co w przypadku wentylatora jest wystarczające do sterowania jego prędkością. Stała adr ma wartość „8”, która jest adresem tegoż układu. Po uruchomieniu układu, Slave 2 pracuje w trybie odbiornika, a przekaźniki oraz wentylator (PWM=0) są wyłączone. Pętla główna programu zajmuje się interpretacją czterech powyżej opisanych komend i zapewnieniem odpowiedniej reakcji na nie układów dołączonych do mikrokontrolera. W porównaniu do Slave 1, instrukcje interpretujące komendy dla Slave 2 są bardziej rozbudowane, gdyż mają za zadanie zinterpretować 4 rozkazy, a nie 1 jak to było w przypadku Slave 1. Jeżeli moduł Slave odebrał znak „BS”, to następnie czeka na adres (tak samo jak to było w przypadku Slave 1). Jeśli otrzymany adres jest z zakresu od 0 do 99, a w tym przypadku równy „8”, to następuje dalsza interpretacja otrzymywanych znaków. W przeciwnym razie komenda zostaje odrzucona, gdyż przeznaczona jest dla układu o innym adresie. W tym przypadku układ będzie oczekiwał następnej komendy rozpoczynającej się znakiem „BS” (Back Space). Jeśli otrzymany adres zgadza się z adresem tego układu, sprawdzane jest, czy znak po adresie jest znakiem „r” (komenda odczytu), czy znakiem „w” (komenda zapisu). W przypadku, gdy otrzymany znak to „r” oraz kolejny znak to „p”, zostanie wysłany – po przełączeniu układu w tryb nadajnika – stan rejestru wypełnienia przebiegu PWM, po czym układ ponownie przejdzie w stan odbiornika. W przypadku, gdy po „r” zostanie odebrane „o”, zostanie wysłany – po przełączeniu układu
86
Interfejs RS485 cieszy się coraz większą popularnością, którą zawdzięcza głównie możliwości przesyłania danych na duże odległości z dużymi prędkościami. W artykule przedstawiamy przykłady w Bascomie ilustrujące wymianę danych za pomocą tego interfejsu i specjalnie opracowanego protokołu. List. 2. Program sterujący układem wykonawczym (Slave 2)
'Przykład drugiego urzadzenia slave sieci RS485. 'Urzadzenie steruje dwoma przekaznikami oraz wypełnieniem jednego 8 bitowego sygnału PWM 'na rzadanie mastera 'Urzadzenie ma mozliwosc otrzymania od mastera nowych ustawien przekaznikow oraz pwm. 'Ma takze mozliwosc wysłania do mastera stanów przekazników oraz wypelnienia pwm 'Adres tego urzadzenia wynosi 8 $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Config Config Config Config
Pinb.1 = Pinb.2 = Pinb.3 = Pind.2 = Serialin
'informuje kompilator o pliku dyrektyw wykorzystywanego 'mikrontrolera 'informuje kompilator o czestotliwosci rezonatora kwarcowego 'informuje kompilator o predkosci transmisji RS232
Output Output Output Output = Buffered , Size
'linia pb.1 jako wyjscie 'linia pb.2 jako wyjscie 'linia pb.3 jako wyjscie 'linia pd.2 jako wyjscie = 15 'konfiguracja by interfejs rs232 uzywal przy odbiorze transmisji 'buforowej (bufor o wielkosci 15 znakow) Config Timer1 = Pwm, Pwm = 8, Compare A Pwm = Clear Down, Compare B Pwm = Disconnect, Prescale = 64 'konfiguracja timer1 jako generator pwm o rozdzielczosci 8 bit 'generowany przebieg PWM o czestotliwosci ok 245 Hz Const Adr = 8 'adres ukladu - od 0 do 99 Dim Zn As String * 1 'zmienna przecowujaca odebrany znak z rs232 Dim Zm_lan As String * 3 'zmienna w ktorej skladany jest w calosc otrzymany adres 'oraz dane o szerokosci impulsu PWM Dim Adres As Byte 'zmienna ktora przechowuje przekonwertowany na dziesietnie 'otrzymany adres Dim Il_zn As Byte 'zmienna liczy ilosc otrzymanych znakow przy skladaniu adresu Dim St_pk1 As Byte 'przechowuje tymczasowo stan przekaznika pk1 Dim St_pk2 As Byte 'przechowuje tymczasowo stan przekaznika pk2 Dim Wart_pwm As Word 'przechowuje otrzymana od mastera wartosc pwm Re_de Alias Portd.2 Pk1 Alias Portb.2 Pk2 Alias Portb.3
'przypisanie aliasu linii pd.2, re_de steruje kierunkiem 'transmisji konwertera 'przypisanie aliasu pk1 linii pb.2 'przypisanie aliasu pk2 linii pb.3
Enable Interrupts Reset Re_de Pwm1a = 0 Reset Pk1 Reset Pk2
'odblokowanie globalnych przerwan 'przelaczenie konwertera rs485 na odbiornik 'szerokosc impulsu pwm 0 'wylaczenie pk1 'wylaczenie pk2
Do
'poczatek petli programu Zn = Inkey() 'odczyt znaku z portu rs232 If Zn = Chr(8) Then 'jesli otrzymany znak to BS (backspace - kod ascii 8) to Zm_lan = "" 'czysc zmienna zn_lan Il_zn = 0 'oraz zeruj zmienna il_zn Do 'poczatek petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 If Zn >= "0" And Zn <= "9" Then 'jesli otrzynany znak jest cyfra (0..9) to Incr Il_zn 'zwieksz o jeden il_zn Zm_lan = Zm_lan + Zn 'dodaj otrzymany znak cyfry do zmiennej zm_lan Else 'w przeciwnym razie If Zn > Chr(0) Then 'jesli otrzymany znak ma kod ascii wiekszy od 0 to Exit Do 'opusc petle do-loop End If End If Loop 'koniec wewnetrznej petli do-loop If Il_zn > 0 And Il_zn < 3 Then 'jesli il_zn wynosi 1 lub 2 to Adres = Val(zm_lan) 'zamien znakowa wartosc otrzymanego adresu na postac liczbowa 'i umiesc ja w adres If Adres = Adr Then 'jesli otrzymany adres od mastera rowna sie 8 '(adres tego urzadzenia) oraz If Zn = "r" Then 'jesli nastepny otrzymany znak to "r" Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 Loop Until Zn > Chr(0) 'opusc petle gdy otrzymany znak wiekszy od kodu 0 ascii If Zn = "p" Then 'jesli nastepny otrzymany znak to "p" to Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 Loop Until Zn = Chr(13) 'jesli otrzymany znak to cr - enter (kod ascii 13) to Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitus 200 'czekaj 200 us Print Pwm1a 'wyslij wartosc wypelnienia przebiegu pwm Waitms 1 'czekaj 1 ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik
Elektronika Praktyczna 10/2004
B A S C O M O W E w tryb nadajnika – stan przekaźnika PK1, a po przecinku stan przekaźnika PK2. Po zakończeniu wysyłania stanu przekaźników układ Slave 2 zostaje z powrotem przełączony w tryb odbiornika. Gdy znakiem odebranym po adresie jest „w” oraz po nim znak „o”, to otrzymana następnie od Mastera wartość wypełnienia będzie wpisywana po zamianie na wartość cyfrową do rejestru wypełnienia przebiegu PWM generowanego na wyjściu OC1A mikrokontrolera. W przypadku, gdy po znaku „w” jest znak „o”, otrzymane dalej znaki będą określały stan przekaźników PK1 i PK2. Wartość „0” będzie oznaczała wyłączenie przekaźnika, a „1” jego włączenie. Wartość znaku po przecinku zawsze będzie przeznaList. 2. cd.
czona dla przekaźnika PK2. Choć instrukcje programu odpowiedzialne za interpretacje komend dla układu Slave 2 są bardziej rozbudowane niż dla Slave 1, to warto zauważyć, że są one rozszerzeniem instrukcji interpretujących komendę (jedną) dla układu Slave 1. Oczywiście podobnie jak w przypadku układu Slave 1, tak i w przypadku układu Slave 2 wszystkie dane nadawane przez Mastera, jak i wysyłane przez Slave 2 muszą być potwierdzone znakiem CR (enterem). Został jeszcze do przedstawienia najważniejszy układ prezentowanego systemu, którym jest Master, czyli nadrzędny układ komunikujący się z układami Slave dołączonymi do magistrali RS485. Master umożliwia
Elseif Zn = "o" Then 'w przeciwnym razie jesli otrzymano znak "o" to Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 Loop Until Zn = Chr(13) 'jesli otrzymany znak to cr - enter (kod ascii 13) to St_pk1 = Pk1 'zapisz do st_pk1 stan przekaznika pk1 St_pk2 = Pk2 'zapisz do st_pk2 stan przekaznika pk2 Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitus 200 'czekaj 200 us Print St_pk1 ; "," ; St_pk2 'wyslij stan przekaznikow pk1 oraz pk2 Waitms 1 'czekaj 1 ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik End If End If If Zn = "w" Then 'jesli otrzymany znak to "w" Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 Loop Until Zn > Chr(0) 'opusc petle gdy otrzymany znak wiekszy od kodu 0 ascii If Zn = "p" Then 'jesli otrzymany znak to "p" to Il_zn = 0 'zeruj zmienna il_zn Zm_lan = "" 'czysc zmienna zm_lan Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 If Zn >= "0" And Zn <= "9" Then 'jesli otrzynany znak jest cyfra (0..9) to Incr Il_zn 'zwieksz o jeden il_zn Zm_lan = Zm_lan + Zn 'dodaj otrzymany znak cyfry do zmiennej zm_lan End If Loop Until Il_zn > 3 Or Zn = Chr(13) 'petla do-loop wykonywana az il_zn wieksze 'niz 3 lub otrzymano znak CR (ascii 13) If Il_zn > 0 And Il_zn < 4 Then 'jesli il_zn wynosi 1, 2 lub 3 to Wart_pwm = Val(zm_lan) 'zapisz do wart_pwm wartosc otrzymanego wypelnienia 'przekonwertowanego na postac cyfrowa If Wart_pwm < 256 Then 'jesli otrzymana wartosc pwm mniejsza niz 256 to Pwm1a = Wart_pwm 'zapisz otrzymana wartosc pwm do timera1 End If End If Elseif Zn = "o" Then 'w przeciwnym przypadku jesli otrzymano znak "o" to Il_zn = 0 'zeruj zmienna il_zn Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 If Zn = "0" Or Zn = "1" Then 'jesli otrzymano znak o wartosci 0 lub 1 to Incr Il_zn 'zwieksz o jeden il_zn St_pk1 = Asc(zn) 'zapisz zamieniona na postac cyfrowa znak do zmiennej stanu 'przekaznika st_pk1 Else 'w przeciwnym razie If Zn > Chr(0) Then 'jesli otrzymany znak ma kod ascii wiekszy od 0 to Exit Do 'opusc petle do-loop End If End If Loop 'koniec wewnetrznej petli do-loop If Il_zn = 1 And Zn = "," Then 'jesli il_zn wynosi 1 oraz otrzymano znak "," to Il_zn = 0 'zeruj zmienna il_zn Do 'poczatek wewnetrznej petli do-loop Zn = Inkey() 'odczyt znaku z portu rs232 If Zn = "0" Or Zn = "1" Then 'jesli otrzymano znak o wartosci 0 lub 1 to Incr Il_zn 'zwieksz o jeden il_zn St_pk2 = Asc(zn) 'zapisz zamieniona na postac cyfrowa znak do zmiennej 'stanu przekaznika st_pk2 Else 'w przeciwnym razie If Zn > Chr(0) Then 'jesli otrzymany znak ma kod ascii wiekszy od 0 to Exit Do 'opusc petle do-loop End If End If Loop 'koniec wewnetrznej petli do-loop If Il_zn = 1 And Zn = Chr(13) Then 'jesli il_zn rowne 1 oraz otrzymano znak CR '(ascii 13) to Pk1 = St_pk1.0 'nadanie stanu najmlodszego bitu st_pk1 linii portu sterujacej 'przekaznikiem pk1 Pk2 = St_pk2.0 'nadanie stanu najmlodszego bitu st_pk2 linii portu sterujacej 'przekaznikiem pk2 End If End If End If End If End If End If End If Loop 'koniec glownej petli do-loop End 'koniec programu
Elektronika Praktyczna 10/2004
P O R A D Y
sterowanie prędkością obrotową wentylatora, odczytuje z układu Slave 1 temperaturę i wyświetla ją na LCD, realizuje prosty termostat z wykorzystaniem układów Slave 1 i 2 oraz umożliwia sterowanie drugim przekaźnikiem układu Slave 2 za pomocą przycisku. Każde naciśnięcie tego przycisku będzie powodować naprzemienne włączenie i wyłączenie jednego przekaźnika układu Slave 2, gdyż drugi przekaźnik wykorzystuje Mastera do realizacji termostatu. Na rys. 5 przedstawiono schemat elektryczny sterownika systemu (Mastera). Konwerter MAX485 spełnia takie samo zadanie jak w przypadku układów Slave 1 i Slave 2. Dołączono go także do tych samych linii mikrokontrolera. Podczas spoczynku, gdy wszystkie układy dołączone do magistrali przełączone są w tryb odbiorników (także Master), na magistrali RS485 panują stany nieustalone, które mogą być błędnie interpretowane przez odbiorniki. Aby temu zapobiec, linie magistrali są wstępnie ustawiane przez rezystory R1...R3 tak, by napięcia na niej interpretowane były przez odbiorniki jako stan wysoki. W sterowniku przycisk S1 umożliwia załączanie oraz wyłączanie zdalnego przekaźnika PK1, w który wyposażono Slave 2. Za pomocą potencjometru P1, z którego napięcie jest konwertowane na postać cyfrową przez przetwornik A/C zawarty w mikrokontrolerze, możliwa jest regulacja prędkości wentylatora dołączonego do układu Slave 2. Wszystkie parametry odczytywane z układów Slave 1 i 2 są ukazywane na wyświetlaczu LCD. Potencjometr P2 umożliwia regulację kontrastu wyświetlacza. Na wyświetlaczu prezentowane są: wartość wypełnienia PWM (od 0 do 255), stan przekaźników PK1 i PK2, zmierzona temperatura oraz zadana temperatura, która ma być utrzymywana przez termostat. Funkcja termostatu w sterowniku jest bardzo prosta i w celach przykładowych temperatura zadana została ustawiona na stałym poziomie 25oC. Przekroczenie tej temperatury będzie powodować wyłączenie zdalnego przekaźnika PK2, a gdy temperatura zmierzona będzie niższa niż 25 stopni, przekaźnik PK2 zostanie załączony. Histereza termostatu została ustalona na poziomie 1oC. Oczywiście działanie sterownika (Mastera) ma pokazać sposób obsługi wielu układów dołączonych do magistrali RS485, a nie jest realizacją konkretnego urządzenia. Funkcja termostatu
87
B A S C O M O W E
P O R A D Y
jest jednym z przykładów bardziej praktycznego wykorzystania układów Slave 1 i Slave 2 dołączonych do magistrali RS485. Na list. 3 przedstawiono program sterujący sterownikiem (Masterem). Jest to program, który w pętli wysyła dane do układów Slave 1 i 2, następnie dane odczytuje i wyświetla na wyświetlaczu LCD. Master także odbiera znaki z magistrali w przerwaniu i umieszcza je w 15-bajtowym buforze. W programie po wysłaniu do układów Slave komendy odczytu, Master na otrzymanie danych od układów Slave czeka ok. 100 ms, nie wstrzymując działania programu. Do odbioru danych od układów Slave nie użyto instrukcji input, gdyż wstrzymuje ona działanie programu aż do odebrania znaku „CR”. W przypadku uszkodzenia lub braku któregoś z układów Slave, od którego oczekiwane są dane, program uległby zawieszeniu. Odbieraniem danych od układów Slave zajmuje się funkcja inkey, która nie wstrzymuje programu, ale odczyt wielu danych za jej pomocą składa się z kilku instrukcji. Zatem przy braku któregoś z układów Slave nie zostanie wstrzymana praca układu sterownika. Stan przekaźników PK1 i PK2 układu Slave 2 jest prezentowany w postaci graficznej. W programie zostały zdefiniowane dla LCD znaki załączonego i wyłączonego przekaźnika oraz znaku „stopnia” dla temperatury. W przypadku braku odpowiedzi od Slave przez co najmniej 100 ms, przy odczytywanym z niego parametrze umieszczany jest na LCD znak „?”, który może świadczyć o uszkodzeniu danego układu Slave lub jego braku w systemie. W programie do odczytu znaków od układów Slave służy procedura odczyt_zn. Procedura ta odbiera jedynie znaki cyfr od 0 do 9, aż do otrzymania znaku potwierdzenia „CR – LF”. W programie głównym, na samym jego początku, jest mierzone napięcie na potencjometrze P1 regulującym obroty zdalnego wentylatora (dołączonego do Slave 2) przez przetwornik A/C. Wartość z przetwornika jest konwertowana do wartości 8-bitowej (przetwornik jest 10-bitowy), przez co skrajnym położeniom potencjometru będą przypadać wartości z przetwornika 0 i 255, które wysłane do układu Slave 2 mogą być wprost wpisane do rejestru PWM (PWM ma rozdzielczość 8 bitów). Należy zwrócić uwagę, że napięcie odniesienia przetwornika zostało ustalone na 5 V. Po przekonwertowaniu warto-
88
List. 3. Program sterownika Master
'Przykład urzadzenia (sterownika) master sieci RS485. 'Urzadzenie realizuje funkcje termostatu - odczytuje temperature 'ze slave 1 i steruje ukladem wykonawczym (przekaznikiem PK2) slave 2 'Za posrednictwem potencjometru, master ma takze mozliwosc sterowania 'obrotami wentylatora doalczonego do slave 2 'Master umozliwia takze sterowanie drugim przekaznikiem (PK1) urzadzenia slave 2 za 'posrednictwem przycisku $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600
'informuje kompilator o pliku dyrektyw wykorzystywanego 'mikrontrolera 'informuje kompilator o czestotliwosci rezonatora kwarcowego 'informuje kompilator o predkosci transmisji RS232
Config Config Config Config
Pind.7 = Output 'linia pd.7 jako wyjscie Pind.2 = Output 'linia pd.2 jako wyjscie Lcd = 16 * 2 'konfiguracja organizacji znakow wyswietlacza LCD Lcdpin=Pin, Db4=Portb.3, Db5=Portb.2, Db6=Portb.1, Db7=Portb.0, E=Portb.4, Rs=Portb.5 'konfiguracja pinow mikrokontrolara do Config Adc = Single , Prescaler = Auto , Reference = Avcc 'konfiguracja wewnetrznego przetwornika Config Serialin = Buffered , Size = 15 'konfiguracja by interfejs rs232 uzywal przy odbiorze transmisji 'buforowej (bufor o wielkosci 15 znakow) Const Temp_ust = 25 Const Hist = 1
'ustawiona temperatura termostatu 'histereza teprmostatu
Declare Sub Odczyt_zn
'procedura odczytu otrzymanych danych od ukladow slave
Dim Dim Dim Dim Dim Dim Dim Dim Dim
'zmienna przecowujaca odebrany znak z rs232 'zmienna w ktorej skladany jest w calosc otrzymany adres 'pzechowuje wartosc wypelnienia PWM 'przechowuje wartosc odczytana z przetwornika A/C 'przechowuje stan przekaznika pk1 'przechowuje stan przekaznika pk2 'zmienna liczaca czas na odpowiedz ukladow slave 'zmienna przechowujaca odczytana temperature od slave 1 'zmienna przechowuje obliczana temperature przy realizacji 'termostatu
Zn As String * 1 Zm_lan As String * 5 Wyp_pwm As Byte Wart_adc As Word St_pk1 As Byte St_pk2 As Byte Czekaj As Word Temp_odcz As Integer Temp_pom As Integer
Re_de Alias Portd.2 S1 Alias Pind.7
'przypisanie aliasu linii pd.2, re_de steruje kierunkiem 'transmisji konwertera 'przypisanie aliasu S1 (dolaczony przycisk S1) linii pd.7
Deflcdchar 0 , 8 , 4 , 19 , 32 , 14 , 14 , 14 , 14 Deflcdchar 1 , 32 , 32 , 31 , 32 , 14 , 14 , 14 , 14 Deflcdchar 2 , 2 , 5 , 2 , 32 , 32 , 32 , 32 , 32 Set Portd.7 Start Adc Enable Interrupts St_pk1 = 0 St_pk2 = 0 Cursor Off Cls Do
'definicja znaku rozlaczonego przekaznika 'definicja znaku zalaczonego przekaznika 'definicja znaku stopnia
'dolaczenie do linii wejsciowej d.7 rezystora podciagajacego 'uruchamia wbudowany przetwornik A/C 'odblokowanie globalnych przerwan 'zeruje zmienna okreslajaca stan przekaznika pk1 'zeruje zmienna okreslajaca stan przekaznika pk2 'kursor lcd wylaczony 'czysc LCD
'poczatek glownej petli programu 'pomiar napiecia na wejťciu PC0 mikrokontrolera 'przesuniecie bitow wartosci odczytanej z A/C o dwa miejsca 'w prawo (pozbycie sie 2 najmlodszych bitow) Wyp_pwm = Low(wart_adc) 'zapisz mniej znaczacej czesci slowa wart_adc do zmiennej 'bajtowej wyp_pwm Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1ms Print "{008}8wp" ; Wyp_pwm 'zapisuje do slave 2 wartosc wypelnienia PWM, ktory steruje 'wentylatorem Waitms 1 'czekaj 1ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Debounce S1 , 0 , P_s1 , Sub 'jesli nacisnieto S1 to wywolanie podprogramu P_s1 'obslugujacego S1 Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1ms Print "{008}5r" 'wysyla do slave 1 rozkaz rzadania otrzymania zmierzonej 'temperatury Waitms 1 'czekaj 1ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Call Odczyt_zn 'wywolanie procedury odczytu znakow od slave Temp_odcz = Val(zm_lan) 'zamiana odczytanej temperatury (znakowo) na postać numeryczna Temp_pom = Temp_ust - Hist 'obliczenie temp_pom poprzez odjecie od temperatury zadanej 'wartosci histerezy If Temp_odcz <= Temp_pom Then 'jesli temp_odcz mniejsza lub rowna temp_pom to St_pk2 = 1 'zalaczenie przekaznika pk2 Else 'w przeciwnym razie Temp_pom = Temp_ust + Hist 'obliczenie temp_pom poprzez dodanie do temperatury 'zadanej wartosci histerezy If Temp_odcz >= Temp_pom Then 'jesli temp_odcz wieksza lub rowna temp_pom to Wart_adc = Getadc(0) Shift Wart_adc , Right , 2
ści odczytanej z P1 jest ona wysyłana do rejestru PWM układu Slave 2. Następnie jest badany stan przycisku „S1”. Jeśli został naciśnięty, wywołany zostaje podprogram p_s1, w którym następuje odwrócenie bitu 0 zmiennej ST_pk1 określającego stan przekaźnika PK1 układu Slave 2. Następnie jest wysyłany aktualny stan przekaźników do Slave 2. Należy zwrócić uwagę, że przy wysyłaniu danych do układów Slave, Master jest na tę chwilę przełączany z trybu odbiornika w tryb nadajnika. Kolejne instrukcje programu głównego odczytują temperaturę od układu Slave 1 realizują funkcję ter-
mostatu z uwzględnieniem histerezy. Wartość temperatury zadanej zawiera stałą temp_ust, a histerezy stałą hist. W zależności od temperatury odczytanej (ze Slave 1) i zadanej sterowany jest przekaźnik PK2, którego stan jest wysyłany do układu Slave 2. Pozostałe instrukcje pętli głównej programu prezentują w pierwszej linii wyświetlacza temperaturę odczytaną z układu Slave 1 i temperaturę zadaną. W drugiej linii LCD prezentowane są odczytane z układu Slave 2 wypełnienia sygnału PWM (0...255) oraz graficzny stan przekaźników PK1 i PK2. Pętla główna programu jest powtarzana
Elektronika Praktyczna 10/2004
B A S C O M O W E List. 3. cd.
St_pk2 = 0 'wyłaczenie przekaznika pk2 End If End If Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1ms Print "{008}8wo" ; St_pk1 ; "," ; St_pk2 'wysyla do ukladu slave 2 aktualny stan 'przekaznikow pk1 i pk2 Waitms 1 'czekaj 1ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Home 'kursor na poczatej pierwszej linii LCD If Czekaj > 100 Then 'jesli czekaj wieksze od 100 to Lcd "Tz=? " 'wyswietl na lcd ? - brak odczytanej temp (brak komunikacji 'ze slave 1) Else 'w przeciwnym razie Lcd "Tz=" ; Temp_odcz ; Chr(2) ; "C " 'wyswietlenie otrzymanej od slave 1 temperatury 'z dodatkowym znakiem stopnia End If Locate 1 , 10 'kursor w linii 1 i na pozycji 10 LCD Lcd "Tu=" ; Temp_ust ; Chr(2) ; "C " 'wyswietlenie temperatury zadanej z dodatkowym 'znakiem stopnia Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1ms Print "{008}8rp" ; Wyp_pwm 'odczytuje od slave 2 wartosc wypelnienia PWM, ktory 'steruje wentylatorem Waitms 1 'czekaj 1ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Call Odczyt_zn 'wywolanie procedury odczytu znakow od slave Lowerline 'kursor na poczatek drugiej linii LCD If Czekaj > 100 Then 'jesli czekaj wieksze od 100 to Lcd "PWM=? " 'wyswietl na lcd ? - brak odczytanej wartosci PWM (brak 'komunikacji ze slave 2) Else 'w przeciwnym razie Lcd "PWM=" ; Zm_lan ; " " 'wyswietlenie odczytanej wartosc PWM ze slave 2 End If Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1ms Print "{008}8ro" ; Wyp_pwm 'odczytuje od slave 2 stan przekaznikow PK1 oraz PK2 Waitms 1 'czekaj 1ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Call Odczyt_zn 'wywolanie procedury odczytu znakow od slave Locate 2 , 12 'kursor w linii 2 i na pozycji 12 LCD Zn = Mid(zm_lan , 1 , 1) 'odczyt ze zmiennej lancuchowej zm_lan, znakowej wartosci 'stanu przekaznika PK1 St_pk1 = Val(zn) 'zamiana znakowej postaci stanu PK1 na postac numeryczna 'i zapis jej do zmiennej st_pk1 Zn = Mid(zm_lan , 2 , 1) 'odczyt ze zmiennej lancuchowej zm_lan, znakowej wartosci 'stanu przekaznika PK2 St_pk2 = Val(zn) 'zamiana znakowej postaci stanu PK2 na postac numeryczna 'i zapis jej do zmiennej st_pk2 Locate 2 , 12 'kursor w linii 2 i na pozycji 12 LCD If Czekaj > 100 Then 'jesli czekaj wieksze od 100 to Lcd "? ?" 'wyswietl na lcd ? - brak odczytanego stanu przekaznikow PK1 'i PK2 (brak komunikacji ze slave 2) Else 'w przeciwnym razie Lcd Chr(st_pk1) ; " " ; Chr(st_pk2) 'wyswietlenie graficznej reprezentacji odczytanej 'wartosci stanow przekaznikow PK1 i PK2 ukladu slave 2 End If Waitms 200 'czekaj 200 ms Loop 'koniec glownej petli do-loop End 'koniec programu Sub Odczyt_zn 'procedura odczytu znakow nadawanych przez uklady slave Czekaj = 0 'zerowanie zmiennej czekaj Zm_lan = "" 'czyszczenie zmiennej znakowej zm_lan Do 'poczatek petli do-loop Incr Czekaj 'zwieksz o jeden zmienna czekaj Zn = Inkey() 'odczyt znaku z bufora rs232 If Zn >= "0" And Zn <= "9" Then 'jesli odczytany znak na kod ascii liczby 'z zakresu 0..9 to Zm_lan = Zm_lan + Zn 'dodaj odczytany znak do zmiennej zm_lan End If Waitms 1 'czekaj 1ms Loop Until Zn = Chr(13) Or Czekaj > 100 'petla wykonywana az otrzymano znak CR (ascii 13) 'lub zmienna czejaj> niz 100 End Sub 'koniec procedury - odczytane dane zamiera zmienna zm_lan P_s1: 'podprogram obslugi przycisku S1 St_pk1 = St_pk1 Xor &B00000001 'zamienia bit 0 zmiennej st_pk1 na przeciwny (zmiana stanu pk1 'na przeciwny) Set Re_de 'przelaczenie konwertera rs485 na nadajnik Waitms 1 'czekaj 1 ms Print "{008}8wo" ; St_pk1 ; "," ; St_pk2 'wysyla do ukladu slave 2 aktualny stan 'przekaznikow pk1 i pk2 Waitms 1 'czekaj 1 ms Reset Re_de 'przelaczenie konwertera rs485 na odbiornik Return 'powrot z podprogramu
P O R A D Y
co ok. 200 ms. Liczne komentarze w przedstawionych programach pomogą w ich dokładnym zrozumieniu i rozbudowie o nowe funkcje. Przedstawiony system jest tylko przykładem, który miał ukazać aspekty komunikacji z wykorzystaniem magistrali RS485 na dość duże odległości. W przypadku magistrali RS485 można dołączyć do niej wiele układów Slave tego samego typu, ale dołączone układy powinny mieć różne adresy. Na przykład, dołączone dwa czujniki temperatury mogą mieć adresy 1 oraz 2 lub dowolnie inne z zakresu od 0 do 99. W przypadku potrzeby szybkich transferów danych na magistrali RS485 w obu kierunkach, można do tego celu stworzyć magistralę RS485 z dwoma parami przewodów, w których jedna służy do odbioru, a druga do nadawania danych. W tym przypadku należy wykorzystać po dwa konwertery w każdym układzie Master lub Slave. Dostępne są także w jednej obudowie podwójne konwertery RS485. Jeżeli transmisje danych mają przebiegać bez błędów, wysyłane dane można opatrzyć np. w sumę kontrolną według algorytmu CRC. Obliczenie sumy kontrolnej po odbiorze danych umożliwi sprawdzenie poprawności danych z otrzymaną od nadajnika sumą kontrolną CRC. W przedstawionym systemie protokół transmisji w formie znaków „BS – adres układu – zapis lub odczyt-dane” może być całkowicie inny, dopasowany do danego systemu. Może być wyposażony we wspomnianą sumę kontrolną CRC, którą nadajnik wysyła z danymi, a odbiornik oblicza i porównuje z otrzymaną od nadajnika wraz z danymi. Zaprezentowany system może być punktem wyjściowym do budowy bardziej rozbudowanych systemów w oparciu o magistralę RS485. Marcin Wiązania, EP
[email protected]
Rys. 5. Schemat elektryczny sterownika (Mastera) systemu RS485
Elektronika Praktyczna 10/2004
89
K U R S
Układy programowalne, część 8 „Plotki o mojej śmierci są nieco przesadzone” powiedział niegdyś Mark Twain. Powiedzenie to doskonale pasuje do obecnej sytuacji CUPL-a: z mody nieco wyszedł, ale jest ciągle stosowany m.in. w pakietach projektowych Protel (także w najnowszej wersjach DXP i 2004). Warto zwrócić uwagę na fakt, że kompilatory wbudowane w pakiety firmy Altium (Protel 99SE/DXP/2004) obsługują blisko 6000 typów układów SPLD/CPLD oraz ponad 8500 typów układów FPGA pochodzących od 20 producentów. CUPL jest także sztandarowym językiem HDL firmy Atmel, która udostępnia na swojej stronie internetowej bezpłatną wersję WinCUPL-a. Kompilator CUPL-a zastosowano także w pakiecie ProChip Designer firmy Atmel, który służy m.in. do realizacji projektów na układy FPSLIC (rdzeń AVR i FPGA w jednej obudowie). Do grona producentów narzędzi ułatwiających korzystanie z CUPL-a dołączyła także nowozelandzka firma Hutson (http://www.hutson.co.nz), w ofercie której znajduje się program Rimu Schematic. Za jego pomocą można konwertować schematy elektryczne do postaci opisu tekstowego w języku CUPL. Program ten nie
Zbliżamy się do końca cyklu, więc po sporej dawce informacji o języku CUPL, przechodzimy do przedstawienia narzędzi, w których ten właśnie język HDL został zaimplementowany. W tej części przedstawiamy możliwości bezpłatnych programów: edytora schematów RimuSCH i kompilatora WinCUPL. ma wbudowanego kompilatora, nie może on więc pracować całkowicie samodzielnie – służy wyłącznie jako wygodny konwerter schematów do opisu HDL. Prezentację narzędzi rozpoczniemy od tego właśnie programu, którego możliwości w bezpłatnej wersji są w zupełności wystarczające do zrealizowania projektów na układach GAL i większych.
RimuSCH: dla tych co nie lubią pisać
Pomimo tego, że CUPL należy do zdecydowanie najprostszych języków HDL, wielu jego potencjalnych użytkowników obawia się podejmowania samodzielnych prób z przygotowywaniem za jego pomocą własnych opisów projektowanych układów. Uważają (i słusznie), że łatwiej byłoby narysować schemat logiczny, który jakieś narzędzie przekonwertuje do postaci „zrozumiałej” dla programo-
wanego układu PLD. Z pomocą przychodzi nam RimuSCH – dostępny bezpłatnie (publikujemy go na CD-EP10/2004B) edytor schematów wyposażony m.in. w interfejs eksportu listy połączeń w formacie CUPL-a. Program wymaga instalacji, która przebiega w sposób typowy dla systemu Windows (działa także z Windows XP). Na rys. 39 pokazano ulokowanie RimuSCH w typowym cyklu projektowym. Rolę syntezera logicznego może spełniać dowolny kompilator CUPL-a, także jego wersja DOS-owa. Na rysunku przedstawiono dwa zalecane programy:
Rys. 39
90
Elektronika Praktyczna 10/2004
K U R S
Można także w praktyce
Programy źródłowe wszystkich projektów opisanych w ramach kursu publikujemy na CD-EP9/2004B. Ich działanie można sprawdzić w praktyce za pomocą zestawu AVT-599 (opisany w EP3/2004), w którym zastosowano programowany w systemie układ ispGAL22V10.
– WinCUPL, którego najpoważniejszą (w zasadzie jedyną) wadą są mocno ograniczone biblioteki układów docelowych (do układów zgodnych z oferowanymi przez Atmela), co jest o tyle oczywiste, że ta wersja programu jest własnością Atmela. Niebagatelną zaletą tego programu jest możliwość nieodpłatnego (przy tym legalnego) korzystania z niego. – Protel 99SE lub nowszy, którego wadą jest ograniczony czas legalnego korzystania (ze względu na ograniczenia wersji ewaluacyjnej), za to biblioteki obsługiwanych układów są niezwykle bogate. Tak więc, kompilator można dobrać do indywidualnych potrzeb
Rys. 40
Elektronika Praktyczna 10/2004
Projekt w dwóch plikach Kompletny projekt CUPL składa się z dwóch plików o rozszerzeniach: *.pld (źródłowy) oraz *.si (symulacyjny - jeżeli symulator jest wykorzystywany podczas projektowania). Przeniesienie projektu pomiędzy programami wykorzystywanymi podczas projektowania oznacza w praktyce przeniesienie tych dwóch plików. i wymagań. W przypadku projektów prezentowanych w tym cyklu artykułów, do ich przetestowania w zestawie AVT-599 w zupełności wystarczy WinCUPL. Na rys. 40 pokazano schemat logiczny przykładowego projektu, który przygotowano za pomocą edytora RimuSCH. Podczas rysowania schema-
tów logicznych przeznaczonych do konwersji do postaci HDL, należy korzystać wyłącznie z biblioteki logic.rlb, która jest dostarczana w standardowej instalacji edytora (rys. 41). W jej ramach są dostępne wszystkie standardowe funktory logiczne (bram-
Rys. 41
91
K U R S
Rys. 42
Rys. 44
ki AND, NAND, OR, NOR, ExOR i ExNOR, także w wersjach o dużej liczbie wejść, ich symbole są dostępne w dwóch notacjach), przerzutniki JK, T, D i SR, a także multipleksery. Twórca RimuSCH zawarł ponadto w bibliotece logic.rlb dwa złożone elementy biblioteczne – 8-bitowe liczniki góra-dół z wyjściami trójstanowymi, które – ze względu na przyjęty sposób opisu – nie we wszystkich układach PLD dają się wygodnie zaimplementować. Po narysowaniu schematu można go poddać weryfikacji elektrycznej za pomocą standardowego narzędzia ERC wbudowanego w RimuSCH (pozwala wychwycić „grube” pomyłki w narysowanym schemacie), a następnie wyeksportować do formatu pliku źródłowego *.pld z opisem w języku CUPL. Wymaga to wybrania w menu opcji Tools> Generale Report... (rys. 42), następnie w wyświetlonym oknie (rys. 43) wybieramy format pliku wyjściowego (na
liście Report Type). W ten sposób uzyskujemy plik źródłowy z opisem projektu przedstawionego na schemacie (rys. 40) w języku CUPL. Opis HDL przedstawiono na list. 19. Niestety, pokazany przykład ilustruje drobną słabość wbudowanego w RimuSCH generatora plików wyjściowych: w przypadku projektów wielopoziomowych (tzn. takich, w których występują zagrzebane węzły logiczne wykorzystywane do implementacji funkcji logicznych – rys. 40) edytor samodzielnie tworzy nazwy węzłów (jak N000001 lub n0006 na list. 19), ale nie deklaruje ich w pliku źródłowym. Powoduje to, że wygenerowany plik nie daje się skompilować. Konieczne jest uzupełnienie go o deklaracje węzłów zagrzebanych: node N000001; node n0006;
lub węzłów przypisanych do wyprowadzeń docelowego układu: pinnode = N000001; pinnode = n0006;
Kompilacja opisu – możliwość pierwsza
Rys. 43
Uzyskany opis poddamy kompilacji za pomocą programu WinCUPL. Ponieważ RimuSCH generuje plik w formacie *.pld, sformatowany zgodnie ze specyfikacją CUPL-a, można wykorzystać go jak standardowy plik projektowy. W przypadku takiej konieczności, opis uzyskany
Nie do końca doskonały RimuSCH generuje niepoprawne opisy dla projektów składających się z więcej niż jednej warstwy. Konieczne jest uzupełnienie wygenerowanego opisu o deklaracje węzłów zagrzebanych (node) oraz wyprowadzonych na zewnątrz układu (pinnode).
92
z RimuSCH należy zmodyfikować o wcześniej wspomniane deklaracje, co umożliwi jego kompilację. W zależności od potrzeb, WinCUPL umożliwia kompilację docelową, tzn. z uwzględnieniem ograniczeń architektury fizycznych układów lub – co jest przydatne podczas weryfikacji poprawności opisu HDL – kompilację na układ wirtualny (virtual device), który nie ma żadnych ograniczeń wynikających z budowy jego mikrokomórek, buforów I/O itp. Podczas pierwszych samodzielnych prób zdecydowanie łatwiejsze będzie List. 19. Plik źródłowy z opisem projektu pokazanego na rysunku 40, uzyskany za pomocą edytora RimuSCH Name logika1.sch; Partno ; Date 04-09-14 13:05:54; Revision ; Designer ; Company ; Assembly XXXXX; Location XXXXX; /*******************************/ /* CUPL HDL Format */ /* File : C:logika1.sch */ /* Generated by Rimu Schematic */ /*******************************/ /** Allowable Target Device **/ /*******************************/ /** Inputs **/ Pin = DATA_1; Pin = CLK; Pin = DATA_2; Pin = MUX_IN_B; Pin = MUX_IN_A; Pin = SEL; /** Pin Pin Pin
Outputs **/ = MUX_SYNC; = CNT_CMP; = NCNT_CMP;
/** Declarations and Intermediate Variable Definitions */ /** Logic Equations **/ N000001.d = DATA_1; N000001.ck = CLK; n0011 = !N000001; n0006.d = DATA_2; n0006.ck = CLK; N000002 = !n0006; CNT_CMP = n0011 & n0006; MUX_SYNC = n0010 # n0011; NCNT_CMP = !CNT_CMP; n0010 = (MUX_IN_A&!SEL) # (MUX_IN_B&SEL);
Elektronika Praktyczna 10/2004
K U R S List. 20. Plik zawierający opis symulacji multipleksera z list. 10 (EP8/2004) Name PartNo Date Revision Designer Company Assembly Location Device
mux; brak; 20/05/04; brak; PZb; EP; brak; brak; g22v10lcc;
ORDER: SEL1, SEL0, X0, X1, X2, X3, Y; VECTORS: 000XXX* 001XXX* 000XXX* 001XXX* 01X0XX* 01X1XX* 01X0XX* 01X1XX* 10XX0X* 10XX1X* 10XX0X* 10XX1X* 11XXX0* 11XXX1* 11XXX0* 11XXX1*
korzystanie z możliwości układu wirtualnego tym bardziej, że diagnostyka błędów wbudowana w WinCUPL-u nie jest najwyższych lotów. Zdarza się, że komunikat o błędzie wyprowadza projektanta na manowce, sugerując błędy w innych miejscach niż występują w rzeczywistości.
Symulacja w WinCUPL-u
Debugowanie projektu ułatwia wbudowany w WinCUPL-a symulator funkcjonalny, który prezentuje wyniki symulacji w postaci graficznej (na rys. 44 pokazano widok okna symulatora z wynikami weryfikacji projektu dwuwejściowego multipleksera – jego opis pokazano w EP8/2004 na list. 10). Do przeprowadzenia symulacji konieczny jest plik wejściowy *.si, zawierający listę weryfikowanych sygnałów oraz informacje o wektorach wejściowych (pobudzeniach). Na list. 20 pokazano plik zawierający opis
List. 21. Pliki z wynikami symulacji z formatowaniem i bez niego Bez formatowania ================ SS EE LLXXXX 100123Y ================ 0001: 000XXXL 0002: 001XXXH 0003: 000XXXL 0004: 001XXXH 0005: 01X0XXL 0006: 01X1XXH 0007: 01X0XXL 0008: 01X1XXH 0009: 10XX0XL 0010: 10XX1XH 0011: 10XX0XL 0012: 10XX1XH 0013: 11XXX0L 0014: 11XXX1H 0015: 11XXX0L 0016: 11XXX1H
Rys. 45
Interpreter wbudowany w symulator CUPL-a umożliwi m.in. proste formatowanie wyników symulacji generowanych do pliku tekstowego (*.so, rodzaj raportu z symulacji). Za pomocą znaku % można pomiędzy nazwami sygnałów wstawić zadaną liczbę spacji, co ułatwi pogrupowanie sygnałów w taki sposób, aby zwiększyć czytelność raportu. Przykłady plików *.so bez formatowania i z formatowaniem, uzyskanym poprzez zapisanie linii ze słowem kluczowym ORDER w następujący sposób:
Z formatowaniem ====================== SS EE LL XXXX 10 0123 Y ====================== 0001: 00 0XXX L 0002: 00 1XXX H 0003: 00 0XXX L 0004: 00 1XXX H 0005: 01 X0XX L 0006: 01 X1XX H 0007: 01 X0XX L 0008: 01 X1XX H 0009: 10 XX0X L 0010: 10 XX1X H 0011: 10 XX0X L 0012: 10 XX1X H 0013: 11 XXX0 L 0014: 11 XXX1 H 0015: 11 XXX0 L 0016: 11 XXX1 H
ORDER: SEL1, SEL0, %4, X0, X1, X2, X3, %2, Y;
przebiegu symulacji. Jest on dość prosty w analizie: – Sekcja zaczynająca się od słowa ORDER zawiera listę sygnałów wejściowych, wyjściowych i węzłów wewnętrznych, których stany będą monitorowane lub wymuszane. – Sekcja zaczynająca się od słowa VECTORS zawiera informacje o kolejnych (w wierszach) stanach wejść i wyjść. Stany wyjściowe projektant może określić samodzielnie, opisując to, czego się spodziewa, oddać też inicjatywę w ręce symulatora, który określi stany na wyjściach układu.
Tab. 14. Sygnały wykorzystywanych w plikach *.si Wymuszenie stosowane w graficznym edytorze przebiegów WinCUPL Kliknięcie w dolnej lewej części komórki Kliknięcie w górnej lewej części komórki
Oznaczenie
Opis
Dotyczy...
0
Zero logiczne
...wejść
1
Jedynka logiczna
...wejść
C
Sygnał zegarowy „0-1-0”
...wejść
-
K
Sygnał zegarowy „1-0-1”
...wejść
-1
X
Stan nieistotny
...wejść
Wstępne ładowanie rejestrów Stan wysoki na wyjściu testowanego układu Stan niski na wyjściu testowanego układu
...wyjść
Z
Stan wysokiej impedancji
...wyjść
*
Stan wyliczany przez symulator
...wyjść
P H L
Elektronika Praktyczna 10/2004
...wejść
...wyjść
Symbol – –
1
Kliknięcie w środkowej części komórki Lewy przycisk ALT + kliknięcie myszką w środkowej części komórki Kliknięcie w dolnej prawej części komórki Przycisk SHIFT + kliknięcie w górnej prawej części komórki Kliknięcie w środkowej części komórki Lewy przycisk CTRL + kliknięcie myszką w środkowej części komórki
– – –
–
pokazano na list. 21. Pobudzenia wejść i stany wyjść oznaczane są symbolami, które zebrano w tab. 14. Pliki pobudzeń można tworzyć ręcznie za pomocą dowolnego edytora tekstów, można także skorzystać z wbudowanego w WinCUPL-a edytora przebiegów, który znacznie ułatwia (można ręcznie określić stan przypisany określonej liczbie umownych jednostek czasu – rys. 45) i przyspiesza zarówno tworzenie samych pobudzeń jak i weryfikację reakcji układu na nie. Twórcy edytora przebiegów zastosowali pomysłowy sposób określania stanów za pomocą myszki: zależy on od miejsca w obrębie komórki wyznaczającej pojedynczy krok na osi czasu, w którym użytkownik kliknie myszką. Przykładowo, kliknięcie w środkowej części komórki powoduje przypisanie stanu wysokiej impedancji, w prawej dolnej części komórki – stanu L, w lewej górnej – stanu „1”, a kliknięcie w środkowej części z jednoczesnym przytrzymaniem klawisza ALT wymusza załadowanie rejestrów predefiniowaną wartością początkową. Niestety, z nieustalonych przyczyn, nie jest możliwe wprowadzenie w ten sposób sygnałów zegarowych i to wbrew zapisom w dokumentacji WinCUPL-a. Piotr Zbysiński, EP
[email protected]
93
P O D Z E S P O Ł Y
AVR-owe „fusy” część 2 Nastawy bitów kontrolnych
Dla większości mikrokontrolerów z rodziny AT90 nie ma potrzeby martwić się o nastawy bitów kontrolnych (bezpieczników). Należy po prostu podłączyć zewnętrzny oscylator kwarcowy lub ceramiczny, ewentualnie generator zegarowy i już można normalnie używać mikrokontrolera. Inaczej jest w przypadku AVR z serii ATMega. Właściwy sposób nastawy zależy od rodzaju używanego programatora i jego oprogramowania. Nie można niestety opisać jednej, uniwersalnej metody dla wszystkich. W artykule opiszę ogólne zasady wykonywania nastaw oraz sposoby użycia popularnych narzędzi, takich jak AVR Studio (z dołączonym STK500 lub JTAG ICE) oraz Bascom AVR (z dołączonym STK300). S p o s ó b w y ko n y w a n i a n a s t a w z dołączonym STK500 jest bardzo prosty. Z menu wybieramy opcję Tools>STK500/AVRISP/JTAG ICE. Ilustruje to rys. 4. Wyświetli się okno nastaw, gdzie po wybraniu typu mikrokontrolera oraz zakładki Fuses uzyskujemy moż-
Rys. 4. Wybór narzędzia STK500 z menu AVR Studio 4
94
liwość nastaw zegara. Pokazano to na rys. 5 (fragment nastaw mikrokontrolera ATMega 128). Na przykład zaznaczenie znaku wyboru obok Int. RC Osc. 1MHz; Start-up time: 6 CK + 0ms, a następnie wybranie przycisku Program powoduje załączenie wewnętrznego oscylatora o częstotliwości 1 MHz. Jednostka centralna zostanie uruchomiona po 6 cyklach zegarowych. Opóźnienie wprowadzane jest w celu ustabilizowania się częstotliwości generatora po załączeniu napięcia zasilania. Zupełnie inaczej przeprowadza się nastawy za pomocą programatora wbudowanego w Bascom AVR. Po uruchomieniu programatora należy wybrać zakładkę Lock and Fuse Bits. Ukaże się okienko, jak na rys. 6. W moim przykładzie posłużyłem się mikrokontrolerem ATMega162. Wyświetlone na ekranie bity są bardzo podobne. Nastawy dotyczące zegara mikrokontrolera, to: – Fusebit 7 – wartość 1 oznacza wydłużenie cyklu maszynowego do 16x cykl zegarowy, – Fusebit 98 – liczba cykli zegarowych oraz wartość opóźnienia do uruchomienia CPU, – Fusebit DCBA – nastawa opcji CKSEL. Bascom ma rozbudowany system podpowiedzi oferując listę opcji do wyboru po wskazaniu którejś
Artykuł jest przeznaczony przede wszystkim dla Czytelników początkujących w dziedzinie mikrokontrolerów. Opisano w nim różnice pomiędzy cyklem zegarowym i cyklem maszynowym oraz opcje nastaw źródeł sygnału zegarowego (sprawiające często kłopoty ustawianie bezpieczników konfigurujących, tzw. fuse’ów) w procesorach AVR. Przedstawiono wady i zalety różnych rozwiązań, wskazano także potencjalne przyczyny problemów oraz sposoby radzenia sobie z nimi.
Rys. 5. Okienko nastaw, zakładka Fuses dla mikrokontrolera ATMega 128
Elektronika Praktyczna 10/2004
P O D Z E S P O Ł Y
Rys. 6. Wygląd zakładki Lock and Fuse Bits aplikacji do obsługi programatora w Bascom AVR
Rys. 7. Nastawy bitu 7 (dzielnik zegara)
z nich. Na rys. 7, 8 i 9 pokazano opcje dostępne dla interesujących nas nastaw. Nastawa Fusebit 7 w ATMega162 powoduje włączenie preskalera zegara taktującego pracą procesora. Dzięki temu możliwe jest obniżenie szybkości pracy CPU, co może być potrzebne w pewnych sytuacjach, na przykład przy zasilaniu bateryjnym. Stan bezpiecznika Fusebit 98 umożliwia nastawę opóźnienia pomiędzy zanikiem zewnętrznego sygnału zerowania a załączeniem CPU mikrokontrolera. Ten czas może być wybrany np. w zależności od rodzaju użytego generatora zegarowego. Jeśli dla przykładu używany jest zewnętrzny generator zegarowy, który uruchamia się bardzo szybko – czas ten może być bardzo krótki. Gdy natomiast stosuje się rezonator kwarcowy, wymagany jest dłuższy czas na stabilizację generowanej częstotliwości. Mimo iż Bascom podpowiada sposoby nastaw bitów CKSEL, to jednak każdorazowo należy odnieść ich nastawę do opisu w nocie katalogowej danego typu mikrokontrolera. Stan bezpieczników CKSEL kontroluje ustawienia rodzaju oscylatora, a w niektórych mikrokontrolerach AVR również czas startu CPU. Do nastawy bitów bezpieczników oraz blokujących można również użyć popularnego i opisywanego w poprzednich numerach EP programatora yaap. Interfejs nie jest aż tak opisowy jak w Bascom, lecz ma tę zaletę, że nastawy wszystkich bitów widać jak na dłoni (rys. 10). Tu niestety należy uzbroić się w kartę katalogową przed wykonaniem ja-
Rys. 8. Nastawy bitów 98 (czas startu)
Rys. 9. Nastawy bitów DCBA (CKSEL)
Elektronika Praktyczna 10/2004
Rys. 10. Wygląd ekranu programu YAAP
95
P O D Z E S P O Ł Y
Rys. 11. Schemat prostego generatora o częstotliwości stabilizowanej kwarcem
kichkolwiek zmian. Program YAAP współpracuje bardzo dobrze z programatorem STK200/STK300. Według mojej wiedzy jest to interfejs, który zdecydowanie bardziej odpowiada profesjonalistom niż amatorom.
Rozwiązywanie problemów
Początkującym programistom często zdarza się, że po zaprogramowaniu bitów bezpieczników mikrokontroler przestaje pracować. Świadczą o tym chociażby liczne pytania pojawiające się na grupach dyskusyjnych w Internecie. Proszę się nie obawiać – w normalnych warunkach zasilania i eksploatacji mikrokontrolera nie da się zepsuć za pomocą programatora szeregowego. Przyczyny należy upatrywać w błędnie wykonanych nastawach, a zwłaszcza w: – ustawieniu bitu zabraniającego programowania przez interfejs SPI; – ustawieniu bitu zabraniającego uży-
96
wania interfejsu JTAG (oczywiście, jeśli mikrokontroler jest w ten interfejs wyposażony); – niewłaściwych nastawach bitów CKSEL. Jeśli interfejs umożliwiający programowanie szeregowe (SPI lub JTAG) został wyłączony, to niestety należy poszukać alternatywnej metody ustawienia bitów bezpieczników, czyli najczęściej skorzystać z programatora równoległego dla AVR. Można to zrobić również za pomocą zestawu startowego dla AVR produkowanego przez firmę Atmel pod oznaczeniem STK500. Inaczej jest w przypadku złego ustawienia bitów CKSEL (Fuse DCBA). Niektóre z nastaw mogą wymagać podania zewnętrznego sygnału zegarowego. W takim przypadku należy podać na wejście XTAL1 sygnał zegarowy z dowolnego generatora (zbudowanego na przykład z bra-
mek TTL) o częstotliwości właściwej dla danego rodzaju mikrokontrolera i poprawnie ustawić wartości bitów bezpieczników. Przykładowy schemat takiego generatora pokazano na rys. 11. Oczywiście można użyć dowolnego innego obwodu. Jeśli zasilenie wejścia XTAL1 z zewnętrznego generatora nie przynosi skutku, to być może został załączony generator pracujący z zewnętrznymi elementami RC. Należy dołączyć chociażby tymczasowo wymagane elementy i spróbować ponownie zaprogramować nastawy. O ewentualnych problemach z pojemnościami dołączonymi do XTAL1 i XTAL2 pisałem już wcześniej. Pominąłem jednak fakt, że bardzo istotna przy dołączaniu wszelkich źródeł sygnału zegarowego jest również długość ścieżek łączących oscylator z mikrokontrolerem. Projektując płytkę drukowaną należy zadbać o to, aby ścieżki były jak najkrótsze, czyli żeby w praktyce ich długość nie przekraczała 1 cm. Jeśli doprowadzenia będą dłuższe, to może zdarzyć się (o ile oscylator ze względu na wniesioną indukcyjność i pojemność w ogóle będzie pracował), że pracujące urządzenie z mikrokontrolerem będzie zakłócać inne, znajdujące się w sąsiedztwie. Długa ścieżka pracować będzie jak antena, a i amplituda sygnału mierzona na doprowadzeniach oscylatora nie jest zbyt mała. Może nawet oscylować w zakresie poziomów napięć TTL. Jacek Bogusz
[email protected]
Elektronika Praktyczna 10/2004
PROJEKTY
CZYTELNIKÓW
Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze odpowiedzialności za prawidłowe działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż sprawdzamy poprawność konstrukcji. Prosimy o nadsyłanie własnych projektów z modelami (do zwrotu). Do artykułu należy dołączyć podpisane oświadczenie, że artykuł jest własnym opracowaniem autora i nie był dotychczas nigdzie publikowany. Honorarium za publikację w tym dziale wynosi 250,- zł (brutto) za 1 stronę w EP. Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie prawo do dokonywania skrótów.
Dotykowy wyłącznik urządzeń zasilanych z sieci 230 V/50 Hz Niemal wszystkie urządzenia zasilane z sieci energetycznej posiadają wyłączniki. W zdecydowanej większości są one mechaniczne, a przez to zawodne. Psują się tym szybciej im więcej prądu pobiera urządzenie, które ma być wyłączane. Poza tym typowe wyłączniki mechaniczne nie zawsze są wygodne w użyciu – wymagają przyłożenia pewnej siły. Już nie wspomnę o tym, że często w momencie ich używania do sieci przedostają się krótkie impulsy zakłócające co niekiedy może mieć znaczenie. Rekomendacje: zalecamy stosowanie do włączania urządzeń zasilanych z sieci energetycznej tam, gdzie istotna jest niezawodność i minimalizacja generowanych zakłóceń elektromagnetycznych.
Elektronika Praktyczna 10/2004
Projekt
122
Tego typu wad pozbawiony jest niżej opisywany wyłącznik elektroniczny, którego projekt pragnę zaprezentować Czytelnikom EP. Zadaniem układu jest bezstykowe włączanie i wyłączanie dowolnego urządzenia sieciowego. Sterowanie wyłącznikiem odbywa się poprzez chwilowe dotknięcie niewielkiej śrubki-czujnika na obudowie urządzenia.
Działanie układu
Schemat układu przedstawiono na rys. 1. Konstrukcję można umownie podzielić na 4 moduły: pierwszym z nich jest zasilacz bezstransformatorowy (elementy C1..3, R3...R5, D1...D5), drugim przerzutnik T – w tej roli U1 wraz z elementami towarzyszącymi. Trzecim jest detektor dotyku – tranzystor T1 + współpracujące z nim e l e m e n t y b i e r n e . C z w a rtym są układy wykonawcze: optotriak Q1, triak Q2 oraz dioda kontrolna D6. Zasilacz beztransformatorowy został zaprojektowany w klasyczny sposób, dlatego nie będę go zbyt szczegółowo omawiał. W skrócie tylko napomknę, że głównym elementem decydującym o jego wydajności prądowej jest wysokonapięciowy kondensator C1. Jako przerzutnik T pracuje zaadaptowany licznik dziesiętny CMOS 4017. Przy-
stosowanie polega na skróceniu jego cyklu zliczania (normalnie do dziesięciu) poprzez podłączenie wyjścia Q2 (wyprowadzenie 4) do wejścia kasującego RST (wyprowadzenie 15) za pośrednictwem diody D7. Dioda ta umożliwia prawidłowe działanie obwodu automatycznego kasowania licznika w momencie włączenia zasilania – obwód różniczkujący C4, R7. Obwód ten gwarantuje, że w przypadku zaników napięcia i po późniejszym jego pojawieniu się włącznik elektroniczny będzie w stanie spoczynku, tj. na wyjściu Q1 (wyprowadzenie 2 układu U1) będzie panował stan niski. Tym sa-
mym zielona sekcja LED D6 i szeregowo z nim włączona dioda optotriaka Q1 nie będą włączone – triak Q2 będzie rozwarty, przyłączone urządzenie sieciowe będzie wyłączone. Wejście przerzutnika U1 zawiera obwód Schmitta, co czyni je odporniejszym na przebiegi nieustalone. Współpracuje z nim (poza obwodem odkłócającym R8, C5)
Ważne uwagi: – Na niektórych elementach układu występuje niebezpieczne dla zdrowia i życia napięcie sieci 230V! W związku z tym montaż i uruchomienie układu powinna przeprowadzać wykwalifikowana osoba dorosła lub inna pod czujną kontrolą takiej osoby! – W związku z tym, że w momencie dotknięcia czujnika przez ciało ludzkie przepływa pewien niewielki prąd (zupełnie nieszkodliwy i nieodczuwalny przez zdrowe osoby) ostrożność (przez niektórych uznana być może za przesadną) nakazuje, aby z urządzenia nie korzystały osoby posiadające wszczepiony rozrusznik serca.
97
PROJEKTY
CZYTELNIKÓW
Rys. 1 „wzmacniacz dotyku” w postaci tranzystora T1 i współdziałającego z nim obwodu przeciwzakłóceniowego R9, C6 i D8. Dotknięcie (np. palcem wskazującym) wyprowadzonej na zewnątrz obudowy końcówki rezystora R11 spowoduje chwilowe otwarcie tranzystora T1. Na wejście zliczające CLK (wyprowadzenie 14 U1) zostanie więc podany stan wysoki. Dotychczas włączona czerwona sekcja LED D6 (czuwanie) tym samym zgaśnie i zaświeci się zielona (praca). W efekcie triak włączy współpracujące urządzenie, np. lampę stołową, grzejnik, radio. Optotriak zawiera obwód wyzwalania w zerze sinusoidy przebiegu sieciowego co zabezpiecza przed powstawaniem zakłóceń w momencie włączania, które są charakterystyczne dla klasycznych wyłączników.
Montaż układu
Wygląd prototypu przedstawiono na fotografii, natomiast schemat montażowy płytki pokazano na rys. 2. Jej montaż rozpoczynamy od wlutowania wszystkich zwór (wykonanych np. z obciętych końcówek rezystorów). Następnie montujemy wszystkie elementy bierne, potem półprzewodniki. Układ scalony i optotriak zalecam umieścić w podstawce. Dioda świecąca powinna być wlutowana na takiej wysokości, aby po późniejszym zamknięciu całości w obudowie wystawała przez zrobiony w niej otwór. Tym samym powinna być widoczna z zewnątrz dla obserwatora. Z punktu lutowniczego oznaczonego jako
98
SENSOR powinien wychodzić krótki izolowany przewód, który łączymy za pomocą nakrętki z małą śrubką przykręconą do obudowy. Śrubka ta powinna być dostępna z zewnątrz (analogicznie jak D6), aby możliwe było jej dotknięcie, co umożliwi sterowanie wyłącznikiem. Na koniec, w sześć punktów lutowniczych do tego przeznaczonych należy wlutować dwa 3-żyłowe, podwójnie izolowane przewody sieciowe (trzecia żyła to uziemienie). Pierwszy z nich doprowadza zasilanie i jest zakończony wtyczką sieciową pasującą do gniazda z bolcem. Drugi to wyjście, z drugiej strony zakończony gniazdem z bolcem uziemiającym (gniazdo typu „na kabel”) – do niego należy przyłączyć urządzenie, które chcemy wyłączać (włączać). Jeśli jego moc będzie większa niż 100 W pod triak należy podłożyć niewielki radiator z blachy aluminiowej (miejsce styku posmarować cienką warstwą pasty silikonowej) i przykręcić do płytki za pomocą śruby 3mm
Rys. 2
z nakrętką tak, aby nakrętka znajdowała się od strony elementów. Również ścieżki oznaczone linią przerywaną trzeba będzie wzmocnić poprzez równoległe przylutowanie do nich odcinków drutu srebrzanki lub innego nieizolowanego, pocynowanego przewodu o średnicy 1,5...2 mm. Po zamontowaniu wszystkich podzespołów na płytce, przylutowaniu wszystkich przewodów, przymocowaniu ich (tak aby zabezpieczyć przed wyrwaniem – do tego służą 4 dodatkowe otwory w płytce) oraz wykonaniu niezbędnych otworów mocujących zamykamy układ w obudowie. Najlepszą wydaje się być plastykowa, w handlu oznaczona jako KM-26N, zapewniająca niemal całkowitą szczelność i bezpieczeństwo oraz niewielkie wymiary. Kto zechce zastosować inną może to zrobić bez przeszkód, o ile tylko zmieści się w niej płytka, a sama obudowa będzie chroniła użytkownika przed możliwością poraże-
nia prądem. Jeśli wszystkie podzespoły są sprawne i nie występują żadne zwarcia na płytce, to układ nie wymaga żadnego uruchamiania. Gdyby układ mimo to nie reagował na dotknięcie palcem czujnika konieczne okaże się odwrotne włożenie wtyczki sieciowej, dzięki której dostarczane jest zasilanie. Dariusz Knull
WYKAZ ELEMENTÓW Rezystory R1, R2: 180V R3, R4, R8: 100kV R5: 220V/0,5W R6: 560V R7: 2,2MV R9: 220kV R10, R11: 1MV Kondensatory C1: 220nF/400V C2: 47mF/16V C3, C4: 100nF C5: 220nF C6: 10nF Półprzewodniki D1...D4: 1N4005...7 D5: dioda Zenera 12V D6: LED dwukolorowa czerwono-zielona D7, D8: 1N4148 T1: BC177B (BC308B/415/416/ 558B lub C, itp.) U1: CD4017 Q1: MOC3043 Q2: dowolny triak, np. TIC246D, BT135, TLC221S Pozostałe B1: bezpiecznik max. 5 A/250 V Oprawka bezpiecznikowa do druku (opcjonalnie) Obudowa plastykowa KM-26N
Elektronika Praktyczna 10/2004
A U T O M A T Y K A Od wielu lat w przemyśle stosuje się pakiety oprogramowania do wizualizacji i akwizycji danych procesowych (SCADA). Ich konstrukcja ukierunkowana jest głównie na wizualizację i archiwizację zmiennych analogowych takich, jak temperatura, ciśnienie, parametry fizyko-chemiczne substancji i procesów. Pociąga to za sobą spore koszty budowy systemów, nie tyle ze względu na koszt oprogramowania, co na koszt niezbędnej infrastruktury (sieci przemysłowe, urządzenia pomiarowe, przetworniki itp.). Dlatego oprogramowanie takie było dotąd domeną wielkich firm z branż chemicznej, farmaceutycznej czy przemysłu ciężkiego.
Pomimo, że obszary zastosowań systemów SCADA powiększają się z każdym dniem, to wysokie koszty inwestycji oraz częste nieprzystosowanie parku maszynowego do połączenia w zunifikowany system skutecznie tę ekspansję powstrzymują. Opracowany w Polsce system GOLEM reprezentuje zupełnie inne podejście do wizualizacji i akwizycji danych, starając się wypełnić lukę w zakresie aplikacji, w których wysokie koszty są niedopuszczalne i gdzie po prostu nie ma z czym połączyć oprogramowania wizualizacyjnego. Koncepcję systemu oparto na monitorowaniu i liczeniu sygnałów typu włączone/wyłączone, pobieranych z monitorowanych urządzeń i podawanych na „dołączony” do oprogramowania koncentrator wejść (rys. 1). Oprogramowanie to stanowi swego rodzaju inteligentny system liczący z elementami wizualizacji, archiwizacji danych i ich publikacji w sieci, a nawet w Internecie. Bez względu na rodzaj produkcji zawsze da się coś policzyć, np. liczbę cykli maszyny, albo czas bądź liczbę czynności manualnych. Jeśli to co liczymy umiejscowimy dodatkowo w czasie i uzupełnimy o pewne
126
GOLEM dla automatyków
dodatkowe informacje, to powstanie materiał, który przeanalizowany przez komputer da nam pełniejsze spojrzenie na produkcję, jej przebieg, efektywność oraz występujące patologie.
Golem okiem automatyka
Aby wyjaśnić co to jest GOLEM, zapomnijmy na moment o komputerach i programach. Zróbmy to, co potrafi system klasycznymi środkami dostępnymi w automatyce. Na początek skoncentrujmy się na jednym sygnale pochodzącym z jednej maszyny. Podłączamy do tego sygnału licznik i od razu mamy kilka problemów. Powiedzmy, że liczony sygnał pochodzi ze styczników prawo-lewo i podczas zmiany kierunku następuje krótka, niepożądana przerwa. Dlatego
instalujemy na wejściu przekaźnik czasowy, który usuwa krótkie przerwy w sygnale. W innym przypadku chcemy policzyć tylko sygnały dłuższe od pewnego czasu. W jeszcze innej sytuacji, po wystąpieniu sygnału chcielibyśmy przez jakiś czas zignorować następne sygnały, np. jeśli jest to sygnał z ręcznego przycisku, a jak wiadomo człowiek ma w swojej naturze kilkukrotne naciskanie – szczególnie jeżeli nie ma natychmiastowych oznak zadziałania. Reasumując, mamy na wejściu podłączone trzy przekaźniki czasowe do modyfikowania sygnału wejściowego (rys. 2). Teraz liczniki. Podłączymy nie jeden, a cztery: jeden z przyciskiem do kasowania, jeden kasowany au-
Elektronika Praktyczna 10/2004
A U T O M A T Y K A
Rys. 1
tomatycznie co miesiąc, jeden kasowany raz dziennie i jeden kasowany na przełomie zmian roboczych. Jednak liczniki pokazują nam liczbę cykli, a ta rzadko pokrywa się z wytworzonym produktem. Na przykład forma może mieć 12 gniazd i jeden zliczony impuls powinien oznaczać 12 wyrobów. Dlatego dodamy jeszcze jeden komplet liczników, które potrafią wykonać operacje matematyczne – np. pomnożyć wynik przez 12. Następnie podłączamy cztery liczniki czasu – kasowane identycznie jak poprzednie. I znów mamy problem. Rzadko jest tak, że czas trwania sygnału wejściowego jest adekwatny do czasu pracy urządzenia. Np. w przypadku wtryskarki – skąd wziąć taki sygnał? Z pompy – nie, ponieważ może ona pracować nawet jak maszyna nic nie robi. To może z zaworu formy? Ten otwarty jest przez część cyklu. Dlatego musimy zainstalować następne układy czasowe, aby uzyskać realny czas pracy urządzenia.
Teraz przydałaby się jakaś kontrolka, która pokazuje sygnał – lampka, a może dwie podświetlające jakieś tabliczki: jedną – jak załączony, drugą – jak wyłączony. A może dodać rejestrator samopiszący, który wyrysuje nam wykres kilku takich sygnałów tak, aby można było na wykresie obejrzeć kilkanaście ostatnich godzin – kiedy urządzenie pracowało, a kiedy nie? A co, jeśli operator chciałby mieć taki wskaźnik, na którym widać by było, ile czasu minęło od ostatniego cyklu? Proste – generator impulsów 1 Hz i licznik kasowany, gdy pojawi się sygnał. Przydałby się też wskaźnik pokazujący wydajność produkcji. Może jeszcze jakieś kontrolki stanów minimum i maksimum? Hm, a jakby podłączyć drukarkę? Taką specjalną, żeby napisała jeden tekst, jak załączymy wyjście, a inny, jak je wyłączymy, z datą i godziną – jak niektóre centralki alarmowe. Przykładowo po otwarciu drzwi jest automatycznie drukowany tekst: „18:30 – otwarto drzwi magazynu” Jakby można było jeszcze do tego tekstu dodać stan licznika – np. „18:30 – otwarto drzwi magazynu, dzisiaj 18 raz” Przydałoby się, aby drukarka wydrukowała także raport zmianowy, na przykład, że na koniec zmia-
ny liczniki naliczyły tyle a tyle, a urządzenie pracowało przez tyle, a tyle czasu. Dobrze. Mamy już liczniki i liczniki czasu pracy i to oddzielne dla zmiany, miesiąca i dnia. Mamy też drukarkę, która drukuje nam opisy tego co się dzieje i zestawienia zmianowe. Ale co my tak właściwie liczymy? Przydałaby się jakaś nazwa produktu. Może wystarczy tabliczka pod licznikami? A jak się produkt zmieni? Trzeba będzie zmienić opis na tabliczce i skasować liczniki. Jak dobrze poszukać na rynku, to na pewno znajdziemy jakiś licznik, który to potrafi. Może nawet taki, do którego da się podłączyć nastawnik – tak, aby mógł to zrobić operator przy maszynie. Wprowadźmy jeszcze wyjścia odejmujące liczników – tak aby operator mógł cofnąć stan licznika jak mu coś nie wyjdzie. Najlepiej z dodatkowym przekaźnikiem czasowym, żeby mógł to zrobić przez jakiś czas po impulsie, a nie kiedy mu się to spodoba. No to z grubsza mamy wszystkie potrzebne urządzenia. Teraz trzeba zmontować jakąś ładną (musi być ładna, bo będzie stała na biurku szefa produkcji) tablicę. Zostawmy też miejsce na żółte karteczki – przydadzą się do krótkich notatek. Oczywiście tablica będzie duża, bo mamy 32 komplety takich urządzeń.
Brr, nie da się prościej?
Da się – nie tylko prościej, ale i dużo dużo lepiej, do tego zdecydowanie taniej. W jaki sposób? Symulując to wszystko w pamięci i na ekranie komputera.
Koncentrator wejść
Rys. 2
128
Oprogramowanie nie byłoby zbyt wiele warte, gdyby nie było możliwości pozyskania sygnałów z obserwowanych maszyn i urządzeń. Służy temu interfejs zwany koncentratorem wejść. Pozwala on na odczyt szesnastu sygnałów oraz podłączenie modułu rozszerzającego o kolejne szesnaście wejść. Koncentrator łączymy z komputerem za pomocą kabla, który zapewnia komunikację poprzez port RS oraz zasilanie jego elektroniki. Oryginalny kabel pobiera zasilanie (+5 V) z portu GAME/ MIDI. Można też wykonać kabel pobierający zasilanie z portu klawiatury, co jest istotne przy pracy z komputerami przenośnymi lub zasilić koncentrator z zewnętrznego zasilacza. W przypad-
Elektronika Praktyczna 10/2004
A U T O M A T Y K A ku zastosowania zewnętrznego zasilacza musi on dostarczyć stabilizowanego napięcia +5 V o wydajności 100 mA. Wejścia koncentratora są przystosowane do napięć o wartości 0...24 V. Sygnały mogą być podane za pośrednictwem zestyku pomocniczego któregoś ze styczników lub wyłącznika krańcowego (1 na rys. 1). Może to być zestyk pomocniczy stycznika załączającego jakiś agregat (np. pompę), zestyk przekaźnika połączonego równolegle do zaworu elektromagnetycznego. Może to być również wyłącznik krańcowy zainstalowany w taki sposób, aby był on załączany przez ruchomy element maszyny. Czujnikiem takim może być czujnik indukcyjny (2 na rys. 1) lub bariera fotoelektryczna. Do wyboru produktu podłączyć możemy nastawnik dziesiętny (3 na rys. 1) kodujący liczbę dziesiętną w kodzie BCD. Do konwersji napięć możemy wykorzystać przekaźnik – możemy również wykorzystać optoizolator (4 na rys. 1). Sygnały możemy pozyskać bezpośrednio lub pośrednio z zacisków I/O sterownika PLC sterującego maszyną. Konstruując GOLEM-a, zrezygnowano ze stosowania rozproszonych modułów, gromadząc wszystkie wejścia w jednym miejscu – urządzeniu, tak jak to ma miejsce np. w systemach alarmowych. Całą instalację pobierającą sygnały wejściowe wykonać można zatem zwykłym przewodem telefonicznym, co zdecydowanie zmniejsza końcowe koszty inwestycji.
Zespół licząco-rejestrujący
Idea systemu jest oparta na zespołach licząco-rejestrujących pokazanych na rys. 2. Zespół licząco-rejestrujący to zbiór liczników i innych bloków funkcjonalnych przypisanych do konkretnego, fizycznego wejścia koncentratora. To tak, jakby do jednego wejścia połączyć nie jeden licznik, ale cały ich zestaw i dodatkowo jeszcze kilka urządzeń. Zespoły te są źródłem
Rys. 3
130
danych dla wszystkich pozostałych składników systemu. Program obsługuje 32 takie zespoły, po jednym na każde wejście. Poprzez odpowiednią konfigurację każdego z zespołów możemy w prawie dowolny sposób monitorować, liczyć i interpretować dowolny sygnał pobrany ze świata zewnętrznego – podłączony do koncentratora wejść – przekładając go na jednoznaczną i podaną w wygodny sposób informację.
obserwować np. czas pracy danego urządzenia podczas poszczególnych zmian, sumę zmian dla danego dnia, narastająco sumę miesięczną i narastająco sumę roczną.
HTML i e-maile
Jak przystało na program wizualizacyjny, w GOLEM-ie możemy stworzyć pięć dowolnych ekranów, wykorzystując gotowe komponenty, takie jak wskaźniki, diody świecące, przyciski itp. Pomocna w przygotowaniu atrakcyjnych ekranów jest biblioteka kilkuset prostych rysunków maszyn. Edytor wraz z przykładowym edytowanym oknem pokazano na rys. 3. W niektórych aplikacjach pożyteczna okazać się może możliwość całkowitego zablokowania ekranu poprzez okno programu. W trybie tym komputer staje się „szafą grającą”, a użytkownik nie ma dostępu do pozostałych funkcji systemu.
S y s t e m g e n e r u j e d o ku m e n t y HTML mogące stanowić np. wewnątrzzakładową stronę WWW oraz wysyła raporty pocztą elektroniczną. Do tworzenia raportów zastosowano niebywale prostą technikę – tworzy się matryce raport1 – raport5.html w taki sposób, że w kodzie wstawia się znaczniki odpowiadające odpowiednim danym z systemu. Program co określony czas odczytuje pliki raportów i zapisuje do innego katalogu (może być to np. katalog w obrębie serwera FTP, co da nam łatwy dostęp do danych via Internet), zmieniając znaczniki na właściwe dane. Wstawiony w kodzie strony np. znacznik $$$lz03 przy przepisywaniu strony zostanie podmieniony na zawartość licznika zmianowego trzeciego zespołu liczącego. Analogicznie przygotowujemy tekst do wysłania pocztą elektroniczną na wskazany adres np. na przełomie zmian roboczych.
Rejestry
Rozbudowa systemu
Ekrany synoptyczne
W swoim założeniu system GOLEM realizować ma trzy podstawowe funkcje: pokazuje to, co jest teraz – służą temu ekrany synoptyczne, pokazuje, co działo się przez ostatnie kilkanaście godzin – służą temu wkomponowane w ekrany tabele alarmów i wykresy trendów, oraz dostarcza informacje o historii pracy maszyn. Tu do dyspozycji mamy dwa rejestry – rejestr historii i rejestr zmianowy. Rejestr historii gromadzi komunikaty generowane przez system typu: 12:43 Start maszyny po 34 minutach postoju czy też: 14:11 Otwarcie drzwi magazynu. Komunikaty mogą być generowane poprzez załączenie, wyłączenie wejścia, przekroczenie czasu postoju, zmianę nazwy produktu itp. Rejestr historii zorganizowano jako tablicę 5000 zdarzeń, w której najnowsze zdarzenie usuwa najstarsze – oczywiście po jej zapełnieniu. Drugim rejestrem gromadzącym informacje jest rejestr zmianowy pozwalający na zdefiniowanie 32 tablic ze stanami liczników i liczników czasu aktualizowanymi po zmianie zmiany roboczej. W rejestrze tym możemy
System GOLEM SLR może być źródłem danych dla innych programów, możliwa jest też jego rozbudowa przez niezależnych programistów. Generowane są pliki tekstowe ze stanami wszystkich zmiennych zespołów liczących, specjalny terminal pozwala na ingerowanie w stan programu, np. kasowanie liczników lub zmianę nazwy za pomocą plików tekstowych. Do dyspozycji użytkownika są dwie biblioteki DLL pozwalające na dostęp do danych i wprowadzenie do systemu własnych zmiennych. Dostępny jest również opis struktury rejestrów historii i zmianowego.
Wersja darmowa
System GOLEM SLR można przetestować, korzystając z wewnętrznego symulatora koncentratora wejść. Można też zbudować sobie bardzo prosty koncentrator dwuwejściowy podłączany do portu LPT, pozwalający na funkcjonalne przetestowanie systemu lub przygotowanie prezentacji dla klientów. Opis interfejsu znajduje się w dokumentacji programu dostępnego na stronie www.neuron.com.pl oraz na CD-EP10/2004B. Wojciech Mazurek, Neuron
Elektronika Praktyczna 10/2004
A U T O M A T Y K A
SCATEC – precyzyjne wykrywanie krawędzi W artykule przedstawiamy urządzenie pierwotnie przeznaczone do maszyn poligraficznych, ale mogące mieć zastosowanie również w układach doświadczalnych i nietypowych. Laserowy licznik SCATEC firmy Baumer został zaprojektowany do zliczania arkuszy papieru, gazet lub czasopism transportowanych na przenośniku taśmowym. Precyzyjne zliczanie ma głównie miejsce na sortownikach, przy rozdzielaniu strumienia druków na odpowiedniej wielkości porcje. Często stosowanym rozwiązaniem jest licznik mechaniczny, jednak jego precyzja przy cienkich arkuszach nie jest zbyt dobra, do tego licznik wymaga okresowych kalibracji. Aby rozwiązać ten problemem, firma Baumer opracowała specjalny czujnik laserowy (fot. 1) mogący wykrywać nawet szybko poruszające się pojedyncze arkusze papieru od grubości 0,1 mm (≥90g/m2). Układ optyczny czujnika składa się z trzech elementów: silnego źródła światła i dwóch odbiorników fotoelektrycznych. Dioda laserowa wytwarza mały punkt świetlny na wysokości wykrywanych krawędzi (na wysokości przenośnika taśmowego). Precyzyjnie skupiona wiązka światła w miejscu ogniskowania ma średnicę 0,1 mm, co pozwala na detekcję niewielkich krawędzi. Wiązka trafia na powierzchnię pod pewnym kątem i większość światła zostaje odbita w kierunku X (patrz rys. 2). Dioda
132
odbiornika D1 odbiera większą ilość światła niż dioda D2. Jeśli promień lasera natrafi na krawędź np. gazety, dioda D2 przyjmie przez chwilę większą ilość światła niż D1. Dodatkowo, czujnik wykrywa tylko tę krawędź, która jest pochylona w kierunku oświetlacza, natomiast ignorowane są krawędzie ustawione tyłem do oświetlacza. Taki sposób pomiaru jest niezależny od grubości elementów, ich koloru i typu powierzchni. Analogowy układ wstępny jest zaprojektowany dla zapewnienia dużej szybkości. Światło lasera jest modulowane częstotliwością 65 kHz, a częstotliwość graniczna układu odbiorczego wynosi 3 kHz. Maksymalna prędkość zliczania krawędzi jest zatem podporządkowana długości impulsu wyjściowego czujnika, która w zależności od potrzeb może być ustawiona od 10 ms do 2 ms, co daje 360 tysięcy do 1,5 miliona krawędzi w ciągu godziny.
Wbudowany układ czuwa nad modulacją mocy lasera, co zapobiega nasycaniu obydwu odbiorników przy detekcji bardzo jasnych obiektów, jak również pozwala na bezproblemową detekcję obiektów o ciemnych kolorach. Specjalny algorytm zapobiega interferencjom powodowanym np. przez metalowe paski w banknotach lub silnie kontrastowe nadruki.
Fot. 1
Elektronika Praktyczna 10/2004
A U T O M A T Y K A
Fot. 4 Rys. 2
Rys. 3
Ponieważ czujnik SCATEC wykrywa pojedyncze krawędzie, to w przypadku nieoprawionej krawędzi druków (czasopism, gazet itp.) mogłoby dojść do fałszywych, zwielokrotnionych impulsów. Wbudowany mikrokontroler
Elektronika Praktyczna 10/2004
czuwa zatem nad końcową obróbką sygnału (rys. 3). Dla zapewnienia dużej dokładności pomiaru i eliminowania zwielokrotnionych impulsów czujniki SCATEC posiadają trzy rodzaje kompensacji: metoda dynamiczna,
statyczna i synchronizacja z prędkością wykrywanych elementów. Najczęściej używany jest pierwszy tryb, zapewniający optymalne warunki pomiaru przy obiektach o zmiennej prędkości (czujnik automatycznie dobiera długość „czasu jałowego” (dead time) i sprawdza się w większości zastosowań. Wybór odpowiedniego trybu jest również podyktowany stosunkiem wysokości krawędzi do odległości między krawędziami. Miejscem zastosowania czujników SCATEC jest oczywiście głównie przemysł poligraficzny i jego pochodne, zliczanie listów i innych płaskich przedmiotów poruszających się na taśmie przenośnika, gdzie brak możliwości zastosowania bariery optycznej. W przemyśle można je stosować do zliczania arkuszy blach metalowych lub z tworzyw sztucznych. Na fot. 4 widzimy zastosowanie przemysłowe do wykrywania obydwu krawędzi blachy stalowej o grubości 0,35...0,38 mm (dwa czujniki obrócone o 180o). Tomasz Śliwakowski, Amtek Dystrybutorem firmy Baumer jest Amtek spol. s r.o., tel. (22) 866 41 40,
[email protected], www.amtek.pl.
133