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

Kolejny zegarek do Raspberry Pi

Sareph 22 Lip 2019 12:09 2919 3
  • Kolejny zegarek do Raspberry Pi

    Zegar, wyświetlacz współpracujący z r-pi. Druga iteracja tego pomysłu, tym razem zrealizowana porządnie, bo raz, że na porządnym PCB a dwa, że bez pomysłu w stylu i2c po 1,5m kablu. A, że lubię segmentowe wyświetlacze LED, to tym razem poza standardowym zestawem 7-segmentowych pokazujących godzinę, mamy także 12 16-segmentowych do rożnych innych rzeczy, w tym wskaźnika wysterowania poziomów audio. Całość "systemu" składa się z 3 elementów - r-pi 2B, HAT'a sterującego głośnikami i podającego zasilanie i zegara.
    Duże wyświetlacze mają, 1,8", sekundnik 1,5", drugi wyświetlacz 0,8". Komunikacja po RS485 w trybie multi-master, w razie potrzeby można dodać więcej urządzeń. Na r-pi audio jest obsługiwane przez mpd, poziomy wysterowania pobierana z pivumeter'a https://github.com/pimoroni/pivumeter.

    Kolejny zegarek do Raspberry Pi

    Źródło napięć 3v3 dla systemu i 5V dla drugiego wyświetlacza +max7219. Niby by się dało zasilać wszystkie wyświetlacze z wejściowych 12V, ale wejściowe 12V może się zmieniać w zakresie 10-14V, a nie chciałem realizować sterowania stałym prądem dla wyświetlacza numer dwa. Nie da się go tez zasilać z 3v3, bo spadek napicia na białych diodach może wg noty katalogowej wynosić do 4V. A, że pod ręką było jeszcze kilka INA3221 pozostałych z projektu switcha - jest tez INA3221 monitorujący napięcia i obciążenie poszczególnych szyn zasilania.

    Kolejny zegarek do Raspberry Pi

    Główny wyświetlacz używa dekodera/multipleksera z max7219, od strony anod główny wyświetlacz podłaczony jest bezpośrednio do zasilania, no, przez TD62783. SPI między MCU a Maximem ma bufor do zmiany poziomów logicznych HC125D. Od strony anod możliwe są dwie kombinacje:

    Kolejny zegarek do Raspberry Pi

    albo BCR420, który w sumie nigdy nie został przetestowany albo driver stało prądowy na wzmacniaczu operacyjnym i tranzystorze (Q5, IC19) sterowany za pomocą DAC'a... znaczy miał być sterowany za pomocą DAC'a, nie jest bo STM32F030 nie ma DACa. Ale jego rolę pełni takie coś:

    Kolejny zegarek do Raspberry Pi

    Niestety okazało się, że sposób na wyłączenie drivera poprzez wymuszenie stanu niskiego na wejściu nieodwracającym wzmacniacza jest, powiedzmy, nie do końca skuteczny. Przy tej formie sterowania sygnałem wyświetlacz cierpiał na straszliwy ghosting. Rozwiązaniem okazało się przelutowanie tranzystora Q6 aby odcinał masę przed Q5. Może nie najpiękniejsze, ale działa:

    Kolejny zegarek do Raspberry Pi

    Niestety główny i drugi wyświetlacz nie są identyczne, wszystkie miały być białe. 16 segmentowe są idealnie białe, ale niestety główny (2,3") przypomina bardziej niebieski. Wg noty katalogowej w zasadzie wszystko się zgadza, bo ten biały ma mieć temperaturę około 10kK. Niestety okazało się to po ich zamontowaniu (moja wina, ze nie doczytałem), jakbym wiedział wcześniej wybrałbym zapewne sporo tańsze wersje bursztynowe.

    Kolejny zegarek do Raspberry Pi

    Drugi wyświetlacz jest prościej zrealizowany, nie ma sterowania stałym prądem tylko rezystory podłączone między anodami a tranzystorami kluczującymi. Rolę translatora napiec i sterownika bramek tranzystorów pełni HCT514. Dwa układy sterują razem 16 segmentami, zostaje jeszcze problem kropek, żeby nie dawać trzeciego HC, kropki mają sterowanie zrealizowane na Q34 i Q33.

    Początkowo ten wyświetlacz miał działać na 2 max6954, ale okazało się, że one niestety nie dają pełnej kontroli nad wszystkimi segmentami w razie jakbym potrzebował robić coś bardziej zaawansowanego niż wyświetlać znaki. Wszystkie segmenty drugiego wyświetlacz podłączone są do portu B, katody do portu C. W połączeniu z timerem i DMA pozwala to na realizację obsługi całego wyświetlacza, wraz z obsługą ściemniania w sprzęcie. Wyświetlacz odświeżany jest z częstotliwością około 1,4kHz, co przy 12 wyświetlaczach daje około 122Hz na wyświetlacz.

    Kod: C
    Zaloguj się, aby zobaczyć kod


    Trzeci zestaw świecidełek, linijka ledowa owinięta wokół enkodera, i 6 niezależnych ledów nad przyciskami sterowane są za pomocą TLC5947, 24 wejściowego stało prądowego drivera LED sterowane przez SPI. Pierwsze dwie diody są dwukolorowe, reszta jednokolorowa. Przy okazji okazało się (ponownie), że na świecie chyba nie ma dwukolorowych diod, które mają jakkolwiek sensowną diodę czerwoną. Z jakiegoś powodu w tego typu dniach (obojętnie czy z TME, ali czy alledrogo) czerwona jest zawsze strasznie słaba. Zabawne, że przy wspólnej katodzie jest znacznie lepiej. Niestety diod ze wspólną katoda nie dało się zastosować, z uwagi na zastosowany sterownik.

    Kolejny zegarek do Raspberry Pi

    Do tego 6 przycisków i enkoder. Całość podłączona do MCP23017, ekspandera i2c, ponieważ w MCU zabrakło odpowiedniej liczby pinów.

    Kolejny zegarek do Raspberry Pi

    Całość działa na STM32F030R8 i komunikuje się z r-pi po porcie szeregowym opakowanym w RS485, z prędkością nieco poniżej jednego megabita. Do tego EEPROM (IC14) na ustawienia, i DS3231 (IC9) stanowiący źródło precyzyjnego zegara dla wbudowanego w MCU RTC. Zegar wyposażony jest także w uniwersalny odbiornik podczerwieni, działający z modulacją do 20 do 60kHz - TSMP58000. Niestety TSMP58000 nie posiada demodulatora, ale w sumie nie okazało się to jakimś zbytnim problemem. Zegar dekoduje protokoły Ir Sharp, RC5 i NEC, komendy wysłane są do malinki, tam demon decyduje co z nimi zrobić. LDR1 - fotorezystor do pomiaru natężenia oświetlenia, aby dostosować jasność wyświetlaczy - nienawidzę stanowczo za mocno świecących po nocach ledów.

    Główny wyświetlacz pokazuje aktualnie tylko godzinę. Drugi, o ile nic ciekawszego się nie dzieje pokazuje nazwę aktualnego dnia tygodnia. jeśli dzieje się coś ciekawszego to pokazuje nazwę aktualnie odtwarzanego utworu, czy poziomy wysterowania. Chyba, ze zmieniamy jakieś ustawienia. Przyciski aktualnie pozwalają na szybkie włączenie/wyłączenie głośników, włączenie/wyłączenie budzika i zmianę biblioteki utworów radio/lokalna biblioteka. poziom głośności (i basu) regulowany jest sprzętowo na poziomie głośników, wspomniany HAT https://www.elektroda.pl/rtvforum/topic3569760.html ma do tego odpowiedni sprzęt i zastępuje oryginalnego kablowego pilota.

    Tył obudowy wydrukowany na drukarce 3D a zaprojektowany w blenderze, przód wycięty z 3mm tafli brązowej pleksi. Duży otwór pod gałkę enkodera (40mm) wywiercony za pomocą choinkowego wiertła (niestety brakuje jeszcze lasera w warsztacie):

    Kolejny zegarek do Raspberry PiKolejny zegarek do Raspberry Pi

    Pilot upolowany na AliExpress, podobno od jakiegoś zestawu Android TV. Enkoder domyślnie steruje wzmocnieniem podłączonych głośników, po naciśnięciu go da się także zmienić kilka opcji w tym poziom wzmocnienia subwoofera. Linijka ledowa wokół enkodera pokazuje aktualnie ustawiona głośność.

    Kolejny zegarek do Raspberry PiKolejny zegarek do Raspberry PiKolejny zegarek do Raspberry PiKolejny zegarek do Raspberry PiKolejny zegarek do Raspberry Pi Kolejny zegarek do Raspberry Pi Kolejny zegarek do Raspberry Pi.

    A jakby kogoś interesowało jak to wszystko aktualnie miga, to poniżej film:


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Sareph
    Poziom 21  
    Offline 
    Sareph napisał 408 postów o ocenie 185, pomógł 38 razy. Jest z nami od 2004 roku.
  • PCBway
  • #2
    Arturavs
    Moderator - Na Wesoło HydePark
    Ładny kawał roboty. Pierwsze co się rzuca w oczy, to brak dwu-kropek w zegarze. Psuje to nieco czytelność.
  • PCBway
  • #3
    Sareph
    Poziom 21  
    Tez miałem takie wrażenie przy poprzedniej wersji, która też nie miała dwukropków. Chyba się po prostu przyzwyczaiłem i jak dla mnie to one są zbędne. Ale gdzieś po drodze zrobiłem podobny zegar dla przyjaciółki, 4 wyświetlacze zamiast 6, ale z (migającymi) kropkami, i natychmiast pojawiło się marudzenie, że to tylko przeszkadza i te kropki to najlepiej usunąć, a jak się nie ta to niech chociaż świecą. No to przestały świecić. :)
  • #4
    Trzyzet
    Poziom 20  
    arturavs napisał:
    Pierwsze co się rzuca w oczy, to brak dwu-kropek w zegarze.


    Ja się dziwię że nikt na to nie wpadł. Pierwszą cyfrę minutową wystarczy odwrócić do góry nogami i mamy dwukropek. pod lekkim skosem ale dalej dwukropek! :)

    A sam projekt ekstra. Sam planuję zrobić coś podobnego ale w zatokę 5.25" z komunikacją z PCtem.