Zegar biurkowy na atmega328 i woltomierzach analogowych – akt pierwszy

Zegar biurkowy na atmega328 i woltomierzach analogowych – akt pierwszy

Witam Was w moim pierwszym artykule na majsterkowie.

W krótkim (dwu-trzyodcinkowym) cyklu artykułów pokażę Wam proces powstawania zegarka opartego o mikrokontroler Atmega 328P-PU (taki jak w Arduino). Zegarek tego typu idealnie nada się do postawienia na biurku w pracy w celu zaimponowania szefowi/kolegom z pracy jakie to się ma ciekawe hobby ;)

Tak, tak – wiem – „Znowu zegarek?”. Mam jednak nadzieję, że artykuł Was zainteresuje, ponieważ godzina na naszym zegarku będzie wyświetlana w dość nietypowy sposób – przy użyciu analogowego woltomierza. (A na koniec zamkniemy cały zegarek w estetycznej drewnianej obudowie, wyciętej laserowo ze sklejki). (jako, że wszyscy jesteśmy majsterkowiczami wiem dobrze, że wzmianka o cięciu czegoś laserem przykuła Waszą uwagę :P )

Żeby nie było wątpliwości oto woltomierz analogowy, którego użyję do budowy zegara.

IMG_20130618_172146

Jak widać na zdjęciu woltomierz ten służy do pomiaru napięcia stałego z zakresu 0-15V, o klasie dokładności 2.5. Szybki skok do Wikipedii wyjaśnia nam, czym jest klasa dokładności:

„Klasa przyrządu pomiarowego określa wartość błędu maksymalnego, jaki może wystąpić podczas wykonywanego nim pomiaru. Określana jest jako błąd procentowy w stosunku do pełnego zakresu pomiarowego.”

Czyli w przypadku naszego miernika po podaniu na niego napięcia 15V możemy mieć odczyt z zakresu 14,625 a 15,375. Dla naszego zastosowania w zupełności to wystarczy.

Jednak jak każdy z Was wie (a jeżeli ktoś jeszcze nie wie, to zaraz się dowie) napięcie, na którym działa atmega328 to 5V i takie napięcie jesteśmy w stanie uzyskać na wyjściu uC (uC to powszechnie używany skrót oznaczający mikrokontroler). Jak w takim razie uzyskać dowolne, pożądane przez nas napięcie pozwalające nam wysterować nasz woltomierz w całym jego zakresie pomiarowym? Odpowiedzią jest PWM. Artykułów czym jest i jak działa PWM jest w internecie (ale i na majsterkowie) co nie miara, także nie będę się rozwodził na ten temat. (jeżeli ktoś pierwszy raz styka się z tym określeniem – sugeruję w tym miejscu szybki skok do odpowiedniego artykułu w Wikipedii – http://pl.wikipedia.org/wiki/Modulacja_szeroko%C5%9Bci_impuls%C3%B3w )

No dobrze – powiedzą bardziej spostrzegawczy – ale nadal na wyjściu mamy napięcie z zakresu 0-5V, podczas gdy woltomierz mamy na zakres 0-15V! Jest to oczywiście prawda – idealnie byłoby kupić woltomierz od razu przystosowany do mierzenia napięć stałych z zakresu 0-5V, jednak takie woltomierze to w polskich sklepach internetowych rzadkość, a nawet jeżeli już się taki woltomierz znajdzie to nie jest on zbyt ładny (a zależy nam na estetycznym efekcie końcowym, nieprawdaż?). Rozwiązania tego problemu są dwa:

– można zastosować tranzystor, na którego bazę podamy nasz sygnał z PWM, a na emiter napięcie 15V

– można również przeskalować nasz woltomierz

Po przeanalizowaniu wszystkich za i przeciw postanowiłem wybrać sposób drugi (chodziło mi przede wszystkim o wyeliminowanie potrzeby posiadania napięcia 15V w projekcie, ponieważ przy popełnieniu jakiegoś błędu takie napięcie ładnie „usmaży” nam nasz uC).

Co należy zrobić w celu przeskalowania woltomierza?

Są dwie ogólne sytuacje – zwiększanie zakresu pomiarowego i jego zmniejszanie.

Zwiększenie zakresu pomiarowego jest stosunkowo łatwe i (w najprostszej wersji) nie wymaga ingerencji w sam woltomierz. W celu zwiększenia zakresu pomiarowego 10-krotnie (przykładowo) wystarczy zmierzyć rezystancję między zaciskami woltomierza, a następnie za woltomierzem wpięcie rezystora o wartości 9-krotnie większej niż rezystancja woltomierza. (oczywiście w takich przypadkach należy się upewnić, że nasz woltomierz, jak i dodatkowe rezystory, będą w stanie wytrzymać tak wysokie napięcie!)

Ogólny wzór na wartość posobnika rozszerzającego zakres pomiarowy to:

Rd=(U/Uv – 1)Rv

Rd – wartość dodatkowego rezystora do wpięcia

Uv – napięcie, które w tym momencie jest w stanie zmierzyć woltomierz

U – maksymalne napięcie, które ma nam mierzyć woltomierz po zwiększeniu zakresu

Rv – rezystancja wewnętrzna miernika

Zmniejszenie zakresu pomiarowego to niestety trochę (choć niewiele) trudniejsza sprawa. Nie wnikając w szczegóły – zakres pomiarowy woltomierza zależy bezpośrednio od rezystorów precyzyjnych – posobników. W celu zmniejszenia zakresu pomiarowego należy sprawdzić (zmierzyć) rezystancję posobników znajdujących się w układzie woltomierza a następnie policzyć wartość nowego (nowych) posobników, które włączymy do układu w miejsce tych zamontowanych tam fabrycznie.

W tym celu musimy oczywiście otworzyć obudowę naszego woltomierza – w przypadku mojego wystarczy w tym celu odkręcić dwie małe śrubki znajdujące się po bokach obudowy.

Po odkręceniu śrubek i zdjęciu obudowy woltomierza ukazuje nam się jego wnętrze, które, jak widać na następnym zdjęciu, zawiera w moim przypadku dwa rezystory.

IMG_20130618_180645

Po krótkiej chwili fachowego przypatrywania się rezystorom obiecujemy sobie po raz 72 w tym roku nauczyć się wreszcie kodu paskowego rezystorów na pamięć i z rezygnacją otwieramy pierwszy z brzegu internetowy kalkulator, który mówi nam, że mamy do czynienia z rezystorami o wartościach 17kOhm (w przypadku „grubszego” rezystora znajdującego się po lewej stronie) i 1,5kOhm („cieńszy”, po prawej). Jednak jako prawdziwi spece nie ufamy niczemu i nikomu i bierzemy do ręki multimetr, ustawiamy go na pomiar rezystancji i już po chwili znamy faktyczne wartości rezystancji obu rezystorów – 16,85kOhm oraz 1,47kOhm.

Następnym krokiem jest wyliczenie nowych wartości posobnika, który umożliwi nam pomiar w pożądanym przez nas zakresie. Z powodu, który wyjaśnię za chwilę będę używał w poniższych obliczeniach wartości znamionowych (a nie zmierzonych) rezystorów. Użyjemy tutaj lekko zmodyfikowanego wzoru, który podałem już powyżej:

Rd= (U/Uv)Rv

Jak widać, z nawiasu we wzorze zniknęło „- 1” – wynika to z tego, że zamiast dokładać dodatkowe posobniki do już obecnych w układzie będziemy wylutowywać te obecne w układzie i w ich miejsce wstawiać nowe. A więc:

Rd=(U/Uv)Rv

Rd=(5V/15V)(17kOhm+1,5kOhm)

Rd=1/3*18,5kOhm

Rd=~6,2kOhm

A więc obecne w układzie posobniki o łącznej rezystancji 18,5kOhm musimy zamienić na takie o rezystancji około 6,2kOhm. Ze względów praktycznych (lutowanie w kłopotliwym miejscu, zwiększające szansę na uszkodzenie woltomierza) postanowiłem zostawić w układzie mniejszy z posobników (ten o znamionowej wartości 1,5kOhm), a podmienić tylko ten drugi, wobec czego rezystancja, której poszukujemy to:

6,2kOhm-1,5kOhm=4,7kOhm

Ze względu na fakt, że będziemy przerabiali w ten sposób dwa woltomierze (jeden do wyświetlania godziny, a drugi – minut), a także dla pewnego marginesu błędu najlepiej jest zamiast rezystora użyć w tym miejscu potencjometru wieloobrotowego (z tego właśnie powodu mogłem bezkarnie użyć w powyższych wzorach wartości znamionowych, a nie rzeczywistych). Krótkie poszukiwania ujawniły dwie możliwe opcje – potencjometr 5kOhm lub taki o maksymalnej rezystancji 10kOhm. Wydawałoby się, że ten o wartości 5kOhm wystarczy, jednak dokładniejsze wczytanie się w kartę katalogową (oczywiście tego konkretnego potencjometru, który oglądałem) ujawnia drobny problem – „tolerancja – +/-10%”. Co to oznacza? Oznacza to tyle, że możemy otrzymać potencjometr o maksymalnej rezystancji 4,5kOhm, który będzie trochę obcinał nam zakres pomiarowy. Wobec tego zamawiamy dwie sztuki tego o rezystancji 10kOhm.

Po otrzymaniu paczki wracamy do pracy – wreszcie zaczniemy coś robić z naszym woltomierzem!

Zaczynamy od rozłożenia go na jak najmniejsze kawałki – tak, aby mieć jak najlepszy dostęp do tego rezystora, który będziemy chcieli wylutować. Następnie ostrożnie, starając się nie nagrzewać układu woltomierza dużej niż to konieczne wylutowujemy ten duży, niebieski rezystor. Rezystor ładnie sobie chowamy do pudełeczka czy innej szuflady (bo przecież kiedyś będziemy potrzebowali rezystor akurat 17kOhm i tu proszę, jak znalazł będą czekały dwa). Nie pozostało nam nic innego jak wlutowanie potencjometru w miejsce wylutowanego rezystora – jedna ze skrajnych nóżek do kabelka idącego do pozostałego rezystora, a nóżka środkowa i druga skrajna zlutowane razem – do zacisku „-„ woltomierza. Dla pewności można przymocować potencjometr do tyłu obudowy kroplą kleju na gorąco (uważamy, żeby nie zakleić śrubki do kręcenia!).

IMG_20130624_124850

Mamy teraz woltomierz, o nieznanym zakresie pomiarowym. Dlaczego nieznanym? Ponieważ wlutowaliśmy potencjometr, nie znając dokładnie jego położenia – a co za tym idzie aktualnej rezystancji. W celu wykalibrowania naszego woltomierza podłączamy pod jego zaciski napięcie 5V (np. z USB) i kręcimy potencjometrem tak, aby wskazówka woltomierza ustawiła się na maksimum wyrysowanego nad nią zakresu (w naszym przypadku na 15V).

IMG_20130624_130427

Korzystając z tego, że mamy otwarty nasz woltomierz zrobimy jeszcze dwie rzeczy – zamontujemy w nim dwie białe diody LED służące do doświetlenia woltomierza wieczorem/w nocy oraz zmienimy oznaczenia woltomierza.

Postanowiłem użyć niewielkich (3mm) diod białych, które przykleiłem tak, jak to widać na poniższej fotografii. Jako, że w obudowie woltomierza miałem jeszcze dużo miejsca upchnąłem w niej także rezystory dla każdej z diod.

IMG_20130624_131853

Zastanawiałem się w jaki sposób podłączyć diody „ze światem”, ostatecznie zdecydowałem się na użycie znanej zapewne każdemu pomarańczowej kostki elektrycznej – w tylnej ściance woltomierza wyciąłem dwa otwory (za ich rozstaw przyjmując rozstaw najmniejszej kostki, jaką udało mi się kupić), następnie wyprowadziłem przez te otwory kabelki przymocowane do nóżek diod, nakręciłem na nie kostkę i przymocowałem ją do woltomierza przy pomocy kleju na gorąco.

IMG_20130908_213840

W celu stworzenia nowego frontu woltomierza zeskanowałem jego pierwotny wygląd i po niedługiej zabawie z ulubionym programem graficznym (ja użyłem Corela, ale można nawet i w Paincie ;P ) miałem gotowe dwie wersje – jedna z zakresem 1-12 (z podziałką co jeden) i druga z zakresu 0-60 (z podziałką co 10). Wydrukowałem obie wersje, wyciąłem i nakleiłem je na odwrocie obecnego frontu używając taśmy dwustronnej.

IMG_20130626_003418

Powtarzamy procedurę dla drugiego woltomierza.

Gratulacje! Przeskalowaliśmy właśnie dwa woltomierze tak, że możemy łatwo ich użyć w połączeniu z wyjściami PWM naszego uC.

IMG_20130626_092800

W następnej części podłączymy nasze woltomierze pod atmegę, sprawdzimy poprawność wyświetlanych przez nie wskazań i spróbujemy na nich wyświetlić godzinę korzystając z zewnętrznego zegara czasu rzeczywistego (RTC) z niezależnym podtrzymaniem bateryjnym. Będzie się działo!

Ocena: 4.67/5 (głosów: 69)

Podobne posty

23 komentarzy do “Zegar biurkowy na atmega328 i woltomierzach analogowych – akt pierwszy

  • Fajna sprawa ja bym tylko zmienił oznaczenie z V na właściwe dla roli pełnionej przez dany “zegar” tak coby jak za milion lat ktoś to odkopie to nie wpadł na pomysł że to mierzy jakieś tajne pole dziad wie czego

    Odpowiedz
    • prawie :P nieśmiertelny power tape – początkowo też miały być na klej na gorąco, ale jak zobaczyłem jak delikatne są części woltomierza w środku wolałem go nie nagrzewać niepotrzebnie, a odpowiednio przyklejona taśma ładnie trzyma diody :)

      Odpowiedz
  • No proszę, mój 40 głos przeważył skalę.
    Tak więc witamy na głównej, odwaliłeś kawał dobrej roboty, nie spieprz tego, jak jedna osoba, która zaczęła robić inteligentny dom z raspberry pi i arduino i zakończyło się na liście części i planach :>
    Ja zatem za każdą kolejną część przyznaję od razu 5 gwiazdek, za nietypowy fajny pomysł.

    Powodzenia :>

    Odpowiedz
  • Teraz się biję w głowę ,że nie wziąłem kilkunastu voltomierzy analogowych gdy sprzątaliśmy pracownię elektroniczną. Poszły na śmietnik a ja wróciłem z jakimś rosyjskim multimetrem analogowym i colorofonem. Tyle przegrać :/

    Odpowiedz
  • Ciekaw jestem przedstawienia kolejnej części, jak już przejdziesz do podłączenia woltomierzy pod atemgę. Jestem naprawdę pod wrażeniem, sensowne rozwiązanie wykorzystania woltomierza. Czy mogę się mniej więcej dowiedzieć kiedy powstanie druga część tego artykułu? Muszę dokładnie zastanowić się nad procesem zmniejszenia zakresu pomiarowego, bo sprawia mi to małe kłopoty, na szczęście mam w domu odpowiednią osobę, którą mogę spytać, sprawdzić i której mogę się poradzić :) Czekam na odpowiedź i kolejny epizod. Pozdrawiam !

    Odpowiedz
  • Bardzo fajny projekt. Gratuluję.
    Chyba sobie wyrzeźbię podobny zegarek. U mnie “wala się” ATmega88 i DS3231 ;)
    Zastanawiam się tylko czy standardowa częstotliwość PWM z Arduino, czyli 490Hz nie jest słyszalna szczególnie przy większym wypełnieniu? Ja sobie robiłem testy z innymi miernikami i miałem dość wyraźny pisk. Jeśli to słychać to może spróbuję użyć ostatnio pobraną bibliotekę Arduino-PWM-Frequency-library, gdzie można zmieniać częstotliwość od 1Hz do 2MHz.
    Ostatnio zanabyłem chyba dość podobne woltomierze i zaskoczyło mnie, że na wyprowadzeniach nie mają opisu gdzie jest +, a gdzie -. W starszych miernikach zawsze miałem opisany +. Jak już piszesz tak szczegółowy poradnik to może warto byłoby dodać słowo co podłączamy do pinu PWM, czyli de-facto do plusa, a co do masy.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?