- 4 wejścia analogowe (0…5 V), 4 wyjścia analogowe (0…5 V).
- 4 wyjścia przekaźnikowe, 4 optoizolowane wejścia cyfrowe.
- Zasilanie +5 V DC ok. 150 mA (z zewnętrznego zasilacza 12 V DC lub z USB).
- Sterowanie za pomocą USB.
Opisywany moduł początkowo miał być wielokanałowym woltomierzem prądu stałego. Jednak w trakcie pracy nad założeniami do projektu został uzupełniony o kolejne funkcje. Ostatecznie, postanowiłem zaprojektować i wykonać moduł, który spełniałby 4 główne funkcje:
- Pomiaru napięcia stałego w 4 niezależnych kanałach.
- Sterowania załącz-wyłącz stykami 4 przekaźników.
- Odczytywanie 4 dwustanowych wejść: wejście wyłączone (obwód sygnalizacji otwarty) i wejście załączone (obwód sygnalizacji zamknięty).
- Ustawianie napięcia wyjściowego w 4 niezależnych kanałach.
Układy sygnalizacji i sterowania miały być kompletne, to znaczy – dla większości zastosowań nie będą konieczne dodatkowe układy dołączane do modułu. Sterowania są realizowane przez zwieranie lub rozwieranie izolowanych styków przekaźników o obciążalności ok. 1 A DC. Jeśli taka obciążalność byłaby za mała, można stykami przekaźników modułu sterować zasilaniem dodatkowych, zewnętrznych przekaźników mocy. Układy wejściowe są optoizolowane i przez dobranie rezystorów ograniczających prąd diody LED transoptorów można ustawić napięcie wejściowe w zakresie od 5…48 V DC. Dla wielkości analogowych – mierzonych napięć wejściowych i ustawianych napięć wyjściowych – może być konieczne dobudowanie zewnętrznych układów dodatkowych: zabezpieczeń przed przepięciami, buforów, dzielników wejściowych itp. Sam moduł umożliwia bezpośredni dostęp do wejścia analogowego przetwornika A/C i wyjścia analogowego przetwornika C/A.
Jako interfejs użytkownika miała być użyta aplikacja uruchamiana na komputerze PC z systemem Windows. Moduł i komputer łączą się poprzez interfejs USB. Napięcie zasilające może być pobierane z gniazda USB lub z zewnętrznego źródła zasilania.
Wybór mikrokontrolera – moduł USB
Aby sprostać zadaniom stawianym w założeniach projektowych potrzebny będzie mikrokontroler z wbudowanym przetwornikiem A/C, pewną liczbą wolnych linii GPIO oraz sprzętowym modułem USB. Dobrze, aby miał też wbudowany przetwornik C/A.
Znalezienie mikrokontrolera spełniającego pierwsze 3 warunki nie jest specjalnie trudne. Takie wyposażenie ma wiele mikrokontrolerów, od jednostek 8-bitowych po 32-bitowe. Z przetwornikiem C/A jest o wiele trudniej, ale są dostępne mikrokontrolery, które mają również 4 kanały wyjść C/A. Jednak zasoby to nie wszystko. W założeniach projektu jest połączenie przez interfejs USB, a to oznacza, ze trzeba będzie się zmierzyć z oprogramowaniem transmisji w urządzeniu (module MKP) i w hoście (komputerze PC). Głównie z tego ostatniego powodu zdecydowałem się na użycie mikrokontrolera PIC18F4550. Jest to dobrze znany, 8-bitowy „klasyk”, powszechnie stosowany w układach interfejsem USB. Z powodu dość długiej obecności tego mikrokontrolera na rynku jest dostępnych wiele rozwiązań pomagających w tworzeniu oprogramowania transmisji USB. Najlepszym wsparciem jest firmowy stos USB i szereg działających przykładów, bezpłatnie publikowanych na stronach Microchipa.
Mikrokontroler PIC18F4550 jest 8-bitowcem dobrze wyposażonym w moduły peryferyjne a przy tym dość szybkim. Może być zasilany napięciem z zakresu 2,0…5,5 V. Z oczywistych względów, nas najbardziej będzie interesował wbudowany moduł USB. Jest on zgodny ze standardem USB V2.0 i może pracować w trybach Low Speed (1,5 Mb/s) i Full Speed (12 Mb/s). Sygnał symetryczny danych ze złącza USB jest dołączany bezpośrednio do wyprowadzeń D+ (RC5) i D- (RC4).
Można również wykorzystać układ zewnętrznego trasceivera. Interfejs USB mikrokontrolera ma wbudowaną pamięć RAM o pojemności 1 kB, mapowaną w bankach od 4 do 7 obszaru pamięci RAM GPR. Dostęp do niej ma blok SIE USB, który może w niej zapisywać i odczytywać dane bez udziału CPU. Jednocześnie, ten sam obszar CPU „widzi” jako zwykły obszar GPR. Jeżeli moduł USB jest włączony, to bank RB4 nie powinien być używany jako zbiór rejestrów ogólnego przeznaczenia.
W aplikacjach z USB mikrokontroler jest zasilany napięciem +5 V, ale obwody transceivera muszą być zasilane napięciem +3,3 V dostarczanym ze stabilizatora wewnętrznego lub za pomocą doprowadzenia VUSB. Źródło napięcia jest przełączane programowo. Konstrukcja modułu USB umożliwia też sprzętowe wsparcie przesyłania danych na zewnątrz poprzez interfejs do szybkiej komunikacji równoległej SPP (dwukierunkowa, równoległa, 8-bitowa szyna danych z sygnałami potwierdzenia).
Aby uzyskać obie dostępne prędkości transmisji, mikrokontroler wyposażono w rozbudowany system źródeł zegara taktującego oparty na układzie pętli PLL. W trybie Low Speed zegar taktujący modułem musi mieć częstotliwość 6 MHz, a w trybie Full Speed 48 MHz.