Analogowy miernik użycia procesora i RAMu

Analogowy miernik użycia procesora i RAMu

Witajcie!

Chciałbym Wam pokazać pewien mały, prosty ale za to efektowny gadżet, który wykonałem w ciągu ostatnich dni. Jest to małe urządzonko pokazujące procentowe zużycie procesora i pamięci RAM za pomocą wskazówkowych, analogowych mierników.

   

Projekt jest oparty mocno na podobnym rozwiązaniu znalezionym w internecie http://www.lungstruck.com/projects/pc-meter/. Stał się on inspiracją do stworzenia własnej wersji maszynki. Całość została zabudowana we własnego projektu obudowę wykonaną na drukarce 3D, która od paru miesięcy jest moją ulubioną zabawką :) . Zaprojektowałem również nowy panel czołowy. Program na arduino został lekko zmodyfikowany o szczątkowe sterowanie podświetleniem. Software’owo korzystam z oryginalnej aplikacji na komputer pochodzącej od autora wyżej wymienionego projektu, która odczytuje parametry CPU i RAMu i wysyła je do Arduino.

Co będziemy potrzebować?

Jeśli chodzi o kwestię elektroniczną do potrzebne nam będą:

  • Płytkę Arduino lub dowolnego klona. W moim mierniczku znajduje się klon Arduino Nano z Aliexpress, który kosztował mnie całe 2 dolary (~7 złotych).
  • Dwa małe analogowe amperomierze lub woltomierze (co do parametrów odsyłam do dalszej części artykułu). Ja zapłaciłem za swoje 15 zł za sztukę, ale można dorwać je taniej, szczególnie w Chinach.
  • Trochę drobnych elementów elektronicznych – rezystory ustalające prąd na miernikach (patrz opis), do podświetlenia kilka diód LED 5mm, rezystory 470 omów, rezystor od 4,7k lub podobny, tranzystor NPN np. BC457, mały przycisk tzw. microswitch. Dodatkowo przyda się kawałek płytki uniwersalnej, gniazda żeńskie na goldpiny (do włożenia arduino) i trochę kabli.

Jak wspominałem obudowa powstała z użyciem druku 3D ale nic nie stoi na przeszkodzie by zaadaptować jakąkolwiek gotową obudowę i z użyciem wiertarki i dremela zrobić ją bez użycia drukarki 3D. Dla “drukarzy” udostępniam zaś pliki STL ze wszystkimi częściami, do których potrzebne w zasadzie są tylko śrubki do poskładania całości i kawałek szkła lub pleksi do wykonania szybki. W plikach znajdziecie również plik z panelem frontowym gotowy do drukowania.

Układ

Schemat układu jest widoczny poniżej:

Sercem układu jest płytka Arduino Nano z mikrokontrolerem AtMega328 i wbudowanym interfejsem USB-UART. Amperomierze są podłączone przez rezystory R1 i R2 do portów 3 i 5. Arduino wysyła sygnał modulowany szerokością impulsu (PWM) który jest odpowiednio przeskalowanym i uśrednionym programowo procentowym zużyciem procesora i RAMu, odczytanym z komputera i przesłanym przez USB za pomocą odpowiedniej aplikacji. Rezystory R1 i R2 wymuszają więc odpowiedni prąd zależny od średniego napięcia na pinach (a więc proporcjonalnego do wypełnienia PWM). Wartość tych rezystorów musi być dobrana więc do zakresu naszych amperomierzy.

Dodatkową opcją są diody podświetlające wskaźniki sterowane z arduino oraz przycisk, który u mnie służy do załączania i wyłączania tegoż podświetlenia.

Dobór mierników i ich ewentualna przeróbka

Osobiście zaopatrzyłem się w dwa amperomierze o zakresie do 8A. 

  

Oczywiście taki zakres jest kosmicznie wielki dla wydolności pinów wyjściowych Arduino. Mierniki takie jednak da się łatwo przeskalować do rzędu miliamperów. W tak małych amperomierzach stosuje się boczniki, czyli wpięte równolegle do cewki wskaźnika rezystory małej rezystancji i odpowiednio dużej mocy. Pomiar polega na odczycie spadku napięcia na takim boczniku (prawo Ohma). Między cewkę wskaźnika wpina się dodatkowo małe, zwykle kilkuomowe rezystorki, które na takim napięciu odłożonym na boczniku wymuszają prąd rzędu miliamperów i ten prąd jest właśnie mierzony, używając odpowiedniej skali.

Przeskalowanie miernika sprowadza się więc do usunięcia tegoż bocznika.

Aby to zrobić należy rozebrać ostrożnie miernik i usunąć, bądź po prostu wyciąć, kawałek drutu wlutowany między styki. Tak – ten kawałek drutu to bocznik… (trzecie zdjęcie, w głębi)

  

  

Na ostatnim zdjęciu dobrze widać te małe oporniki (bo są ich dwie sztuki na każdy miernik).

Po amputacji bocznika zakres amperomierza jest dla nas tajemnicą, więc trzeba go zmierzyć.  Najlepiej to zrobić za pomocą regulowanego źródła zasilania np. zasilacza warsztatowego i wpiętego szeregowo rezystora o odpowiedniej rezystancji (w okolicach 1 kilooma), albo z użyciem stałego źródła napięcia i potencjometru. Mierząc prąd w takim obwodzie innym amperomierzem i obserwując jak zachowuje się wskazówka przy zmianie napięcia lub oporu możemy łatwo określić, jaki zakres prądów ma nasz miernik. U mnie wyszło coś w okoliach 20mA i z użyciem takiego prądu spokojnie możemy budować nasz układ, gdyż jest to prąd odpowiednio mały na piny Arduino. Szybkie obliczenia pokazują że rezystory powinny mieć rezystancję 250 omów, gdyż maksymalne średnie napięcie na wyjściach będzie równe w przybliżeniu napięciu zasilania, czyli 5 woltów. W praktyce okazało się że to za dużo, więc finalnie rezystory te mają po 200 omów. Jeśli okaże się, że rezystory są za małe i przy dużych wartościach wskaźniki nam będą wyskakiwać poza skalę, to maksymalne wypełnienie można ustawić bez problemu w programie i dokładnie dostroić wskaźniki tak, by pokazywały nam prawidłowo wskaźniki.

Opcją jest też kupienie po prostu dwóch woltomierzy na zakres 5V, wtedy niepotrzebne będą w ogóle rezystory i wtedy należy je pominąć tj. podpiąć się bezpośrednio do Arduino.

Tu widzicie pierwsze testy na płytce stykowej:

Obudowa

Obudowę wymodelowałem za pomocą programu Autodesk Fusion 360.

Trochę nie wiedziałem jak zrobić ładną obudowę, ale inspirowałem się siermiężnym kształtem sprzętu pomiarowego z lat 70-tych i 80-tych. Myślę, że wyszło całkiem całkiem.

Obudowa składa się z 3 podstawowych części – bazy, na której zamontowane są wszystkie elementy, frontu i góry, która przykrywa nam całość. Drukowanie całości zajęło ok. 20 godzin przy grubości warstwy 0,2mm i dyszy 0,4mm. Wszystkie części wydrukowałem na drukarce Creality Ender-3 z użyciem czarnego PLA. 

Jako pierwsze wydrukowałem body, do niego przykręcone są wszystkie elementy i to tu najłatwiej o błąd. Pierwsza wersja miała parę niedociągnięć utrudniających montaż oraz niespasowany otwór pod USB. Druga wersja wyszła o wiele lepiej :) Ponieważ jest tu trochę elementów wiszących (szczeliny pod diody, kilka otworów na kable i otwór pod USB), należy włączyć generowanie supportów.

Na zdjęciach widzicie drukowanie pierwszej wersji. Jak widać zapomniałem o otworach pod część kabli…

   

Pozostałe elementy można drukować bez supportów – płytę czołową drukujemy na froncie, a górę urządzenia na “plecach”.

Do pełni szczęścia potrzebny nam jest jeszcze efektowny panel ze skalą wyskalowany odpowiednio w procentach. W tym celu zaprojektowałem w AutoCADzie pasujący do obudowy i mierników nowy panel frontowy i wydrukowałem go na papierze samoprzylepnym.

Aby wszystko było dostatecznie sztywne, na szybko wymodelowałem i wydrukowałem, tym razem z białego PLA, podkładkę pasującą do wszystkich otworów i usztywniającą naklejoną na nią skalę. 

  

Montaż

Skromną elektronikę miernika zmontowałem na płytce uniwersalnej (wtedy jeszcze nie było przycisku, został dorobiony później, co widać na zdjęciach z montażu):

    

Przyszedł czas na końcowy montaż: Na początek trzeba wykonać szybkę. W tym celu z przezroczystej pleksi wyciąłem prostokąt o wymiarach 25×95 mm. Taki kawałek powinien pasować do przygotowanej dla niego szczeliny we frontowym panelu. Nakładamy trochę butaprenu na krawędzie panelu i wciskamy go na miejsce.

    

Z amperomierzy finalnie potrzebne są tylko i wyłącznie wychyłowe wskaźniki. Dolutowałem do nich kable zakończone wtykami BLS, przy okazji wylutowując niepotrzebne już małe rezystorki. Podobne kabelki zrobiłem dla diód LED i zabezpieczyłem koszulkami termokurczliwymi. Ustawiamy wskaźniki na miejscach, następnie wkładamy gotową skalę na wcześniej wydrukowanej podkładce i skręcamy wszystko śrubkami po rozebranych amperomierzach. Przy okazji to dobry moment na przełożenie przewodów pod diody:

  

  

Ważne! Pomiędzy wskaźniki a otwory pod śruby na obudowę trzeba włożyć podkładki sprężynujące o odpowiedniej średnicy (najlepiej 3mm) by śruby od wskaźników nie “wciskały” nam skali do środka i by wszystko było ładnie, pięknie i prosto :D.

Diody montujemy w przewidziane pod nie otwory o średnicy 5mm. W tym momencie warto też ustawić wskazówki tak, by pokazywały zero za pomocą “dźwigienek” pod wskazówką. Pora na panel przedni, który montujemy za pomocą czterech śrubek o średnicy gwintu 3mm. Moje śrubki pochodzą z warsztatowych zapasów:

  

  

Teraz pora na przygotowaną wcześniej płytkę – wkręcamy ją za pomocą małych śrubek, następnie wkładamy na miejsce Arduino, lekko odchylając plastik, by port USB wskoczył na miejsce. Podłączamy wszystkie kabelki. Teraz wystarczy podłączyć Arduino do komputera, wgrać program (jeśli nie zrobiliśmy tego wcześniej), uruchomić dedykowaną aplikację i sprawdzić czy wszystko działa. To też dobra okazja by ustawić zmienne w programie i zestroić miernik.

  

Ostatni krok – wieńczący dzieło – to zamknięcie obudowy za pomocą górnej pokrywy i 4 śrubek podobnych do tych, którymi przykręciliśmy front.

    

GOTOWE!

Miernik jest gotowy i można go postawić przy komputerze by dumnie pokazywał jak zajeżdżamy nasze domowe pecety :).

Projekt ma jeden mały mankament: Podświetlenie jest nierówne co widać na załączonym obrazku. Przyczyną są źle przemyślane miejsca na diody. Na pewno coś pomyślę i jeśli będzie lepiej – wrzucę odpowiednią notkę.

Samo podświetlenie można wyłączyć przyciskiem z tyłu. Można też go użyć do innych celów, a jedynym ograniczeniem jest samo Arduino.

Mam nadzieję, że projekt się spodobał. Oddaję w Wasze ręce również archiwum z modelami STL wszystkich części, panelem frontowym i zmodyfikowanym przeze mnie programem. Aplikację na peceta, jak i inne materiały można ściągnąć ze strony oryginalnego twórcy – http://www.lungstruck.com/projects/pc-meter/

Zapraszam do oceniania i komentowania. Trzymajcie się ciepło :)

Hubert

Pliki załączone do artykułu:

Ocena: 5/5 (głosów: 4)

Podobne posty

11 komentarzy do “Analogowy miernik użycia procesora i RAMu

Odpowiedz

anuluj

Masz uwagi?