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

Kolejny zegar... Arduino nano + wyświetlacze LED

Visar78 08 Lut 2016 00:11 10503 21
  • Kolejny zegar... Arduino nano + wyświetlacze LED

    Kolejny zegar... Arduino nano + wyświetlacze LED

    Miałem na stanie parę sztuk wyświetlaczy LED SC40-19SEKWA, są to duże wyświetlacze (wysokość 12cm) z 8 diodami na segment. Ponieważ przy tej ilości diod (połączone szeregowo-równolegle po 4 x 2) napięcie na segment musi wynosić conajmniej 10V, a jednocześnie projekt był wykonywany "na kolanie", konieczne było zastosowanie tranzystorów nie tylko do przełączania cyfr, ale także do przełączania segmentów.
    Zegar chodzi już dwa lata, póki co nie dokonywałem żadnej korekcji wskazań czasu, a ciągle mieści się w tolerancji poniżej pół minuty.

    Podtrzymanie czasu zrobione jest na module DS3231. Układ ten potrafi też generować impulsy z zadaną częstotliwością. Ja ustawiłem ją na 4kHz i podpiąłem jako źródło przerwania na którym odliczam czas, multipleksuję segmenty i reguluję jasność. Im ciemniej, tym słabiej świecą cyfry.
    Czas z ds3231 jest odczytywany tylko przy uruchamianiu zegara, zaś zapisywany do niego jest podczas zmiany czasu na letni i na zimowy. Zaimplementowałem tą zmianę, aby zegar był zupełnie bezobsługowy. Stoi wysoko na szafie i nie potrzebuje dzięki temu obudowy. :)
    Jeden z segmentów jest doklejony odwrotnie (obrót o 180 stopni), co pozwoliło wykorzystać sąsiednie kropki jako dwukropek oddzielający godziny od minut.

    Pewną niedogodnością dla zwykłego użytkownika jest zupełny brak przycisków...
    Aby ustawić godzinę, trzeba podłączyć go do komputera poprzez port USB i przez wirtualny port COM należy przesłać aktualną godzinę łącznie z datą. Data nie jest nigdy wyświetlana, ale wewnętrznie jest potrzebna do wyliczania momentów zmiany czasu letniego i zimowego.

    Projekt robiony na szybko i chyba już tak zostanie, co za tym idzie - nie ma obudowy, nie ma płytki, wszystko łączone "drutami"... Prowizorka działa najdłużej...

    Kolejny zegar... Arduino nano + wyświetlacze LED Kolejny zegar... Arduino nano + wyświetlacze LED Kolejny zegar... Arduino nano + wyświetlacze LED


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #3
    Poziom 19  

    Właśnie planuje zbudować podobny zegarek, także bez przyciskow, ale ze sterowaniem za pomoca pilota. Może kolega podzieliłby sie kodem, żeby zaoszczędzić pisania go od zera?
    Ciekawy pomysł z odwróconą jedna cyfrą w celu wykonania 2 migajacych kropek. Oczywiscie wtedy trzeba ją odpowiednio podłączyć do reszty, ale to można dość łatwo dojść.

  • #4
    Poziom 15  

    Gdyby kolega zalał to wszystko żywicą to ta "kabelko-plątanina" miała by sens, dodatkowo zegar byłby odporny na ciężkie warunki pogodowe i przeciążenia :D

  • #5
    Poziom 9  

    Umieszczam kod,

    Podłączenie wyświetlaczy, wspólne katody na pinach A0, A1, A2, A3 (dziesiątki godzin, godziny, dziesiątki minut, minuty), segmenty odpowiednio na pinach od 4 do 11 odpowiednio, A, B, C, D, E, F, G, DP.

    Na przerwaniu realizowane jest tylko przełączanie stanu dwukropka (mruganie co pół sekundy), multipleksowane wyświetlanej cyfry i zwiększanie licznika sekund.

    Pętla główna sprawdza stan portu szeregowego, jeżeli są dane to je odczytuje, wylicza jaki jest dzień tygodnia (potrzebne do zmiany czasu) i zapisuje te wartości do RTC.

    Poza tym w pętli sprawdzana jest wartość sekund, czy nie osiągnęła wartości 60 co powoduje odpowiednią ewentualną modyfikację minut i godzin.

    Przy modyfikacji godzin sprawdzana jest wartość 24, kiedy to następuje zerowanie licznika godzin i ustawienie zmiennej newDay. Zmienna ta służy dalej do pobrania z RTC aktualnego dnia miesiąca, miesiąca i dnia tygodnia.

    Jeśli jest godzina 2 i miesiąc 3, sprawdzany jest dzień tygodnia, jeśli jest to niedziela i dodatkowo jest to ostatnia niedziela miesiąca, licznik godzin jest zwiększany i ustawiana zmienna timeShifted.

    Podobnie jeśli jest godzina 3, miesiąc 10, ostatnia niedziela w miesiącu i zmienna timeChanged nie jest ustawiona, licznik godzin jest zmniejszany, i ustawiane są zmienne timeShifted i timeChanged. timeChanged zapobiega kolejnym zmianom godziny w danym dniu.

    timeShifted służy do ustawienia nowej godziny w RTC.

    Ostatnim zadaniem pętli głównej jest pobranie napięcia z portu A6 gdzie jest podłączony fotorezystor i przejście do odpowiedniego stanu wygaszenia, aby różnicować moc świecenia wyświetlacza w zależności od oświetlenia otoczenia.

    Jeszcze uwagi co do wykonania połączeń, nie zajmuję się elektroniką zawodowo, prawdę mówiąc, najbardziej mnie cieszy programowanie, a dzięki takim podzespołom jak Arduino, czy inne gotowe komponenty, DS3231, przetwornica DC/DC, mogłem się zacząć bawić w łączenie, lutowanie itp. Niestety nie znam się na elektronice i muszę powiedzieć, że miałem problem z odpowiednim wysterowaniem segmentów, żeby świeciły tak samo jasno zarówno przy wyświetlaniu 1 jak i 8, zwłaszcza przy najmniejszej jasności to było widoczne.
    Inna sprawa to nie sądziłem, że powrót do takiego "prostego" programowania daje tyle radości, jeśli widzi się efekty w postaci działającego urządzenia. Zawodowo zajmuję się programowaniem, ale na zupełnie innym poziomie abstrakcji.

    Tak więc jeśli o wykonanie to przyznaję się do tego, że nie jest to dla mnie priorytet, niestety często jak już coś zacznie działać to schodzi z celu moich zainteresowań i szukam czegoś innego. Dlatego rzadko coś otrzymuje obudowę... Jakimś wyjątkiem są światełka choinkowe które dostały obudowę, ale znowu tylko dlatego, że leżały koło choinki, dzieci miały dostęp do tego i nie chciałem tutaj ryzyka.
    Inne "projekty" leżą u mnie w pudełku w pracowni i po jakimś czasie służą do innych celów. Ten zegar jest znowu wyjątkiem który okazał się na tyle funkcjonalny, że już ponad 2 lata spełnia swoją funkcję...

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #6
    Poziom 9  

    Dlaczego do wszystkiego używa się Arduino ?

  • #8
    Poziom 19  

    Dzięki kolego za zamieszczenie kodu.
    Arduino jest platformą łatwą do użycia, jest tanie, bo produkowane masowo przez Chińczyków, i zaoszczędza mnóstwo czasu, z uwagi na dostępność wielu gotowych bibliotek i kodów. Można zbudować dowolnie urządzenie procesorowe bardzo szybko, co jest największa zaletą.

  • #9
    Poziom 13  

    Jestem na plus. Wreszcie DYI, które przypomina bardziej "coś użytecznego zmajstrowanego naprędce z posiadanych części" niż wyścig w "kto zrobi urządzenie wyglądające bardziej fabryczne niż z fabryki". Skoro stoi w miejscu, które ogranicza znacznie ryzyko pozrywania podzespołów i spełnia wymagania - daję plus. Bardzo fajny pająk zmajstrowany na wyświetlaczach.

  • #10
    Poziom 31  

    Ciekawi, a zarazem dziwi mnie wykorzystanie jakiś tranzystorów mocy (obudowa TO220 widać po zdjęciu) do sterowania "7-segmentówką".

  • #12
    Poziom 31  

    Fajnie to wygląda jak do sterowania 7-segmentówką wykorzystuje się tranzystor o prądzie ≈50A :D

  • #13
    Moderator Mikrokontrolery Projektowanie

    eMeFx napisał:
    Dlaczego do wszystkiego używa się Arduino ?

    Bo jest proste, zunifikowane, masa dostępnych bibliotek, prosta składnia języka ... a do tego tanie klony z Chin :)
    Łącznie do kupy, nawet lekko logiczny artysta może zrobić z tego instalację artystyczną.

    ... gorzej, gdy Arduino uczą na studiach technicznych.

  • #15
    Poziom 35  

    Plątanina kabelków, termoglut, MOSFETY, ... Masakra... To naprawdę główna elektrody??? Jedyne co to sposób zmiany czasu zimowego/letniego "w miarę". Ustawianie godziny za pomocą IDE Arduino??? Sorry ale mnie to przeraża...

  • #16
    Moderator Mikrokontrolery Projektowanie

    ziomus90210 napisał:
    Plątanina kabelków, termoglut, MOSFETY, ... Masakra...

    Ja widzę ładnie poprowadzone kabelki w dodatku dobrane kolorystycznie w zależności od funkcjonalności.
    By realizować projekt, nie trzeba od razu robić PCB.

    Prototyp z NASA:

    Kolejny zegar... Arduino nano + wyświetlacze LED

    http://www.nasa.gov/jpl/finder-search-and-rescue-technology-helped-save-lives-in-nepal
    http://www.thebetterindia.com/23180/technolog...is-saving-lives-nepal-earthquake-nasa-finder/


    ziomus90210 napisał:
    To naprawdę główna elektrody??? Jedyne co to sposób zmiany czasu zimowego/letniego "w miarę". Ustawianie godziny za pomocą IDE Arduino??? Sorry ale mnie to przeraża...

    Z chęcią zobaczymy kolego jakiś Twój projekt.

  • #17
    Poziom 9  

    ziomus90210 napisał:
    Plątanina kabelków, termoglut, MOSFETY, ... Masakra... To naprawdę główna elektrody??? Jedyne co to sposób zmiany czasu zimowego/letniego "w miarę". Ustawianie godziny za pomocą IDE Arduino??? Sorry ale mnie to przeraża...


    eMeFx napisał:
    Dlaczego do wszystkiego używa się Arduino ?


    A czymże jest arduino? Czy w wersji sprzętowej nie jest to jakaś atmega i parę goldpinów? Równie dobrze można do atmegi w dil-u druty dolutować i to już nie będzie arduino? Gratuluję punktu widzenia.

    Elektroda kiedyś była ciekawym portalem, ale za sprawą takich użytkowników jak ziomus90210 czy Freddy czasami odechciewa się tu zaglądać. Pełno tu cwaniaków którzy wszystko robią najlepiej i którzy zawsze się doczepią do sposobu rozwiązania. Ile jest takich osób jak na przykład ja, które w obawie przed niekonstruktywną krytyką nie publikują swoich rozwiązań, nie dzielą się pisanymi programami, a przecież to na popełnianych błędach się uczymy. I dopiero mając produkt "bardziej fabryczny od fabrycznego" jak napisał horik można zaryzykować publikację, choć i wtedy znajdzie się maruder który powie że dla takiego prostego projektu wystarczyłoby zrobić w pająku i zalać żywicą...

    Apel do tych, którym się wiecznie nic nie podoba: przyjmijcie do wiadomości że jak ktoś zrobił płytkę do montażu przewlekanego to nie krytykujcie że można było w smd, jak ktoś zrobił układ na attiny85 nie mówcie że można było na ne555, a jak ktoś napisał program w bascomie, nie dziwcie się dlaczego nie pisał w eclipsie. Jak macie w taki sposób odbierać ludziom ochotę do nauki i zabawy - zmieńcie nastawienie by pomagać i proponować lepsze, Waszym zdaniem rozwiązania albo się w ogóle nie odzywajcie.

  • #18
    Poziom 43  

    bbbno1 napisał:
    Elektroda kiedyś była ciekawym portalem, ale za sprawą takich użytkowników jak ziomus90210 czy Freddy czasami odechciewa się tu zaglądać.
    Kolego, zejdź ze mnie, bo mi duszno.
    Cytat:
    Pełno tu cwaniaków którzy wszystko robią najlepiej i którzy zawsze się doczepią do sposobu rozwiązania. Ile jest takich osób jak na przykład ja, które w obawie przed niekonstruktywną krytyką nie publikują swoich rozwiązań, nie dzielą się pisanymi programami, a przecież to na popełnianych błędach się uczymy. I dopiero mając produkt "bardziej fabryczny od fabrycznego" jak napisał horik można zaryzykować publikację, choć i wtedy znajdzie się maruder który powie że dla takiego prostego projektu wystarczyłoby zrobić w pająku i zalać żywicą...
    Jak Ci się forum nie podoba,. nie zaglądaj na niego.
    Cytat:

    Apel do tych, którym się wiecznie nic nie podoba: przyjmijcie do wiadomości że jak ktoś zrobił płytkę do montażu przewlekanego to nie krytykujcie że można było w smd, jak ktoś zrobił układ na attiny85 nie mówcie że można było na ne555, a jak ktoś napisał program w bascomie, nie dziwcie się dlaczego nie pisał w eclipsie.
    To, że nic nie publikujesz, nie znaczy, że masz zrobione coś, ale powody są inne - takie jak piszesz.
    Cytat:
    Jak macie w taki sposób odbierać ludziom ochotę do nauki i zabawy - zmieńcie nastawienie by pomagać i proponować lepsze, Waszym zdaniem rozwiązania albo się w ogóle nie odzywajcie.

    Twój post ma zerową wartość merytoryczną i nie wnosi sobą nic do dyskusji na temat funkcjonowania, czy poprawienia prezentowanego urządzenia.
    Jest to po prostu zwykły SPAM !

  • #19
    Poziom 15  

    @Visar78, przyznam się, że nie przeglądałem kodu, ale chyba nie masz zmiany jasności świecenia segmentów zależnie od pory dnia?
    Ile prądu biorą takie segmenty? Wiadomo, że zależy to od prądu jaki jest ustawiony i ilości zaświeconych pojedynczych segmentów. Ciekawi mnie średni pobór prądu przez twój zegarek.

  • #20
    Poziom 15  

    Visar78 napisał:
    Czas z ds3231 jest odczytywany tylko przy uruchamianiu zegara, zaś zapisywany do niego jest podczas zmiany czasu na letni i na zimowy.
    Serio? Czy tylko wg. mnie to jest totalnie bez sensu? Czy dobrze rozumiem że odmierzanie czasu masz zrobione na procku a z RTC odczytujesz tylko po zaniku zasilania? Jeśli tak to po co ten RTC... Załóżmy sytuację że nigdy nie odłączasz go od sieci więc odmierzaniem czasu zajmuje się kompletnie nie skalibrowany i nieskonfigurowany AVR (można użyć asynchronicznego timera pogonionego kwarcem zegarkowym ale tu tak nie jest z tego co widzę) a dość precyzyjny RTC z kompensacją termiczną dosłownie na nic... Raczej rozsądnie byłoby użyć przerwania od zwykłego TIMERA do multipleksowania itp. a INT RTC ustawić na 1Hz i podać na zewnętrzne przerwanie i w nim odczytywać czas... Taka jest idea stosowania RTC.

  • #21
    Poziom 9  

    Co do tego odczytywania czasu, to rzeczywiście jest odczytywany tylko podczas uruchamiania, ale potem DS3231 jest źródłem przerwań na których jest czas odliczany (pisałem o tym, że ustawiam jego wyjście na generowanie przebiegu 4 kHz które służy do odliczania czasu i multipleksowania wyświetlaczy). Połączenie SQW do D2.


    Zegar ten był robiony w pająku, dopiero teraz uczę się projektowania płytek. I dla mojej szybszej orientacji, rzeczywiście zastosowałem różne kolory aby łatwiej się kiedyś w tym zorientować, czarne to masa, czerwone zasilanie +12V do wyświetlaczy i +5V reszta. Żółte to połączenia segmentów wyświetlaczy, niebieskie sterowanie segmentami, zielone sterowanie katodami, brązowe magistrala I2C i sygnał z fotorezystora, biały przerwania z układu RTC.


    Zegar nie zmienia jasności segmentów w zależności od pory dnia, tylko od jasności otoczenia, pobór prądu kształtuje się następująco:
    minimum o godzinie 1:11 (6 segmentów) wynosi w zależności od stopnia świecenia (4 stopnie, od całkowitej ciemności, do mocnego nasłonecznienia): 30mA 65mA 130mA 270mA
    maksimum o godzinie 20:08 (24 segmenty): 50mA 170mA 420mA 930mA


    Jeszcze pytanie do kolegi ziomus, napisałeś międy innymi: "Jedyne co to sposób zmiany czasu zimowego/letniego "w miarę"
    Mógłbyś nakreślić jak to zrobić lepiej? Pytam z czystej ciekawości, chciałbym zaimplementować lepsze rozwiązanie. Przyznam, że teraz zrobiłem to z marszu, metodą "kalendarzową".

  • #22
    Poziom 15  

    Dzięki za tak szczegółowe pomiary prądu.