Charakterograf Wirtualny
Przedstawiam opis mojego projektu charakterografu wirtualnego – urządzenia do graficznego wykreślania charakterystyk stałoprądowych diod i tranzystorów.
Skonstruowany w 1999 roku charakterograf cechuje się:
- Możliwością zmierzenia charakterystyki napięciowo-prądowej oraz prądowo-napięciowej przy użyciu dwóch źródeł (kanałów) zadających wielkości. Istnieje możliwość rozbudowy urządzenia do czterech kanałów.
- Całkowitą galwaniczną separacją kanałów oraz ich niezależnością.
- Sterowaniem przez komputer PC za pośrednictwem kilku zaledwie rozkazów – udostępniają one większe możliwości sprzętu niż zdejmowanie charakterystyk. Sam proces wyznaczania kolejnych punktów wykresu odbywa się w komputerze nadrzędnym.
Dane techniczne
Parametry obu kanałów są identyczne.
Część analogowa
- Zakres napięcia zadawanego (mierzonego):
od −30 (−40) do 30 (40) V w 3 zakresach wartości bezwzględnych:
I: 400 mV
II: 4 V
III: 30 (40) V - Zakres prądu zadawanego (mierzonego):
od −2 (−4) do 2 (4) A w 5 zakresach wartości bezwzględnych:
I: 400 μA
II: 4 mA
III: 40 mA
IV: 400 mA
V: 2 (4) A - Rezystancja wewnętrzna woltomierza dla poszczególnych zakresów:
I: 200 kΩ
II: 2 MΩ
III: 20 MΩ - Konduktancja wewnętrzna amperomierza dla poszczególnych zakresów:
I: 1 mS
II: 10 mS
III: 100 mS
IV: 1 S
V: 10 S - Maksymalny błąd zadawania i pomiaru wartości: 1% (10% bez kalibracji)
Część cyfrowa
- Rozdzielczość bitowa przetworników C/A i A/C: 12 bitów
- Okres zadawania i pomiaru wielkości: 80 ms/kanał (kompensacja zakłóceń sieciowych 50 Hz)
- Rodzaj komunikacji z komputerem nadrzędnym: RS232, 4800 b/s
Dane ogólne
- Zasilanie: 220 V / 50 Hz
- Wymiary: 380 × 200 × 370 mm
Szybki start
Najszybciej zapoznamy się z możliwościami charakterografu wykonując konkretne pomiary. Zmierzymy rezystancję rezystora (tak, możemy użyć tego charakterografu, jeśli akurat nie mamy pod ręką omomierza :-) rezystancję żarówki (tu zwykły omomierz nie odda pełnego obrazu), charakterystykę diody i tranzystora.
Pomiar rezystancji
Demonstrację charakterografu rozpocznę od zdjęcia charakterystyki I(U) rezystora 1 kΩ. Poniżej przedstawiam ustawienia dla tego pomiaru oraz uzyskany wykres.
Wiersze tabelki pod wykresem oznaczają kolejno:
- wartości dla kursora 1 (K1, zielony),
- wartości dla kursora 2 (K2, niebieski),
- różnice i ilorazy różnicowe dla danej kolumny.
Kolumny dotyczą zmiennych x, y oraz parametru par (zapodawanego przez kanał parametryzujący).
Zatem z powyższego wykresu odczytujemy wartość rezystancji jako stosunek U2 / I2 = x / y:
- w punkcie napięcia 1.453 V (kursor 1) wynosi ona 999.3 Ω,
- dla 2.729 V (kursor 2) mamy 1.008 kΩ,
- oczywiście iloraz różnicowy dla rezystora też jest podobny i wynosi 1.018 kΩ.
W celu łatwiejszego odszukania liczb w tabelce, będę podawał ich dokładne wartości (jak powyżej).
Dalej przedstawiam pomiar tego samego rezystora 1 kΩ, ale w funkcji U(I), czyli przez zapodawanie prądu.
Jak widzimy, oba wykresy sa podobne.
Pomiar żarówki
Poniżej zamieszczam wynik pomiaru żarówki 24 V / 35 W.
Według wykresu rezystancja dynamiczna tej żarówki wynosi 34.1 Ω. Dziwny przebieg linii w okolicy jej początku wynika z chwilowej przerwy w pomiarze spowodowanej przełączaniem zakresu pomiarowego. Czas tej przerwy jest rzędu stałej czasowej nagrzewania się włókna tej żarówki. Natomiast zafalowanie przy napięciu 15 V powstało na skutek przełączenia odczepu uzwojenia wtórnego transformatora zasilacza (znów przerwa w pomiarze).
Pomiar diody
Weźmy zwykłą diodę prostowniczą 1 A / 100 V. Tym razem zakres przemiatania napięcia na zaciskach diody sięga wartości ujemnych.
Przy napięciu przewodzenia UF nieco ponad 400 mV odczytujemy rezystancję dynamiczną diody 232.5 Ω. W celu dokładniejszego zbadania diody musimy zdjąć charakterystyki z każdej ćwiartki (polaryzacji) z osobna. Najpierw w kierunku przewodzenia będziemy zapodawać prąd I.
W okolicy UF = 0.7 V rezystancja dynamiczna diody spada do 272.1 mΩ. "Szarpnięcie" na wykresie wynika z błędu kalibracji dzielnika w konfiguracji charakterografu (punkt przełączania zakresu pomiarowego).
Poniżej zamieszczam wykres dla kierunku zaporowego diody. Niestety pomiar wykracza poza możliwości charakterografu (tu za mała czułość pomiaru prądu).
Pozostaje nam jedynie uznać klasę przetwornika A/C pracującego metodą podwójnego całkowania – zakłócenia są na poziomie jednego bitu LSB.
Pomiar tranzystora
Będzie to tranzystor mocy m.cz. typu 2N3055 stosowany we wzmacniaczach lub zasilaczach. Zdejmiemy charakterystykę (UBE, IC)(UCE), przy IB = par w układzie OE. Najpierw ustawienia pomiaru:
Tym razem angażujemy oba kanały charakterografu. Kanały są identyczne, więc mogą być zamienione miejscami bez wpływu na wynik.
- Kanał 1 jako parametryzujący, będzie sterował prądowo bazę tranzystora.
- Kanał 2 jako analizujący będzie podawał napięcie na kolektor.
Wynik pomiaru przedstawia się następująco:
Czerwone napisy podpisują wartości parametru, czyli IB. Ustawiając j.w. kursory (na rodzinie charakterystyk IC(UCE) – kolor zielony), możemy bezpośrednio odczytać rce = 474.5 Ω w przykładowym punkcie UCE = 8 V, IC = 158 mA, IB = 1.014 mA. Stałoprądową β od razu odczytujemy jako ok. 156. W celu odczytu w tym punkcie ziennoprądowej β, musimy inaczej ustawić kursory:
Mamy już zmiennoprądową β = dIC / dIB = dI2 / dI1 = dy / dpar = 175.1. W celu odczytu w tym samym punkcie pracy wartość rbe, ustawiamy kursory na rodzinie charakterystyk UBE(UCE) (niebieska) jak poniżej.
rbe = dUB / dIB = dU1 / dI1 = dy / dpar = 35.71 Ω. Jednak ten odczyt byłby dokładniejszy przy niezależnej charakterystyce IB(UB). Przeskakiwanie kursora na inną charakterystykę dokonuję strzałkami góra-dół, natomiast przeskok na inną rodzinę charakterystyk – przez klawisz Tab.
Realizacja projektu
Jako przykład gotowych rozwiązań tego zagadnienia można podać model HP 4155 A firmy Hewlett-Packard. Jest to autonomiczne urządzenie z wbudowanym monitorem i klawiaturą. Wyniki można zapisać na dyskietce. Podczas opracowywania niniejszego projektu nie starałem się dorównać tym rozwiązaniom, już na poziomie wstępnych założeń występują znaczne różnice:
- projektowany charakterograf wirtualny ma współpracować z nadrzędnym komputerem (PC) i w maksymalnym stopniu wykorzystywać jego zasoby,
- przewidywano, że podczas konstruowania urządzenia wyłonią się jakieś możliwości sprzętu wykraczające poza główny cel pracy – starałem się ich nie ograniczać. Zasadnicze zawężenie możliwości urządzenia dokonałem dopiero na poziomie oprogramowania komputera nadrzędnego.
Założenia
Głównym założeniem projektowym była całkowita niezależność od siebie poszczególnych kanałów zadających i mierzących wartości. Jedynym źródłem wydawania w systemie dyspozycji ma być komputer nadrzędny PC. Kanały wysyłają tylko odpowiedzi. Wymagana jest przy tym cykliczna łączność PC z charakterografem.
Lista rozkazów wydawanych przez PC jest następująca:
- Spoczynek – wprowadzenie kanału w stan nieaktywny.
- Bierność – jest to stan prawie nieaktywny, stosowany przy procesach bardziej dynamicznych.
- Pomiar obiektu – czyli zwykły woltomierz lub amperomierz.
- Ustawienie źródła – aby go sprawdzić przed zadaniem wartości na zewnątrz.
- Załączenie źródła – właściwy proces zadania i pomiaru wartości.
- Testowanie – pobieżna forma sprawdzenia gotowości danego kanału do pracy.
- Tryb bez PC – możliwość samodzielnej pracy kanału z prostym systemem zabezpieczenia.
- Wysłanie parametrów sprzętowych służących za podstawę do wypełniania swoich funkcji przez poszczególne kanały.
- Wysłanie granic użytkownika określających dopuszczalne wartości napięć i prądów mogących wystąpić na wyjściach charakterografu.
Do zadań każdego z kanałów należy:
- interpretacja rozkazów z PC,
- dobór napięcia zasilacza,
- dobór zakresów pomiarowych (tylko pomiarowych),
- wysłanie odpowiedzi do PC, czyli zmierzonych wartości, jedynie potwierdzenia lub numeru błędu,
- zabezpieczenia nadnapięciowe i nadprądowe,
- obsługa błędów innego rodzaju.


Realizacja sprzętowa
Każdy kanał stanowi niezależną sprzętowo jednostkę. Separacja zrealizowana jest poprzez sprzężenie optyczne (transoptory). Jedynym wspólnym elementem obu kanałów jest moduł transmisji RS232.

Wewnątrz kanału istnieje dobrze zdefiniowany podział – blok sterujący oraz wykonawczy. Blok sterujący stanowi system mikroprocesorowy (MCS-51), przetworniki C/A i A/C oraz optoizolacja. Blok wykonawczy to całość zasobów sprzętowych przejmujących na siebie właściwą fizyczną realizację poleceń komputera nadrzędnego PC. Składa się on ze wzmacniacza mocy (BD911, BD912) oraz pola komutacji przestrzennej (system łączników). Ten wyraźny podział zrealizowany poprzez oddzielne płytki drukowane oraz uniwersalne złącze, umożliwiające rozbudowę w przyszłości charakterografu o dalsze kanały (maksymalnie 4) lub zwiększenie możliwości bloku wykonawczego przez podstawienie innego.
System komunikacji z komputerem PC został dostosowany do ogólnych założeń protokołu transmisji. Umożliwia on równoległe połączenie linii o tym samym kierunku przepływu informacji. Protokół transmisji wyraźnie zakazuje nadawania równocześnie przez więcej niż jeden kanał (choć taka sytuacja nie spowodowałaby większych następstw poza przerwaniem procesu pomiaru).
Poniższe fotografie pokazują wygląd charakterografu po zdjęciu górnej pokrywy. Widoczne są 4 duże płytki drukowane na 2 kanały (jest też niewidoczna jedna mała płytka dla obsługi RS232). Widzimy też 2 transformatorki zasilacza części cyfrowej.
Moduł wykonawczy
Moduł wykonawczy składa się ze wzmacniacza mocy oraz systemu łączników (mechanicznych przekaźników). Układ ten jednakowo "obsługuje" charakterystyki I(U) i U(I).

Stanowi on układ wzmacniacza mocy z napięciowym lub prądowym ujemnym sprzężeniem zwrotnym (łącznik 1 lub 2). Obwody służące do generacji USZ dostarczają równocześnie napięć pomiarowych w celu pomiaru U i I. Powyższe rozwiązanie jest układem poprawnie mierzonego prądu. Napięcie wejściowe oraz pomiarowe mają identyczny maksymalny zakres zmian wartości bezwzględnej. Napięcie wejściowe jest unipolarne, natomiast pomiarowe – bipolarne. Tę maksymalną wartość napięć ustaliłem na około 400 mV (dokładnie 409.6 mV) co stanowi optymalny poziom dla zastosowanych przetworników A/C (12 bitów). Wzmacniacz mocy zadaje w zasadzie napięcie unipolarne (dodatnie), jeżeli nie brać pod uwagę możliwości uzyskania na jego wyjściu niewielkiego, rzędu pojedynczych woltów, napięcia ujemnego. Ogólnie, ujemne napięcie wyjściowe charakterografu uzyskujemy dzięki przełącznikowi polaryzacji.
Łącznik 4 pozwala odseparować wzmacniacz od dalszej części układu i tym samym wykonać bierny pomiar napięcia obiektu załączonego do zacisków wyjściowych (funkcja woltomierza). Dodatkowo zwierając łącznik 5 można zrealizować bierny pomiar prądu (amperomierz).
Łączniki 6–9 stanowią przełącznik polaryzacji z możliwością realizacji rozwarcia lub zwarcia (tzw. bierności) widzianego niezależnie po obu stronach przełącznika. Bierność U oznacza rozwarcie, a I zwarcie. Mamy więc 4 kombinacje bierności: UU, UI, IU, II.
Dodatkowo zdecydowałem się umieścić w odpowiednich miejscach łączniki 3 i 10. Łącznik 3 eliminuje niekorzystne stany przejściowe podczas pracy układu, natomiast łącznik 10 umożliwia wykonanie prostego testu poprawności działania bloku wykonawczego, wykonując pomiar prądu płynącego przez rezystor wzorcowy.
Pokazany na schemacie blokowym dzielnik napięcia oraz rezystor bocznika są w praktyce przełączane w zależności od zakresu U lub I.
Cały blok wykonawczy jest w stanie zrealizować następujące zadania:
- Spoczynek (stan nr 0): wszystkie łączniki wyłączone.
- Bierność U lub I (stan nr 1): osiągana przez odpowiednie załączenie przełącznika polaryzacji. Bierność U oznacza stan bierny dla źródła U (rozwarcie), natomiast I – dla źródła I (zwarcie). Zwróciłem na ten aspekt uwagę ze względu na możliwość załączania na wyjście charakterografu obiektu czynnego zawierającego źródło napięciowe lub prądowe.
- Pomiar obiektu (stan nr 2):
– funkcja woltomierza: odpowiednie załączenie przełącznika polaryzacji, wyłączenie Ł4 i pomiar napięcia z dzielnika rezystorowego,
– funkcja amperomierza: odpowiednie załączenie przełącznika polaryzacji, zwarcie Ł5 (oraz rozwarcie Ł4). Napięcie pomiarowe pobieramy z bocznika. - Ustawienie źródła (stan nr 3): załączenie Ł4 oraz wprowadzenie w stan bierności obustronnej przełącznika polaryzacji. Dla ustawiania napięcia przełącznik polaryzacji przedstawia sobą na wejściu bierność U (rozwarcie) – napięcie zdejmujemy z dzielnika. Natomiast dla ustawiania prądu przełącznik ten ustawia bierność I na wejściu – mamy zwarcie i prąd (ściślej, napięcie proporcjonalne do niego) ściągamy z rezystora bocznika.
- Załączenie źródła (stan nr 4): sytuacja jest podobna do p.4 z tą różnicą, że przełącznik polaryzacji przechodzi w stan załączenia.
- Testowanie (stan nr 5): włączenie funkcji „załączenie źródła” z dodatkowym rezystorem wzorcowym.
Powyższe zadania są podzbiorem rozkazów wysyłanych z komputera nadrzędnego.
Wzmacniacz mocy
Teraz przedstawię fragment obliczeń wzmacniacza mocy.

Funkcję tą pełni przeciwsobny wzmacniacz tranzystorowy z końcowym stopniem w układzie Darlingtona. Stabilizację punktu pracy zapewniają dwa układy (w każdym ramieniu) wtórnika z zastosowaniem wzmacniaczy operacyjnych WO1 i WO2. Ich działanie powoduje stan równości napięć Ue2 oraz na wejściu + wzmacniacza WO1 (rozpatrując górne ramię wzmacniacza). Umożliwia to sprowadzenie zagadnienia stabilizacji prądu spoczynkowego do odpowiedniego obliczenia dzielnika Rd1 i Rd2. Jeżeli Rd2 << Rd1, na wyjściu wzmacniacza otrzymujemy napięcie zbliżone do wyjściowego WO3 pracującego jako przedwzmacniacz oraz pełniącego funkcję sumatora napięcia wejściowego Ui oraz ujemnego sprzężenia zwrotnego. Warunkiem nie wzbudzania się wzmacniacza jest zastosowanie jako WO3 układu umożliwiającego zewnętrzną kompensację częstotliwościową.
Na schemacie podałem dwa dodatnie napięcia zasilania: 15 V oraz 30 V. Są to dwa napięcia zasilacza przełączane przez blok sterujący. Ogranicza to straty mocy przy dużych prądach wyjściowych Io przy równocześnie występującym małym napięciu wyjściowym Uo. Ujemne napięcie zasilania jest oczywiście potrzebne do osiągnięcia stanu Uo = 0.
Dalej podałem przykład obliczenia prądu spoczynkowego tranzystorów mocy. Celem jest uzyskanie możliwie małej jego wartości (płytka klasa AB).
1. Wstępne założenia (Uo = 0, Io = 0).
W stanie spoczynkowym jest słuszne poniższe równanie prądów oraz zakładam dodatkowo równanie napięć
(1)
gdzie Isp jest prądem spoczynkowym. Z powyższego wynika równość rezystorów emiterowych
(2)
Warunkiem istnienia jakiegokolwiek prądu spoczynkowego jest nierówność
(3)
VIOmax1,2 jest maksymalnym napięciem niezrównoważenia wzmacniaczy operacyjnych WO1 i WO2. Niespełnienie powyższej nierówności spowoduje silne wahania Isp w zależności od egzemplarza wzmacniacza operacyjnego. Dla typu TL082 wartość VIOmax wynosi 9 mV.
Przyjmuję
Daje to maksymalną odchyłkę Isp równą 50%.
2. Obliczenie Re oraz prądu spoczynkowego.
Ze względu na małe napięcie |E2| zaczynam od kryterium maksymalnego spadku napięcia UR4.
(4)
Ze względu na bezpieczeństwo bazy T4 zakładam
(5)
Warunkiem na to, aby Uo mogło być równe 0 dla maksymalnego prądu wpływającego (−2 A) jest nierówność
(6)
gdzie Ur jest napięciem resztkowym pomiędzy napięciem zasilania wzmacniacza operacyjnego, a jego maksymalnym napięciem wyjściowym (najbardziej zbliżonym do napięcia zasilania). Dla TL082 wynosi ona 3 V dla obciążenia wzmacniacza rezystancją nie mniejszą niż 10 kΩ oraz całkowitym napięciu zasilania 30 V.
Przyjmując dodatkowo napięcia baza-emiter równe 0.7 V oraz IRe4max = 2 A (max prąd wpływający) otrzymujemy
(7)
Współczynnik 0.5 realizuje zalecenie nierówności (6).
W stanie spoczynku dla
mamy następujący prąd spoczynkowy
(8)
Dla E1 = 30 V nieznacznie się zwiększy.
Z powyższego obliczenia widać, że trudno jest uzyskać płytką klasę AB. Wynika to ze zbyt małego stosunku .
Moc rezystorów emiterowych wynosi
(9)


Moduł sterujący
Moduł sterujący realizuje:
- przyjmowanie i interpretacja rozkazów z PC,
- sterowanie wszystkich łączników bloku wykonawczego,
- przetwarzanie C/A i A/C,
- optoizolację od komputera.
Zrealizowany jest on na mikrokontrolerze 80C51 taktowanym zegarem 12 MHz. Współpracuje z nim pamięć programu 64 kb. Jako pamięć danych wykorzystywana jest wewnętrzna przestrzeń pamięci RAM.
Zewnętrzne porty równoległe (8255) umożliwiają sterowanie (poprzez umieszczone w bloku wykonawczym wzmacniacze cyfrowe) wszystkimi łącznikami, napięciami zasilacza oraz zakresami U i I.
Jako przetworniki C/A zastosowałem 12-to bitowy układ DAC 80 CBI-V. Nie posiada on wewnętrznych zatrzasków – funkcję tę pełni port 8255.
Przetwarzanie A/C realizują dwa układy ICL 7109 (dla U i I). Jest to przetwornik pracujący na zasadzie podwójnego całkowania. Nie wykonuje on zbyt szybko konwersji, ale pozwala na kompensację zakłóceń sieciowych 50 Hz – zakłócenia są na poziomie niższym niż rozdzielczość przetwornika. Wykonuje przy tym konwersję w ciągu 80 ms. Współpracuje on z mikrokontrolerem poprzez przerwanie na wejściu INT0 (drugi na INT1). Sam pracuje w trybie prostym – dane są ważne przy niskim stanie wyjścia STATUS. Wyjście to jest sygnałem przerwania dla mikrokontrolera.

Schematy
Zasilacz części analogowej (jeden kanał)
Zasilacz części cyfrowej (jeden kanał)
Oprogramowanie
Logiczne założenia pracy charakterografu są następujące:
- Charakterograf wykonuje pojedynczy pomiar – sam proces cyklicznego wyznaczania różnych wartości zadawanych następuje w komputerze nadrzędnym (PC). Komputer po zażądaniu ustawienia odpowiedniej wartości czeka na odpowiedź nie podejmując łączności z pozostałymi kanałami. W przypadku nie otrzymania odpowiedzi sygnalizuje błąd.
- Przy żądaniu zadania jakiejś wartości na wyjściu źródła charakterografu (U lub I) wartość zadaną podajemy w zmiennej WART_ZADANA_HB(i LB). Dodatkowo zakres U lub I jest traktowany jako zakres wejściowy i umieszczamy go w ZAKRES_WE. Obie te zawartości zmiennych są wyliczane w komputerze PC i dostarczane wraz z kodem rozkazu. Oczywiście w kodzie musi się znajdować informacja, jakiego typu źródła (U lub I) dotyczy wartość zadana i zakres wejściowy.
- Wynikiem zadziałania charakterografu (pomiar) jest zwrócenie:
– pierwszej wartości zmierzonej w WART_1_ZMIERZ_HB(i LB) odzwierciedlającej rzeczywisty poziom wartości zadanej i stanowiącej podstawę do ewentualnego zasygnalizowania błędu,
– drugiej wartości zmierzonej w WART_2_ZMIERZ_HB(i LB) oraz zakresu wyjściowego w ZAKRES_WY, które to dane określają drugą z możliwych wielkości mierzalnych – dla zadania napięcia U będzie to prąd I (i odwrotnie). - Mechanizm wykrywania błędów opiera się na zmiennej BLAD. Wskazuje ona numer błędu, a w przypadku jego braku – wartość zero. Każdy podprogram po stwierdzeniu błędu kończy swe działanie, a cały charakterograf przechodzi w stan spoczynku i oczekuje na przyjęcie następnego rozkazu (wyjątek stanowi błąd 1 i 2 w stanie bez kontroli PC, kiedy to następuje przejście do spoczynku chwilowego bez oczekiwania kolejnych rozkazów). Zmienna BLAD jest powielona w programie powłoki podstawowej jako zmienna globalna blad.
Kody błędów powłoki podstawowej
Może już teraz przytoczę listę możliwych błędów:
0 – brak błędu,
Charakterograf
1 – przekroczenie górnej granicy (użytkownika lub sprzętowej) przez 2 wartość zmierzoną,
2 – przekroczenie maksymalnego (deklarowanego) napięcia zasilacza przez napięcie wyjściowe wzmacniacza mocy,
3 – przeciwne znaki wartości zadanej i 1 zmierzonej,
4 – 1 wartość zmierzona przekroczyła max wartość sprzętową,
5 – przekroczenie max względnego błędu zadawania wartości w górę (ABS),
6 – przekroczenie max względnego błędu zadawania wartości w dół (ABS),
7 – przekroczenie max względnego i bezwzględnego błędu zadawania wartości w górę na minimalnym zakresie wejściowym (ABS),
8 – przekroczenie max względnego i bezwzględnego błędu zadawania wartości w dół na minimalnym zakresie wejściowym (ABS),
9 – w stanie ustawienia źródła napięcie wyjściowe wzmacniacza mocy ma ujemny znak,
10 – zabroniona zawartość rejestru R3 przed wywołaniem podprogramu ROZKAZ,
11 – zabroniona zawartość ZAKRES_WE przed wywołaniem podprogramu ROZKAZ,
12 – błąd przeterminowania transmisji z komputera do charakterografu,
13 – odebranie danej zamiast oczekiwanego kodu rozkazu.
Komputer
14 – charakterograf nie podłączony,
15 – połączenie z charakterografem zostało przerwane,
16 – błąd protokołu transmisji szeregowej (niezgodny format danych lub prędkość transmisji),
17 – błąd przepełnienia bufora odbiornika,
18 – błąd przeterminowania transmisji z charakterografu do komputera,
19 – brak pliku konfiguracyjnego ch.cfg,
20 – odpowiedź niewłaściwego kanału,
21 – odebrany rozkaz, zamiast dana,
22 – przekroczenie względnej i bezwzględnej precyzji zadawania wartości w górę (ABS) na minimalnym zakresie wejściowym (deklaracja precyzji w ch.cfg),
23 – przekroczenie względnej i bezwzględnej precyzji zadawania wartości w dół (ABS) na minimalnym zakresie wejściowym (deklaracja precyzji w ch.cfg),
24 – przekroczenie względnej precyzji zadawania wartości w górę (ABS) (deklaracja precyzji w ch.cfg),
25 – przekroczenie względnej precyzji zadawania wartości w dół (ABS) (deklaracja precyzji w ch.cfg).
Moduł podrzędny – Asembler
Poniżej opiszę tylko niewielką część programu, a właściwie jedynie przykładowy algorytm.
Podprogram DOBIERZ_NAPIECIE_ZASILACZA
Podprogram ten dobiera napięcie zasilacza zarówno dla źródła U (zadawanie U) jak i I. Jego działanie polega na wykonaniu programowej iteracji na rejestrze R2 i dopiero późniejszym wykorzystaniu wyniku do załączenia napięcia zasilacza. Zmienna NAPIECIE_ZASILACZA wskazuje na aktualne napięcie zasilacza (nawet, gdy jest wyłączone – wskazuje domyślny numer napięcia). Maksymalna liczba napięć zasilacza jest przez blok sterujący ograniczona do 8. Jednak moduł wykonawczy dysponuje tylko 2-ma napięciami zasilacza.
Rejestr R7 reprezentuje wartość proporcjonalną do napięcia wyjściowego wzmacniacza mocy. To napięcia determinuje ustawienie zasilacza. Zawartość rejestru R7 jest tworzona (patrz miejsce M67 i sąsiedni blok po lewej) w następujący sposób:
- pierwsze 3 bity MSB są utworzone z zakresu odnoszącego się do napięcia wyjściowego wzmacniacza mocy,
- pozostałe bity odzwierciedlają bity MSB z wartości odnoszącej się do napięcia wyjściowego wzmacniacza mocy.
W istocie rejestr R7 przetrzymuje bity MSB odnoszące się do napięcia wyjściowego wzmacniacza mocy, gdyż można przyjąć, że zakres jest przedłużeniem wartości w stronę bitów bardziej znaczących.
Zawartość rejestru R7 jest porównywana z określoną granicą U wzmacniacza mocy dla danego napięcia zasilacza. Granic tych jest maksymalnie 8. Są to zmienne przetrzymujące dane w identycznym formacie jak R7 o adresach o początku GRANICE_U_DLA_NAPIEC_ZAS i określone przez wysłanie rozkazu z PC determinującego parametry sprzętowe charakterografu. R1 jest wskaźnikiem do tych granic.
Po wykonaniu porównania R7 (napięcia wyjściowego wzmacniacza mocy) ze zdefiniowana granicą, program przystępuje do modyfikacji (lub nie) rejestru R2, który jest wejściowym do ustawiania napięcia zasilacza.
H_ZAS jest histerezą decyzji o zmianie napięcia zasilacza. Eliminuje ona wpływ zakłóceń na poprawność wykonywania przełączania. Magiczna jej wartość 1 ustala w rzeczywistości poziom histerezy na 255 w jednostkach wartości liczbowej przetworników A/C, gdyż ta jedynka jest w istocie na 7 bicie (licząc od zera) wartości zadanych lub zmierzonych.
Ponadto podprogram ustawia flagę F0 (PSW.5), jeżeli napięcie zasilacza w wyniku wywołania podprogramu się zmieniło. Przy czym nie chodzi tu o fakt samego włączenia napięcia, lecz zmianę już istniejącego, czyli zmianę zawartości zmiennej NAPIECIE_ZASILACZA. W praktyce F0 jest wykorzystywana tylko dla źródła I.
Poniżej zamieszczam kod źródłowy tego podprogramu.
;Ponizszy podprogram dobiera napiecie zasilacza w zaleznosci od napiecia
;zrodla U lub I, na podstawie grupy rejestrow (max 8) o poczatku GRANICE_U_-
;DLA_NAPIEC_ZAS. W przypadku dokonanej zmiany w rejestrze NAPIECIE_ZASILACZA,
;podprogram ustawia F0 (PSW.5).
DOBIERZ_NAPIECIE_ZASILACZA:
CLR PSW.5 ;zerowanie znacznika zmiany napiecia zasilacza
MOV BLAD,#0
;Czy stan bloku wykonawczego jest > 2 ?:
MOV B,STAN_BLOKU_WYK
ANL B,#00001111B
MOV A,#2
CLR C
SUBB A,B ;dzialanie: 2 - (stan bloku wykonawczego)
JNC M66 ;jezeli stan bloku wyk nie > 2, skocz do M66
;Czy zrodlo U?:
MOV A,STAN_BLOKU_WYK
JB ACC.5,M67 ;jezeli nie to skocz do M67
MOV R4,ZAKRES_WE
MOV R5,WART_ZADANA_HB
MOV R6,WART_ZADANA_LB
LJMP M68
M67: MOV R4,ZAKRES_WY
MOV R5,WART_2_ZMIERZ_HB
MOV R6,WART_2_ZMIERZ_LB
M68: MOV A,R4
SWAP A
RL A
ANL A,#11100000B
MOV B,A ;mamy juz zakres w B
MOV A,R5
RL A
ANL A,#00011110B
ORL B,A ;teraz mamy takze 4MSB wartosci w B
MOV A,R6
MOV C,ACC.7
MOV B.0,C ;dochodzi jeszcze piaty bit liczac od MSB,
;czyli mamy juz kompletne "napiecie" w B
MOV R7,B ;a teraz w R7
MOV R2,NAPIECIE_ZASILACZA
M69: ;Poczatek petli wyszukiwania napiecia zasilacza:
MOV A,#GRANICE_U_DLA_NAPIEC_ZAS
ADD A,R2
MOV R1,A
;Czy R7 > @R1 (gornej granicy napiecia zrodla dla aktualnego
;napiecia zasilacza) ?:
MOV A,@R1
CLR C
SUBB A,R7
JNC M71 ;jezeli nie to skocz do M71
;Czy max napiecie zasilacza?:
MOV A,R2
CLR C
SUBB A,LICZBA_NAPIEC_ZAS
JNZ M70 ;jezeli nie, skocz do M70
MOV BLAD,#2
LJMP M74
M70: INC R2
LJMP M72
M71: ;Czy min napiecie zasilacza?:
MOV A,R2
JZ M73 ;jezeli tak, skocz do M73
;Czy R7 < @(R1-#1)-#H_ZAS ?:
MOV A,R1
MOV R0,A
DEC R0
MOV A,@R0
CLR C
SUBB A,#H_ZAS ;H_ZAS jest stala
MOV B,A ;w B mamy juz prawa strone nierownosci
MOV A,R7
CLR C
SUBB A,B ;dzialanie: R7 - [@(R1-#1)-#H_ZAS]
JNC M73 ;jezeli nierownosc nie spelniona, skocz do M73
DEC R2
M72: SETB PSW.5
LJMP M69 ;skocz do poczatku petli modyfikacji
M73: LCALL ZALACZ_NAPIECIE_ZASILACZA
LJMP M74
M66: ;Czy zasilacz zalaczony?:
JNB ZNACZNIK.7,M74 ;jezeli nie to skocz do M74
LCALL WYLACZ_NAPIECIE_ZASILACZA
M74: RET
Komputer nadrzędny – C
Komputer nadrzędny (PC) został oprogramowany w języku C w systemie DOS. Program ten został podzielony na dwie części:
- powłokę podstawową udostępniającą pełne zasoby sprzętowe charakterografu w postaci kilku funkcji,
- interfejsu graficznego do zdejmowania charakterystyk.
Procedurami powłoki podstawowej są:
- wysłanie granic użytkownika,
- wprowadzenie w stan spoczynku,
- stan bierności,
- tryb bez kontroli PC,
- pomiar obiektu,
- ustawienie źródła,
- załączenie źródła lub testowanie.
Procedury te realizują względnie proste zadania, ale za ich pośrednictwem można na przykład stworzyć z charakterografu zwykły woltomierz, amperomierz, pomiar wielkości w funkcji czasu, pomiar rezystancji dynamicznej np. diody w zadanym punkcie, wreszcie zrealizować zwykły zasilacz napięciowy lub prądowy.
Powłoka podstawowa korzysta z pliku konfiguracyjnego ch.cfg zawierającego dla każdego kanału istotne parametry włącznie ze zmiennymi do kalibracji dzielników wejściowych, boczników, pozostałego tłumienia toru oraz napięcia niezrównoważenia wzmacniacza mocy.
Poniżej przedstawiam tylko prototyp funkcji załączającej źródło napięcia U lub prądu I i zwracającej wartość zmierzoną I lub U (tzw. drugą wartość zmierzoną). Funkcja ta umożliwia pomiar w jednym punkcie. Poprzez jej cykliczne wywoływanie np. w pętli for, możemy zdjąć całą charakterystykę mierzonego elementu.
//Zalączenie źródła z żądanymi parametrami. Procedura ustawia blad:
float //druga wartość zmierzona
zalaczenieZrodla( unsigned char kanal, //adres kanału
unsigned char tryb, //tryb: 0-UU, 1-UI, 2-IU, 3-II
unsigned char test, //1-testowanie, 0-zwykłe załączenie
float x, //zadana wartość
float &y); //rzeczywista zadana wartość
Historia artykułu
2003-09-18: powstanie
2014: korekta po przejściu na Joomla (ostatni stat. HTML)
2023-12-19: korekta po przejściu z J3 na J5
© Copyright Krzysztof Kolisz 2003