O ile większość popularnych i tanich multimetrów dysponuje zakresem pomiaru pojemności, o tyle pomiar indukcyjności należy raczej do rzadkości nawet w droższych przyrządach. Często również okazuje się przy pomiarach pojemności zakres pomiarowy uniemożliwia pomiar małych pojemności rzędu pojedynczych pikofaradów. Autor poszukując najprostszego rozwiązania problemu natknął się w Internecie na rozwiązanie [1]. Rozwiązanie wzbudziło zainteresowanie ponieważ wykorzystując jedynie generator LC, oraz jeden wzorcowy kondensator udało się uzyskać bardzo dobrą dokładność. Ponieważ w pierwotnym projekcie wykorzystano mechaniczny przełącznik wyboru zakresu, oraz dodatkowy przekaźnik a autor nie należy do zwolenników tego typu rozwiązań, zrealizowano układ pozbawiony elementów mechanicznych i sterowany sygnałami z portów mikrokontrolera. Ponieważ pomiar pojemności oraz indukcyjności odbywa się poprzez pomiar częstotliwości, wykorzystamy oprogramowanie pomiaru częstotliwości.

Moduł pomiarowy wykonany według poniższych wskazówek dołączony do własnego projektu charakteryzował się będzie następującymi parametrami:

  • zakres mierzonych pojemności: 0,22 uF/indukcyjności: 10 mH,
  • rozdzielczość pomiaru 0,1 pF lub 10 nH,
  • dokładność pomiaru pojemności (zależy głównie od tolerancji kondensatora wzorcowego), z kondensatorem 1% C0G: dla małych pojemności do około 2 nF – 1% a dla końca zakresu 3%,
  • dokładność pomiaru indukcyjności (zależy głównie od tolerancji kondensatora wzorcowego) z kondensatorem 1% C0G: 3%.

 

Idea

W najprostszym przypadku aby zmierzyć wartość pojemności lub indukcyjności, wystarczy zmierzyć częstotliwość drgań generatora LC, a następnie na podstawie częstotliwości korzystając z doskonale znanego wzoru:

wz1

oraz znajomości wartości jednego z elementów wyznaczyć wartość L lub C, która nie jest znana. Aby uzyskać odpowiednią dokładność pomiaru należało by wykorzystać indukcyjność (L), dobrej stabilności i tolerancji przynajmniej 1%. Niestety popularne cewki indukcyjne charakteryzują się nie najlepszymi parametrami, w porównaniu z kondensatorami. W normalnych warunkach odpowiednio stabilna oraz dokładna indukcyjność jest w zasadzie nie do zdobycia. Poza tym jeśli chcielibyśmy mierzyć zarówno indukcyjność jak i pojemność musielibyśmy mieć dwa elementy wzorcowe: kondensator dla pomiaru indukcyjności, oraz cewkę dla pomiaru pojemności. Zdobycie dobrego kondensatora o tolerancji 1%, bardzo niskim współczynniku temperaturowym, oraz dobrej stabilności jest dużo łatwiejsze, dlatego sposób pomiaru zmodyfikowano tak aby jedynym elementem wzorcowym był kondensator Ccal.

Schemat blokowy układu pomiaru pojemności bazujący na pojedynczym kondensatorze wzorcowym przedstawiono na rysunku 1.

 

 Rys. 1. Schemat blokowy układu pomiaru pojemności z pojedynczym kondensatorem wzorcowym

Rys. 1. Schemat blokowy układu pomiaru pojemności z pojedynczym kondensatorem wzorcowym

 

Idea pomiaru opiera się o pomiar trzech częstotliwości. Podstawowy obwód rezonansowy stanowi układ złożony z pojemności L oraz indukcyjności C, który wyznacza bazową częstotliwość drgań generatora. Wartość indukcyjności L oraz C nie muszą być dokładne, ważne jest jedynie aby były stabilne w czasie. Kondensator wzorcowy Cx powinien zaś być dobrej dokładności około 1% oraz posiadać dobrą stabilność. Pomiar składa się z dwóch faz:

  • fazy kalibracji,
  • fazy pomiaru.

Faza kalibracji sprowadza się do pomiaru częstotliwości drgań obwodu LC (otwarte łączniki Swx oraz Swcall) którą oznaczymy symbolem F1, oraz częstotliwości drgań generatora z równolegle dołączonym kondensatorem wzorcowym Ccal (Zwarty łącznik Swcal) którą oznaczymy symbolem F2. W fazie pomiaru właściwego mierzymy częstotliwość drgań F3, gdzie łącznik Swcal jest otarty, a łącznik Swx jest zamknięty, co powoduje że do pojemności C zostaje dołączona równolegle pojemność mierzona Cx. Na podstawie zmierzonej częstotliwości F3, oraz częstotliwości F1 oraz F2 wyznaczonych w fazie kalibracji możemy wyznaczyć szukaną pojemność Cx, gdzie:

wz2

Po wykonaniu odpowiednich przekształceń otrzymujemy wzór którą możemy wykorzystać bezpośrednio do wyznaczenia szukanej pojemności Cx:

wz3

W przypadku pomiaru indukcyjności zasada jest bardzo podobna zmienia się jedynie konfiguracja układu, gdzie wartość indukcyjności mierzonej Lx włączana jest w szereg z indukcyjnością L (rysunek 2).

 

Rys. 2. Schemat blokowy układu pomiaru indukcyjności

Rys. 2. Schemat blokowy układu pomiaru indukcyjności

 

Pomiar jest bardzo podobny do poprzedniego, różnica polega jedynie na tym że cewka badana włączana jest szeregowo z cewką L. Podobnie jak poprzednio cykl pomiarowy składa się z faz:

  • kalibracji,
  • fazy pomiaru.

W fazie kalibracji najpierw mierzona jest częstotliwość generatora F1 dla obwodu LC (zwarty łacznik Swx rozwarty łącznik Swcal), a następnie częstotliwość generatora F2 dla obwodu L(C+Ccal). W fazie pomiarowej mierzona jest częstotliwość F3 dla obwodu (L + Lx)C ( rozwarty łącznik Swx oraz Swcal), a następnie wyznaczana jest szukana indukcyjność Lx na podstawie częstotliwości F1, F2 oraz F3:

wz4

wz5

gdzie po przekształceniu otrzymujemy wzór na szukaną indukcyjność Lx:

wz6


Realizacja: sprzęt

Schemat elektryczny bloku interfejsowego do pomiaru indukcyjności oraz pojemności przedstawiono na rysunku 3. Układ generatora zasilany jest napięciem stabilizowanym 5 V z przetwornicy, natomiast mikrokontroler zasilany jest bezpośrednio z baterii. Zasilanie bloku zrealizowane jest za pośrednictwem klucza z tranzystorem Q2, dzięki czemu cały blok może być odłączony z pomocą sygnału LC_EN celem oszczędności baterii.

 

Rys. 3. Schemat elektryczny analogowej części interfejsu pomiarowego

Rys. 3. Schemat elektryczny analogowej części interfejsu pomiarowego

 

Układ od oryginału różni się zastosowaniem kluczy na tranzystorach MOSFET zamiast przekaźników, oraz dodatkowym buforem wyjściowym. Jest to książkowa aplikacja generatora LC zrealizowanego na wzmacniaczu operacyjnym, z tą różnicą że zamiast wzmacniacza operacyjnego zastosowano komparator. Dodatnie sprzężenie zwrotne realizowane jest przez rezystor R12. Dzięki zastosowaniu komparatora, sygnał wyjściowy jest od razu sygnałem prostokątnym, który w zasadzie można bezpośrednio dołączyć do mikrokontrolera. Jak się jednak okazało obciążenie generatora, oraz zmieniające się napięcie baterii z której mikrokontroler jest zasilany wpływało na częstotliwość generatora, dlatego w układzie zastosowano dodatkowy bufor z tranzystorem T12, pełniący rolę separatora, oraz przesuwnika napięcia. Tranzystory T8, T9, T10, T11 pełnią rolę kluczy umożliwiających odpowiednią konfigurację obwodów LC, według konfiguracji które zostały opisane w poprzednim podpunkcie. Tranzystor 2N7002 tak jak każdy tranzystor MOSFET posiada diodę pasożytniczą, która może uniemożliwiać bezpośrednią pracę pojedynczego tranzystora jako klucza. Jednak dzięki temu, że układ generatora zbudowano z wykorzystaniem komparatora, maksymalna amplituda drgań obwodzie LC wynosi około 20mV, a więc dioda pasożytnicza w niczym nie będzie przeszkadzać. Praktyczne próby wykazały że zastosowanie pojedynczych tranzystorów które posiadają pojemność dren-źródło ~15 pF, oraz małą rezystancję kanału ~2 ?, dało dużo lepsze rezultaty niż zastosowanie scalonych kluczy analogowych, i zapewniło porównywalną dokładność jak w przypadku pierwotnej wersji z przekaźnikami elektromechanicznymi. Jako cewkę pomiarową (oznaczoną w poprzednim podpunkcie jako L) L2 zastosowano, dobrej jakości cewkę SMD, przy czym wartość indukcyjności nie jest tutaj krytyczna, praktyczne próby wykazały ze wystarczy zwykły dławik SMD1210 o tolerancji 20%. Podstawowy kondensator obwodu generatora (oznaczony w poprzednim podpunkcie jako C) C18, o wartości 1 nF powinien charakteryzować się dobrą stabilnością parametrów natomiast nie musi mieć dobrej tolerancji, dlatego najlepiej będzie tutaj zastosować kondensator C0G. Najbardziej krytycznym elementem całego układu od którego zależy dokładność urządzenia jest kondensator kalibrujący C19 (oznaczony poprzednio jako Ccal). Kondensator ten powinien charakteryzować się dużą dokładnością minimum 1% oraz stabilnością.

W praktyce bez większych problemów będzie można dostać w regularnej sprzedaży kondensator 2n2 SMD0805 C0G 1%. Sterowanie wyborem rodzaju pomiaru L czy C oraz kalibracją odbywa się za pomocą trzech sygnałów LM_SEL, CCAL_SEL, oraz LM_SEL, zgodnie z tabelą stanów logicznych (tabela 1).

 

Tab. 1. Tabela stanów logicznych automatu sterującego pomiarami

Funkcja LM_SEL CM_SEL CCAL_SEL
Pomiar L H L L
Pomiar C L H L
Kalibracja C L H H
Kalibracja L H L H

 

Sposób dołączenia modułu pomiarowego do systemu mikrokontrolerowego z układem STM32F100R6T6B przedstawiono na rysunku 4.

 

Rys. 4. Schemat systemu akwizycji i sterowaniao z mikrokontrolerem STM32F100

Rys. 4. Schemat systemu akwizycji i sterowaniao z mikrokontrolerem STM32F100

 

Układ stanowi klasyczną aplikację mikrokontrolera rodziny STM32, sygnały sterujące wyborem pracy układu LM_SEL, CCAL_SEL, CM_SEL dołączono do linii portów GPIO, które zostały skonfigurowane w kierunku wyjścia. Sygnał sterujący załączeniem całego bloku LC_EN dołączono do linii PB.10 mikrokontrolera. Do portu PB dołączono także wyświetlacz LCD HD44780 2×16 skonfigurowany do pracy w trybie 4-bitowym. Sygnał wyjściowy układu pomiarowego LC_FREQ dołączono do linii PA0, która stanowi wyprowadzenie wejścia zliczania impulsów zewnętrznych ETR, dla układu czasowo-licznikowego TIM2.

 

Realizacja: oprogramowanie

Jak już wcześniej wspomniano do prawidłowego działania układu konieczna jest wcześniejsza kalibracja, która zapewnia również kompensacje pojemności oraz indukcyjności przewodów pomiarowych. Tak więc w pracy oprogramowania możemy wyróżnić dwa główne tryby tryb kalibracji, oraz tryb pomiaru. Z uwagi na to, że konfiguracja połączeń w układzie jest inna dla pomiaru indukcyjności, oraz inna dla pomiaru pojemności, konieczne jest wykonanie oddzielnych kalibracji dla obu trybów niezależnie. Praktyczne próby wykazały że zaraz po włączeniu zasilania bloku za pomocą sygnału LC_EN, generator „nagrzewa się” a częstotliwość generatora ma tendencję do dryfowania, by ustabilizować się na stałym poziomie po około minucie. Podobna sytuacja ma miejsce przy zmianie konfiguracji w obwodach LC, za pomocą sygnałów sterujących z tym, że częstotliwość generatora w takim przypadku stabilizuje się po kilkunastu sekundach. Najbardziej optymalną metoda kalibracji, okazała się kalibracja na żądanie za pomocą przycisku, oraz zapisywanie danych konfiguracyjnych w pamięci nieulotnej RAM zegara RTC, tak aby były one pamiętane po wyłączeniu zasilania. Praktyczne próby wykazały, że gdy korzystamy z tych samych przewodów pomiarowych, w podobnej temperaturze, nie ma potrzeby ciągłej kalibracji układu. Poza tym gdyby zaszła taka potrzeba zawsze można ponownie wcisnąć przycisk kalibracji. Kalibracja układu powinna się odbywać z dołączonymi przewodami pomiarowymi. W przypadku kalibracji zakresu pojemności zaciski wejściowe powinny być rozwarte, natomiast w przypadku kalibracji indukcyjności zaciski pomiarowe układu powinny być zwarte. Algorytm kalibracji w ogólnym przypadku przedstawiono na rysunku 5.

 

Rys. 5. Algorytm kalibracji toru pomiarowego

Rys. 5. Algorytm kalibracji toru pomiarowego

 

Algorytm rozpoczyna działanie od odpowiedniego ustawienia zakresu pomiarowego na L lub C, oraz przejścia do cyklicznego pomiaru częstotliwości generatora z dołączonym obwodem podstawowym L2-C18. Pomiar częstotliwości wykonywany jest do momentu ustabilizowania częstotliwości, lub upłynięcia czasu oczekiwania. Jeżeli w czasie około 1 minuty nie udało się uzyskać stabilnej częstotliwości generatora, znaczy to, że w urządzeniu występują problemy sprzętowe, np. zastosowano elementy o kiepskiej jakości (cewka L2, kondensatory C19 lub C18). W takim przypadku algorytm zgłasza błąd oraz kończy działanie. Jeżeli częstotliwość generatora udało się ustabilizować, zmierzona częstotliwość F1 jest zapamiętywana w podtrzymywanej bateryjnie pamięci RAM zegara RTC, a następnie dołączana jest dodatkowa pojemność kalibrująca Ccal (C19). Następnie algorytm przechodzi do ponownego pomiaru częstotliwości i oczekiwania na ustabilizowanie się generatora. Po ustabilizowaniu częstotliwości generatora jest ona zapisywana jako F2, i proces kalibracji ulega zakończeniu. Po zakończeniu kalibracji możemy przejść do , normalnego trybu pracy – pomiaru, w tym celu wystarczy cyklicznie mierzyć bieżącą częstotliwość generatora F3, a następnie wykorzystując wzory (xxx lub yyy), wyznaczać na bieżąco badaną pojemność lub indukcyjność.

Oprogramowanie zostało napisane w języku C++ , z wykorzystaniem kompilatora GCC i bazuje na opisanej w poprzednim odcinku metodzie pomiaru częstotliwości z wykorzystaniem zaawansowanych trybów układów czasowo-licznikowych mikrokontrolerów STM32.Główną klasą odpowiedzialną za obsługę układu jest lc_measure, której interfejs programowy przedstawiono na poniższym listingu:

Konstruktor klasy nie posiada dodatkowych parametrów. Metoda enable() służy do załączania zasilania bloku pomiarowego. Wybór trybu pracy bloku realizowany jest przez metodę set_mode(), która pozwala na, wybór trybu pomiarowego mode_L lub mode_C oraz uruchomienie kalibracji w trybach: mode_calibrate_L oraz mode_calibrate_C .

Najważniejszą częścią klasy jest operator virtual int operator()( real_t &mvalue );, który powinien być cyklicznie wywoływany w pętli głównej programu.

Operator jako parametr przyjmuje argument, do którego przekazany będzie wynik pomiaru oraz zwraca aktualny status w jakim znajduje się klasa pomiarowa. Odpowiednie statusy zdefiniowane są w klasie interfejsowej i_measure:

Status RESULT_OK zwrócony przez operator oznacza, że do parametru m_value został przekazany prawidłowy wynik pomiaru. Status RESULT_NO_OK oznacza, że wystąpił błąd pomiaru, np. są rozwarte zaciski wejściowe na zakresie pomiaru indukcyjności.

Status RESULT_NO_NEWDATA oznacza, że podczas wywołania operatora, nie było do odczytania żadnego nowego pomiaru.

Status RESULT_NO_CALIBRATION oznacza błędną próbę wejścia w tryb pomiaru, przed wykonaniem kalibracji. Dane z zakresu RESULT_CALIBRATE_0PERCENT – RESULT_CALIBRATE_100PERCENT są zwracane podczas procesu kalibracji i pozwalają określić aktualny postęp kalibracji, który jest zadaniem stosunkowo czasochłonnym.

Fragment operatora() implementującego pracę w trybie pomiarowym przedstawiono na poniższym listingu:

Na początku, wywołany jest operator() klasy tim_freq_measure , którego zadaniem jest odczytanie częstotliwości zmierzonej za pośrednictwem układu czasowo-licznikowego T2. Jeśli nie ma nowego pomiaru zwracana jest wartość informująca, o tym że nie ma nic nowego do przekazania. Następnie, jeżeli obiekt klasy znajduje się w stanie pomiaru indukcyjności (mode_L), sprawdzamy, czy dostępne są, częstotliwości zmierzone podczas kalibracji (m_f1_L oraz m_f2_L), Jeśli nie była wykonana kalibracja, zmienne posiadają wartość 0, a wówczas zgłaszany jest błąd informujący o braku kalibracji.

Kolejną czynnością jest sprawdzenie, czy aktualna częstotliwość generatora jest większa od minimalnej dopuszczalnej częstotliwości (10 kHz), (mniejsza wartość może np. oznaczać rozwarcie przewodów pomiarowych) a następnie jeśli wszystko jest w porządku wyznaczana jest wartość zmierzonej indukcyjności, która następnie przekazywana jest za pośrednictwem m_value. Jeśli obiekt klasy znajduje się w stanie pomiaru pojemności (mode_C) wówczas, podobnie jak poprzednio sprawdzamy czy istnieją częstotliwości ustalone w procesie kalibracji (m_f1_C oraz m_f2_C) oraz czy częstotliwość generatora jest powyżej minimalnej. Jeśli wszystko jest w porządku, wówczas na podstawie zmierzonej częstotliwości (curr_f), częstotliwości zmierzonych podczas kalibracji oraz odpowiednich obliczeń jest wyznaczana wartość pojemności.

Lucjan Bryndza, BOFF