- Wymagane komponenty:
- Objaśnienie obwodu:
- Generator fal kwadratowych oparty na układzie scalonym 555:
- Brama wyzwalająca Schmitta:
- Arduino mierzy pojemność:
- Podsumowanie i testowanie:
Kiedy natrafiamy na wcześniej zaprojektowane płytki drukowane lub wyjmujemy jedną ze starego telewizora lub komputera, próbując ją naprawić. Czasami musimy znać pojemność konkretnego kondensatora na płytce, aby wyeliminować usterkę. Wtedy mamy problem z uzyskaniem dokładnej wartości kondensatora z płytki, szczególnie jeśli jest to urządzenie do montażu powierzchniowego. Możemy kupić sprzęt do pomiaru pojemności, ale wszystkie te urządzenia są drogie i nie dla każdego. Mając to na uwadze, zamierzamy zaprojektować prosty miernik pojemności Arduino do pomiaru pojemności nieznanych kondensatorów.
Ten miernik można łatwo wykonać, a także opłacalny. Zamierzamy wykonać miernik pojemności przy użyciu Arduino Uno, bramki wyzwalającej Schmitta i timera 555 IC.
Wymagane komponenty:
- Układ scalony timera 555
- IC 74HC14 Brama wyzwalająca Schmitta lub bramka NIE.
- Rezystor 1K Ω (2 sztuki), rezystor 10KΩ
- Kondensator 100nF, kondensator 1000µF
- 16 * 2 LCD,
- Płytka prototypowa i niektóre złącza.
Objaśnienie obwodu:
Schemat obwodu miernika pojemności wykorzystującego Arduino pokazano na poniższym rysunku. Obwód jest prosty, wyświetlacz LCD jest połączony z Arduino, aby wyświetlić zmierzoną pojemność kondensatora. Obwód generatora fali prostokątnej (555 w trybie Astable) jest podłączony do Arduino, gdzie podłączyliśmy kondensator, którego pojemność należy zmierzyć. Bramka wyzwalająca Schmitta (IC 74LS14) służy do zapewnienia, że do Arduino podawana jest tylko fala prostokątna. Do filtrowania szumów dodaliśmy kilka kondensatorów na całej mocy.
Ten obwód może dokładnie mierzyć pojemności w zakresie od 10nF do 10uF.
Generator fal kwadratowych oparty na układzie scalonym 555:
Przede wszystkim porozmawiamy o generatorze fali prostokątnej opartym na 555 Timer IC, lub powinienem powiedzieć 555 Astable Multivibrator. Wiemy, że pojemności kondensatora nie można zmierzyć bezpośrednio w obwodzie cyfrowym, innymi słowy UNO zajmuje się sygnałami cyfrowymi i nie może bezpośrednio mierzyć pojemności. Używamy więc obwodu generatora fali prostokątnej 555 do łączenia kondensatora ze światem cyfrowym.
Mówiąc najprościej, zegar zapewnia wyjście fali prostokątnej, której częstotliwość ma bezpośredni wpływ na podłączoną do niego pojemność. Tak więc najpierw otrzymujemy sygnał prostokątny, którego częstotliwość jest reprezentatywna dla pojemności nieznanego kondensatora i przekazujemy ten sygnał do UNO w celu uzyskania odpowiedniej wartości.
Ogólna konfiguracja 555 w trybie Astable, jak pokazano na poniższym rysunku:
Częstotliwość sygnału wyjściowego zależy od rezystorów RA, RB i kondensatora C. Równanie jest podane jako, Częstotliwość (F) = 1 / (Okres) = 1,44 / ((RA + RB * 2) * C).
Tutaj RA i RB to wartości rezystancji, a C to wartość pojemności. Umieszczając wartości rezystancji i pojemności w powyższym równaniu, otrzymujemy częstotliwość wyjściowej fali prostokątnej.
Zamierzamy podłączyć 1KΩ jako RA i 10KΩ jako RB. Więc formuła wygląda następująco:
Częstotliwość (F) = 1 / (Okres) = 1,44 / (21000 * C).
Zmieniając terminy, które mamy, Pojemność C = 1,44 / (21000 * F)
W naszym kodzie programu (patrz poniżej), aby dokładnie uzyskać wartość pojemności, obliczyliśmy wynik w nF mnożąc otrzymane wyniki (w faradach) przez „1000000000”. Użyliśmy również wartości „20800” zamiast 21000, ponieważ dokładne rezystancje RA i RB wynoszą 0,98 K i 9,88 K.
Jeśli więc znamy częstotliwość fali prostokątnej, możemy uzyskać wartość pojemności.
Brama wyzwalająca Schmitta:
Sygnały generowane przez obwód timera nie są całkowicie bezpieczne do bezpośredniego przekazania do Arduino Uno. Mając na uwadze czułość UNO używamy bramki spustowej Schmitta. Bramka wyzwalająca Schmitta jest cyfrową bramką logiczną.
Ta bramka zapewnia WYJŚCIE w oparciu o poziom napięcia WEJŚCIOWEGO. Wyzwalacz Schmitta ma poziom napięcia THERSHOLD, kiedy sygnał WEJŚCIOWY przyłożony do bramki ma poziom napięcia wyższy niż PRÓG bramki logicznej, WYJŚCIE przechodzi w stan WYSOKI. Jeśli poziom sygnału napięcia WEJŚCIOWEGO jest niższy niż PRÓG, wyjście bramki będzie NISKIE. Dzięki temu zwykle nie otrzymujemy wyzwalacza Schmitta osobno, zawsze mamy bramkę NOT po wyzwalaczu Schmitta. Działanie wyzwalacza Schmitta wyjaśniono tutaj: Brama wyzwalająca Schmitta
Zamierzamy użyć układu 74HC14, ten układ ma 6 bramek Schmitt Trigger. Te SZEŚĆ bramek jest połączonych wewnętrznie, jak pokazano na poniższym rysunku.
Tablica prawdy bramy Odwrócony przerzutnik Schmitta pokazany jest na rysunku poniżej, z tym, że trzeba programować UNO na odwrócenie dodatnie i ujemne okresów czasowych na jego zaciskach.
Podłączamy sygnał generowany przez obwód timera do bramki ST, na wyjściu będziemy mieli prostokątną falę odwróconych okresów czasowych, którą można bezpiecznie podać UNO.
Arduino mierzy pojemność:
Uno posiada specjalną funkcję pulseIn , która umożliwia określenie czasu trwania stanu dodatniego lub stanu ujemnego danej fali prostokątnej:
Htime = pulseIn (8, HIGH); Ltime = PulseIn (8, LOW);
Funkcja PulseIn mierzy czas, przez który poziom Wysoki lub Niski jest obecny na PIN8 Uno. Funkcja pulseIn mierzy ten wysoki czas (Htime) i niski czas (Ltime) w mikrosekundach. Kiedy dodamy razem Htime i Ltime, będziemy mieli czas trwania cyklu, a odwracając go otrzymamy częstotliwość.
Kiedy już mamy częstotliwość, możemy uzyskać pojemność za pomocą wzoru, który omówiliśmy wcześniej.
Podsumowanie i testowanie:
Podsumowując, podłączamy nieznany kondensator do obwodu timera 555, który generuje wyjście fali prostokątnej, której częstotliwość jest bezpośrednio związana z pojemnością kondensatora. Sygnał ten jest przekazywany do UNO przez bramkę ST. ONZ mierzy częstotliwość. Ze znaną częstotliwością programujemy UNO, aby obliczył pojemność za pomocą wzoru omówionego wcześniej.
Zobaczmy kilka wyników, które otrzymałem, Kiedy podłączyłem kondensator elektrolityczny 1uF, wynik to 1091,84 nF ~ 1uF. A wynik z kondensatorem poliestrowym 0,1 uF wynosi 107,70 nF ~ 0,1 uF
Następnie podłączyłem kondensator ceramiczny 0,1uF i wynik to 100,25 nF ~ 0,1uF. Również wynik z kondensatorem elektrolitycznym 4,7 uF wynosi 4842,83 nF ~ 4,8 uF
W ten sposób możemy po prostu zmierzyć pojemność dowolnego kondensatora.