Przedstawiam opis projektu charakterografu wirtualnego - urządzenia do graficznego wykreślania charakterystyk stałoprądowych diod i tranzystorów.

Charakterystyka ogólna

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

Pomiar rezystancji

Demonstrację charakterografu rozpocznę od zdjęcia charakterystyki I(U) rezystora 1 kΩ. Poniżej przedstawiam ustawienia dla tego pomiaru oraz uzyskany wykres.

 

Ustawienia pomiaru I(U) dla rezystora 1 kΩ

 

I(U) dla rezystora 1 kΩ

Wiersze tabelki pod wykresem oznaczają kolejno:

  1. wartości dla kursora 1 (K1, zielony)
  2. wartości dla kursora 2 (K2, niebieski)
  3. 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 (j.w.).

Dalej przedstawiam pomiar tego samego rezystora 1 kΩ, ale w funkcji U(I), czyli przez zapodawanie prądu.

 

Ustawienia pomiaru U(I) dla rezystora 1 kΩ

 

U(I) dla reystora 1 kΩ

Jak widać, mamy podobny wykres.

Pomiar żarówki

Poniżej zamieszczam wynik pomiaru żarówki 24 V / 35 W.

 

I(U) dla żarówki 24 V / 35 W

Wg. wykresu rezystancja dynamiczna tej żarówki wynosi 34.1 Ω. Dziwny przebieg wykresu w okolicy jego 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

Biorę zwykłą diodę prostowniczą 1 A / 100 V. Tym razem zakres przemiatania napięcia na zaciskach diody sięga wartości ujemnych.

 

Ustawienie pomiaru I(U) dla diody prostowniczej

 

 I(U) dla diody prostowniczej

Przy UF nieco ponad 400 mV odczytujemy rezystancję dynamiczną 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ć I.

 

UF(IF) dla diody prostowniczej

W okolicy UF = 0.7 V rezystancja dynamiczna 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. Niestety pomiar wykracza poza możliwości charakterografu (tu za mała czułość pomiaru prądu).

 

UR(IR) dla diody prostowniczej (poniżej możliwości pomiarowych charakterografu)

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. 2N3055 stosowany we wzmacniaczach lub zasilaczach. Zdejmiemy charakterystykę (UBE, IC)(UCE), przy IB = par w układzie OE. Najpierw ustawienia pomiaru:

 

Ustawienie pomiaru dla tranzystora 2N3055

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:

 

Pomiar tranzystora 2N3055 - (UBE, IC)(UCE), przy IB = par w układzie OE. Odczyt rce.

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:

 

Pomiar tranzystora 2N3055 - (UBE, IC)(UCE), przy IB = par w układzie OE. Odczyt zmiennoprądowej β.

Mamy już zmiennoprądowa β = 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.

 

Pomiar tranzystora 2N3055 - (UBE, IC)(UCE), przy IB = par w układzie OE. Odczyt rbe.

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 Tab.

Realizacja projektu

Motywacja

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 starano 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 – starano się ich nie ograniczać. Zasadnicze zawężenie możliwości urządzenia dokonano 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:

  1. Spoczynek – wprowadzenie kanału w stan nieaktywny.
  2. Bierność – jest to stan prawie nieaktywny; stosowany przy procesach bardziej dynamicznych.
  3. Pomiar obiektu – czyli zwykły woltomierz lub amperomierz.
  4. Ustawienie źródła – aby go sprawdzić przed zadaniem wartości na zewnątrz.
  5. Załączenie źródła – właściwy proces zadania i pomiaru wartości.
  6. Testowanie – pobieżna forma sprawdzenia gotowości danego kanału do pracy.
  7. Tryb bez PC – możliwość samodzielnej pracy kanału z prostym systemem zabezpieczenia.
  8. Wysłanie parametrów sprzętowych służących za podstawę do wypełniania swoich funkcji przez poszczególne kanały.
  9. 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.

Zaciski wyjściowe kanałów oraz sygnalizacja prądowych: źródła i obiektu Jedyne połączenia są na tylnej ściance

Realizacja sprzętowa

Ogólny schemat blokowy funkcjonowania charakterografu wirtualnego

Jak wynika ze schematu, 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 (BD 911, BD 912) oraz pola komutacji przestrzennej (system łączników). Ten wyraźny podział zrealizowany poprzez oddzielne płytki drukowane oraz dość 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).

4 duże płytki drukowane na 2 kanały + 1 mała płytka dla obsługi RS232 (nie widoczna). Widoczne też 2 transformatorki zasilacza części cyfrowej.

Moduł wykonawczy

Idea

Schemat blokowy modułu wykonawczego (na dole są wyjścia pomiarowe kolejno U i I)

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ęć ustalono na 400 mV (a ściślej 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 zdecydowano 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:

  1. Spoczynek (stan nr 0): wszystkie łączniki wyłączone.
  2. 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ócono 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Wzmacniacz 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 + 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, to 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 podano 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 podano 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 wzmacniacza operacyjnego 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, 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:

    (9)

Część analogowa jest zasilana dwoma (2 kanały) transformatorami TS120/18. Część cyfrowa dwoma TS8/39. Ten radiator chłodzi 8 tranzystorów i 2 stabilizatory.

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 zastosowano 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ść. 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.

Cyfrówka. Na pierwszym planie dwa przetworniki A/C. Te duże kondensatory to foliowe 10 µF dla tych przetworników (podwójne całkowanie) - niestety nie miałem na czas mniejszych gabarytowo, a teraz nie chce mi się ich wymieniać ;-)

Schematy

Część analogowa (jeden kanał)

Część cyfrowa (jeden kanał)

Zasilacz części analogowej (jeden kanał)

Zasilacz części cyfrowej (jeden kanał)

RS232

Oprogramowanie

Założenia

  • 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 ch.h jako zmienna globalna blad. Może już teraz przytoczę listę możliwych błędów:

    BŁĘDY W REALIZACJI PROGRAMU CAŁEJ POWŁOKI PODSTAWOWEJ.

    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ść 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 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ść R7 jest tworzona (patrz 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 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 znacznik F0 jest wykorzystywany 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 U lub 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ę 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ść

© Copyright Krzysztof Kolisz 2003-09-18