38 ELEKTRONIKA PRAKTYCZNA 8/2019
PROJEKTY
Dodatkowe materiały do pobrania ze strony www.media.avt.pl
W ofercie AVT* AVT-5692Podstawowe parametry:• Liczba obsługiwanych kontrolerów MIDI: 128
• Liczba obsługiwanych komunikatów MMC: 5• Liczba obsługiwanych identyfikatorów urządzeń: 128
• Liczba obsługiwanych kanałów MIDI: 16• Zasilanie: 7,5...9 VDC, 100 mA
Projekty pokrewne na www.media.avt.pl:AVT-5594 Konwerter MIDI-SPI (EP 7/2017)AVT-960 Płyta ewaluacyjna i klawiatura muzyczna MIDI (EP 12/2006)AVT-842 Asynchroniczny konwerter RS232-MIDI (EP 12/1999)
* Uwaga! Elektroniczne zestawy do samodzielnego montażu. Wymagana umiejętność lutowania!Podstawową wersją zestawu jest wersja [B] nazywana potocznie KIT-em (z ang. zestaw). Zestaw w wersji [B] zawiera elementy elektroniczne (w tym [UK] – jeśli występuje w projekcie), które należy samodzielnie wlutować w dołączoną płytkę drukowaną (PCB). Wykaz elementów znajduje się w dokumentacji, która jest podlinkowana w opisie kitu.Mając na uwadze różne potrzeby naszych klientów, oferujemy dodatkowe wersje: wersja [C] – zmontowany, uruchomiony i przetestowany zestaw [B] (elementy wlutowane w płytkę PCB)
wersja [A] – płytka drukowana bez elementów i dokumentacjiKity w których występuje układ scalony wymagający zaprogramowania, mają następujące dodatkowe wersje: wersja [A+] – płytka drukowana [A] + zaprogramowany układ [UK] i dokumentacja
wersja [UK] – zaprogramowany układNie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz!http://sklep.avt.pl. W przypadku braku dostępności na http://sklep.avt.pl, osoby zainteresowane zakupem płytek drukowanych (PCB) prosimy o kontakt via e-mail: [email protected].
MidiCtrl – prosty sterownik MIDIW swojej praktyce inżynierskiej kilkukrotnie podejmowałem wyzwanie skonstruowania różnorakich urządzeń audio wyposażonych w prosty inter-fejs MIDI. Dotyczyło to zwłaszcza tych urządzeń, które zdradzały konotacje estradowe. Wynika to z faktu, że mając do dyspozycji wspomniany inter-fejs komunikacyjny, możemy zautomatyzować proces produkcji dźwięku, czyniąc go w pełni powtarzalnym. Nie bez znaczenia jest też fakt, że MIDI, mimo że choć wymyślone w latach 80., jest na tyle uniwersalne, iż z po-wodzeniem wykorzystują je najnowsze urządzenia estradowe. W praktyce prawie każde urządzenie estradowe korzysta z dobrodziejstw tego medium transmisyjnego. Jednym z powodów użycia technologii MIDI jest szeroka dostępność i uniwersalność takich sterowników. Jako że czasami zdarza mi się stosować elektroniczne urządzenia muzyczne (np. syntezatory), wy-godne byłoby zaopatrzenie się w jakiś prosty, sterownik MIDI, który ułatwi zapanowanie nad dziesiątkami parametrów edycyjnych, wszak nie zawsze mają one odzwierciedlenie w postaci rzeczywistych elementów regulacyj-nych na panelu urządzenia.
31250 (±1%) bits/s, w którym dane przesy-łane są w paczkach po 8 bitów, z jednym bitem startu i jednym bitem stopu, bez bi-tów kontroli parzystości. Układ wejściowy interfejsu MIDI wykonuje się zwykle przy użyciu szybkiego transoptora (6N138), który zamienia prąd w linii (ok. 5 mA) na przebiegi napięciowe, zaś interfejs wyjściowy z wyko-rzystaniem pary rezystorów ograniczających
Zanim jednak przejdziemy do opisu pre-zentowanego urządzenia, należy, choćby pokrótce, przypomnieć sobie podstawowe informacje na temat tego dość leciwego, jed-nak świetnie pomyślanego standardu.
Podstawowe informacje o MIDIInterfejs MIDI jest szeregowym interfejsem komunikacyjnym pracującym z szybkością
39ELEKTRONIKA PRAKTYCZNA 8/2019
MidiCtrl – prosty sterownik MIDI
23
24
25
26
27
28
ATmega48
AVCC
AREF
AGND
GND
VCC
PC6(/RESET/PCIN
T14)
PB6(X
TAL1/TOSC1/PCIN
T6)
PB7(X
TAL2/TOSC2/PCIN
T7)
PC0(A
DC0/PCIN
T8)
PC1(A
DC1/PCIN
T9)
PC2(A
DC2/PCIN
T10)
PC3(A
DC3/PCIN
T11
)
PC4(A
DC4/SDA/PCIN
T12)
PC5(A
DC5/SCL/PCIN
T13)
PD0(R
XD/PCINT16)
PD1(TXD/PCINT17)
PD2(INT0/PCINT18)
PD3(INT1/O
C2B/PCINT19)
PD4(T0/XCK/PCINT20)
PD5(T1/O
C0B/PCINT21)
PD6(AIN0/O
C0A/PCINT22)
PD7(AIN1/PCINT23)
PB0(ICP1/C
LK0/PCIN
T0)
PB1(O
C1A/PCIN
T1)
PB2(S
S/O
C1B/PCIN
T2)
PB3(M
OSI/OC2/PCIN
T3)
PB4(M
ISO/PCIN
T4)
PB5(S
CK/PCIN
T5)
U1
5V
GND
5V
R1
47k
C4
22pF
C5
22pF
Q1
4MHz
1 9
10 7
C1
100nF
C2
100nF
C3
100nF
20
21 22 8
L1
10uH
2 3 4 5 6 11 12
13
14
15
16
17
18
19
C11
100nF
MIDI_TX
C12
100nF
C13
100nF
C14
100nF
C15
100nF
C16
100nF
GND
GND
GND
GND
GND
GND
GND
GND
GND
GND
GND
GND
GND
GND
1 23 4
1 21 2
1 21 2
3 43 4
3 43 4
PLAY/EDIT
PAUSE/–
STOP/+
REWIND/<
FF/>
GND
5V
5V
5V
R3
220
R4
220
R5
220
POT7
10k
C10
100nF
PE
MIDI-OUT
LCD
PE
2 53
41
LCD-AC-0802EDIG
4 5 6 7 8 910 11 12
13
14
2 3 1 A K
VDD
VO
VSS A K
RS
R/W
E DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
R2B
59k
R2A
59k
POT1
3
2
1
POT2
POT3
POT4
POT5
POT6
3
3
3
3
3
22
22
2
1
1
1
1
1
5V
PWR
2 1
C6
100nF
C7
100uF
78L05
U2 OUT
IN
GND
C8
100uF
C9
100uF
Rysunek 1. Schemat ideowy sterownika MIDI
Wykaz elementów:Rezystory: (obudowy miniaturowe, 1/8 W)R1: 47 kVR2A, R2B: 59 kV 1%R3…R5: 220 VPOT1…POT6: potencjometr suwakowy 50 kV typu POT50K/B-SUWD (wym. 88×12,5×11 mm, posuw suwaka 60 mm)POT7: potencjometr montażowy leżący 10 kV
Kondensatory: (raster 0,1”)C1…C3, C6…C16: ceramiczny 100 nF C4, C5: ceramiczny 22 pF
Półprzewodniki:U1: ATmega48 (DIL28)U2: 78L05 (TO-92)LCD: wyświetlacz alfanumeryczny 2×8 znaków typu LCD-AC-0802E-DIG G/KK
Inne:Q1: rezonator kwarcowy 4 MHz (raster 0,2”)L1: dławik osiowy 10 mH (raster 0,2”)PWR: złącze śrubowe AK500/2 (raster 0,1”)FF/>, PAUSE/–, PLAY/EDIT, REWIND/<, STOP/+: mikroswitch TACT 9 mmMIDI-OUT: gniazdo DIN-5 do montażu THT
prąd diody LED w urządzeniu odbiorczym. W standardzie MIDI dane przesyłane są gru-powo w formie tzw. komunikatów (Messa-ges), przy czym wprowadzono bardzo prosty sposób na odróżnienie bajtów poleceń steru-jących (Status Byte) od bajtów danych (Data Byte): bajty poleceń mają ustawiony najstar-szy bit (0xFF...0x80) a bajty danych najstarszy bit mają wyzerowany (0x7F...0x00). Zwykle informacje przesyłane są w kolejności: bajt polecenia i po nim jeden lub dwa bajty da-nych (w zależności od rodzaju polecenia). Polecenia wysyłane są tylko przy zmianie danego elementu sterującego. Bajt polecenia określa jedną ze standardowo zdefiniowa-nych funkcji, którą instrument ma wykonać (4 najstarsze bity), np. Note On/Off (włącz/wyłącz nutę), Control Change (zmień para-metr urządzenia), Program Change (zmień rodzaj brzmienia) oraz numer kanału MIDI, na którym informacja ma być odebrana (po-zostałe 4 bity określające jeden z 16 kana-łów MIDI). Dla porządku należy wspomnieć o możliwości ograniczenia transferu danych poprzez usunięcie redundancji, z której ko-rzysta metoda Running Status. Polega ona na wysłaniu jednego bajta polecenia i wielu bajtów danych (bez każdorazowego ponawia-nia bajta polecenia) w przypadku przesyłania tego samego rodzaju sygnałów sterujących jeden za drugim, np. sygnały wywołane zmianą jednego i tego samego regulatora.
Budowa urządzeniaPrezentowany układ to prosty sterownik MIDI złożony z 6 elementów regulacyj-nych (potencjometrów suwakowych), któ-rym możemy przypisać dowolny kontroler MIDI (Control Change) i 5 przycisków funk-cyjnych przeznaczonych do sterowania do-wolnym rejestratorem MIDI, wspierającym rozszerzenie MIDI zwane MMC (Midi Ma-chine Control). Schemat ideowy urządzenia pokazano na rysunku 1. Zaprojektowano bardzo prosty system mikroprocesorowy,
40 ELEKTRONIKA PRAKTYCZNA 8/2019
...
potencjometrów POT1…POT6 i na skutek zmiany ich wartości wysyła stosowny ko-munikat typu Control Change (0xB0) ze zde-finiowanym wcześniej numerem kontrolera MIDI i wartością zależną od położenia su-waka każdego z potencjometrów (zakres wartości 0…127). Podobnie mikrokontro-ler monitoruje cały czas stan przycisków sterujących i w przypadku ich naciśnięcia wysyła stosowny komunikat MIDI. Komuni-kat ten należy do grupy komunikatów typu System Exclusive, czyli dedykowanych kon-kretnemu urządzeniu odbiorczemu, którego identyfikator ustawiamy w ramach konfigu-racji niniejszego sterownika. Konstrukcja ko-munikatu System Exclusive takiego rodzaju wygląda następująco:
0xF0, 0x7F, Device-ID,Sub-ID1, Sub-ID2, 0xF7
gdzie:• Device-ID – określa identyfikator doce-
lowego urządzenia odbiorczego (0…127),• Sub-ID1 – określa rodzaj przesyłanego
komunikatu, w naszym przypadku war-tość ta równa 0x06 oznacza rozkaz stan-dardu MMC,
• Sub-ID2 – określa typ rozkazu MMC, dla przykładu 0x01 polecenie Stop, 0x02 polecenie Play, 0x04 polecenie Fast forward itd.
Dla dociekliwych – wartości 0xF0 oraz 0xF7 to znaczniki początku i końca ko-munikatu System Exclusive, zaś 0x7F to wartość uniwersalnego urządzenia SysEx, dla którego przeznaczony jest bie-żący komunikat.
Warto również podkreślić, że przyciski funkcyjne nie służą tylko do generowania komunikatów MIDI (typu MMC), lecz za ich
PROJEKTY
pomocą dokonujemy również konfiguracji sterownika MidiCtrl, korzystając ze specjal-nego trybu edycyjnego uruchamianego po-przez długie naciśnięcie przycisku PLAY/EDIT. W trybie edycji klawisze oznaczone REWIND/< i FF/> służą do przełączania kolejnych pozycji menu edycyjnego, zaś PAUSE/–, STOP+ służą do regulacji para-metru wybranego menu edycyjnego. Wyjście z menu edycyjnego możliwe jest poprzez po-nowne, długie przyciśnięcie klawisza PLAY/EDIT, czemu towarzyszy zapisanie wszyst-kich ustawień konfiguracyjnych w nie-ulotnej pamięci EEPROM mikrokontrolera. Ustawienia te to: numery kontrolerów MIDI przyporządkowane do kolejnych potencjo-metrów regulacyjnych, numer aktywnego kanału MIDI, na którym odbywa się trans-misja danych oraz identyfikator urządzenia odbiorczego, dla którego przeznaczone są ko-munikaty MMC.
Wygląd ekranu graficznego interfejsu użytkownika w trybie normalnym pokazano na rysunku 2, na rysunku 3 pokazano wy-gląd poszczególnych ekranów menu edycyj-nego (konfiguracyjnego). Warto zauważyć, że w trybie normalnym na ekranie urzą-dzenia MidiCtrl pokazywane są dodatkowo w sposób graficzny wartości poszczególnych kontrolerów MIDI, którym odpowiadają po-łożenia suwaków kolejnych potencjometrów suwakowych (za pomocą bargrafów).
Rysunek 2. Wygląd ekranu graficznego in-terfejsu użytkownika w trybie normalnym
Rysunek 3. Wygląd ekranu graficznego interfejsu użytkownika w trybie edycji (konfiguracji)
którego sercem jest niewielki mikrokontro-ler firmy Microchip (dawniej Atmel) o ozna-czeniu ATmega48 taktowany zewnętrznym rezonatorem kwarcowym o częstotliwości 4 MHz. Zastosowanie rezonatora kwarco-wego jako źródła taktowania mikrokontro-lera wynikało z potrzeby zapewnienia dużej dokładności prędkości transmisji MIDI. Mi-krokontroler nasz odpowiedzialny jest za obsługę 6 potencjometrów suwakowych po-łączonych w konfiguracji dzielnika napię-cia, które mierzone jest każdorazowo przez kolejne kanały wbudowanego w strukturę mikroprocesora przetwornika ADC, obsługę 5 przycisków do zdalnej kontroli dowolnego rejestratora MIDI (za pomocą komunikatów MMC), obsługę niewielkiego wyświetlacza alfanumerycznego o organizacji 2×8 zna-ków stanowiącego element interfejsu użyt-kownika oraz obsługę wyjściowego interfejsu MIDI zbudowanego zaledwie z 2 rezystorów i gniazda DIN 5.
Działanie i obsługaZasada działania programu obsługi aplika-cji jest banalna. Mikrokontroler cały czas mierzy napięcia na zaciskach kolejnych
Listing 5. Funkcja wysyłająca komunikat typu MMCinline void MIDIsendMMC(uint8_t commandType, uint8_t deviceID){ MIDIsendByte(MIDI_SYSEX_START); MIDIsendByte(MIDI_UNIVERSAL_ID); MIDIsendByte(deviceID); MIDIsendByte(MIDI_MMC_COMMAND); MIDIsendByte(commandType); MIDIsendByte(MIDI_SYSEX_END);}
Listing 1. Plik nagłówkowy modułu obsługującego interfejs MIDI//Definicje prędkości interfejsu MIDI#define MIDI_BAUD 31250//Obliczamy UBRR dla U2X=0#define __UBRR_MIDI F_CPU/16/MIDI_BAUD-1
//Definicje wybranych komunikatów MIDI#define MIDI_CTRL_CHANGE 0xB0#define MIDI_PRGM_CHANGE 0xC0
//Definicje dla MIDI SYSEX#define MIDI_SYSEX_START 0xF0#define MIDI_SYSEX_END 0xF7#define MIDI_UNIVERSAL_ID 0x7F
//Definicje dla MIDI Machine Control#define MIDI_MMC_COMMAND 0x06#define MIDI_MMC_STOP 0x01#define MIDI_MMC_PLAY 0x02#define MIDI_MMC_FF 0x04#define MIDI_MMC_REWIND 0x05#define MIDI_MMC_PAUSE 0x09
Listing 2. Funkcja inicjująca interfejs USART mikrokontrolera do pracy jako sprzęg MIDIvoid initMIDI(void){ //Ustawienie prędkości dla MIDI UBRR0H = (__UBRR_MIDI)>>8; UBRR0L = __UBRR_MIDI; //Załączenie nadajnika UCSR0B |= (1<<TXEN0); //Ustawienie formatu ramki: //8bitów danych, 1 bit stopu UCSR0C = (3<<UCSZ00);}
Listing 3. Funkcja wysyłająca jeden bajt za pomocą interfejsu MIDIinline void MIDIsendByte(uint8_t Byte){ //Czekamy na ewentualne opróżnienie bufora nadawczego while (!(UCSR0A & (1<<UDRE0))); UDR0 = Byte;}
Listing 4. Funkcja wysyłająca komunikat typu Control Changeinline void MIDIsendCC(uint8_t ctrlNumber, uint8_t ctrlValue, uint8_t Channel){ MIDIsendByte(MIDI_CTRL_CHANGE|Channel); MIDIsendByte(ctrlNumber); MIDIsendByte(ctrlValue);}
Ustawienia Fuse-bitów (ważniejszych):CKSEL3...0: 1101SUT1...0: 11CKDIV8: 1EESAVE: 0
41ELEKTRONIKA PRAKTYCZNA 8/2019
MidiCtrl – prosty sterownik MIDI
Opis programu sterującegoNa początek przedstawię zawartość pliku nagłówkowego, który pokazano na li-stingu 1. Dalej, na listingu 2, przedsta-wiono funkcję inicjującą interfejs USART mikrokontrolera do pracy jako sprzęg MIDI (w tym wypadku wyłącznie jako nadajnik komunikatów MIDI). Z kolei na listingu 3 zilustrowano banalną wręcz funkcję wy-syłającą jeden bajt za pomocą interfejsu MIDI (USART). I na sam koniec dwie proste funkcje narzędziowe pozwalające wysłać komunikat MIDI typu Control Change (li-sting 4) i MMC (listing 5). Tyle w kwestiach
Rysunek 4. Schemat montażowy sterownika MIDI
implementacyjnych, które, jak widzicie, okazały się bajecznie proste.
Montaż i uruchomienieSchemat montażowy urządzenia MidiCtrl pokazano na rysunku 4. Jak widać, zapro-jektowano bardzo zwarty obwód druko-wany przeznaczony do montażu elementów przewlekanych. Montaż urządzenia rozpo-czynamy od wlutowania mikrokontrolera i rezonatora kwarcowego. Dalej lutujemy sta-bilizator napięcia, rezystory i kondensatory a na samym końcu potencjometry suwakowe, gniazda połączeniowe i przyciski sterujące.
Ostatnim etapem montażu urządzenia jest przylutowanie alfanumerycznego wyświe-tlacza LCD czego dokonujemy korzystając z typowych listew typu goldpin. Popraw-nie zmontowany układ wymaga wyłączenie regulacji kontrastu wyświetlacza LCD (po-tencjometr montażowy POT7) oraz konfigu-racji parametrów MIDI (menu edycyjne). Dla zmniejszenia ryzyka ewentualnych zakłóceń w pracy urządzenia (generowanie „niepo-trzebnych” komunikatów Control Change) metalowe obudowy potencjometrów suwako-wych najlepiej połączyć z masą sterownika.
Robert Wołgajew, EP
Aby skorzystać z materiałów dodatkowych dołączonych do numeru, należy: 1. Wejść na stronę www.media.avt.pl2. Zarejestrować się lub zalogować3. Wybrać wydanie „Elektroniki Praktycznej”,
które ma trafić do biblioteki osobistej4. Odpowiedzieć na proste pytanie
dotyczące bieżącego numeru5. Pobrać pliki
R E K L A M A
Top Related