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

(MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI

Urgon 02 Gru 2012 17:24 13653 12
  • (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI
    AVE...

    Chciałbym przedstawić drobny projekcik, który zrealizowałem ostatnio z konieczności. Jest to uniwersalny konwerter USB-MIDI. Firmware pochodzi ze strony uCapps.de, gdzie go stworzono do współpracy z pierwszymi wersjami MIDIBoxa. Moduł oparty jest na mikrokontrolerze PIC18F4550, i pozwala dodatkowo na podłączenie do czterech dodatkowych konwerterów MIDI-I2C, również pochodzących z projektu MIDIBox. Zapytacie się pewnie, co takiego zrobiłem poza polutowaniem gotowca. Otóż zaprojektowałem płytkę drukowaną, albowiem twórca projektu nigdy nie przygotował dedykowanej płytki.

    Motywacja i założenia
    Do wykonania tego modułu zmotywowała mnie tragiczna jakość tanich konwerterów. Opóźnienia w typowych aplikacjach osiągały pół sekundy, a nawet więcej, niezależnie od konfiguracji. Chciałem też mieć możliwość rozbudowy o dodatkowe wyjścia. Ponadto miałem kilka sztuk PIC18F4550 luzem.

    Chciałem zaprojektować jak najmniejszą płytkę, z możliwością podłączenia czterech modułów MIDI-I2C w razie potrzeby. Płytka miała być jednostronna, koniecznie w montażu przewlekanym, by każdy chętny mógł ją wykonać we własnym zakresie.

    PCB
    (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI
    Jak widać, płytka jest dość mała, tylko 62x68mm. Dodałem sporo na pierwszy rzut oka zbędnych złączy. Na przykład złącze J5 do podłączenia zewnętrznego zasilacza 5V, i zwora J9 do odłączenia zasilania przez port USB. Ponadto wszystkie diody LED mają własne złącza umożliwiające podłączenie ich na przewodach, jeśli ktoś taką ma fantazję. Oczywiście możnaby wlutować przewody w miejsce diod, ale może ktoś chce mieć podwójny zestaw do sygnalizacji pracy. Złącza J1-J3 służą do przyłączenia maksymalnie czterech modułów MIDI-I2C. Nieużywane piny mikrokontrolera muszą być podpięte do Vdd, stąd takie rozmieszczenie i zwory na płytce. Złącze J7 umożliwia połączenie modułu do płytki głównej MIDIBoxa w wersji na PICu, w takim przypadku nie należy montować transoptora ani w tym module, ni w MIDIBoxie.
    Wzór PCB do termotransferu w rozdzielczości 600DPI:
    (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI

    Prototyp
    (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI (MIDIBox Hardware Platform) Uniwersalny konwerter USB-MIDI

    Płytka, którą wykonałem, różni się nieznacznie od zamieszczonych rysunków, zwłaszcza w okolicy transoptora. To przez moje gapiostwo, źle zaprojektowałem oryginał i go wytrawiłem, a dopiero potem dostrzegłem błędy. Przez to musiałem dolutować dwa przewody, przeciąć dwie ścieżki i malutką zworę ze srebrzanki. Przetestowałem też cynowanie za pomocą chińskiej pasty lutowniczej. Wynik mniej, niż powalający. W jednych miejscach było za mało cyny, w innych za dużo, do tego przegrzanie w okolicach napisów przy poprawianiu cynowania je zniszczyło. Wszystkie otwory zostały wykonane wiertłem 0,6mm, a następnie część z nich rozwierciłem wiertłem 1mm, a otwory montażowe wiertłem do metalu 2mm.
    W trakcie uruchamiania nie obeszło się bez drobnych problemów. Układ nie zadziałał "z kopa" przez moje gapiostwo(znowu). Najpierw nie zaprogramowałem poprawnie mikrokontrolera, po poprawce układ załączał się na chwilę, zależnie od mojego chwytu płytki. Myśląc, iż to wyrobiona/uszkodzona podstawka, wymieniłem ją na podstawkę precyzyjną zrobioną z czterech kawałków, dlatego też trzy piny wiszą w powietrzu. Nie pomogło. Dopiero dokładna inspekcja pozwoliła mi odkryć zimny lut przy przycisku Reset, przez co napięcie nie dochodziło do pinu MCRL, co sprawiało, iż układ był stale w stanie resetu.

    Uwagi końcowe
    Bootloader stworzony przez Microchip nie współpracuje z Windows7 ze względu na przestarzałe sterowniki, których nie da się zainstalować. Dlatego u mnie wgrałem od razu właściwy firmware.
    Nie byłem też w stanie popełnić własnej kompilacji firmware, ze względu na fakt używania Windows7, gdy zestaw narzędzi użytych do stworzenia tego firmware został zrodzony przez demonicznych użytkowników Linuxa. Co ciekawe, kolega-linuxowiec też miał problemy z kompilacją.
    Części kosztowały mnie niecałe 18 złotych, mikrokontroler kosztowałby teoretycznie 30 złotych, ale miałem jeden z sampli Microchip. Układ zastępuje z powodzeniem najtańsze przejściówki kosztujące na alledrogo po 50 złotych, które mają problemy z poprawną pracą. Przy dołączeniu modułów MIDI-I2C oraz zmianie firmware układ zastąpić może konwertery kosztujące kilkaset złotych.
    Zamierzam w przyszłości przygotować projekt drugiej płytki, zawierającej cztery moduły MIDI-I2C.

    W archiwum załączonym poniżej znajduje się firmware bez obsługi modułów MIDI-I2C, z obsługą tych modułów, oraz niedostępny na stronach Microchip bootloader. Ponadto w paczce jest jeszcze zestaw narzędzi do kompilacji kodu, dwa schematy ideowe w PDF oraz program MIDI-Ox współpracujący ze wszelkimi urządzeniami MIDI.

    EDIT
    Rozwiązałem problem bootloadera dla Win7, zestaw narzędzi Microchip w drugiej paczce poniżej. Poza sterownikiem i programem do obsługi bootloadera znajdują się tam przykłady wykorzystania interfejsu USB oraz nowsza wersja kodu bootloadera. W sumie każdemu powinien wystarczyć sam sterownik...

    Linki
    Źródło projektu
    Moduł MIDI-I2C

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Urgon
    Poziom 36  
    Offline 
    Specjalizuje się w: projektowanie pcb, tłumaczenie, mikrokontrolery PIC
    Urgon napisał 4540 postów o ocenie 454, pomógł 166 razy. Mieszka w mieście Garwolin. Jest z nami od 2008 roku.
  • IGE-XAO
  • #2
    korrus666
    Poziom 40  
    Płytka ładnie zaprojektowana ale cynowanie coś kiepsko wyszło. Mój sposób na cynowanie to posmarowanie całości pastą lutowniczą a potem lutownica kolbowa z grotem o sporej powierzchni. Temperaturę ustawią dosyć wysoką i rozprowadzam cynę rozgrzanym grotem płasko przyłożonym do płytki. Wychodzi dość równa i cienka powierzchnia. Cyny daję jak najmniej.

    A i takie pytanie. Do czego to w ogóle służy bo się na tym zupełnie nie znam?
  • #3
    Urgon
    Poziom 36  
    AVE...

    Układ służy do łączenia instrumentu z interfejsem MIDI, lub urządzenia sterującego, syntezatora lub sekwencera z takim interfejsem do komputera. Jest to przydatne, i często niezbędne dla każdego zainteresowanego pracą z dźwiękiem i muzyką...

    Ja do cynowania użyłem pasty i kolby hot-air, potem poprawiając grotem. Niestety, cyny było stanowczo za dużo. Następnym razem zrobię to chemicznie...
  • IGE-XAO
  • #4
    gRRubasek
    Poziom 14  
    Wystarczy płytkę posmarować pastą do lutowania rur miedzianych, podgrzać opalarką 400C-500C do wyschnięcia i zmyć pod bieżącą woda. Wychodzi jak z fabryki.
  • #5
    Plumpi
    Specjalista - systemy grzewcze
    Czy już zdążyłeś przetestować?

    Wiele kupnych konweterów USB-MIDI, po prostu nie przesyła niektórych komunikatów.
    Ciekaw jestem czy w tym przypadku wszystko "śmiga"?
    Jakie stwerowniki obsługują ten konwerter?
  • #7
    voldek
    Poziom 11  
    można też użyć miedzianej plecionki którą po podgrzaniu pięknie ściąga cały nadmiar cyny. Co do projektu to naprawdę świetna sprawa! Sam swego czasu robiłem konwerter MIDI - UART + interpreter MIDI dla procesora sygnałowego. Jaką wersję MIDI Twój konwerter rozpoznaje? W sensie ma jakąś kontrolę poleceń czy po prostu przerzuca wszystko jak leci na USB? W jakim programie wykonałeś płytkę? Myślałeś o wykonaniu płytki w wersji SMT? Rozumiem, że wersja THT po to by każdy mógł taką płytkę wykonać, ale sądzę, że dwukrotnie zmniejszyłoby to wtedy rozmiar płytki...fakt, że nie ma co z tym przesadzać bo i tak same gniazda do MIDI są ogromne no ale...;)
  • #8
    Urgon
    Poziom 36  
    AVE...

    @Plumpi...
    Przetestować możliwości nie miałem gdyż nie mam kabla z wtykami DIN-5. Ale przetestuję przed końcem tego tygodnia, porównując z tanią przelotką, i to postaram się nagrać i wrzucić na YT...

    @Lukashb...
    Oszczędność wytrawiacza była głównym celem takiego projektu płytki. Niepodłączone do niczego pola nie są wcale takie duże, i raczej nie w newralgicznych miejscach. Układ nawet bez obudowy działa stabilnie. Monitor komunikatów MIDI nie odbierał nic losowego...

    @Voldek...
    Płytka wykonana w programie DipTrace. Jest wygodniejszy i normalniejszy od Eagle, ale bibliotekę ma uboższą, stąd brak gniazd DIN-5 na PCB. Mogę zaprojektować wersję częściowo w SMT, ale nie wiem, czy jest sens. Na pewno moduły MIDI-I2C będą w takiej wersji ze względu na to, iż mam potrzebne do nich mikrokontrolery w obudowach SO...
    Firmware jest oparty o deskryptory HID MIDI, więc powinien współpracować z całym standardem MIDI i z każdymi sterownikami, nawet tymi od Microsoftu, które nie są najlepsze. Jego twórca chciał też móc przerzucać duże pliki SysEx, dla konfigurowania MIDIBoxa. Tu jeszcze drobna uwaga: mikrokontroler musi być w wersji Rev. 5 lub wyższej, albowiem w starszych jest silikonowy bug w module EUSART...
  • #9
    lukashb
    Poziom 39  
    Wiem wiem, tak się czepiam. Życie (krótkie) tego nauczyło w pewnym projekcie, gdzie było wszystko tip-top, ale puściłem sobie maskę :D Bo ładny wzorek, bo profesjonalnie. O masowaniu całości tego potem nie wspominam :D. Poza tym, dotyczy to AVR i pomiaru częstotliwości.
  • #11
    Urgon
    Poziom 36  
    AVE...

    Latencja nie występuje, na to wygląda. Przy zwarciu sygnału wejściowego z wyjściowym (piny 2 i 3 portu J7) i przy wykorzystaniu sprzężenia zwrotnego wejścia z wyjściem w programie MIDI-Ox układ przesyłe te same dane bez opóźnień aż do przepełnienia buforów. Z kablem MIDI jakoś to nie działa - podejrzewam problem z połączeniem...

    Edit:
    Układ działa, opóźnienia zerowe. Zatem projekt mogę polecić każdemu...
  • #12
    Dr.Diodac
    Poziom 9  
    MIDI transmisja w sobie ma ok. 10ms latencji. Generalnie do 20ms jest do przyjęcia. Kiedyś robiłem konwerter MIDI do 6strunowej basówki, przeliczanie częstotliwości i transmisja - struna B0 latencja ok. 34ms i można jeszcze grać normalnie. Najbardziej bolesna jest latencja karty dźwiękowej zwłaszcza tych standardowych tańszych typów.

    Projekt naprawdę fajny, można też dobry konwerter MIDI>USB zbudować na FT232RL i użyć sterowników Rolanda, Korga lub Yamahy - chodzi b. dobrze. Teraz czekam na MFM0860 i CH345T sprawdzę te IC bo mi się zdaje że powinny chodzić dobrze a w tanich konwerterach to myślę że nie IC robi problem a oszczędność na elementach potrzebnych do poprawnej pracy. Ja mam 1 taki no-name i o dziwo dobrze chodzi. Za to kilka robiło problem, te kilka miało krople zamiast scalaka :) więc pewnie tu problem w wadliwym wykonaniu..
    Napisze co i jak po testach.
    Poza tym jeśli nie musimy wysyłać plików systemowych inne rozwiązania MIDI>USB są jak najbardziej na miejscu. Wszystko zależy co komu do czego jest potrzebne.
  • #13
    Urgon
    Poziom 36  
    AVE...

    Jeśli kabel MIDI<>USB ma opóźnienia, które słyszysz, to wiedz że coś się dzieje. Na moje ucho miałem nawet pół sekundy opóźnienia. Ten konwerter MIDI<>USB nie ma takich problemów...