Spisu treści:

Miernik kondensatora ATTiny85: 4 kroki
Miernik kondensatora ATTiny85: 4 kroki

Wideo: Miernik kondensatora ATTiny85: 4 kroki

Wideo: Miernik kondensatora ATTiny85: 4 kroki
Wideo: ATtiny85 и монитор порта в Arduino IDE 2024, Lipiec
Anonim
Miernik kondensatora ATTiny85
Miernik kondensatora ATTiny85
Miernik kondensatora ATTiny85
Miernik kondensatora ATTiny85

Ta instrukcja dotyczy miernika kondensatorowego opartego na ATTiny85 z następującymi funkcjami.

  • Na podstawie ATTiny85 (DigiStamp)
  • SSD1306 0.96 "Wyświetlacz OLED
  • Pomiar częstotliwości dla kondensatorów o niskiej wartości 1pF - 1uF za pomocą oscylatora 555
  • Pomiar czasu ładowania kondensatorów o dużej wartości 1uF - 50000uF
  • 2 oddzielne porty wykorzystywane do metod minimalizacji pojemności stary
  • Dwie wartości prądu używane do Charge Time, aby zminimalizować czas dla dużych kondensatorów
  • Metoda 555 zeruje się samoczynnie przy uruchomieniu, można ją ponownie wyzerować za pomocą przycisku;
  • Szybki test służący do wyboru metody, którą należy zastosować w każdym cyklu pomiarowym.
  • Dokładność metody czasu ładowania można poprawić dzięki obsłudze regulacji częstotliwości zegara OSCVAL

Krok 1: Schemat i teoria

Schemat i teoria
Schemat i teoria

Schemat przedstawia ATTiny sterującą wyświetlaczem OLED SSD1306 przez interfejs I2C. Jest zasilany bezpośrednio z akumulatora LiOn 300 mAh i zawiera punkt ładowania, który może być używany z zewnętrzną ładowarką kompatybilną z LiOn.

Pierwsza metoda pomiaru opiera się na pomiarze częstotliwości wolnoobrotowego oscylatora 555. Ma on podstawową częstotliwość określoną przez rezystory i kondensator, który powinien mieć wysoką dokładność, ponieważ określa dokładność pomiarów. Użyłem kondensatora styropianowego 820pF 1%, który miałem, ale można użyć innych wartości około 1nF. Wartość należy wprowadzić do oprogramowania wraz z oszacowaniem pojemności rozproszenia (~20pF). Dało to częstotliwość podstawową około 16 kHz. Wyjście 555 jest podawane do PB2 ATTiny, który jest zaprogramowany jako licznik sprzętowy. Mierząc zliczanie w okresie około 1 sekundy, można określić częstotliwość. Odbywa się to na początku, aby określić częstotliwość podstawową. Kiedy testowany kondensator jest dodawany równolegle do kondensatora bazowego, częstotliwość jest obniżana, a gdy jest ona mierzona i porównywana z częstotliwością bazową, można obliczyć wartość dodanej pojemności.

Miłą cechą tej metody jest to, że obliczona wartość zależy tylko od dokładności kondensatora bazowego. Okres pomiaru nie ma znaczenia. Rozdzielczość zależy od rozdzielczości pomiarów częstotliwości, która jest dość wysoka, więc można zmierzyć nawet bardzo małą pojemność dodaną. Czynnikiem ograniczającym wydaje się być „szum częstotliwości” oscylatora 555, który dla mnie odpowiada około 0,3 pF.

Metodę można stosować w przyzwoitym zakresie. Aby poprawić zasięg synchronizuję okres pomiaru z wykrywaniem zboczy przychodzących impulsów. Oznacza to, że nawet oscylacje o niskiej częstotliwości, takie jak 12 Hz (z kondensatorem 1uF), są dokładnie mierzone.

W przypadku większych kondensatorów obwód jest przystosowany do wykorzystywania metody synchronizacji ładowania. W tym przypadku testowany kondensator jest rozładowywany, aby upewnić się, że zaczyna od 0, a następnie jest ładowany przez znaną rezystancję z napięcia zasilania. ADC w ATTiny85 służy do monitorowania napięcia kondensatora i mierzy czas przejścia od 0% do 50% naładowania. Może to być wykorzystane do obliczenia pojemności. Ponieważ odniesieniem dla ADC jest również napięcie zasilania, nie ma to wpływu na pomiar. Jednak bezwzględna miara czasu zależy od częstotliwości zegara ATTiny85, a zmiany tego mają wpływ na wynik. Można zastosować procedurę poprawy dokładności tego zegara przy użyciu rejestru strojenia w ATTiny85 i jest to opisane w dalszej części.

Aby rozładować kondensator do 0V, n-kanałowy MOSFET jest używany wraz z rezystorem o niskiej wartości, aby ograniczyć prąd rozładowania. Oznacza to, że nawet kondensatory o dużej wartości mogą zostać szybko rozładowane.

Do ładowania kondensatora wykorzystywane są 2 wartości rezystora ładowania. Wartość bazowa daje rozsądne czasy ładowania kondensatorów od 1uF do około 50uF. MOSFET z kanałem p jest używany do pracy równoległej w niższym rezystorze, aby umożliwić pomiar kondensatorów o wyższej wartości w rozsądnym przedziale czasowym. Wybrane wartości dają czas pomiaru około 1 sekundy dla kondensatorów do 2200uF i proporcjonalnie dłuższy dla większych wartości. Na dolnym końcu wartości okres pomiaru musi być utrzymywany dość długo, aby umożliwić wystarczająco precyzyjne określenie przejścia przez próg 50%. Częstotliwość próbkowania ADC wynosi około 25 µsek, więc minimalny okres 22 µsek daje rozsądną precyzję.

Ponieważ ATTiny ma ograniczone IO (6 pinów), alokację tego zasobu należy wykonać ostrożnie. 2 piny są potrzebne do wyświetlacza, 1 do wejścia timera, 1 do ADC, 1 do kontroli rozładowania i 1 do kontroli szybkości ładowania. Chciałem sterować przyciskiem, aby umożliwić ponowne zerowanie w dowolnym momencie. Odbywa się to poprzez przejęcie linii I2C SCL. Ponieważ sygnały I2C są otwarte, nie ma konfliktu elektrycznego, pozwalając przyciskowi na obniżenie tej linii. Wyświetlacz przestanie działać przy wciśniętym przycisku, ale nie ma to znaczenia, ponieważ wznawia działanie po zwolnieniu przycisku.

Krok 2: Budowa

Budowa
Budowa
Budowa
Budowa
Budowa
Budowa

Zrobiłem to w małym pudełku drukowanym 3D o wymiarach 55 mm x 55 mm. zaprojektowanym do przechowywania 4 głównych komponentów; płytka ATTiny85 DigiStamp, wyświetlacz SSD1306, bateria LiOn i mały fragment płytki prototypowej z zegarem 55 i elektroniką kontroli ładowania.

Załącznik na

Potrzebne części

  • Tablica ATTiny85 DigiStamp. Użyłem wersji ze złączem microUSB, które służy do wgrywania oprogramowania.
  • Wyświetlacz OLED SSD1306 I2C
  • Akumulator litowo-jonowy 300 mAh
  • Mały pasek płytki prototypowej
  • Układ zegara CMOS 555 (TLC555)
  • n-kanałowy MOSFET AO3400
  • MOSFET p-kanałowy AO3401
  • Rezystory 4R7, 470R, 22K, 2x33K
  • Kondensatory 4u7, 220u
  • Kondensator precyzyjny 820pF 1%
  • Miniaturowy przełącznik suwakowy
  • 2 x 3 pinowe nagłówki do portu ładowania i portów pomiarowych
  • Naciśnij przycisk
  • Załącznik
  • Podłączyć przewód

Potrzebne narzędzia

  • Lutownica punktowa
  • Pinceta

Najpierw przygotuj obwód czasowy 555 i komponenty ładowania na płytce prototypowej. Dodaj latające przewody do połączeń zewnętrznych. Przymocuj przełącznik suwakowy i punkt ładowania oraz port pomiarowy do obudowy. Przymocuj baterię i wykonaj główne okablowanie zasilania do punktu ładowania, przełącznik suwakowy. Podłącz uziemienie do przycisku. Przymocuj ATTiny85 na miejscu i zakończ połączenie.

Przed zamontowaniem płyty ATTiny można dokonać pewnych modyfikacji oszczędzających energię, które zmniejszą nieco prąd i wydłużą żywotność baterii.

www.instructables.com/Reducing-Sleep-Curre…

Nie jest to krytyczne, ponieważ istnieje wyłącznik zasilania, który wyłącza miernik, gdy nie jest używany.

Krok 3: Oprogramowanie

Oprogramowanie do tego miernika kondensatorów można znaleźć na

github.com/roberttidey/CapacitorMeter

To jest szkic oparty na Arduino. Potrzebuje bibliotek do wyświetlania i I2C, które można znaleźć na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Są one zoptymalizowane tak, aby ATTiny zajmowały minimalną ilość pamięci. Biblioteka I2C to szybka metoda bit bang, która pozwala na użycie dowolnych 2 pinów. Jest to ważne, ponieważ metody I2C wykorzystujące port szeregowy wykorzystują PB2, co jest w konflikcie z użyciem wejścia timera/licznika potrzebnego do pomiaru częstotliwości 555.

Oprogramowanie jest skonstruowane wokół maszyny stanów, która przeprowadza pomiar przez cykl stanów. ISR obsługuje przepełnienie z licznika czasowego w celu rozszerzenia 8-bitowego sprzętu. Drugi ISR obsługuje ADC działający w trybie ciągłym. Daje to najszybszą odpowiedź na obwód ładowania przekraczający próg.

Na początku każdego cyklu pomiarowego funkcja getMeasureMode określa, która metoda jest najbardziej odpowiednia dla każdego pomiaru.

Gdy stosowana jest metoda 555, odliczanie czasu rozpoczyna się dopiero po zmianie licznika. Podobnie odmierzanie czasu jest zatrzymywane dopiero po nominalnym interwale pomiaru i po wykryciu zbocza. Ta synchronizacja umożliwia dokładne obliczenie częstotliwości nawet dla niskich częstotliwości.

Po uruchomieniu oprogramowania pierwsze 7 pomiarów to „cykle kalibracyjne” używane do określenia częstotliwości podstawowej 555 bez dodanego kondensatora. Ostatnie 4 cykle są uśredniane.

Istnieje wsparcie dla dostosowania rejestru OSCAL do strojenia zegara. Proponuję początkowo ustawić OSCCAL_VAL na 0 na górze szkicu. Oznacza to, że kalibracja fabryczna będzie używana do czasu wykonania strojenia.

Wymagana jest wartość kondensatora o podstawie 555, który należy wyregulować. Dodaję również szacunkową kwotę za błądzącą pojemność.

Jeśli do metod ładowania używane są różne rezystory, należy również zmienić wartości CHARGE_RCLOW i CHARGE_RCHIGH w oprogramowaniu.

Aby zainstalować oprogramowanie, użyj standardowej metody digistamp wgrywania oprogramowania i podłączania portu USB po wyświetleniu monitu. Pozostaw przełącznik zasilania w pozycji wyłączonej, ponieważ zasilanie będzie dostarczane przez USB do tej operacji.

Krok 4: Obsługa i zaawansowana kalibracja

Operacja jest bardzo prosta.

Po włączeniu urządzenia i odczekaniu na zakończenie kalibracji zera podłącz badany kondensator do jednego z dwóch portów pomiarowych. Użyj portów 555 dla kondensatorów o niskiej wartości <1 uF, a portu ładowania dla kondensatorów o wyższej wartości. W przypadku kondensatorów elektrolitycznych należy podłączyć ujemny zacisk do wspólnego punktu uziemienia. Podczas testów kondensator będzie ładowany do około 2V.

Port 555 można zresetować, przytrzymując przycisk przez około 1 sekundę i zwalniając. Upewnij się, że nic nie jest podłączone do portu 555 w tym celu.

Zaawansowana kalibracja

Metoda ładowania opiera się na bezwzględnej częstotliwości zegara ATTiny85 do pomiaru czasu. Zegar wykorzystuje wewnętrzny oscylator RC ustawiony tak, aby dać nominalny zegar 8 MHz. Chociaż stabilność oscylatora jest dość dobra dla zmian napięcia i temperatury, jego częstotliwość może spaść o kilka procent, nawet jeśli jest fabrycznie skalibrowany. Ta kalibracja ustawia rejestr OSCCAL podczas uruchamiania. Fabryczna kalibracja może zostać poprawiona poprzez sprawdzenie częstotliwości i bardziej optymalne ustawienie wartości OSCCAL w celu dopasowania do konkretnej płyty ATTiny85.

Nie udało mi się jeszcze zmieścić w oprogramowaniu bardziej automatycznej metody, więc stosuję następującą procedurę ręczną. Możliwe są dwa warianty w zależności od dostępnych pomiarów zewnętrznych; albo miernik częstotliwości zdolny do pomiaru częstotliwości przebiegu trójkątnego na porcie 555, albo źródło fali prostokątnej o znanej częstotliwości, np. 10KHz z poziomami 0V/3,3V, które można podłączyć do portu 555 i nadpisać przebieg, aby wymusić tę częstotliwość w liczniku. Użyłem drugiej metody.

  1. Uruchom miernik na normalnej mocy bez podłączonych kondensatorów.
  2. Podłącz miernik częstotliwości lub generator fali prostokątnej do portu 555.
  3. Uruchom ponownie cykl kalibracji, naciskając przycisk.
  4. Pod koniec cyklu kalibracji wyświetlacz pokaże częstotliwość określoną przez licznik i aktualną wartość OSCCAL. Należy zauważyć, że wielokrotne użycie cyklu kalibracji spowoduje przełączanie pomiędzy wyświetlaniem zmierzonej częstotliwości a normalnym brakiem wyświetlania.
  5. Jeśli wyświetlana częstotliwość jest mniejsza niż znana, oznacza to, że częstotliwość zegara jest zbyt wysoka i odwrotnie. Uważam, że przyrost OSCCAL dostosowuje zegar o około 0,05%
  6. Oblicz nową wartość OSCCAL, aby poprawić zegar.
  7. Wprowadź nową wartość OSCCAL w OSCCAL_VAL u góry oprogramowania układowego.
  8. Przebuduj i prześlij nowe oprogramowanie. Powtórz kroki 1-5, które powinny pokazać nową wartość OSCCAL i nowy pomiar częstotliwości.
  9. Jeśli to konieczne, powtórz kroki ponownie, aż do uzyskania najlepszego rezultatu.

Uwaga jest ważna, aby wykonać część pomiarową tego strojenia podczas pracy na normalnym zasilaniu, a nie na USB, aby zminimalizować jakiekolwiek przesunięcie częstotliwości spowodowane napięciem zasilania.

Zalecana: