- dopuszczalny zakres napięć wejściowych: 0…36 V,
- maksymalna wartość mierzonego prądu (bocznik 10/50 Ω): 8192 μA/1638 μA,
- rozdzielczość pomiaru prądu (bocznik 10/50 Ω): 0,25 μA/0,05 μA,
- dokładność pomiaru prądu: 0,2%,
- częstotliwość pomiarów: 40 razy na sekundę,
- częstotliwość odświeżania ekranu: 4 razy na sekundę,
- dostępne tryby pracy: NORMAL/MAX/AVG,
- czas pracy na baterii AAA(1): 6 miesięcy (dla założonych warunków użytkowania).
Konstruując urządzenia mikroprocesorowe zasilane bateryjnie wielokrotnie stykałem się z problemem minimalizacji zużycia energii. Zadanie jest wtedy jeszcze trudniejsze, gdyż systemy tego rodzaju wymagają drobiazgowej analizy. Nie wystarczy w tym przypadku wprowadzić mikrokontroler w tryb Power Down, gdyż stan wielu jego wewnętrznych peryferiów jak i relacje z podłączonymi do jego portów elementami wydatnie wpływają na pobór energii (jeśli liczymy każdy mikroamper).
Tutaj pozwolę sobie na swego rodzaju off-topic, niemniej dość istotny. Pracując z mikroprocesorami AVR od dobrych kilkunastu lat nie raz zdarzyło mi się (jak pewnie i Wam) podłączyć mikrokontroler niezgodnie z założeniami powodując jego zdecydowane rozgrzanie spowodowane zwarciem portów komunikacyjnych czy też odwrotną polaryzacją zasilania. W zasadzie zawsze po tego rodzaju błędzie i jego szybkiej korekcie mikrokontroler nasz zachowywał się zupełnie normalnie, niewzruszony skrajnymi warunkami pracy… ale tylko pozornie. W układach, gdzie liczyłem każdy mikroamper (a nawet nanoamper) okazywało się, że element ten po takim doświadczeniu nie dotrzymywał już skrajnie niskiego zapotrzebowania na energię w trybach o niskim poborze mocy co zapewne wynikało z jakiś uszkodzeń obwodów wejściowych. To bardzo istotny drobiazg, który należy mieć na uwadze.
Ale wróćmy do naszych aplikacji zasilanych bateryjnie i problemów z tym związanych. Analiza takich układów nie należy z pewnością do łatwych, ale ja, tak jak zapewne każdy z Was, nabierałem doświadczenia w tym zakresie z każdym kolejnym urządzeniem. W tym celu zwykle posługiwałem się dobrej klasy multimetrem wyposażonym w odpowiedni zakres pomiarowy, ale że multimetr ten niejednokrotnie potrzebny był w tym samym czasie do pomiaru innych parametrów badanego układu nie było to rozwiązanie nazbyt wygodne i optymalne.
Research
Zacząłem poszukiwania mikroamperomierza przeznaczonego wyłącznie do pomiarów małych prądów DC. Szybko okazało się, że oprócz archaicznych tablicowych przyrządów analogowych na rynku dostępne są wyłącznie specjalizowane, bardzo dokładne, ale i bardzo drogie mikro/nano-amperomierze.
W zderzeniu z takim stanem rzeczy zacząłem się zastanawiać nad skonstruowaniem własnego urządzenia tego rodzaju, jako że z zasady działania urządzenie to samo w sobie nie powinno być nazbyt skomplikowane.
Proces projektowania (a jak to się dzisiaj mówi modnie – research) poprzedziłem przeglądem rozwiązań dostępnych w Internecie. Dość szybko natknąłem się na bardzo ciekawy projekt autorstwa australijskiego wideo bloggera Davida L. Jones’a (EEVblog) pod postacią urządzenia o nazwie μCurrent, który z powodzeniem moglibyśmy zastosować we własnej implementacji, jako że układ charakteryzuje się doskonałymi parametrami elektrycznymi i prostotą konstrukcji. Dość szybko zdałem sobie jednak sprawę, że sama przystawka tego typu będąca niczym innym, jak przetwornikiem prąd-napięcie to tylko wstęp do budowy docelowego systemu mikroprocesorowego.
W dalszym kroku niezbędny będzie bardzo dokładny, zapewne 16-bitowy, przetwornik ADC, przy pomocy którego będziemy mogli z odpowiednią dokładnością i rozdzielczością zmierzyć wynikowe napięcie proporcjonalne do mierzonego prądu. Niestety przetworniki tego typu są dość drogie a ponadto wymagają odpowiedniego doświadczenia projektowego w docelowej implementacji by pomiary wykonywane przy ich użyciu były po pierwsze wiarygodne a po drugie, pozbawione zakłóceń. Pat? Otóż nie!
Po pierwszej euforii spowodowanej lekturą projektu Davida przypomniałem sobie, że w swoich poprzednich urządzeniach, gdzie niezbędny był pomiar prądu stałego używałem doskonałego i sprawdzonego wcześniej specjalizowanego 16-bitowego przetwornika pomiarowego pod postacią układu INA226 produkcji Texas Instruments. Nie pozwoli on, co prawda, na osiągnięcie tak wysokiej dokładności, jaką oferuje przystawka Davida, ale spodziewane 0,1...0,2% w amatorskich zastosowaniach będzie, jak najbardziej wystarczające. Jako że we wcześniejszym projekcie zasilacza arbitralnego pod postacią projektu powerBank, którego opis ukazał się w naszym miesięczniku w wydaniu 07/2015 zaprezentowałem szczegóły dotyczące tego ciekawego peryferium, nie będę powielał ich w niniejszym artykule, niemniej jednak nie sposób choćby skrótowo nie opisać właściwości tego ciekawego peryferium.
INA226
Układ INA226, produkcji firmy Texas Instruments, jest specjalizowanym, bardzo dokładnym, 16-bitowym, różnicowym przetwornikiem pomiarowym ADC przeznaczonym do zastosowania w układach pomiaru prądu i mocy z użyciem bocznika rezystancyjnego. Układ ten wyróżnia się następującymi, wybranymi cechami użytkowymi:
- zasilanie napięciem 2,7...5,5 V,
- bezpośredni pomiar napięcia, prądu i mocy,
- możliwość pracy w systemach o szerokim zakresie napięć szyny zasilającej 0…36 V,
- możliwość pracy w konfiguracji Low-side i High-side,
- bardzo duża dokładność pomiaru – rzędu 0,1%,
- konfigurowalny czas przetwarzania wbudowanego przetwornika ADC,
- konfigurowalna funkcja uśredniania pomiarów,
- dwa tryby pracy wbudowanego przetwornika ADC: ciągły i wyzwalany na żądanie,
- możliwość alarmowania po przekroczeniu zadanego poziomu prądu, napięcia szyny zasilającej odbiornik bądź mocy pobieranej przez odbiornik.
Jak widać, układ INA226 idealnie wpisuje się w wymagania naszej aplikacji oferując niespotykaną dotąd funkcjonalność i dokładność pomiarów. Schemat blokowy tego peryferium pokazano na rysunku 1. Układ dokonuje ciągłego (lub wyzwalanego manualnie przez aplikację użytkownika) pomiaru dwóch wartości napięć: napięcia szyny zasilającej odbiornik (VBUS) oraz napięcia na zaciskach bocznika rezystancyjnego (VSHUNT) włączonego w szereg z odbiornikiem. Na podstawie tych dwóch wielkości i zawartości rejestru konfiguracyjnego CALIBRATION (którego wartość zależy od wymaganej rozdzielczości pomiaru i parametrów zastosowanego bocznika rezystancyjnego) układ oblicza następujące wielkości elektryczne: prąd oraz moc pobieraną przez odbiornik i udostępnia je aplikacji użytkownika ładując obliczone wielkości do stosownych rejestrów konfiguracyjnych jak również ustawiając przeznaczone flagi zakończenia konwersji.
Ponadto, dzięki wyposażeniu go w grupę specjalnych rejestrów konfiguracyjnych odpowiedzialnych za porównywanie zmierzonych i obliczonych wartości z wartościami progowymi, jak również przeznaczone wyprowadzenie oznaczone jako ALERT, umożliwia generowanie alarmów po przekroczeniu zdefiniowanych przez użytkownika progów dotyczących: napięcia szyny zasilającej, napięcia na boczniku pomiarowym i mocy pobieranej przez odbiornik. Dodatkowo, producent tego peryferium wyposażył je w możliwość niezależnej konfiguracji czasu przetwarzania przetwornika ADC, oddzielnie dla napięcia szyny zasilającej i napięcia bocznika rezystancyjnego, jak również w możliwość uśredniania pomiarów tychże wielkości spośród wielu, kolejnych pomiarów. Dzięki takiemu podejściu zwiększono wydatnie funkcjonalność użytkową układu i możliwość dostosowania trybu jego pracy do wymagań konkretnej aplikacji. Pamiętać należy jedynie, że wydłużenie czasu przetwarzania wbudowanego przetwornika ADC wydatnie zwiększa uzyskaną dokładność pomiaru, zaś uśrednianie większej liczby próbek zdecydowanie polepsza odstęp sygnału od szumu, w związku z czym w rzeczywistych aplikacjach należy dobierać maksymalne i możliwe do zaakceptowania wartości tychże parametrów kierując się dla przykładu szybkością zmian badanych przebiegów, jako kryterium wyjściowym.
Co oczywiste, aby poznać wszystkie możliwości drzemiące w układzie INA226 należałoby sięgnąć do jego noty aplikacyjnej lub do… mojego artykułu, o którym wspominałem wcześniej, gdzie szczegółowo omawiam wszelkie zagadnienia implementacyjne. Już teraz nadmienię, że w implementacji naszego mikroamperomierza korzystał będę z ułamka możliwości wspomnianego przetwornika, gdyż użyłem wyłącznie możliwości pomiaru prądu na bardzo dokładnym boczniku rezystancyjnym, jako że jest to wystarczające w tym wypadku. Tyle w kwestii samego przetwornika.
Budowa i działanie
Przejdźmy do schematu ideowego urządzenia miA. który pokazano na rysunku 2. Jak widać, jest to bardzo prosty system mikroprocesorowy, którego sercem jest niewielki mikrokontroler firmy Microchip (dawniej Atmel) typu ATtiny85 taktowany wewnętrznym generatorem RC o częstotliwości 1 MHz, odpowiedzialny za programową implementację interfejsu I²C, przy użyciu którego mikrokontroler realizuje obsługę układu INA226 będącego specjalizowanym, bardzo dokładnym, 16-bitowym, różnicowym przetwornikiem ADC oraz obsługę niewielkiego acz bardzo efektownego wyświetlacza OLED o rozdzielczości 128×32 piksele stanowiącego element graficznego interfejsu użytkownika.
Ponadto mikrokontroler odpowiedzialny jest za obsługę przycisku PWR używając w celu eliminacji drgań styków wbudowany układ czasowo-licznikowy Timer0 i stosowne przerwanie systemowe (przy okazji obsługiwane jest krótkie i długie naciśnięcie tegoż przycisku).
Wspomniany wcześniej, specjalizowany przetwornik ADC mierzy spadek napięcia na rezystorze szeregowym R1 (10 lub 50 Ω), dzięki czemu możliwe jest wyznaczenie prądu pobieranego przez badane urządzenie. Dla dociekliwych podpowiem, że aby wydatnie zwiększyć uzyskaną dokładność pomiarów oraz odstęp sygnału od szumu przetwornik INA226 skonfigurowano w taki sposób by uśredniał 16 kolejnych pomiarów, wyłącznie napięcia bocznika rezystancyjnego (VSHUNT) i dokonywał tego w czasie 1,1 ms w trybie automatycznym.
Kilka słów o bloku zasilającym. Jako, że mikroamperomierz nasz z założenia zaprojektowano, jako urządzenie przenośne, dla którego krytycznym kryterium jest pobór prądu ze źródła napięcia zasilającego, zadbano o odpowiednią implementację bloku zasilającego. Zdecydowałem się na zastosowanie popularnej baterii typu AAA o pojemności w granicach 1300 mAh (w przypadku dobrych baterii alkaicznych lub litowych) a wybór ten podyktowany był łatwą dostępnością ogniwa i jego niską ceną. Z uwagi na to konieczne stało się użycie prostej, acz nowoczesnej przetwornicy step-up pod postacią układu scalonego XC9140C331MR-G firmy Torex, która dostarcza napięcie wyjściowe rzędu 3,3 V już przy napięciu wejściowym na poziomie 0,9 V i zapewnia niski prąd spoczynkowy w granicach 6,5 μA oraz wysoką sprawność, co nie jest bez znaczenia dla zastosowanego źródła napięcia zasilającego. W ten sposób rozwiązałem tym samym problem spadku napięcia baterii typu AAA w czasie użytkowania urządzenia maksymalizując jednocześnie czas pracy na jednym ogniwie. Dodatkowo, aby ograniczyć pobór prądu w trybie uśpienia zastosowałem następujące rozwiązania sprzętowo-programowe:
- mikrokontroler wprowadzany jest w tryb niskiego poboru mocy Power Down (<0,2 μA),
- przetwornik INA226 wprowadzany jest w tryb niskiego poboru mocy Power Down (<0,5 μA),
- wyświetlacz OLED jest wyłączany (ok. 20 μA).
Aby ocenić jak długo urządzenie miA pracować będzie na pojedynczej baterii AAA należy zastanowić się z jakich etapów składa się cykl jego pracy i jakiej wielkości prądy pobiera wtedy ze źródła napięcia zasilającego. Przystępując do obliczeń przyjąłem następujący podział cyklu pracy urządzenia:
- czas trybu Power Down (uśpienia), który trwa z dużym przybliżeniem 24 h/dobę i podczas którego pobierany jest prąd rzędu 30 μA (większość tego prądu to prąd spoczynkowy przetwornicy i prąd pobierany przez logikę wyświetlacza OLED),
- czas pracy urządzenia z włączonym wyświetlaczem OLED a zatem czas wykonywania i wyświetlania pomiarów, który trwa średnio 60 s i podczas którego pobierany jest średni prąd rzędu 25 mA,
- czas pracy urządzenia z wyłączonym wyświetlaczem OLED a zatem czas wykonywania pomiarów, który trwa średnio 5 minut i podczas którego pobierany jest średni prąd rzędu 3,5 mA.
Założono ponadto, że wybudzanie urządzenia następuje 10 razy na dobę, co oznacza, że urządzenie używane jest maksymalnie 50 minut dziennie. Przy założeniach jak wyżej otrzymano teoretyczny, niespełna 6-miesięczny czas pracy na pojedynczej baterii AAA co wydaje się wartością satysfakcjonującą.
Oczywiście mógłbym przy pomocy dodatkowego MOSFET-a odłączać zasilanie OLED-a (co stosowałem w moich poprzednich układach), ale stwierdziłem, że dodatkowa korzyść w postaci kolejnych zaoszczędzonych 10 μA nie jest warta komplikacji układu (i konieczności każdorazowej inicjacji OLED-a) biorąc pod uwagę dość dużą pojemność baterii zasilającej.
Jeśli chodzi o samo wybudzanie i zarazem uruchamianie urządzenia to możliwe jest ono poprzez naciśnięcie przycisku PWR a to wszystko dzięki użyciu (wyłącznie w trybie uśpienia) przerwania zewnętrznego Pin Change Interrupt 0. Włączone urządzenie pozostaje w tym stanie przez okres 5 minut (pod warunkiem, że nie wyłączymy go wcześniej) po czym automatycznie przechodzi do stanu uśpienia, chyba że w międzyczasie nastąpi jakiekolwiek użycie przycisku PWR (zmiana trybu pracy urządzenia), które to każdorazowo wydłuża czas przejścia do stanu uśpienia systemu mikroprocesorowego. W czasie wspomnianych 5 minut sam wyświetlacz OLED włączony jest wyłącznie przez czas 60 sekund po czym następuje jego automatyczne wyłączenie w celu oszczędzania energii, chyba że, jak poprzednio, wcześniej użyjemy przycisku PWR (zmiana trybu pracy urządzenia) wydłużającego każdorazowo tenże czas.
Wyłączony wyświetlacz włączamy ponownie poprzez krótkie przyciśnięcie przycisku PWR.
Już zupełnie dla porządku dodam, że aplikacja urządzenia korzysta również z wbudowanego w strukturę mikrokontrolera przetwornika ADC (wejście ADC1) przy udziale, którego mierzony jest poziom napięcia baterii zasilającej co pozwala na zgrubne określenie stanu tej baterii. Jest to oczywiście rozwiązanie dość proste, gdyż dokładne określenie stanu baterii wymagałoby zastosowania specjalizowanego kontrolera wielkości traconego ładunku (lub innych rozwiązań sprzętowo-programowych), jednak w tak prostych systemach wydaje się w zupełności wystarczające, zwłaszcza że producenci ogniw tego rodzaju (zdecydowanie polecam lekturę takiej dokumentacji) testują swoje ogniwa do napięcia rozładowania rzędu 0,9 V tym samym określając jego dostępną pojemność.
Pomiar, o którym mowa wykonywany jest ustawicznie po włączeniu urządzenia w cyklach 1-sekundowych. Po stwierdzeniu, że napięcie baterii zasilającej spadło poniżej 0,9 V (a więc poniżej minimalnego napięcia wejściowego przetwornicy) system mikroprocesorowy wyświetla stosowną informację na ekranie urządzenia i przechodzi automatycznie w stan uśpienia.
Na tym zakończyłbym opis szczegółów implementacyjnych, gdyby nie jeden istotny szczegół, o którym trzeba koniecznie wspomnieć. Jako, że założyłem (o czym dowiecie się później), że urządzenie miA będzie miało możliwość rejestracji dość szybko zmieniających się prądów, przyjąłem, że częstotliwość pomiarów wbudowanego przetwornika (wzorem dobrych multimetrów, których dokumentację przeglądałem) będzie wynosić 40 Hz (pomiar co 25 ms), zaś częstotliwość odświeżania ekranu ustaliłem na 4 Hz (odświeżanie co 250 ms). Niestety z uwagi na rodzaj zastosowanego wyświetlacza OLED wyposażonego w dość wolny interfejs komunikacyjny I²C, nawet przy maksymalnej, dopuszczalnej wartości sygnału zegarowego magistrali danych (400 kHz), odświeżenie zawartości całego ekranu (128×32 piksele) zajmuje ponad 110 ms. Właśnie wspomniane 110 ms to czas wykonania 4 pomiarów prądu, co znaczy ni mniej, ni więcej, że w czasie odświeżania zawartości wyświetlacza OLED tracilibyśmy co najmniej 4 pomiary wartości prądu (wszak i wyświetlacz, i przetwornik INA226 podpięte są do tej samej magistrali, a sam mikrokontroler nie dysponuje modułem DMA, który mógłby go odciążyć). Co oczywiste, to nie jest dopuszczalne.
Jak rozwiązałem ten problem konstrukcyjny? Otóż podzieliłem wspomniany proces wyświetlania wartości prądu na 6 etapów (oddzielnie dla każdej z cyfr) przez co program obsługi aplikacji wstrzymywany jest w takim wypadku na maksymalnie 20 ms, co pozwala z kolei na nie pominięcie żadnego z pomiarów. Wymagało to trochę zaangażowania w implementację funkcji wyświetlających, ale ostatecznie zapewniło odpowiedni margines błędów, jak i spełnienie założeń konstrukcyjnych. Na rysunku 3, pokazano w sposób graficzny zależności czasowe aplikacji urządzenia miA podczas wykonywania pomiarów prądu i wyświetlania wartości na ekranie OLED, zaś na rysunku 4, pokazano te same przebiegi, lecz zarejestrowane w układzie rzeczywistym przy pomocy zaawansowanego analizatora stanów logicznych z funkcją dekodowania protokołów transmisji.
Montaż i uruchomienie
Tyle w telegraficznym skrócie w kwestiach implementacyjnych, w związku z czym przejdźmy do schematu montażowego naszego urządzenia, który pokazano na rysunku 5. Jak widać zaprojektowano bardzo zgrabną, dwustronną, niewielką płytkę drukowaną ze zdecydowaną przewagą elementów SMD montowanych wyłącznie po stronie TOP laminatu. Montaż urządzenia rozpoczynamy od przylutowania półprzewodników. Proces ten najłatwiej wykonać przy użyciu stacji lutowniczej na gorące powietrze (tzw. Hot Air) i odpowiednich stopów lutowniczych. Jeśli jednak nie dysponujemy tego rodzaju sprzętem można również zastosować metodę z użyciem typowej stacji lutowniczej. Najprostszym sposobem montażu elementów o tak dużym zagęszczeniu wyprowadzeń, niewymagającym jednocześnie posiadania specjalistycznego sprzętu, jest użycie zwykłej stacji lutowniczej, dobrej jakości cyny z odpowiednią ilością topnika oraz dość cienkiej plecionki rozlutowniczej, która umożliwi usunięcie nadmiaru cyny spomiędzy wyprowadzeń układów. Należy przy tym uważać by nie uszkodzić termicznie tego rodzaju elementów.
Dalej lutujemy elementy bierne oraz mechaniczne w rodzaju przycisku PWR czy gniazda baterii AAA, a na samym końcu montujemy wyświetlacz OLED (w odpowiedniej odległości od płaszczyzny obwodu drukowanego, czyli na równi z płaszczyzną wyznaczoną przez obrys baterii zasilającej), zwyczajnie lutując jego wyprowadzenia w przeznaczone do tego celu pola lutownicze (należy koniecznie sprawdzić polaryzację zasilania), gdyż połączenia elektryczne zapewniają mu jednocześnie wystarczająco stabilny montaż mechaniczny.
CKSEL3...0: 0010
SUT1...0: 10
CKDIV8: 0
CKOUT: 1
DWEN: 1
EESAVE: 0
Poprawnie zmontowany układ powinien działać tuż po włączeniu zasilania. Na fotografii 1 pokazano zmontowane urządzenie od strony warstwy TOP tuż przed przylutowaniem wyświetlacza OLED (jak widać, nie zamontowano kondensatora C2, gdyż uniemożliwiałby on programowanie mikrokontrolera – należy go zamontować po zaprogramowaniu urządzenia).
Obsługa
Projektując interfejs użytkownika urządzenia miA kierowałem się zasadą maksymalnego uproszczenia sposobu obsługi układu, jak i chęcią wyposażenia go w odpowiednią paletę możliwości. W realizacji tego celu posłużyłem się niewielkim, lecz bardzo atrakcyjnym wyświetlaczem OLED o organizacji 128×32 piksele oraz wyłącznie jednym mikroprzełącznikiem oznaczonym umownie jako PWR. Mikroprzełącznik, o którym mowa służy jednocześnie do włączania/wyłączania urządzenia, jak i jego obsługi. Standardowo urządzenie wyświetla wyłącznie jeden ekran graficznego interfejsu użytkownika, który pokazano na rysunku 6.
Na ekranie tym standardowo wyświetlane są następujące informacje:
- mierzona wartość prądu [μA],
- tryb pracy urządzenia.
Warto podkreślić, że wartość prądu pokazywana w ramach graficznego interfejsu użytkownika odświeżana jest 4 razy na sekundę, podczas gdy sam pomiar tego prądu dokonywany jest przez urządzenie 40 razy na sekundę.
Dostępne są 3 tryby pracy urządzenia:
- [NORMAL] – (brak dodatkowej ikonki na wyświetlaczu), podczas którego urządzenie wyświetla bieżącą wartość prądu,
- [MAX] – (ikonka MAX na wyświetlaczu), podczas którego urządzenie wyświetla maksymalną wartość prądu zarejestrowaną od czasu włączenia tegoż trybu. Jako że pomiar dokonywany jest 40 razy na sekundę to nie zostaną zarejestrowane impulsy prądu o czasie trwania poniżej 25 ms,
- [AVG] – (ikonka AVG na wyświetlaczu), podczas którego urządzenie wyświetla średnią wartość prądu zmierzoną od czasu włączenia tegoż trybu (pomiar dokonywany jest 40 razy na sekundę).
Przełączanie pomiędzy poszczególnymi trybami pracy urządzenia dokonywane jest poprzez krótkie naciśnięcie przycisku PWR. Co ważne, po wyłączeniu i ponownym włączeniu urządzenia zapamiętywany jest aktywny tryb pracy oraz wielkości pomiarów wynikające z jego aktywacji (maksimum i wartość średnia). Długie naciśnięcie przycisku PWR powoduje z kolei wyłączenie urządzenia i przejście w tryb niskiego poboru mocy Power Down. Ponowne włączenie urządzenia możliwe jest dzięki krótkiemu przyciśnięciu przycisku PWR.
Po włączeniu urządzenia w pierwszej kolejności mierzony jest poziom napięcia baterii zasilającej i jeśli wynosi on poniżej 0,9 V system mikroprocesorowy wyświetla stosowną informację na ekranie urządzenia (rysunek 7) po czym przechodzi automatycznie w stan uśpienia.
Jako że w projekcie urządzenia przewidziano możliwość zastosowania dwóch rodzajów boczników rezystancyjnych (o rezystancji 10 lub 50 Ω), których wyboru dokonujemy w zależności od oczekiwanej rozdzielczości i zakresu pomiarowego, konieczne stało się wprowadzenie jakiegoś prostego trybu konfiguracyjnego, dzięki któremu moglibyśmy ustawić rodzaj zastosowanego bocznika rezystancyjnego, wpływającego na sposób obliczania wyświetlanej wartości prądu. Tryb ten wywołać można wyłącznie podczas wkładania w podstawkę baterii zasilającej, a dokonujemy tego poprzez przyciśnięcie przycisku PWR w tym czasie.
Po wejściu w tryb konfiguracyjny na ekranie urządzenia pokazuje się wybrana wartość bocznika rezystancyjnego (symbol 10 lub 50), którą to zmieniamy każdorazowo dzięki krótkiemu przyciśnięciu przycisku PWR. Długie przyciśnięcie przycisku PWR powoduje z kolei zapamiętanie ustawienia w nieulotnej pamięci EEPROM mikrokontrolera oraz wyjście z trybu konfiguracyjnego. Warto ponadto zauważyć, że celowo nie wprowadzałem możliwości wywoływania trybu konfiguracyjnego podczas normalnego użytkowania urządzenia, gdyż ustawienia w tym zakresie w zasadzie dokonujemy tylko raz podczas pierwszej implementacji urządzenia.
Obudowa
Dla osób, które we własnym zakresie będą chciały wykonać obudowę do urządzenia miA na rysunku 8 pokazano wygląd obwodu drukowanego z zaznaczeniem położenia i wymiarów elementów interfejsu użytkownika (wyświetlacza i przycisku PWR). Wynikowa wysokość zmontowanego urządzenia (z osadzoną w podstawce baterią AAA) wynosi w naszym wypadku około 13 mm.
Tutaj pojawia się tak zwany ekstras. Osoby, które chciałyby otrzymać gotowe rozwiązanie w tym zakresie mogą… skorzystać z gotowego projektu. Tym razem postawiłem sobie za cel dostarczenie kompletnej aplikacji urządzenia, w związku z czym poprosiłem mojego kolegę Bartłomieja Wawrzyszko, zajmującego się hobbystycznie projektami tego rodzaju, o przygotowanie stosownej obudowy w środowisku pozwalającym na wydruk na drukarce 3D.
Tak oto powstał projekt obudowy pokazany na rysunkach 9 i 10. Wspomniana obudowa tak naprawdę składa się z dwóch elementów: części górnej (pokazanej na rysunku 9), w której to umieszczono otwory na elementy interfejsu użytkownika (okienko wyświetlacza OLED i otwór na przycisk PWR) oraz otwory przeznaczone na montaż gniazd bananowych o średnicy gwintu 4 mm i części dolnej pełniącej rolę klapki, za pomocą której zamykamy obudowę od dołu (unieruchamiając ją dodatkowo stosownym wkrętem blokującym). Wspomniana klapka służy jednocześnie do osadzenia w niej (od wewnętrznej strony obudowy) zmontowanego obwodu drukowanego urządzenia. W tym celu wyposażono ją w wystające ranty umożliwiające montaż (na wcisk) obwodu drukowanego.
Wygląd 3D klapki (od wewnętrznej strony obudowy) stanowiącej drugi element obudowy pokazano rysunku 10. Z kolei rysunku 11 pokazano wygląd wspomnianej obudowy z zaznaczeniem wymiarów kluczowych krawędzi.
Stosowne pliki projektu obudowy (do wydrukowania na drukarce 3D) są dostępne w materiałach dodatkowych do artykułu. Dodatkowo podpowiem, że jeśli nie dysponujecie odpowiednim urządzeniem umożliwiającym wydrukowanie obudowy według załączonych plików to z powodzeniem możecie to zlecić (i to na naprawdę atrakcyjnych warunkach) jednej z chińskich firm, która zwyczajowo znana jest z produkcji obwodów drukowanych w bardzo atrakcyjnych cenach.
Dla zainteresowanych na fotografii 2 pokazano wygląd wspomnianej obudowy wydrukowanej na niedrogiej, najbardziej popularnej, domowej drukarce 3D drukującej w technologii FDM (Fused Deposition Modeling) czyli technologii polegającej na drukowaniu z termoplastów (czyli plastiku), poprzez rozgrzewanie tworzywa sztucznego dostarczanego do drukarki 3D w formie żyłki w głowicy drukującej i doprowadzaniu go do stanu półpłynnego. Warstwy w tej technologii nakładane są najpierw w osiach XY, a gdy drukarka 3D skończy je układać, głowica podnosi się do góry (lub stół roboczy opuszcza się w dół) o wysokość warstwy i nakładana jest kolejna warstwa. Półpłynne tworzywo sztuczne spaja się pod wpływem wysokiej temperatury i szybko zastyga tworząc (niemalże) jednolitą strukturę. Niemalże, gdyż, co widać na fotografii, obudowa wydrukowana w ten sposób ma pewną, nie zawsze akceptowalną, strukturę (poniekąd zależną od jakości samej drukarki – w naszym przypadku dość słabej).
Dla kontrastu, na fotografii tytułowej pokazano wygląd obudowy urządzenia miA wydrukowanej na drukarce 3D drukującej w technologii MJF (Multi Jet Fusion) polegającej na druku 3D ze sproszkowanych tworzyw sztucznych (poliamidów), poprzez selektywne natryskiwanie na nie lepiszcza, które to skleja ze sobą poszczególne warstwy modelu i zgrzewania ich w wysokiej temperaturze, co powoduje ich trwałe zespojenie się. Atutem wydruków 3D z użyciem technologii MJF jest wysoka wytrzymałość mechaniczna produkowanych części. Uzyskiwana jest ona dzięki jednolitej strukturze, która ma 100-procentowe wypełnienie. Takie drukowanie 3D powoduje, że można drukować dowolne części, nawet o wysokim stopniu skomplikowania elementów, a koszt wydruku uzależniony jest wyłącznie od ilości zużytego materiału. Należy przy tym podkreślić, że powstające produkty mają wysoką powtarzalność – są takie same względem siebie, z dokładnością wymiarową do 0,2 mm.
Metoda MJF w drukowaniu 3D pozwala na wytwarzanie funkcjonalnych części, o gładkiej powierzchni, niskiej porowatości i dowolnej geometrii. Wspomniana powyżej obudowa została wydrukowana dzięki usłudze jednej z dalekowschodnich firm produkujących obwody drukowane, o czym wspomniałem już wcześniej. Szczerze polecam tego rodzaju rozwiązanie.
Robert Wołgajew, EP
- R1 (R2 - opcjonalnie 50 Ω, szczegóły w tekście): rezystor pomiarowy 10 Ω (opcjonalnie 50 Ω) 0,1% typu AR10BTCV0100 (SMD 2010)
- R2, R3: 4,7 KΩ (SMD 0805)
- C1, C2, C5, C6: 100 nF ceramiczny X7R
- C3: 4,7 μF/10 V ceramiczny X7R
- C4: 10 μF/10 V ceramiczny X7R
- U1: ATtiny85 (SOIC8)
- U2: XC9140C331MR-G (SOT-25)
- U3: INA226 A (MSOP-10)
- OLED: wyświetlacz OLED 128×32 px, 0,91" (sterownik SSD1306, magistrala I²C, wymiary 38×12 mm)
- L1: dławik drutowy 4,7 μH typu LQH32CN4R7M33L MURATA (SMD 1210)
- PWR: mikroprzełącznik TACT SMD typu TACTM-67N-F NINIGI (wysokość 7 mm)
- BATT: koszyczek baterii AAA typu 1021 KEYSTONE
- gniazdo bananowe czarne typu BS-244GSM-B
- gniazdo bananowe czerwone typu BS-244GSM-R