Elektroda.pl
Elektroda.pl
X
Texa Poland
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zegar z mierników analogowych

ghost666 29 Maj 2015 13:55 6732 13
  • Zegar z mierników analogowych

    Moduły Trinket https://learn.adafruit.com/introducing-trinket/ firmy Adafruit są niewielkimi płytkami rozwojowymi dla mikrokontrolerów. Oparte one są o układ ATiny85 firmy Atmel. Płytka została zaprojektowana tak, aby była niewielka, co umożliwia jej integracje z dowolnym niemalże projektem. Doskonale przydaje się jeśli chcemy zrealizować szybko jakieś proste urządzenie, a nie chcemy w nim montować drogiej pełnowymiarowej płytki rozwojowej. Jest to najmniejsza i najtańsza płytka kompatybilna z arduino-IDE na rynku.

    Trinket jest dobrze dostosowany do zbudowania w oparciu o niego zegara. Jest mały i łatwo da się go umieścić w obudowie dowolnego zegara. Zegarki nie potrzebują dodatkowych układów, ani dużej ilości kodu. Można do tej płytki dodać np. wyświetlacz 7-segmentowy poprzez I2C.

    W poniższym projekcie wykorzystano oprócz Trinketa moduł Adafruit DS1307 - zegar czasu rzeczywistego. Jednakże aby uczynić projekt ciekawszym wykorzystamy do wyświetlania czasu dwa mierniki wskazówkowe.

    Moduł Trinket ma możliwość sterowania wskaźnikami analogowymi bez wykorzystania DACa. Wystarczy wykorzystać sugnały PWM obecne na trzech z pinów modułu. Wykorzystane mierniki uśredniają płynący prąd na indukcyjności uzwojenia, więc zależnie od szerokości impulsów miernik widzieć będzie różne napięcie. Układ generuje impulsy o różnej szerokości, zależnie jakie ma być wskazanie godzin i minut na zegarze.

    Do wysterowania dwóch mierników wykorzystamy dwa wyjścia PWM, na trzecim znajduje się interfejs I²C, podłączony do modułu zegara czasu rzeczywistego.

    Budowa układu

    Trinket zasilany może być napięciem w zakresie od 3,7 do 16 V poprzez wejście BAT+. W projekcie układ będzie zasilany napięciem 5 V, podobnie jak płytka z zegarem czasu rzeczywistego. Jeśli zmieni się napięcie zasilające konieczna może być powtórna kalibracja zegara.

    Dla układu zasilanego napięciem 5 V i mierników 50 µA, potrzebny jest szeregowy rezystor z miernikiem, aby prąd nie przekroczył maksymalnego. Z prawa Ohma wyliczamy, że rezystancja musi wynosić 100 kΩ. Potrzebne są dwa takie oporniki o możliwie małej tolerancji - 5% lub mniej. Można je zastąpić potencjometrami precyzyjnymi o rezystancji 100k z szeregowo włączonym opornikiem 10..47 kΩ i dokładnie skalibrować. Pozwoli to na precyzyjne nastawienie rezystancji tych oporników. W projekcie wykorzystano oporniki 100 kΩ, które okazały się dostatecznie precyzyjne do tego zastosowania.





    Zegar z mierników analogowych


    Połączenie elementów jest dosyć proste. Wykorzystano wszystkie piny modułu z AVRem poza GPIO #3. Ten pin został podłączony tymczasowo do modułu FTDI Friend, który wykorzystano do debugowania układu poprzez dedykowany terminal.

    Zegar z mierników analogowych


    Tekst pokazuje datę i czas wraz z dwoma numerami (od 0 do 255), które odpowiadają wypełnieniu przebiegu PWM. Jak widać na powyższym przykładzie 255 to południe, 13 minut po pełnej godzinie to 55. Jeśli nie udało się zobaczyć czegoś podobnego na wyjściu szeregowym układu poprzez terminal, trzeba sprawdzić kod i połączenia.

    Przygotowanie do programowania

    Skorzystać można z tutoriala, jak dostosować środowisko Arduino IDE do pracy z modułami Trinket. Wystarczy dodać plik z definicją sprzętową, plik avrdude.cong, zmienić wersję ld.exe z 2008 na 2009 i zainstalować sterownik do USBtinyISP.

    Aby przygotować Trinket do programowania można wgrać do środowiska Arduino przykładowy szkic Blink. Pozwoli to na sprawdzenie czy Trinket działa poprawnie. Wystarczy nacisnąć sprzętowy reset na module i szybko wgrać program z środowiska Arduino. Jeśli pojawią się jakieś błędy, można próbować wgrywać program jeszcze raz. Jeśli problem nie ustępuje należy upewnić się że do pinu 3 i 4 nic nie jest połączone, a środowisko Arduino IDE zostało poprawnie skonfigurowane.

    Po uruchomieniu szkicu Blink musimy doinstalować biblioteki TinyRTClib oraz TinyWire. Teraz można skopiować szkic do następnej stronie i rozpocząć tworzenie zegara.

    Problemy z debugowaniem

    Przy problemach z środowiskiem Arduino IDE:

    Upewnij się że zainstalowałeś dodatek do Trinketa, sterownik USBtinyISP oraz podmieniłeś program ld.exe.
    Zainstalowałeś biblioteki TinyWireM i TinyRTClib.
    Upewnij się że zresetowałeś Trinket przed wgraniem szkicu. Czerwona dioda będzie mrugała w 10 s okienku, gdy wgranie jest możliwe.
    Jeśli w szkicu umieścimy dużo kodu lub innych bibliotek, łatwo jest przekroczyć maksymalny rozmiar kody dla Trinketa. Jeśli musimy wykorzystywać tak duży szkic skorzystajmy z Arduino Uno, Adafruit Boarduino, Pro Trinket lub Adafruit Flora.
    Jeśli otrzymujemy błędy podobne do tego poniżej:

    Code:
    arduino-1.0.1/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o:(.init9+0x2):relocation truncated to fit: R_AVR_13_PCREL against symbol `exit' defined in .fini9 section in /arduino-1.0.1/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_exit.o)


    być może wykorzystaliśmy liczby dziesiętne, a biblioteka do liczb zmiennoprzecinkowych została dodana do Arduino IDE, co przekracza dostępną ilość pamięci programu modułu.

    Kod zaprezentowany poniżej pozostawia dużo pamięci programu na dodanie dodatkowych funkcji, szczególnie jeśli usuniemy kod dla interfejsu szeregowego. Jednakże pamiętać musimy, że deklaracja dużych macierzy, długich stringów i zmiennych dziesiętnych/zmiennoprzecinkowych lub innych bibliotek, może łatwo zająć całą dostępną pamięć programu lub ją przepełnić.

    Kod programu

    Konieczne jest dwukrotne uruchomienie skeczu, raz aby ustawić zegar, a drugi aby umożliwić mu pracę. Kod w setup() sprawdzający czy rtc.isrunning() powinien być odkomentowany. Pozwoli to na ustawienie czasu w zegarze za pierwszym razem, gdy kod będzie skompilowany. Do normalnego działania linijka ta musi być zakomentowana, tak aby korzystać normalnie z czasu w DS1307.

    Jeśli planujesz inne funkcje kody, niż poniższy przykład, albo masz problemy z jego działanie, interfejs szeregowy pozwala na debugowanie jego pracy. Przetestowano bibliotekę SendOnlySoftwareSerial do tego celu. Dodaje to około 1300 bajtów kodu, więc można ją usunąć po uruchomieniu projektu.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    PWM na pinie 4

    Można zauważyć, że funkcja analogWrite zainicjuje działanie PWMa na pinach #0 i #1, ale nie na #4. Arduino IDE nie pozwala na łatwe uruchomienie tej funkcji. Funkcja PWM4_init w powyższym przykładzie ustawia Timer 1 ATTiny85 do włączenia PWMa wstępnie na 50%. Funkcja analogWrite4 pozwoli na konfigurację tego PWMa. Wykorzystanie Timera 1 do PWMa uniemożliwi jego wykorzystanie do innych zastosowań, ale nie jest on potrzebny w zegarku. Należy się upewnić, że inne biblioteki nie potrzebują tego timera.

    Mierniki

    W pierwszej kolejności trzeba wymienić w miernikach skale z tych w mikroamperach na godziny i minuty. Poniżej przykłądowe szablony:

    Zegar z mierników analogowych Zegar z mierników analogowych


    Należy delikatnie rozkręcić i otworzyć miernik, podnieść obudowę i rozciąć będącą tam etykietę. Następnie można delikatnie wsunąć odpowiednio docięty wydruk według powyższego przykładu, tak aby nie uszkodzić igły miernika. Następnie można złożyć miernik w całość. Ewentualne niedopasowanie skali do pozycji igły skompensować można śrubką do korekcji położenia zera.

    Montaż

    Mierniki montuje się z wykorzystaniem czterech śrub, co pozwala zamontować je na każdej powierzchni. Wykorzystano mniej tradycyjną metodę montażu. Mierniki zamontowano obok siebie i zawieszono w obudowie. Płytka z elektroniką znajduje się za miernikami, przymocowana do kawałka drewna. Inną metodą montowania układu byłoby skorzystanie z elementów wykonanych w technologii druku 3D.

    Zegar z mierników analogowych


    W przedstawionym projekcie płytka drukowana została zamontowana za miernikami. Dodatkowo dodano baterię 9 V, ale w Waszych projektach można wykorzystać zasilacz DC. Niezależnie od zasilania, zegar z DS1307 będzie odmierzał czas poprawnie przez wiele miesięcy wykorzystując w tym celu wbudowaną w moduł własną baterię.

    Jeśli zamontujesz układ w innej obudowie, masz większy wybór montażu płytki z elektroniką.

    Zegar z mierników analogowych


    Źródło:

    https://learn.adafruit.com/trinket-powered-analog-meter-clock?view=all


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Texa Poland
  • #2 29 Maj 2015 18:58
    kowal011
    Poziom 17  

    I kolejne Stole It Yourself na "arduino"... kup, połącz, dostosuj czyjś soft do własnych potrzeb zmieniając piny w programie i Wow!!!
    Pomysł ciekawy jednakże to już grali, może w innej interpretacji ale grali. Zachód schodzi na psy. Dziękuje.

  • #3 29 Maj 2015 19:40
    tdx110
    Poziom 18  

    Konstrukcja bardzo fajna.
    Nie pomyślałem nigdy o takim zastosowaniu mierników analogowych.
    Może i była już taka lub podobna konstrukcja na internecie, ale ważne że jest własny wkład w stworzenie tego i przyjemność ze skonstruowania.
    Pozdrawiam i zachęcam do dalszej pomysłowości.

  • Texa Poland
  • #4 29 Maj 2015 22:36
    markoz7874
    Poziom 31  

    W odróżnieniu do niektórych malkontentów projekt mi się podoba.
    Nie po to ludzie nauczyli się przekazywać sobie wiedzę, aby później wszystko zaczynali od podstaw.
    Jeżeli ktoś już coś wymyślił, to warto to wykorzystać a nie wyważać otwarte drzwi.

  • #5 30 Maj 2015 17:13
    22053
    Użytkownik usunął konto  
  • #6 31 Maj 2015 00:51
    maciej_333
    Poziom 34  

    ghost666 napisał:
    Wystarczy wykorzystać sugnały PWM obecne na trzech z pinów modułu. Wykorzystane mierniki uśredniają płynący prąd na indukcyjności uzwojenia, więc zależnie od szerokości impulsów miernik widzieć będzie różne napięcie.

    Ustrój magnetoelektryczny czuły jest na wartość średnią sygnału. Jednak indukcyjność nic tu nie uśrednia, bo nie jest zbyt duża. Uśrednianie jest zatem czysto mechaniczne. Ponadto miernik taki reaguje na prąd, nie napięcie.

    Sam projekt jest niezbyt ciekawy. Z trzech powodów:
    1. Arduino
    2. Płytka stykowa
    3. Jest to raptem sklejenie kilku gotowców razem

  • #7 01 Cze 2015 19:46
    kowal011
    Poziom 17  

    maciej_333 napisał:
    Sam projekt jest niezbyt ciekawy. Z trzech powodów:
    1. Arduino
    2. Płytka stykowa
    3. Jest to raptem sklejenie kilku gotowców razem

    @markoz7874 czy kolegę @maciej_333 również nazwiesz malkontentem?

  • #8 01 Cze 2015 20:19
    markoz7874
    Poziom 31  

    kowal011 napisał:

    @markoz7874 czy kolegę @maciej_333 również nazwiesz malkontentem?

    Nikogo nie nazwałem tak "po imieniu".

    Ktoś robi jednostkowy projekt, nie jest to praca magisterska i raczej mało praktyczna. Mogę się założyć, że po opisaniu i zrobieniu zdjęć, projekt jest już dawno rozebrany i stanowi dawcę części do kolejnego pomysłu.
    Czy w takiej sytuacji warto projektować i trawić płytkę? Co jest złego w tym, że ktoś się bawi elektroniką składając ją z klocków?
    Dobrze, że w ogóle chce mu się coś robić.
    Niech się bawi.
    Nikt Tobie nie narzuca, że masz go naśladować. Jak projekt wejdzie w fazę produkcyjną - zrobi to pewnie porządniej.

  • #9 01 Cze 2015 21:00
    22053
    Użytkownik usunął konto  
  • #10 01 Cze 2015 22:25
    maciej_333
    Poziom 34  

    markoz7874 napisał:
    kowal011 napisał:

    @markoz7874 czy kolegę @maciej_333 również nazwiesz malkontentem?

    Nikogo nie nazwałem tak "po imieniu".

    Ktoś robi jednostkowy projekt, nie jest to praca magisterska i raczej mało praktyczna. Mogę się założyć, że po opisaniu i zrobieniu zdjęć, projekt jest już dawno rozebrany i stanowi dawcę części do kolejnego pomysłu.
    Czy w takiej sytuacji warto projektować i trawić płytkę? Co jest złego w tym, że ktoś się bawi elektroniką składając ją z klocków?
    Dobrze, że w ogóle chce mu się coś robić.
    Niech się bawi.
    Nikt Tobie nie narzuca, że masz go naśladować. Jak projekt wejdzie w fazę produkcyjną - zrobi to pewnie porządniej.


    Skoro wszystko można robić z klocków, na wysokim poziomie abstrakcji, z zastosowaniem tzw. "gotowców", to idźmy o krok dalej. W jakim celu uczyć się zasad pisowni języka polskiego, skoro np. MS Word i masa innych programów posiada moduł sprawdzania pisowni ? Myśląc Twoimi kategoriami zajmowanie się zasadami ortografii, interpunkcji, gramatyki, fleksji itd. jest zbyteczne. Ktoś już to opracował i większość tego zaszył w edytorze tekstu. Wg Ciebie nie warto się przecież zajmować wyważaniem otwartych drzwi.

    Inna kwestia to Arduino. Rodzina AVR jest tak prosta w programowaniu, że nie potrzeba tej nakładki. Wystarczy tu bezpośrednie odwołanie do rejestrów w C, lub asemblerze. Rozumiem, jeśli ktoś przy ARM'ach wspiera się gotowymi bibliotekami, powiedzmy średniego/niskiego poziomu (coś jak CSL w nomenklaturze Texas Instruments z warstwą HAL). Dla ARM dokumentacja jest fatalna, zaś zawiłość architektury naprawdę spora. Tam naprawdę programowanie na rejestrach jest trudne, ale przy AVR ?

  • #11 02 Cze 2015 09:54
    markoz7874
    Poziom 31  

    maciej_333 napisał:

    Skoro wszystko można robić z klocków, na wysokim poziomie abstrakcji, z zastosowaniem tzw. "gotowców", to idźmy o krok dalej..

    Nie rozumiemy się.
    Nikt nie nakazuje Ci bawienia się klockami.
    Nie przekonuje nikogo, że ten kierunek jest lepszy.
    Chcesz - programuj w asemblerze.
    Ale nie zabraniaj nikomu wybrania łatwiejszej drogi.
    To są dwie różne drogi podejścia do elektroniki i nie należy na siłę ich łączyć.
    Nie każdy ma ambicję zostać wybitnym elektronikiem. Są ludzie którzy będą świetnie się bawić "klockami" nawet nie używając lutownicy. I nigdy tego nie zmienią.
    Świat się zmienia. Kiedyś przy komputerach siedzieli jedynie programiści.
    W tej chwili obsługują go wszyscy, nawet tacy, co nie potrafią napisać w jakimkolwiek programie linijki kodu.
    Im też każesz się uczyć podstaw programowania?

    maciej_333 napisał:
    ..Myśląc Twoimi kategoriami zajmowanie się zasadami ortografii, interpunkcji, gramatyki, fleksji itd. jest zbyteczne..

    Częściowo trafiłeś :)
    Większość Polaków nie potrafi pisać poprawnie.
    Główna funkcją języka jest porozumiewanie a nie uprawianie sztuki poprawnego pisania. Myślę, że nic by się nie stało, gdyby ktoś bardziej odważny coś w tym temacie uprościł tak, aby większość społeczeństwa potrafiło pisać bez błędów a nie garstka - mniej niż 1%.
    Ale to temat na inną dyskusję i nie będę go tu rozwijał.

  • #13 06 Cze 2015 22:45
    maciej_333
    Poziom 34  

    arturcieslak1 napisał:
    Nie rozumiem co od pewnego czasu dzieje się na elektrodzie. Grupka osób prześciga się w tłumaczeniu i wrzucaniu zagranicznych projektów/tekstów. Pytanie tylko po co?
    Tutaj polska wersja zegara, którą widziałem już kupę czasu temu: http://majsterkowo.pl/zegar-biurkowy-na-atmega328-i-woltomierzach-analogowych-akt-trzeci/

    Też tego nie rozumiem. Tłumaczenie not aplikacyjnych takich firm jak Texas Instruments, czy Analog Devices ma sens. Nie lepiej tłumaczyć choćby wybrane odcinki EEVblog ? Jednak tłumaczenie tego ? To tylko zlepek kilku gotowych elementów, połączonych przez kogoś, kto w zasadzie nie ma o tym pojęcia. Zastanawia mnie nawet fakt w jakim celu autor tego "projektu", go opublikował ?
    Ostatnio przy idiotycznym projekcie śmiejącej się twarzy dostałem ostrzeżenie, gdy próbowałem dość dosadnie wyrazić swoją opinię.

    Inna sprawa, to ogólne prostactwo, jakie występuje na Elektrodzie. Większość osób nie potrafi poprawnie napisać kilku zdań we własnym języku. Jest to chyba jakieś zjawisko wtórnego analfabetyzmu.

    Porównajcie sobie poziom wiedzy większości użytkowników Elektrody z tym, jaki panuje np. na forum Texas Intruments. To też powinno dać do myślenia.

    markoz7874 napisał:
    Nie każdy ma ambicję zostać wybitnym elektronikiem. Są ludzie którzy będą świetnie się bawić "klockami" nawet nie używając lutownicy. I nigdy tego nie zmienią.

    Bardzo dobrze pasuje tu jeden z odcinków EEVblog pod znaczącym tytułem: "Why Learn Basic Electronics ?". Polecam wysłuchać.

  • #14 07 Cze 2015 11:24
    dondu
    Moderator Mikrokontrolery Projektowanie

    maciej_333 napisał:
    Porównajcie sobie poziom wiedzy większości użytkowników Elektrody z tym, jaki panuje np. na forum Texas Intruments. To też powinno dać do myślenia.

    Mnie to nie dziwi - oba fora trafiają do różnej grupy docelowej.

    A co do głównego wątku tematu - każdy opublikowany projekt komuś się przyda, nawet jeśli nie w całości to w części.

    A malkontentom proponujemy, by pokazali swoje publikacje - ocenimy je równie surowo jak Wy oceniacie publikacje innych :)