Spisu treści:

Analizator widma dźwiękowego płyty prototypowej MSP430: 6 kroków
Analizator widma dźwiękowego płyty prototypowej MSP430: 6 kroków

Wideo: Analizator widma dźwiękowego płyty prototypowej MSP430: 6 kroków

Wideo: Analizator widma dźwiękowego płyty prototypowej MSP430: 6 kroków
Wideo: Analizator Widma - W Pracowni Radioelektronika 2024, Listopad
Anonim
Image
Image
Analizator widma dźwiękowego płyty prototypowej MSP430
Analizator widma dźwiękowego płyty prototypowej MSP430

Ten projekt jest oparty na mikrofonie i wymaga minimalnych komponentów zewnętrznych. Zastosowano 2 x LR44, dzięki czemu cała konstrukcja może pracować w ramach mini-płytki stykowej 170 punktów wiązania. ADC10, budzenie LPM przerwania TimerA, wyjście typu PWM TimerA, użycie przycisku, arytmetyka liczb całkowitych są używane i demonstrowane.

Cechy

  • 8-bitowa liczba całkowita FFT 16 próbek przy separacji 500 Hz
  • pokazuje 8 amplitud 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K nieliniowych
  • częściowa mapa logarytmiczna pokazująca amplitudy, ograniczona, ponieważ rozdzielczość została zmniejszona dla 8-bitowego FFT
  • Jednostopniowy mikrofon TLC272 wzmacnia 100x 100x (możesz doświadczyć w 2 stopniach)
  • menu do wyboru opcjonalne okno Hamminga
  • menu dostosuj 4 poziomy jasności
  • menu dostosuj 8 poziomów częstotliwości próbkowania/czasu odpowiedzi
  • 2 x LR44 zasilane "na pokładzie"

Krok 1: Kup części

Oto, co jest potrzebne do tego projektu

  • MSP430G2452 (dodatkowy układ z TI Launchpad G2 lub dowolny 20-pinowy MCU serii MSP430G 4K)
  • 170-punktowa mini płytka stykowa lub płytka perforowana do budowy przedwzmacniacza
  • TLC272 Podwójny wzmacniacz operacyjny
  • mini mikrofon elektretowy
  • 47k (podciągnięty), 100k, 2 x 10k, 1k rezystory
  • 1x0.1 uF
  • przewody połączeniowe
  • dwurzędowa męska głowica pinowa do użycia w uchwycie baterii;
  • 2 baterie pastylkowe LR44

Krok 2: Planowanie elementów składowych

Projekt ma być zbudowany na minipłytce stykowej 170 punktów wiązania. Rozmieszczenie komponentów pokazano poniżej. Na szczególną uwagę zasługuje fakt, że matryca LED 8x8 ma być umieszczona na górze MCU MSP430. Oprócz podzespołów znajdują się tu również przewody połączeniowe, które są oznaczone znakami „+------+”.

G V+ Gnd (1 układ sceny) UŻYWAMY TEGO UKŁADU +===================================== =================+ c0……c7 | MIC……. +-----+ +--+…. | r0 o o o o o o o o | o||o +-----[100k]---------------+….. | r1 X o o o o o o o |. +--------------+--+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o o |…… |.. | b6 a7 | | c0 i r1 mają ten sam pin i nie pokażą | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *możliwe zastosowanie aby mieć c6 + c0 + r1 | | |V+ | | |G b6 b7 TR a7 a6 b5 b4 b3| | to zwolni b6 dla zegara xtal 32 khz | | | TLC272 | | | | | | | out - + G| | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2| | | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | | o||o oo. +--+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o-[10k]--o……… | |. o-[1k]o oo………._. | | o----[10k]-----------o……. o o | +========================================================== ====+.1uF 100k 10k Przycisk ADC +-----------------+

używamy tylko jednego etapu TLC272

Krok 3: Montaż

montaż
montaż
montaż
montaż

Możesz rozpocząć umieszczanie komponentów na podstawie układu płytki prototypowej. Ponieważ jest to sztuka ASCII, więc może nie być zbyt jasna. Możesz sparować ze zdjęciami w tym kroku, aby zidentyfikować wszystkie połączenia.

Należy uważać, aby umieścić chipy IC. Zazwyczaj w jednym z rogów znajduje się kropka wskazująca pin 1 urządzenia.

Użyłem kabli ethernetowych CAT5 i są one bardzo łatwe w pracy na projektach płytek stykowych. Jeśli masz stare kable CAT5, możesz je rozciąć, a wewnątrz znajdziesz 6 skręconych przewodów. Idealnie nadają się na płytki stykowe.

Krok 4: Skompiluj i załaduj oprogramowanie sprzętowe

Kod źródłowy zwykle znajduje się w moich repozytoriach github.

W przypadku tego konkretnego projektu pojedynczy plik źródłowy C nfft.c jest dołączony do mojego repozytorium kolekcji płyt prototypowych. Potrzebujesz tylko nfft.c

Używam mps430-gcc do kompilacji oprogramowania, ale powinno dobrze współpracować z TI CCS. Możesz uniknąć wszelkich problemów związanych z instalacją IDE lub kompilatorów, przechodząc do chmury TI CCS, która jest IDE opartym na sieci Web. Pobierze nawet oprogramowanie układowe na urządzenie docelowe.

To jest przykładowe polecenie kompilacji z przełącznikami

msp430--gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- sekcje -I/energia-0101E0016/hardware/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c

Używam TI Launchpad G2 jako programatora do programowania MCU.

Krok 5: Zrozum obwód

Zrozum obwód
Zrozum obwód
Zrozum obwód
Zrozum obwód

Schemat obwodu przedstawiono poniżej

MSP430G2452 lub podobny, wymaga podwójnego wzmacniacza operacyjnego 4K Flash TLC272, GBW @1.7Mhz, @x100 gain, przepustowość do 17Khz

* używamy tylko jednego etapu TLC272

._.

| MSP430G2452 | Vcc | | | +-----------------------2|ADC0 |1--+ | | | |. | Vcc | | | | podciąganie (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (patrz układ płytki prototypowej) |.1u | | | | | /_+\ | | / |------_ +--||---|-[1k]--+-2|---+ | | | | | 15 GPIO | | | | +----------3|-----+ +-|--|6 | P1.1-P1.7| | 8x8 | | | +-4|Gnd +--|5 | P2.0-P2.7| | LED | |+ | | --------------- | | | macierz| ((O)) |. | | / | |_| |MIC | |10k | +-20|Gnd \|-------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

Jazda LED

Matryca LED składa się z 8 x 8 elementów. Napędzane są 15 pinami GPIO. Są multipleksowane z 8 rzędami i 8 kolumnami. Ponieważ jest tylko 15 pinów po użyciu 1 pinu do wejścia ADC, multipleksowanie ma jeden rząd 1 i kolumnę 0 dzielące jeden pin. Oznacza to, że dana dioda w rzędzie 1 i kolumnie 0 nie może się świecić. Jest to kompromis, ponieważ nie ma wystarczającej liczby pinów GPIO, aby wysterować wszystkie elementy LED.

Przechwytywanie dźwięku

Dźwięk jest przechwytywany za pomocą wbudowanego mikrofonu pojemnościowego w zestawie edukacyjnym BoosterPack. Ponieważ sygnały mikrofonowe są małe, musimy wzmocnić je do poziomu, który może wykorzystać msp430 ADC10 przy rozsądnej rozdzielczości. Do tego celu użyłem dwustopniowego wzmacniacza operacyjnego.

Wzmacniacz operacyjny składa się z dwóch stopni, każdy ze wzmocnieniem około 100x. Zaadoptowałem TLC272, ponieważ jest to również bardzo powszechna część i działa z 3V. Przepustowość wzmocnienia wynosząca około 1,7 MHz oznacza, że przy naszym wzmocnieniu 100x możemy jedynie zagwarantować, że będzie dobrze działać (tj. utrzyma pożądane wzmocnienie) poniżej 17 kHz. (1,7 MHz / 100).

Pierwotnie zamierzałem, aby ten analizator widma mierzył do 16-20 kHz, ale w końcu stwierdziłem, że około 8 kHz jest wystarczająco dobre, aby pokazać muzykę. Można to zmienić, zastępując LM358 czymś o jakości audio i zmieniając częstotliwość próbkowania. Po prostu poszukaj pasma wzmocnienia wybranych wzmacniaczy operacyjnych.

Próbkowanie i FFT

Użyta funkcja FFT to kod „fix_fft.c”, który przyjęło wiele projektów, od kilku lat krąży on w Internecie. Próbowałem wersji 16-bitowej i 8-bitowej. Ostatecznie zdecydowałem się na wersję 8-bitową, ponieważ w moim celu nie widziałem większego postępu w stosunku do wersji 16-bitowej.

Nie rozumiem dobrze mechanizmu FFT, poza tym, że jest to konwersja domeny czasu na domenę częstotliwości. Oznacza to, że szybkość (czas) próbek dźwięku, po wprowadzeniu do funkcji obliczania FFT, wpłynie na częstotliwość amplitudy, którą otrzymuję w wyniku. Tak więc, dostosowując szybkość do próbkowania dźwięku, mogę określić jako wynik pasmo częstotliwości.

TimerA 0 CCR0 służy do utrzymywania czasu próbkowania. Najpierw określamy liczbę potrzebną do osiągnięcia częstotliwości pasma (odpowiada naszej częstotliwości zegara DCO wynoszącej 16 MHz). tj. TA0CCR0 ustawiony na (8000/(BAND_FREQ_KHZ*2))-1; gdzie BAND_FREQ_KHZ to dla mnie 8. Można to zmienić, jeśli masz lepszy wzmacniacz operacyjny i / lub chcesz, aby było inaczej.

Pasma częstotliwości i skalowanie amplitudy

Oprogramowanie układowe przetwarza 16 pasm w jednym cyklu, a taktowanie przechwytywania zapewnia separację 500 Hz między tymi bankami. Matryca LED ma 8 kolumn i będzie wyświetlać tylko 8 pasm/amplitud. Zamiast wyświetlania jednego na dwa pasma, nieliniowa lista pasm częstotliwości służy do pokazywania bardziej dynamicznych pasm częstotliwości (pod względem muzycznym). Lista zawiera przerwy 500 Hz na dolnym końcu, przerwy 1 kHz na środkowych pasmach i pasma 1,5 kHz na wysokich.

Amplituda poszczególnych pasm jest skalowana w dół do 8 poziomów, które są reprezentowane przez liczbę poziomych „kropek” na wyświetlaczu matrycowym LED. Poziomy amplitudy są skalowane w dół za pomocą nieliniowej mapy, która przekłada wyniki FFT na jeden z 8 kropki. Stosowane jest swego rodzaju skalowanie logarytmiczne, które najlepiej odzwierciedla naszą percepcję poziomów dźwięku.

Jest wbudowana logika AGC, a analizator widma będzie próbował zmniejszyć poziomy amplitudy, gdy w poprzednich cyklach wykryto wiele poziomów szczytowych. Odbywa się to za pomocą przesuwnej tabeli porównawczej linijki.

Krok 6: Obsługa urządzenia

  • Krótkie naciśnięcie klawisza w trybie wyświetlania przełącza pomiędzy wyświetlaniem bez kropki, jednej kropki, 2 kropek i 3 kropek.
  • Długie naciśnięcie powoduje przejście do trybu konfiguracji, kolejne długie naciśnięcie powoduje przejście do menu.
  • Pozycje menu cyklicznie przechodzą przez „Opcje okna Hamminga”, „Ściemniacz”, „Próbkowanie / Częstotliwość odświeżania”.
  • W trybie ustawień 'Hamming Window' krótkie naciśnięcia przełączają się bez hamminga, hamming 1, hamming 2, hamming 3, długie naciśnięcie potwierdza ustawienie.
  • W trybie ustawień „Ściemniacz” krótkie naciśnięcie przełącza dostępne poziomy jasności od 0 do 3, długie naciśnięcie potwierdza ustawienie.
  • W trybie konfiguracji „Sampling / Refresh rate” krótkie naciśnięcia przełączają dostępne częstotliwości odświeżania od 0 do 7, 0 oznacza brak opóźnienia, długie naciśnięcie potwierdza ustawienie.
  • Multipleksowanie segmentów LED obejmuje opóźnienia czasowe w celu skompensowania różnic jasności w poszczególnych rzędach.

Zalecana: