Autor zwykł korzystać naprzemiennie z głośników i słuchawek. Częściej używał jednak tych drugich, ale kiedy chciał uruchomić głośniki, potrzeba było odłączyć słuchawki i przyłączyć głośniki do wyjścia karty dźwiękowej. Autor chciał ten kłopot rozwikłać już od dłuższego czasu, ale żadne rozwiązanie nie przychodziło mu do głowy, dopóki nie zobaczył projektu przełącznika audio w serwisie Hackaday.
Zdecydował wtedy zbudować własny, prosty multiplekser audio.
Cechy urządzenia:
1 wejście, 2 wyjścia (lub na odwrót)
Zbudowany w oparciu o układ FT232R (dostępne są sterowniki dla systemów Windows, MacOS i Linux)
Prosty do obsługi z wykorzystaniem dowolnego programu terminala
Pobiera zaledwie około 15 mA prądu
Odizolowana masa analogowa
Typowe złącza audio 3,5 mm
Więc, po prostu, jest to pobierający niewiele prądu, sterowany przez USB przekaźnik służący przełączaniu sygnałów audio.
Po podłączeniu urządzenia do komputera zostaje ono wykryte przez system operacyjny jako wirtualny port szeregowy (COMx w systemach Windows, /dev/ttyUSBx w systemach Linux).
Z urządzeniem można się komunikować za pomocą dowolnego programu terminala i kontrolować jego pracę za pomocą trzech jednoznakowych komend.
Autor do sterowania multiplekserem wykorzystuje program Terminal v1.9b.
Obsługiwane są następujące komendy:
a - aktywuj kanał A
b - aktywuj kanał B
t - przełącz kanały
Po realizacji każdej komendy urządzenie przekazuje komunikat, w którym wskazany jest aktualnie aktywny kanał.
Na przykład po wysłaniu komendy "b" urządzenie odpowie komendą "CH B", potwierdzając aktywację kanału B.
Jeśli wysłana zostanie jakakolwiek inna, niż wymienione, komenda, urządzenie odpowie komunikatem "Unknown".
Projekt:
Jak widać, masa analogowa została całkowicie odizolowana od masy cyfrowej. Autor dodatkowo wykorzystał górną warstwę miedzi na płytce drukowanej jako ekran dla obu mas. Pomaga to ograniczyć wpływ szumu wyłapywanego w części audio, a pochodzącego od części cyfrowej układu i innych źródeł pola elektromagnetycznego.
Schemat blokowy urządzenia jest bardzo prosty:
port USB<—>FT232R<—>ATtiny13A<—>przekaźnik
Autor wyjaśnił tylko niektóre aspekty związane z projektem urządzenia.
Przekaźnik nie jest podłączony bezpośrednio do wyprowadzenia mikrokontrolera - dołączone są elementy R3 i C2. Ma to na celu obniżenie poboru prądu przez przekaźnik z 28 mA do około 12 mA. Autor opisał ten sposób w innym artykule: Using Relays (Tips & Tricks). Może to być pomocne w przypadku urządzeń przyłączanych do "zatłoczonego" huba USB, gdzie różnica w poborze prądu wynosząca nawet 15 mA ma duże znaczenie. Nie jest oczywiście konieczne każdorazowe stosowanie takiej metody.
Wyprowadzenie PB3 procesora przyłączone jest do pinu CBUS3 układu FT232R przez rezystor podciągający 10 kΩ, co pozwala uwzględnić zastosowanie opcji oszczędzania energii lub może być wykorzystane do dostarczania sygnału taktującego do procesora ATTiny13A. Użytkownik może zmieniać funkcje wyprowadzeń CBUS układu FT232R, stosując program FT_Prog dostępny na stronie producenta układu.
Koralik ferrytowy na szynie zasilania z portu USB ma na celu redukcję zakłóceń, których źródłem może być układ FT232R. Więcej na ten temat można przeczytać w karcie katalogowej układu.
Na początku autor chciał wykonać urządzenie na płytce jednostronnej, ale rozważał też użycie dwustronnego laminatu. W zaprojektowanym urządzeniu złącze USB znajduje się od spodu płytki, natomiast złącza audio montowane są przewlekanie, od góry. Oczywiście sposób montażu można dowolnie zmieniać.
Jeśli identyczny, jak użyty w urządzeniu przekaźnik nie jest dostępny, można wykorzystać jakikolwiek inny przekaźnik DPDT na 5 VDC, który poborem prądu nie będzie przewyższał wydajności prądowej portów mikrokontrolera.
Dla innego przekaźnika konieczna może być zmiana wartości elementów R3 i C2 (jeśli jednak pobór prądu nie jest czynnikiem kluczowym, w ich miejsce można zastosować zworę).
Wybór procesora i oprogramowanie:
Do tak prostego zadania autor postanowił wyszukać tani mikrokontroler (najlepiej od Atmela lub Microchipa), z niewielką liczbą wyprowadzeń i sprzętowym UARTem. Najtańszym procesorem okazał się być PIC16F688T od Microchipa.
Jednak 14 wyprowadzeń, jakie posiadał, było zbędne w tak prostym urządzeniu, więc autor wykorzystał procesor ATTiny13A. UART w przypadku tego procesora zrealizowano programowo. Autor posiłkował się notą aplikacyjną Atmela AVR304 pt. “Half Duplex Interrupt Driven Software UART”. Wykorzystany został w tym celu 8-bitowy timer i jedno przerwanie zewnętrzne, co jest nawet dużą przesadą w tak prostym urządzeniu. Można zaimplementować UART bez wykorzystania przerwań i timerów, sposób ten pochłonie też niewiele pamięci.
Przed zaprogramowaniem procesora załączonym kodem należy ustawić fusebity tak, by taktowanie wynosiło 4,8 MHz.
Problemy:
Jedyny kłopot w pracy urządzenia sprawiał wewnętrzny oscylator RC procesora ATTiny13A. Transmisja UART jest bardzo wrażliwa na zmiany częstotliwości taktowania. Wewnętrzny oscylator procesora jest kalibrowany dla zasilania 3V i temperatury otoczenia 25°C, ale w opisywanym urządzeniu zasilany jest on wyższym napięciem i może nawet nie uruchamiać się poprawnie po zaprogramowaniu. Dlatego możliwa jest konieczność skorygowania liczby cykli timera w kodzie źródłowym (opisane jest to w komentarzach do kodu).
Problem można też wyeliminować, stosując układ FT232R jako źródło sygnału zegarowego, mając nadzieję, że wewnętrzny oscylator w kości FT232R jest dokładniejszy, niż ten w procesorze. Można też do układu FT232R podłączyć zewnętrzny kwarc - byłoby to idealne rozwiązanie. Autor planuje, że kiedyś porówna stabilność oscylatorów w układach FT232R i ATTiny13A. Jeśli komuś udało się dokonać takiego porównania, autor będzie wdzięczny za przedstawienie wyników.
Na stronie źródłowej dostępny jest projekt urządzenia (w formacie Eagle’a) i kod źródłowy.
Fajne? Ranking DIY
