6 września 2016

Zasilacz USB dla beacon

Czy się to podoba czy nie to internet rzeczy zaczyna nas otaczać. Jednym z jego elementów mają być beacony.

[..] Beacon, bazując na technologii Bluetooth Smart, nieustannie wysyła sygnał radiowy. Sygnał ten może być odczytany tylko przez dedykowaną aplikację mobilną aktywną na telefonie [..] (która) sprawdza unikalny identyfikator beacona i - zgodnie z wbudowaną logiką - dostarcza użytkownikowi odpowiednie treści.

Urządzenie (polskiego producenta) zgodne jest z technologią Bluetooth Low Energy, a wbudowana bateryjka wg zapewnień powinna wystarczyć na 3 lata. Niestety "zdechła" po kilku miesiącach (brak wyłącznika i kontrolki działania). Zastosowano niezbyt popularny model baterii CR2477N, której cena w detalu przekracza 20PLN (podobną CR2477 można kupić za 3PLN - ale niestety konstrukcyjnie nie pasuje). Stąd pomysł budowy zasilacza USB.
Schemat ideowy zasilacza USB dla beacon
Jest to standardowa aplikacja stabilizatora typu LM3940 IMP-3,3, zaaplikowana na małej okrągłej płytce obudowanej tak, aby pasowała w miejsce oryginalnej baterii i była z nią zamienna. Jedyna modyfikacja urządzenia beacon to nacięcie w plastikowej obudowie do wystawienia kabelka z wtyczką USB. Dzięki temu beacona można zasilić z laptopa czy powerbanku...
Zasilacz zamontowany w urządzeniu beacon w miejsce baterii

Na temat konstrukcji tego zasilacza rozpocząłem wątek na forum DIY portalu elektroda.pl
Ale zamiast zasilacza dyskusja dotyczyła raczej beacona...

31 lipca 2016

USB Audio DAC czyli zewnętrzna karta muzyczna

Pierwsze komputery PC miały bardzo ubogie możliwości muzyczne. Ich jedynym urządzeniem dźwiękowym był mały głośniczek zwany PC Speaker, który wydawał z siebie jedynie awaryjne "piknięcia". Z czasem pojawiły się coraz bardziej zaawansowane muzyczne karty rozszerzające jak Creative Sound Blaster czy Gravis Ultrasound. Dziś, kiedy komputer równie często służy do rozrywki, jak i do pracy, nawet nie wyobrażamy sobie, że mógłby nie mieć karty muzycznej na pokładzie. Chipy do obsługi dźwięku są standardowo montowane na płytach głównych komputerów. Niestety bardzo często są to rozwiązania kiepskiej jakości - emitowany dźwięk pozostawia wiele do życzenia (brzmienie jest „płaskie”, mało dynamiczne, zaszumione a nawet słyszalne są trzaski związane pracą dysku). Rozwiązaniem jest podłączenie lepszej zewnętrznej karty muzycznej poprzez port USB. Dzięki temu tor audio, wyprowadzony z komputera, mniej jest narażony na zakłócenia.

Firma Texas Instruments ma w ofercie wiele układów scalonych umożliwiających zbudowanie zewnętrznej karty muzycznej. Jednym z nich jest seria PCM2706/PCM2707 która pozwala na uzyskanie znakomitych efektów przy sporej prostocie układowej. Zaprezentowane w tym artykule urządzenie to zewnętrzna karta muzyczna z interfejsem USB. Właśnie gniazdo USB typu B (drukarkowe) jest na stałe osadzone na płytce. Pozostałe sygnały, w tym wyjście analogowe audio, oraz cyfrowe S/P DIF lub I2S, są wyprowadzone na złączach typu goldpin. W założeniach tak skonstruowana karta służy do wbudowania do dowolnego urządzenia audio (np. fabrycznego lub samodzielnie skonstruowanego wzmacniacza), by podnieść jego funkcjonalność. Przy czym taka karta może pracować nie tylko z klasycznym komputerem PC. Ja wykorzystuję ją podłączoną do serwera Synology, z którym w duecie tworzy stację muzyczną - sterowaną zdalnie ze smartfona. Urządzenie również świetnie spisuje się wraz z minikomputerkiem Raspberry Pi, którego samodzielne możliwości muzyczne są mizerne.

Alternatywnie zamiast złącza audio na płytkę można wlutować gniazdo słuchawkowe mini-jack, dzięki czemu otrzymujemy kompletną kartę muzyczną. Dodatkowo dzięki zaimplementowaniu w układzie PCM2706 interfejsu HID USB (tutaj jako klawiatura multimedialna) może ona służyć także jako prosty pilot do sterowania odtwarzaniem dźwięku. Właśnie takie rozwiązanie jest zaprezentowane na fotografii tytułowej.

Jak to działa?

Sercem urządzenia jest układ scalony US1 - PCM2706 (lub kompatybilny z nim PCM2707). Jest to jeden z następców legendarnych już układów PCM2702 firmy Burr-Brown rozwijanych już po przejęciu tej firmy przez Texas Instruments. W jednej obudowie jest tu zawarty układ interfejsu USB, przetwornik cyfrowo-analogowy Delta-Sigma, bufor wyjściowy/wzmacniacz słuchawkowy audio oraz używane alternatywnie elementy takie jak enkoder S/P DIF i I2S czy interfejs HID. Sygnał cyfrowy z komputera jest przesyłany poprzez interfejs USB w specjalnym trybie - izochronicznym (układ akceptuje dane stereo z rozdzielczością 16 bitów i częstotliwością próbkowania 48, 44,1 lub 32 kHz). Przedstawiony na rysunku 1 schemat urządzenia to niemal standardowa aplikacja z noty katalogowej. Elementy R1-R4 stanowią o prawidłowej współpracy z interfejsem USB komputera podłączonego kablem typu A-B (drukarkowym) do gniazda USB płytki. Układ jest zasilany również z portu USB, a elementy C1-C6 są wykorzystywane w wewnętrznych obwodach zasilania US1. Układ scalony do swej pracy wymaga rezonatora kwarcowego Q - 12 MHz. Kwarc ten wraz z elementami towarzyszącymi R5, C7 i C8 stanowi elementy wewnętrznego generatora. Jego sygnał jest mnożony przez 8 i używany do zarówno do taktowania interfejsu USB jak i przetwornika C/A. Jak już wcześniej wspomniałem układy serii PCM2706/PCM2707 posiadają wbudowany wyjściowy bufor/wzmacniacz audio. Zatem można podłączyć do niego słuchawki o impedancji 32 omów lub większej. Niezbędne są tu jednak kondensatory separujące C9, C10 wraz z rezystorami zapewniającymi polaryzację R8-R11 oraz elementy C11-R6 i C12-R7 stanowiące wyjściowy filtr górnozaporowy obcinający szum kwantyzacji. Wyjście audio obecne jest na złączu AUDIO. Na płytce znalazło się jeszcze miejsce na opcjonalnie stosowanych kilka przycisków oraz stanowiące zespół wyjść cyfrowych złącze CONTROL, które wymaga osobnego omówienia.
Rys.1 Schemat urządzenia
Do poprawnej pracy układu niezbędna jest konfiguracja wejścia FSEL układu US1, dokonywana jumperem na złączu konfiguracyjnym SP_I2S. Standardowo wejście FSEL powinno być spolaryzowane dodatnio (zworka pomiędzy 1-2) - wówczas działają równolegle wyjścia analogowe audio i cyfrowe S/P DIF. W przypadku zwarcia wejścia FSEL układu US1 do masy (zworka pomiędzy 2-3) zamiast cyfrowego wyjścia S/P DIF, uaktywniane jest cyfrowe wyjście I2S którego sygnały są dostępne właśnie na złączu CONTROL. Dzięki temu możliwe jest użycie zewnętrznego przetwornika o jeszcze lepszych parametrach niż ten wbudowany w układ. Aby w trybie I2S dostępne było wyjście audio, należy połączyć wyjście DOUT z wejściem DIN (zewrzeć piny 1 i 10 złącza CONTROL). W zwykłym trybie (FSEL=1) złącze to może być użyte do sterowania odtwarzaczem, przy czym w układzie PCM2706 wystarczy prosta klawiatura, której kilka przycisków może być zamontowanych bezpośrednio na płytce. Układ PCM2707 może być sterowany poprzez interfejs SPI np. z mikroprocesora. Opis złącza CONTROL zawiera rysunek 2.

Numer pinuPCM2706PCM2707
CONTROLukładu US1FSEL=1 (1-2)FSEL=0 (2-3)FSEL=1 (1-2)FSEL=0 (2-3)
14play/pause digital IN   digital IN
25nex I2S LR CK   I2S LR CK
36mute mute SPI MS SPI MS
47volume up volume up SPI MC SPI MC
58volume downvolume downSPI MD SPI MD
619prev I2S BIT CK   I2S BIT CK
718stop I2S SYS CK   I2S SYS CK
820GND GND GND GND
911SSPND SSPND SSPND SSPND
1017S/P DIF I2S SDATA S/P DIFI2S SDATA
rys 2

Montaż i uruchomienie

Płytka karty dźwiękowej została zaprojektowana jako jednostronna, ale elementy znajdować się będą po obu stronach płytki - te do montażu powierzchniowego od spodu, a z wierzchu klasyczne elementy przewlekane. Widok płytki jest przedstawiony na rysunku 3.
Rys.3 Rysunek płytki urządzenia
Montaż należy rozpocząć od wlutowania układu US1. Układy serii PCM2706-07 są łatwiejsze do wlutowania od wcześniejszych modeli PCM2702-05. Mimo że obudowa TQFP32 ma 4 krawędzie wyprowadzeń, to ich raster jest szerszy niż w starszych układach. Lutowanie należy rozpocząć od jednego wyprowadzenia w narożu, a następnie sprawdzić czy wszystkie piny znajdują się na swoich padach. Jeśli nie, to położenie należy skorygować. Następnie należy przylutować wyprowadzenie układu naprzeciwko do uprzednio wlutowanego, po czym można przylutować już wszystkie pozostałe. W następnej kolejności trzeba wlutować resztę elementów montowanych powierzchniowo - rezystory i kondensatory. W trakcie lutowania płytka może leżeć gładko na stole, co na pewno ułatwia zadanie. Dopiero po zakończeniu montażu elementów SMD zabieramy się za części przewlekane, zaczynając od tych najmniejszych. Zatem na początek zworki ZW1-ZW4. Jeśli nie planujemy wykorzystywać złącza CONTROL, ani przycisków to można nie lutować zworek ZW2-ZW4. Zworkę ZW1 można zastąpić koralikiem filtrującym zasilanie. Jeśli nie planujemy używać interfejsu I2S, to można zastąpić złącze SP_I2S zworką pomiędzy pinami 1-2. Kondensatory elektrolityczne C6, C9, C10 można wlutować na leżąco - zwłaszcza jeśli planujemy użycie płaskiej obudowy. W takiej sytuacji należy też zastosować kwarc w niskiej obudowie. Wyjście audio można zrealizować dwojako; albo poprzez wlutowanie potrójnego złącza goldpin w środkowe piny złącza AUDIO, albo stosując gniazdko mini jack stereo.
Fot.4 Zmontowana płytka od spodu
Wlutowanie goldpinu CONTROL czy przycisków również jest opcjonalne. Oczywiście przyciski mają sens jedynie w przypadku użycia układu PCM2706. Przy zastosowaniu przycisków należy pamiętać o wlutowaniu nietypowo montowanej zworki ZW5, którą stosujemy na wyprowadzeniach przycisków NEXT i PLAY. Pomoc w lutowaniu mogą stanowić fotografia 4 oraz rysunki 5 i 6 prezentujące położenie elementów po obu stronach płytek. Ostatnim elementem do zamontowania jest przewlekane gniazdko USB typu B. Na fotografii 7 zaprezentowano dwie zmontowane płytki wzmacniacza w obu konfiguracjach – po prawej jako zewnętrzna karta muzyczna oraz po lewej jako interfejs USB do wbudowania wewnątrz wzmacniacza.
Rys.5 Schemat montażu - strona wierzchnia
Prawidłowo zmontowana karta powinna działać od razu po podłączeniu do komputera (oczywiście należy wcześniej założyć zworkę na złącze SP_I2S we właściwym położeniu - patrz rysunek 2).
Rys.6 Schemat montażu - strona spodnia
Karta poprawnie współpracuje z systemami Windows, Linux i OS X - wykrywana jest jako USB Audio DAC. Niekiedy potrzebne może być ustawienie jej jako głównego urządzenia odtwarzającego dźwięk w ustawieniach systemu lub w programie używanym do odtwarzania muzyki.
Fot.7 Dwie wersje urządzenia
Zastosowany w urządzeniu układ scalony gwarantuje bardzo przyzwoite parametry - dynamikę na poziomie 98 dB i zniekształcenia poniżej 0,025%. Dla obciążenia o większej impedancji - powyżej 10 kiloomów - charakterystycznej dla wejść wzmacniaczy, zniekształcenia będą jeszcze mniejsze - poniżej 0,006%. Przy takim rozwiązaniu można zmniejszyć wartość kondensatorów wyjściowych C9,C10 do wartości kilku-kilkunastu uF. Układ PCM2706 umożliwia podłączenie prostej klawiatury sterującej poprzez interfejs HID głośnością i funkcjami odtwarzacza. Dostępnych jest 7 przycisków - na płytce znalazło się miejsce dla 5 z nich, realizujących jednak najczęściej używane operacje.
Fot.8 Wnętrze obudowy
Na koniec jeszcze o obudowie urządzenia zaprezentowanej na fotografii 8 i fotografii tytułowej. Jest ona wykonana z odpowiednio przyciętego i wygiętego aluminiowego kątownika 15x15x1 który tworzy ścianki boczne. Dół stanowi cienka stalowa blaszka, a górę przezroczyste plexi, pod którym umieszczono wydruk z etykietami przycisków. W tak przygotowanej obudowie, urządzenie jest estetyczne i funkcjonalne, ale oczywiście można zastosować dowolną inną obudowę.


Powyższy artykuł ukazał się w czasopiśmie "Elektronika dla Wszystkich" w numerze 7/2016

Do pobrania z elportalu:

Wykaz elementów

R1,R2 . . . . . . . . . . . . . . . . . . . . 22R smd0805
R3,R4 . . . . . . . . . . . . . . . . . . . . 1k5 smd0805
R5 . . . . . . . . . . . . . . . . . . . . . . 1M smd1206
R6,R7 . . . . . . . . . . . . . . . . . . . . 16R smd0805
R8-R11 . . . . . . . . . . . . . . . . . . . .3k3 smd0805
R12 . . . . . . . . . . . . . . . . . . . . .000R smd1206
C1-C5 . . . . . . . . . . . . . . . . . . . . 1uF smd1206
C6 . . . . . . . . . . . . 10uF 6V elektrolit przewlekany
C7,C8 . . . . . . . . . . . . . . . . . . . .33pF smd0805
C9,C10 . . . . . . . . . .100uF 5V elektrolit przewlekany
C11,C12 . . . . . . . . . . . . . . . . . . 22nF smd0805
US1 . . . . .PCM2706 lub PCM2707 (bez obsługi przycisków)
Q . . . . . . . . . . . . . . . .kwarc 12 MHz przewlekany
USB . . . . . . . . . . . .gniazdo USB typu B przewlekane
Elementy opcjonalne (opis w tekście):
SP_I2S . . . . . . . . . . . . . . . goldpin 1x3 + jumper
- wersja do wbudowania:
AUDIO . . . . . . . . . . . . . . . . .goldpin 1x3 kątowy
CONTROL . . . . . . . . . . . . . . . goldpin 1x10 kątowy
- wersja słuchawkowa:
AUDIO . . . . . . . . . . . . . .gniazdo mini jack stereo
VOL_UP,VOL_DN,PREV,PLAY,NEXT . . . . . . . . . .przyciski
. . . . . . . . . . . . . . . . . . .tact-switch 6x6x12mm

30 kwietnia 2016

C jak człowiek

Felieton pod takim tytułem czytałem w zamierzchłych latach 90. w nieistniejącym już czasopiśmie „PC Kurier”. Autor pławił się w zachwytach nad językiem programowania C. Pozwolę sobie zacytować z pamięci jedno z tych uniesień:

„Litera C symbolizuje głowę ludzką. W miejscu gdzie powinna być twarz litera C ma pustą przestrzeń przez którą chłonie informację...”

Przyznam, że rozbawiły mnie wówczas te peany. Ja szczerze nienawidziłem tego języka. Nie podobały mi się te klamerki, hashe, gwiazdki. Składnia była wybitnie nieprzejrzysta i do tego okropny kompilator, który pokazywał błąd tam gdzie go akurat nie było. W tamtym czasie po krótkiej przygodzie z BASIC’em na komputerki 8-bitowe przesiadłem się na „dorosłe”, 16-bitowe komputery PC. I zacząłem programować w... Pascalu. Pascal to przejrzysta, czytelna składnia, znakomita diagnostyka błędów i błyskawiczna kompilacja. Próbowałem też pisać w C, ale jakoś tak bez przekonania – Pascal w porównaniu do C to dla mnie było niebo a ziemia. Doprawdy nie mogłem wtedy zrozumieć, dlaczego ten toporny C ma tylu zwolenników. W połowie lat 90. popularność zyskiwał system Windows, ale również na niego powstało znakomite środowisko programistyczne z Pascalem – Delphi. Mogłem nadal pisać programy w moim ulubionym języku Pascal (oczywiście zakupiłem licencję na ten program).

Przyszedł XXI wiek a wraz z nim telefony komórkowe, na które można było pisać programy, niestety tylko w Javie. Chcąc nie chcąc, musiałem się oswoić z tym klamerkowym zapisem (składnia Javy bazuje na języku C). Później pojawiły się urządzenia typu Pocket PC i platforma programistyczna Visual eMbedded C++, jeszcze później środowisko .NET Framework i język C#. Zdałem sobie wówczas sprawę, że znajomość składni C i obycie z tym pozornie nieprzejrzystym zapisem bardzo ułatwiła mi migrację do nowego środowiska. Zatem zamiast kurczowo trzymać się jednego poznanego języka, lepiej było poznać i trzymać się standardu, jakim jest C. Bowiem większość tworzonych nowych platform programistycznych bazuje na C-podobnej konwencji (np. ogromnie popularna platforma Arduino).

Co do tematu programowania mikrokontrolerów – kiedyś wydawało mi się to wiedzą tajemną, dostępną jedynie dla garstki specjalistów. Poszukując informacji w Internecie szybko znalazłem artykuły dotyczące procesorów 8051 i AVR oraz kursy BASCOM’a. Niejako na uboczu zdawała się istnieć garstka piszących w C. Jednak drążąc temat dowiedziałem się że istnieją również inne rodziny mikrokontrolerów – np. PIC, oraz inne narzędzia np. mikroPascal. Jednak w naszym kraju praktycznie nie były stosowane. Skąd w Polsce taka popularność BASCOM’a i AVR’ów? Myślę że spora w tym zasługa ogromnie opiniotwórczego miesięcznika EdW. Bo właśnie stąd młodzi adepci elektroniki czerpali wiedzę i umiejętności. I właśnie ta pozorna prostota programowania w BASCOM’ie spowodowała że przybyło dużo projektów z procesorami – nawet do przysłowiowego mrugania diodą zamiast dwu tranzystorów używane są ich tysiące...

Na początku swojej mikroprocesorowej drogi, po pobieżnym zaznajomieniu się z możliwościami środowiska i łatwością implementacji w BASCOM czy microPascal (Pascala nadal darzę sentymentem), zdecydowałem się jednak na... język C. W kodzie C, jak na dłoni, widziałem bezpośrednie przełożenie kolejnych instrukcji na konkretne operacje sprzętowe. Bardzo przydatna była również możliwość zastosowania pozornie karkołomnych, jednak znacznie upraszczających kod wynikowy, konstrukcji dostępnych w tym języku. Pisząc program na mikrokontroler musiałem się liczyć z jego bardzo ograniczonymi zasobami, ale właśnie w C miałem duże możliwości optymalizowania ich zużycia.

Niech się nikomu jednak nie wydaje, że składni języka C można się nauczyć po przeczytaniu czterech artykułów. Zdecydowanie polecam sprawić sobie jakąś książkę – ich oferta jest dość bogata. Co ciekawe, istnieją też bezpłatne podręczniki w języku polskim – wystarczy wpisać w przeglądarkę internetową frazę: „programowanie w języku C książka bezpłatna”.

Już na pierwszym ekranie wśród wyników pojawiają się 3 książki w formacie .pdf do pobrania – legalnie. Bardzo ważne są też ćwiczenia praktyczne. Do tego potrzebne jest środowisko lub sam kompilator. Obecnie wiele narzędzi można swobodnie używać bez opłat. Polecany jest pakiet Microsoft Visual C++. Istnieje też, przeportowany z systemu Linux, kompilator GCC wraz z środowiskiem Code::Blocks oraz leciwy, ale za to bardzo lekki pakiet Borland C++. Nawet gdy zamierza się programować tylko mikrokontrolery, warto mieć pod ręką „duży” kompilator C – chociażby po to, aby sprawdzić swoje wyrafinowane konstrukcje składniowe, czy będą działać zgodnie z zamierzeniami. Możliwości debugowania na mikrokontrolerze są bowiem dość ograniczone.

Do programowania mikrokontrolerów na platformie AVR przygotowano oczywiście komercyjne środowiska developerskie z C, ale o prawdziwej popularności tego języka zadecydowało istnienie znakomitego kompilatora AVR-GCC. W odróżnieniu od pakietów BASCOM czy mikroPascal kompilator ten jest dostępny całkowicie bezpłatnie, bez żadnych ograniczeń, dla wszystkich. Do tego nie ma on wygórowanych wymagań sprzętowych ani platformowych. Można pisać kod w notatniku i kompilować z linii poleceń. Można też zainstalować i skonfigurować środowisko zintegrowane jak Atmel Studio lub Eclipse. Zatem bez ponoszenia dużych kosztów można się zestandaryzować do C.

Naprawdę warto!


Powyższy artykuł ukazał się w czasopiśmie "Elektronika dla Wszystkich" w numerze 4/2016

1 kwietnia 2016

Armata wodno-rakietowa

To nieco kuriozalne "urządzenie" stylizowane na (ostatnio bardzo popularną) broń czarnoprochową, ale nie ma z nią nic wspólnego. Jest to bowiem armata ładowana odtylcowo z "ładunkiem zespolonym", w którym czynnikiem napędowym jest woda wyrzucana pod ciśnieniem powietrza z wnętrza pocisku ;-)
Armata - widok od strony ładowania
Armata powstała naprędce z tego co znalazłem w garażu, aby zaprezentować ją 1 kwietnia - w jedynym dniu w roku kiedy takie dziwactwa uchodzą na sucho (tzn. akurat armata jest całkiem mokra). Szczegóły budowy widoczne są na fotografiach a działanie na dołączonym filmie :-)
Korek do ładowania powietrza do pocisku armaty
"Projekt" ten został zainspirowany artykułem: Rakieta wodna

Jak to działa?

Aby się zbytnio nie mądrzyć zacytuję opis z w/w strony:

Prawo Pascala mówi, że jeżeli na płyn zamknięty w zbiorniku wywierane jest ciśnienie zewnętrzne, to, nie uwzględniając ciśnienia hydrostatycznego, ciśnienie wewnątrz zbiornika jest wszędzie jednakowe i równe ciśnieniu zewnętrznemu. Tak więc w całej objętości butelki, zarówno w obrębie wody, jak i powietrza, ciśnienie jest jednakowe. Sprężone powietrze dąży do obniżenia swojego ciśnienia, a co za tym idzie, do powiększenia swojej objętości. Dlatego wypycha ono z butelki korek, a następnie znajdującą się wewnątrz wodę. Woda posiada stosunkowo dużą gęstość, co wiąże się z podobną bezwładnością. W czasie wyrzucania wody do tyłu, powstaje więc siła ciągu o dużej wartości skierowana do przodu, co pociąga za sobą ruch butelki.
Armata tuż po wystrzale

Co trzeba poprawić:

  • dorobić zamek, bo butelka ma tendencję do wysuwania się z lufy podczas pompowania,
  • zastąpić pompkę kompresorem (w zasadzie do tego potrzebuję tylko kawałek wężyka i dwa zaciski).
Kompresor na pewno poprawi szybkostrzelność co może mieć kolosalne znaczenie na wypadek wymuszonej obrony przed "nachodźcami".


Zatem broń się kto może :-]


Na temat armaty rozpocząłem wątek na forum DIY portalu elektroda.pl