- Pomiar pojemności z rozdzielczością 0,1pF w zakresie 0,5 pF…0,1 µF (±3%)
- Pomiar indukcyjności z rozdzielczością 10 nH w zakresie 10 nH…10 mH (±3%)
- Pomiar częstotliwości w dwóch zakresach pomiarowych z dokładnością ±30 ppm:
- 50 Hz…12 MHz z rozdzielczością 4 Hz
- 1 kHz…250 MHz z rozdzielczością 64 Hz.
- Czułość wejściowa: 20 mV rms.
- Impedancja wejściowa: 2 kΩ…180 Ω (krańce zakresów).
- Wyświetlacz LCD: 2×16 znaków.
- Zasilanie: 3 V (2×bateria AAA).
- Wymiary: 118 mm×74 mm×29 mm.
- Automatyczne wyłączenie zasilania, w przypadku nieużywania miernika przez 5 minut.
Ponadto, pomiar kondensatorów rzędu 1 nF lub mniej jest obarczony znacznym błędem, natomiast maksymalna częstotliwość mierzona najczęściej nie przekracza kilkuset kHz. W związku z brakiem taniego przyrządu pomiarowego umożliwiającego pomiary wspomnianych wielkości, narodziła się idea wykonania odpowiedniego miernika we własnym zakresie.
Układ został zaprojektowany z wykorzystaniem tanich i łatwo dostępnych elementów, zapewniając jednocześnie przyzwoite parametry użytkowe, wystarczające w pracowni radioamatora. Zmniejszono także do minimum liczbę elementów wzorcowych. W zasadzie jedynym wymaganym elementem wzorcowym jest kondensator o pojemności 2,2 nF, który powinien mieć tolerancję co najwyżej 1% i zerowy współczynnik temperaturowy NP0.
Układ doskonale sprawdza się w pracowni radioamatora do kontroli indukcyjności samodzielnie wykonanych cewek obwodów rezonansowych, czy pomiaru pojemności, oraz jako miernik częstotliwości umożliwiając pomiar częstotliwości w układach KF i UKF z pasmem 2 m włącznie. Standardowa impedancja wejściowa wzmacniacza miernika częstotliwości jest stosunkowo niewielka, jednak w razie potrzeby może ona być stosunkowo łatwo powiększona za pomocą prostej sondy aktywnej - wtórnika źródłowego wykonanego na popularnym tranzystorze dwubramkowym BF966 lub podobnym.
Budowa urządzenia
Schemat układu z uwagi na stosunkowo duże skomplikowanie został podzielony na 3 części:
- Jednostka centralna z blokiem przetwornicy (rysunek 1).
- Układ pomiaru indukcyjności oraz pojemności (rysunek 2).
- Układ wzmacniaczy oraz dzielników dla miernika częstotliwości (rysunek 3).
Sercem miernika jest mikrokontroler STM32 - STM32F10R6T6B (IC6) z ekonomicznej rodziny Value Line. Ma on 32 kB pamięci Flash, 4 kB pamięci RAM, 12-bitowy przetwornik A/C oraz 5 zaawansowanych układów czasowo-licznikowych. Niewielka cena sprawia, że stanowi on rozwiązanie bardziej atrakcyjne, od rozwiązań 8-bitowych.
Miernik jest zasilany bezpośrednio z dwóch ogniw AAA, bez wyłącznika mechanicznego - zrealizowano go w sposób programowy wykorzystując tryby oszczędzania energii STM32. Ponieważ głównym zadaniem układu jest pomiar częstotliwości, do taktowania mikrokontrolera jest konieczne użycie rezonatora kwarcowego X1 wraz z dodatkowym trymerem C40, zapewniającym możliwość kalibrowania.
Zastosowano rezonator kwarcowy 12 MHz, który po powieleniu ×2 taktuje mikrokontroler z maksymalną dopuszczalną częstotliwością pracy 24 MHz. Do interakcji z użytkownikiem zastosowano wyświetlacz znakowy oraz dwa przyciski mechaniczne, co w dobie kolorowych ekranów dotykowych stanowi pewien anachronizm, jednak zaletą takiego rozwiązania jest niski koszt.
Do wyświetlania wyników zastosowano wyświetlacz znakowy LCD-AC-C1602A-YGN NO/-E6 o rozdzielczości 2×16 znaków (DISP1), wykonany w technologii COG (Chip On Glass) - można go nabyć już za kilkanaście złotych. Ma wbudowany kontroler HD44180, zasilany napięciem +5 V, co wymaga zastosowania dodatkowego układu przetwornicy. Ze względu na oszczędność wyprowadzeń układ jest połączony z mikrokontrolerem za pomocą magistrali 4-bitowej.
Linie danych D0...D3 oraz sterujące RS, RW, E zostały dołączone do linii portu PB0...PB9, umożliwiającego bezpośrednie dołączenie układów pięciowoltowych. Wyświetlacz jest zasilany za pośrednictwem tranzystora Q4 (IRML6402) umożliwiającego jego wyłączenie za pomocą programu.
Do linii portów PA1 i PA2 dołączono klawiaturę dwuprzyciskową służącą do obsługi urządzenia. Do linii PC0, która jest wejściem CH10 przetwornika A/C, dołączono dzielnik rezystancyjny R33/R34 będący układem sprzężenia zwrotnego zapewniającym pomiar i stabilizację napięcia wyjściowego przetwornicy. Rezystor R34 zamiast do masy dołączono do linii PC1, która jest wyzerowana. Dzięki temu, przy programowej realizacji wyłączenia przyrządu, możemy przełączyć linię PC1 w stan wysokiej impedancji, aby dzielnik nie pobierał prądu z baterii.
Do prawidłowej pracy części analogowej (oraz wyświetlacza) jest konieczne stabilne napięcie o wartości +5 V, które jest uzyskiwane z przetwornicy wykonanej w oparciu o układy peryferyjne mikrokontrolera. Przetwornica pracuje w topologii układu podwyższającego (step up) o częstotliwości pracy 40 kHz, z kluczem na tranzystorze MOSFET IRL2705 (Q3), dławikiem 150 mH/2 A (L3) oraz diodą MBRS240LT3 (D3).
Tranzystor kluczujący ma niską rezystancję kanału wynoszącą 55 mV, niskie napięcie otwarcia bramki (średnio 1,5 V) oraz stosunkowo duży prąd przewodzenia - 3,8 A. Jego cechą charakterystyczną jest duża pojemność bramki równa ok. 870 pF, co wymaga zastosowania dodatkowego układu sterującego, tak aby zminimalizować straty powstające podczas przełączania.
Układ sterujący wykonano z użyciem pary komplementarnej tranzystorów BC807 (T5) oraz BC817 (T6). Diody D7 i D8 zapobiegają przejściu tranzystorów T5 i T6 w stan głębokiego nasycenia, co znacznie wydłuża czas przełączania. Do sterowania pracą tranzystorów T5 i T6 zastosowano dwa komplementarne sygnały PWM, (oznaczone na schemacie XPOS i XNEG), z programowaną "strefą martwą", które generowane są przez zaawansowany układ czasowo-licznikowy T1 mikrokontrolera.
Diody D5 i D6 oraz kondensatory C30...C32 tworzą układ podwajania napięcia, zasilany sygnałem prostokątnym z wyjścia kanału PWM CH2N układu czasowo-licznikowego T1. Zadaniem tego układu jest dostarczenie podwojonego napięcia dla bramki tranzystora Q3 podczas startu przetwornicy, zapewniając tym samym poprawną pracę dla napięć niższych od 2,5 V.
Gdy napięcie wyjściowe osiąga wartość docelową +5 V, sygnał PWM sterujący powielaczem diodowym jest odłączany, a układ sterujący bramką jest zasilany za pośrednictwem diody D6. Złącze J6 stanowi interfejs JTAG zgodny ze standardem Wiggler. Z jego użyciem można zaprogramować mikrokontroler. Szczegółowy opis działania przetwornicy i założenia projektowe były opublikowane w [1].
Na rys. 3 przedstawiono schemat części do pomiaru częstotliwości. Blok wykonano z użyciem popularnych i łatwo dostępnych elementów, umożliwiając pomiar częstotliwości do około 250 MHz. Ze względu na częstotliwość pracy, całość jest zasilana stabilizowanym napięciem +5 V. Napięcie to jest doprowadzone za pośrednictwem klucza Q1 sterowanego z linii mikrokontrolera PA3, umożliwiając programowe wyłączenie bloku pomiaru częstotliwości.
Tranzystor T7 konieczny był z uwagi na to, że port, do którego jest dołączony klucz nie może mieć wyższego potencjału, niż napięcie zasilania mikrokontrolera. Sygnał wejściowy jest podawany na ogranicznik zbudowany z diod D1 i D2 (BAR74), a następnie kierowany jest do dwustopniowego wzmacniacza z tranzystorów T1 i T2. Wzmacniacz ma sprzężenie pojemnościowe i pracuje w układzie OE.
Dzięki użyciu tranzystorów o dużej częstotliwości granicznej (Ft=5 GHz), pomimo zastosowania konfiguracji OE, udało się uzyskać pożądane pasmo i czułość. Sprzężenia międzystopniowe wzmacniacza zrealizowano za pomocą równolegle połączonych kondensatorów o pojemnościach 680 pF (NP0), 100 nF (X7R), 10 mF (Y5V), uzyskując stabilną reaktancję pojemnościową w założonym paśmie.
Z uwagi na zastosowanie konfiguracji OE, impedancja wejściowa jest nie duża i wynosi 1,8 kV przy 10 MHz, spadając do wartości około 180 V na krańcach pasma. Sygnał z wyjścia wzmacniacza jest kierowany do bramki Schmitta IC2A (74AC132), która przekształca sygnał wyjściowy na prostokątny. Następnie jest on kierowany do dzielnika przez 4 wykonanego na podwójnym przerzutniku D - 74AC74 (IC3).
Jest to jeden z najszybszych układów serii 74ACXX. Sygnał z wyjścia dzielnika IC3 jest podawany do licznika IC1A, który realizuje dodatkowy podział przez 16. Tym razem zastosowano układ ze standardowej serii 74HC, ponieważ częstotliwość na wyjściu IC3 nie przekracza 60 MHz. Za pomocą pozostałych bramek układu IC2 zrealizowano układ kombinacyjny umożliwiający podanie na wejście mikrokontrolera TIM2 - CH1_ETR sygnału bezpośrednio z bramki IC2A lub za pośrednictwem dzielnika przez 64 zapewniając zwiększenie rozdzielczości na dolnym zakresie pomiarowym. Szczegółowy opis metody pomiaru częstotliwości oraz charakterystyki toru wzmacniacza zostały przedstawione w [2].
Na rys. 2 przedstawiono część układu odpowiedzialną za pomiary indukcyjności i pojemności. Element mierzony jest dołączany jest do zacisków P2. Idea pomiaru pojemności i indukcyjności, oparta jest o pomiar trzech częstotliwości generatora LC. Najpierw jest mierzona częstotliwość F1 z obwodem złożonym z cewki L2 i kondensatora C18.
Następnie jest mierzona częstotliwość F2 z dołączonym kondensatorem wzorcowym C19, czyli obwód cewka L2 - kondensatory C18+C19, natomiast w ostatnim kroku jest mierzona częstotliwość F3 z dołączonym elementem Cx lub Lx. Dzięki tej metodzie możemy zmniejszyć liczbę elementów wzorcowych do pojedynczego kondensatora C19, od którego zależy dokładność pomiaru.
Szczegółowy opis metody pomiarowej został opisany w [3]. Jako element wzorcowy C19 należy zastosować kondensator o zerowym współczynniku temperaturowym NP0 i jak najlepszej dokładności. Stosunkowo łatwy do zdobycia i zapewniający wystarczającą dokładność będzie kondensator NP0 2,2 nF o tolerancji 1%. Do przełączania konfiguracji obwodów LC zastosowano tranzystory T8...T11 (2N7002), które dołączono do linii GPIO. Mają one niewielką rezystancję kanału (rzędu 2 V) oraz pojemność Cds ok. 15 pF, przez co ich wpływ na układ pomiarowy jest niewielki.
Układ generatora zrealizowano w oparciu o typową aplikację generatora LC ze wzmacniaczem operacyjnym z tym, że zamiast wzmacniacza operacyjnego zastosowano komparator LM311 (IC5) uzyskując w ten sposób sygnał prostokątny. Dzięki zastosowaniu układu generatora z komparatorem, amplituda napięcia w obwodzie LC nie przekracza kilkunastu miliwoltów, co ma istotne znacznie z uwagi na diody pasożytnicze w strukturach tranzystorów MOSFET T8...T11 pracujących w charakterze kluczy.
Wyjście komparatora jest dołączone do bramki tranzystora T12, którego zadaniem jest separacja oraz zmiana poziomu napięć. Bezpośrednio z drenu T12, wyjściowy sygnał prostokątny jest podawany na port PA0 mikrokontrolera stanowiący wejście zliczające ETR układu czasowo-licznikowego TIM2. Generator LC jest dołączony do zasilania za pomocą klucza z tranzystorem Q2 umożliwiającego realizacje programowego wyłączenia bloku.
Wykaz elementówRezystory: (SMD 0805) Kondensatory: Półprzewodniki: Inne: |
Oprogramowanie
Oprogramowanie zostało napisane obiektowo w języku C++, z wykorzystaniem gcc GCC w wersji 4.7. Bazuje ono na bibliotekach systemu ISIXRTOS, jednak z uwagi na swoją prostotę, nie wykorzystuje schedulera oraz wątków, a cała aplikacja oparta jest na prostej maszynie stanów.
Całość nie jest zależna od żadnych środowisk IDE i może być skompilowana z wykorzystaniem kompilatora przeznaczonego dla ISIXA, lub innego dowolnego bazującego na gcc (arm-none-gnueabi-) Uproszczony diagram klas aplikacji LCFMETER przedstawiono na rysunku 4. Klasa the_application jest klasą główną, implementującą funkcjonalność przyrządu. Statyczny obiekt klasy tworzony jest w funkcji głównej main pokazanej na listingu 1.
Po utworzeniu obiektu klasy następuje wywołanie metody run() implementującej główną pętlę programu. Obiekt the_application zawiera obiekt klasę keyboard, odpowiedzialną za odczyt stanu klawiszy. Obiekt klasy display lcd_disp jest odpowiedzialny za obsługę wyświetlacza LCD. Odczytując dane z klawiatury oraz wysyłając dane na ekran LCD, aplikacja może komunikować się z użytkownikiem.
Obiekt klasy stepup_comverter implementuje funkcjonalność przetwornicy programowej, sterując tak wypełnieniem PWM, aby utrzymać stałe napięcie niezależnie od obciążenia przetwornicy. Obiekty freq_meter oraz lc_measure implementują, odpowiednio, funkcjonalność pomiarów częstotliwości oraz pojemności i indukcyjności. Działanie programu sterownika przedstawia diagram czynności na rysunku 5.
Po włożeniu baterii lub wybudzeniu mikrokontrolera ze stanu uśpienia inicjalizowane są wszystkie układy peryferyjne, odczytywane parametry konfiguracyjne z pamięci NVRAM zegara RTC, a następnie jest wyświetlany ekran startowy informujący o wersji oprogramowania. W pamięci NVRAM przechowywane są stałe konfiguracyjne bloku LC uzyskane w wyniku procedury kalibracji.
Po wykonaniu czynności startowych program przechodzi do pętli głównej, w której cyklicznie jest sprawdzany stan klawiatury. Jeśli zostanie wykryte dłuższe wciśnięcie klawisza ON/UP, miernik przechodzi do trybu kalibracji. Kalibracja bloku LC jest konieczna z uwagi na pojemności montażowe, długości przewodów pomiarowych itp.
Z uwagi na to, że procedura kalibracyjna trwa stosunkowo długo jest ona wywoływana na żądanie i powinna być wykonywana po stwierdzeniu, że po włączeniu wskazania przyrządu znacznie odbiegają od zera. Jeśli zostanie wykryte krótkotrwałe wciśnięcie jednego z klawiszy, program przełącza się cyklicznie w odpowiedni tryb pomiaru w kolejności:
- pomiar pojemności C,
- pomiar indukcyjności L,
- pomiar częstotliwości w zakresie 200 MHz,
- pomiar częstotliwości w zakresie 12 MHz.
Następnie program przechodzi do wykonania odpowiedniego pomiaru i wyświetlenia zmierzonej wartości na wyświetlaczu. Jednocześnie jest sprawdzany warunek czasowy, aby uzyskać stałą częstotliwość pomiaru równą 4 razy na sekundę. Długie przytrzymanie klawisza OFF/DOWN powoduje przerwanie wykonywania metody głównej run(), klasy the_application, w efekcie czego sterowanie powraca do funkcji głównej main(), która również ulega zakończeniu.
Zakończenie funkcji main() spowoduje wywołanie destruktorów obiektów globalnych, a zatem wywołanie destruktora klasy the_application oraz destruktorów innych obiektów w nim zawartych. Destruktory te zawierają kod deinicjalizujący układy peryferyjne mikrokontrolera oraz odłączające bloki pomiarowe LC i F. Wyłączenie może nastąpić nie tylko w wypadku wciśnięcia klawisza OFF/DOWN, ale również wtedy, gdy miernik nie był używany przez dłużej niż 5 minut.
Wykrywanie stanu bezczynności odbywa się poprzez stwierdzenie braku zmian mierzonej wielkości w zadanym czasie. Procedury startowe crt0 systemu ISIX RTOS zawierają dodatkową funkcję _external_exit(), która jest wywoływana jako ostatnia czynność już po wykonaniu kodu destruktorów (listing 2). Jej zadaniem jest przygotowanie mikrokontrolera do bezpiecznego przejścia do trybu obniżonego poboru mocy oraz do ponownego wybudzenie, po wciśnięciu klawisza ON/UP.
W tym celu wyłączane są nieużywane porty GPIO, a następnie włączane są sygnały zegarowe dla bloków zarządzania energią PWR oraz AFIO. Linia PA1, do której jest dołączony klawisz ON/UP jest konfigurowana w taki sposób, aby zgłaszała przerwanie po wykryciu zbocza narastającego. Dalej jest wywoływana funkcja pwr_enter_stop_mode(), w wyniku czego mikrokontroler przechodzi w tryb obniżonego poboru mocy STOP_MODE.
Jest to ostatnia czynność, jaką wykonuje mikrokontroler, który od tego momentu znajduje się w stanie uśpienia pobierając prąd rzędu 12 mA, co jest stanem zakończenia wykonywania programu oraz wyłączenia układu. Jeśli zostanie wciśnięty klawisz ON/UP, to jest zgłaszane przerwanie, a mikrokontroler wznawia wykonywanie programu od momentu, w którym został przerwany, czyli kończy wykonanie funkcji pwr_enter_stop_mode(), a następnie wchodzi do funkcji nvic_system_reset(), w wyniku czego następuje restart mikrokontrolera i układów peryferyjnych oraz uruchomienie programu od początku.
Ponieważ rozbieżność wielkości mierzonych parametrów jest duża - od 10-12 (piko) dla pojemności do 106 (mega Hertz) dla częstotliwości. Z uwagi na konieczność wykonywania dość skomplikowanych obliczeń wykonywane są one na wartościach zmiennoprzecinkowych. Nie jest to jednak problemem z uwagi na wydajny rdzeń mikrokontrolera Cortex-M3, który świetnie nadaje się do takich zastosowań. Główną zaletą w porównaniu do rozwiązań 8-bitowych jest dużo większa zwięzłość bibliotek zmiennoprzecinkowych z uwagi na zaawansowane instrukcje rdzenia, zapewniając znaczną redukcję zajętości pamięci Flash.
Aby uzyskać odpowiednią czytelność pomiaru, wyniki prezentowane są z użyciem jednostek SI. Odpowiada za to metoda display_measured_value(real_t value). Jej argumentem jest liczba zmiennoprzecinkowa, która reprezentuje wynik pomiaru, a następnie wyświetla ją na LCD (listing 3). Jednocześnie, na podstawie stanu aktualnie mierzonej wartości, wyświetlane są odpowiednie oznaczenia jednostek wartości mierzonej np. F , H, Hz.
Tablica si_units[] zawiera współczynniki poszczególnych przedrostów układu SI natomiast tablica si_units_str[] opisy słowne przedrostów.
Na początku pierwszej linii LCD z tablicy type_measure_string[] jest wyświetlany łańcuch tekstowy umożliwiający identyfikację aktualnie wykonywanego pomiaru, a następnie jest wykonywane przetwarzanie liczby zmiennoprzecinkowej, tak aby uzyskać czytelną wartość na ekranie. Pierwszą czynnością jest przetworzenie wartości brzegowych, takich jak wartość 0,0 oraz NAN (not a number) wymagające specjalnego traktowania.
Dla pozostałych liczb jest wybierany taki przedrostek, aby liczba wyświetlana mieściła się w zakresie 1...999. Jeśli nie udaje się znaleźć odpowiedniego przedrostka w tym zakresie jest wybierany taki, aby wartość wyświetlana była większa od 1. Po przeskalowaniu przez odpowiednią wartość, następuje wyświetlenie liczby na wyświetlaczu LCD, po której zostaje wyświetlony odpowiedni przedrostek pobrany z tablicy SI_units_str[].
Za realizację przetwornicy programowej odpowiada klasa stepup_converter, która nie ma żadnych metod publicznych związanych przetwornicą, ponieważ cały algorytm regulacji jest realizowany przez procedury obsługi przerwań i nie wymaga interakcji pętli głównej. Zapewnia to zwiększenie niezawodności sterowania blokiem przetwornicy. Szczegółowy opis działania przetwornicy programowej wykracza poza łamy niniejszego artykułu i został opisany w [1].
Pomiar częstotliwości realizuje klasa frequency_measure, która ma przeciążony operator int operator() (real_t &m_value). Operator jest wywoływany przez pętlę główną programu i umożliwia odczyt aktualnie zmierzonej wartości. Szczegółowy opis pomiaru częstotliwości z wykorzystaniem powyższej klasy przedstawiony był w [2].
Pomiar pojemności i indukcyjności wykonywany jest za pomocą klasy lc_measure, która podobnie jak poprzednio implementuje identyczny operator int operator() (real_t&m_value) wywoływany cyklicznie w pętli głównej programu. Szczegółowy opis algorytmu pomiaru LC oraz użycie tych klas został przedstawiony w [3].
Bezpośrednie wyświetlanie danych na LCD jest realizowane za pośrednictwem klasy lcd_disp. Klasa ta ma szereg przeciążonych operatorów ">>" umożliwiających wpisywanie wartości za pomocą reprezentacji operacji strumieniowych, podobnie jak ma to miejsce w bibliotece . W klasie the_application jest tworzona instancja klasy wyświetlacza LCD o nazwie m_lcd, do której może być skierowana odpowiednia wartość do wyświetlenia.
Montaż i uruchomienie
Płytkę drukowaną zaprojektowano do obudowy KM33B przeznaczonej do urządzeń bateryjnych. Obudowa ma z tyłu klapkę, pod którą znajduje się miejsce do umieszczenia baterii. W założeniu jest ona przystosowana do baterii 6F22, jednak doskonale pasują do niej dwie baterie AAA umieszczone w koszyku, umożliwiając bezproblemową ich wymianę po zdjęciu klapki.
Obudowa nie ma otworu na wyświetlacz - trzeba go wykonać samodzielnie. W jego miejsce należy wkleić szybkę z pleksiglasu, konieczną z uwagi na zastosowanie delikatnego wyświetlacza LCD. Trzeba również wykonać dwa okrągłe otwory na przyciski sterujące. Z uwagi na to, że po uwzględnieniu miejsca na baterie, we wnętrzu urządzenia do dyspozycji pozostało niewiele miejsca, elementy zostały umieszczone po obu stronach płytki PCB.
Większość komponentów stanowią elementy SMD w obudowach 0805 poza: kondensatorami elektrolitycznymi, wyświetlaczem oraz innymi elementami mechanicznymi. Obudowy 0805 wydają się sensownym kompromisem pomiędzy miniaturyzacją urządzenia, a wygodą montażu ręcznego. Schemat montażowy pokazano na rysunku 6. Montaż rozpoczynamy od wlutowania dyskretnych elementów SMD, następnie należy przejść do montażu diod SMD i tranzystorów.
Należy zachować szczególną ostrożność przy montażu tranzystorów 2N7002 (T3, T4, T7...T12), ponieważ egzemplarze dostarczane przez niektórych producentów są szczególnie wrażliwe na elektryczność statyczną. W następnej kolejności należy przystąpić do montażu układów scalonych o mniejszej skali integracji, a na zakończenie przejść do montażu mikrokontrolera IC6.
Po zakończeniu montażu elementów SMD, należy zamontować pozostałe przewlekane elementy mechaniczne, w tym wszystkie złącza. Montaż wyświetlacza LCD (DISP1), należy zostawić na sam koniec. Przed przylutowaniem wyświetlacza należy zmierzyć wysokość wyprowadzeń, na jakich powinien być umieszczony, tak aby znajdował się tuż pod otworem z pleksiglasu i dopiero wtedy dokonać jego montażu. Na zakończenie należy upewnić się czy nie brakuje żadnego elementu oraz obejrzeć dokładnie, czy nie ma nigdzie zwarć pomiędzy elementami, zwłaszcza w okolicach mikrokontrolera.
Jeśli montaż jest prawidłowy i nie stwierdziliśmy optycznie żadnych problemów, możemy przystąpić do uruchomienia. Do tego celu potrzebny nam będzie zasilacz uniwersalny oraz miliamperomierz. Zasilacz należy ustawić na napięcie około +3 V oraz ustawić ograniczenie prądowe na około 100 mA, a następnie dołączyć miernik do zasilacza.
Jeśli wszystko zostało zmontowane poprawnie, a mikrokontroler nie ma załadowanego żadnego programu, pobór prądu powinien wynosić kilkanaście miliamperów, co oznacza, że STM32 wykonuje kod programu bootloadera zawarty w pamięci ROM. Jeśli stwierdzimy, że pobór prądu znacząco przekracza wskazaną wartość, w pierwszej kolejności należy sprawdzić czy nie występują zwarcia oraz, czy tranzystor kluczujący Q3 nie jest uszkodzony.
Jeśli pobór prądu jest prawidłowy, w następnej kolejności należy sprawdzić, czy klucze odpowiedzialne za dołączenie poszczególnych bloków są wyłączone. Można to zrobić mierząc napięcie na źródłach oraz drenach tranzystorów Q4, Q2, Q1. Napięcie na źródłach powinno być zbliżone do napięcia zasilającego, natomiast napięcie na drenie powinno wynosić 0 V.
Po upewnieniu się, że część zasilająca działa prawidłowo, możemy przystąpić do programowania mikrokontrolera. Oprogramowanie można wgrać na dwa sposoby w zależności od zaplecza, jakim dysponujemy: za pomocą portu szeregowego (złącze K1) lub za pomocą JTAG-a BF30 (złącze P3). Programowanie z wykorzystaniem portu szeregowego sprowadza się do połączenia portu szeregowego USART1 mikrokontrolera (złącze K1) za pomocą interfejsu MAX232 do portu szeregowego komputera oraz zwarciu zwory JP1.
Kolejną czynnością jest uruchomienie oprogramowania Flash loader demonstrator, wskazanie pliku lcfmeter.hex, którym chcemy zaprogramować mikrokontroler, a następnie jego zaprogramowanie. Szczegółowy opis programowania z wykorzystaniem wbudowanego bootloadera został opisany w [4]. Drugim sposobem zaprogramowania mikrokontrolera jest użycie interfejsu JTAG BF-30 oraz programu openocd.
Jeśli wszystko mamy poprawnie skonfigurowane, programowanie sprowadza się do wykonania dwóch prostych komend w wierszu polecenia, przejściu do katalogu projektu lcfmeter, a następnie wydanie polecenia make program, które spowoduje zaprogramowanie mikrokontrolera. Jeśli proces programowania przebiegł poprawnie, po zakończeniu na wyświetlaczu LCD powinien pokazać się ekran powitalny, a następnie powinna zostać wyświetlona informacja o tym, że urządzenie nie zostało jeszcze skalibrowane na danym zakresie i należy dokonać procesu kalibracji.
W tym momencie możemy się upewnić czy przetwornica generuje prawidłowe napięcie dla bloków analogowych. Wartość napięcia na kondensatorze C35 powinna wynosić +5 V. Należy również skontrolować pobór prądu z włączonym blokiem przetwornicy - nie powinien on przekraczać kilkudziesięciu mA.
Jeśli wartość znacząco odbiega od tego wyniku, może to oznaczać problemy z cewką L3, np. nieprawidłową wartość indukcyjności czy nieodpowiednie parametry prądowe. Kolejną czynnością jest sprawdzenie działania bloku LC. W tym celu należy rozewrzeć zaciski pomiarowe LC, a następnie przytrzymać dłużej klawisz UP, co spowoduje uruchomienie procesu kalibracji. Na wyświetlaczu powinna zostać wyświetlona informacja o przebiegającej kalibracji (rysunek 7).
W górnej linijce wyświetlana jest informacja o przebiegającej kalibracji oraz częstotliwość pracy generatora LC, w dolnej linii wyświetlany jest aktualny pasek postępu. Należy skontrolować aktualną częstotliwość F1 generatora, która na początku procesu powinna wynosić 400...500 kHz, natomiast gdy pasek postępu przekroczy 50%, częstotliwość F2 generatora powinna wynosić około 220...270 kHz.
Jeśli częstotliwość F1 generatora będzie wynosić 0, należy w pierwszej kolejności sprawdzić napięcie zasilające komparator oraz upewnić się, że tranzystory 2N7002 są sprawne. Jeśli częstotliwość jest nie zerowa, ale odbiega od podanej wartości, może to świadczyć o nieodpowiedniej cewce L2 lub kondensatorze C16. Rozbieżność częstotliwości F2 świadczy z kolei o problemach z kondensatorem wzorcowym C19.
Proces kalibracji może zająć trochę czasu w zależności od stabilności częstotliwości generatora. Po zakończeniu kalibracji miernik powinien przejść do normalnego trybu, a na ekranie powinna pokazać się wartość pojemności zbliżona do 0, natomiast w dolnej linii powinien być widoczny wskaźnik stanu baterii (rysunek 8).
Kolejną czynnością jest sprawdzenie działania miernika częstotliwości oraz jego kalibracja. W tym celu za pomocą klawiszy UP lub DOWN należy przejść do pierwszego zakresu pomiaru częstotliwości FL, a na wejście doprowadzić sygnał o znanej częstotliwości wzorcowej np. 1 MHz i amplitudzie np. 0,5 V.
Jeśli miernik działa prawidłowo, na ekranie powinna być wyświetlona częstotliwość zbliżona do wzorcowej (rysunek 9). Jeśli tak nie jest, należy w pierwszej kolejności sprawdzić napięcia zasilające oraz sygnał na wyjściu wzmacniacza wstępnego wykonanego na tranzystorach T1 i T2. Jeśli wzmacniacz działa prawidłowo, należy sprawdzić sygnał na wyjściu bramki IC2A, a następnie na wejściu PA0 mikrokontrolera.
Jeśli wszystko działa prawidłowo, ostatnią czynnością jest kalibracja generatora kwarcowego przyrządu. Po dołączeniu generatora wzorcowego należy za pomocą trymera C40 uzyskać na ekranie miernika częstotliwość równą sygnałowi wzorcowemu. Jeśli nie dysponujemy generatorem w wzorcowym, możemy w ostateczności wykorzystać np. radiotelefon na pasmo 2 m wkładając kawałek drutu w gniazdko BNC oraz włączając radiotelefon na nadawanie na znanej częstotliwości.
Miernik należy ustawić na zakresie FH, a następnie należy stroić trymer C40 do momentu uzyskania właściwych wskazań na wyświetlaczu. W takim wypadku jednak musimy liczyć się z dużo mniejszą dokładnością przyrządu. Po zakończeniu kalibracji możemy przełączyć układ w górny zakres pomiarowy (FH) i upewnić się, że układ dzielników działa poprawnie.
Po wykonaniu wskazanych czynności możemy uznać, że przyrząd jest uruchomiony i zamontować go we wnętrzu obudowy KM33B. Po zakończeniu montażu docelowego oraz podłączeniu przewodów pomiarowych do zacisków LC należy wykonać ponowną kalibrację przyrządu na zakresie pomiaru pojemności C oraz indukcyjności L. Podczas kalibracji dla zakresu C zaciski pomiarowe powinny być rozwarte, natomiast w przypadku kalibracji L zaciski pomiarowe powinny być zwarte.
Jeśli będziemy mieli trudność z zakupem odpowiedniego kondensatora wzorcowego 2,2 nF/1%, istnieje możliwość użycia innej wartości w zakresie 1...10 nF. Użycie kondensatora o mniejszej pojemności zwiększy niepewność pomiaru wynikającą z pojemności pasożytniczych.
Zmiana wartości kondensatora wzorcowego z 2,2 nF na inny wymaga zaprogramowania w ostatnich 4 bajtach pamięci Flash mikrokontrolera liczby całkowitej reprezentującej pojemność kondensatora wzorcowego wg wzoru VALINT=C*1E14. Na przykład, dla kondensatora 1 nF do ostatnich 4 bajtów pamięci Flash należy wpisać liczbę 100000. Inną możliwością zmiany wartości kondensatora C19 jest ponowne skompilowanie programu i zmiana wartości bezpośrednio w kodzie.
Obsługa i eksploatacja
Obsługa przyrządu odbywa się za pomocą dwóch przycisków OFF/DOWN oraz ON/UP. Załączenie miernika odbywa się przez krótkie wciśnięcie przycisku ON/UP, natomiast jego wyłączenie przez dłuższe przytrzymanie klawisza OFF/DOWN. Po załączeniu przez 2 sekundy na wyświetlaczu zostanie pokazany ekran powitalny, a następnie przyrząd przechodzi do trybu pomiaru.
Do dyspozycji mamy 4 zakresy pomiarowe w kolejności wyświetlania: pomiar pojemności (C), pomiar indukcyjności (L), pomiar częstotliwości do 12 MHz (FL), pomiar częstotliwości do 250 MHz (FH). Zmiana zakresu jest wykonywana poprzez krótkie wciśnięcie klawisza OFF/DOWN lub ON/UP. Dłuższe przytrzymanie ON na zakresie L lub C powoduje rozpoczęcie procesu kalibracji, odpowiednio, indukcyjności lub pojemności.
Podczas wyświetlania menu pomiarowego (rysunek 10) w górnej linii jest prezentowany aktualny wynik pomiarowy z przedrostkami SI, wraz z krótkim opisem zakresu pomiarowego odpowiednio: C=, L=, FL=, FH=. Dolna linia zawiera pasek gr aficzny informujący o aktualnym stanie baterii. Zakresowi 0% odpowiada napięcie równe 2,0 V (minimalne napięcie pracy), natomiast górnemu zakresowi 100% odpowiada napięcie 3,1 V.
Nastawy kalibracyjne przyrządu zapamiętywane są w nieulotnej pamięci RAM zegara RTC i podtrzymywane za pomocą głównej baterii zasilającej. Podczas wymiany baterii kondensator o pojemności 470 mF daje kilka minut (przy wyłączonym przyrządzie), aby wykonać wymianę bez utraty danych konfiguracyjnych.
Należy pamiętać, że każda zmiana przewodów pomiarowych lub znaczna zmiana temperatury będzie wymagała ponownej kalibracji przyrządu. Kalibracji należy dokonać wówczas, gdy stwierdzimy, że wskazania przyrządu znacząco odbiegają od 0. Na zakresie pomiaru indukcyjności przy rozwartych zaciskach zamiast wartości wyświetlane są gwiazdki.
Licencja
Oprogramowanie jest dostarczane w postaci kodów źródłowych oraz w postaci binarnej i udostępniane na licencji GPLv3. Użytkownicy chcący wykorzystywać je we własnych projektach powinni zapoznać się z jej treścią dostępną na stronie: http://itlaw.computerworld.pl/wp-content/uploads/2008/03/gpl3_pl_km.pdf.
Lucjan Bryndza SQ5FGB, EP