Charakterystyka ogólna - Dane techniczne - Getting Started - Realizacja projektu
Przedstawiam opis projektu charakterografu wirtualnego - urządzenia do graficznego wykreślania charakterystyk stałoprądowych diod i tranzystorów.
Wstęp - Charakterystyka ogólna - Dane techniczne - Getting Started - Realizacja projektu
Skonstruowany (1999 rok) 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.
Wstęp - Charakterystyka ogólna - Dane techniczne - Getting Started - Realizacja projektu
Część analogowa - Część cyfrowa - Dane ogólne
Parametry obu kanałów są identyczne.
Dane techniczne - Część analogowa - Część cyfrowa - Dane ogólne
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
u
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 kohm
II:
2 Mohm
III:
20 Mohm
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)
Dane techniczne - Część analogowa - Część cyfrowa - Dane ogólne
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 techniczne - Część analogowa - Część cyfrowa - Dane ogólne
Zasilanie: 220 V / 50 Hz
Wymiary: 380x200x370
Wstęp - Charakterystyka ogólna - Dane techniczne - Getting Started - Realizacja projektu
Pomiar rezystancji - Pomiar żarówki - Pomiar diody - Pomiar tranzystora
Getting Started - Pomiar rezystancji - Pomiar żarówki - Pomiar diody - Pomiar tranzystora
Demonstrację charakterografu rozpocznę od zdjęcia charakterystyki I(U) rezystora 1kohm. Poniżej przedstawiam ustawienia dla tego pomiaru oraz uzyskany wykres.
Ustawienia pomiaru I(U) dla rezystora 1 kohm
I(U) dla rezystora 1 kohm
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 ohm
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 kohm, ale w funkcji U(I), czyli przez zapodawanie prądu.
Ustawienia pomiaru U(I) dla rezystora 1 kohm
U(I) dla reystora 1 kohm
Jak widać, mamy podobny wykres.
Getting Started - Pomiar rezystancji - Pomiar żarówki - Pomiar diody - Pomiar tranzystora
Poniżej zamieszczam wynik pomiaru żarówki 24V/35W.
I(U) dla żarówki 24V/35W
Wg. wykresu rezystancja dynamiczna tej żarówki wynosi 34.1 ohm. 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 15V powstało na skutek przełączenia odczepu transformatora zasilacza (znów przerwa w pomiarze).
Getting Started - Pomiar rezystancji - Pomiar żarówki - Pomiar diody - Pomiar tranzystora
Biorę zwykłą diodę prostowniczą 1A/100V. 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 400mV odczytujemy rezystancję dynamiczną 232.5 ohm. 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.7V rezystancja dynamiczna spada do 272.1 mohm. "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.
Getting Started - Pomiar rezystancji - Pomiar żarówki - Pomiar diody - Pomiar tranzystora
Będzie to 2N3055. 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.5ohm w przykładowym punkcie UCE = 8V, IC = 158mA, IB = 1.014mA. Stałoprądową Betę od razu odczytujemy jako ok. 156. W celu odczytu w tym punkcie ziennoprądowej Bety, musimy inaczej ustawić kursory:
Pomiar tranzystora 2N3055 - UBE,IC(UCE), przy IB = par w układzie OE. Odczyt zmiennoprądowej Bety.
Mamy już zmiennoprądowa Beta = 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 ohm. 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.
Wstęp - Charakterystyka ogólna - Dane techniczne - Getting Started - Realizacja projektu
Motywacja - Założenia - Realizacja sprzętowa - Oprogramowanie
Realizacja projektu - Motywacja - Założenia - Realizacja sprzętowa - Oprogramowanie
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:Realizacja projektu - Motywacja - Założenia - Realizacja sprzętowa - Oprogramowanie
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:
Do zadań każdego z kanałów należy:
Zaciski wyjściowe kanałów oraz sygnalizacja prądowych: źródła i obiektu |
|
Jedyne połączenia na tylnej ściance |
Realizacja projektu - Motywacja - Założenia - Realizacja sprzętowa - Oprogramowanie
Moduł wykonawczy - Moduł sterujący - Schematy
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. |
Realizacja sprzętowa - Moduł wykonawczy - Moduł sterujący - Schematy
Moduł wykonawczy - Idea - Wzmacniacz mocy
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). 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 spadku napięcia proporcjonalnego do prądu 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:
Powyższe zadania są podzbiorem rozkazów wysyłanych z komputera nadrzędnego.
Moduł wykonawczy - Idea - 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: 15V oraz 30V. 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 max 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 zero dla max prądu wpływającego (-2A) 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 3V dla obciążenia wzmacniacza rezystancją nie mniejszą niż 10kohm oraz całkowitym napięciu zasilania 30V.
Przyjmując dodatkowo napięcia baza-emiter równe 0,7V oraz IRe4max = 2A (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 = 30V 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 |
Realizacja sprzętowa - Moduł wykonawczy - Moduł sterujący - Schematy
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.
Realizacja sprzętowa - Moduł wykonawczy - Moduł sterujący - Schematy
sch_analog.gif (jeden kanał)
sch_cyfra.gif (jeden kanał)
sch_zas_analog.gif (jeden kanał)
sch_zas_cyfra.gif (jeden kanał)
Realizacja projektu - Motywacja - Założenia - Realizacja sprzętowa - Oprogramowanie
Założenia - Moduł podrzędny (Asembler) - Komputer nadrzędny (C)
Oprogramowanie - Założenia - Moduł podrzędny (Asembler) - Komputer nadrzędny (C)
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:
- 1 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,
- 2 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).
System
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).
Oprogramowanie - Założenia - Moduł podrzędny (Asembler) - Komputer nadrzędny (C)
Poniżej opiszę tylko niewielką część programu, a w zasadzie jedynie przykładowy algorytm.
Podprogram DOBIERZ_NAPIECIE_ZASILACZA
Podprogram DOBIERZ_NAPIECIE_ZASILACZA
Podprogram 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 tak naprawdę na 7 bicie (licząc od zera) wartości zadanych lub zmierzonych.
Ponad to 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 kod źródłowy tego podprogramu (niestety po wklejeniu tu tego kodu, troszkę się on zdeformatował):
;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
Oprogramowanie - Założenia - Moduł podrzędny (Asembler) - 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:
Procedurami powłoki podstawowej są:
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