Obsah:

MSP430 Breadboard Audio Spectrum Analyzer: 6 kroků
MSP430 Breadboard Audio Spectrum Analyzer: 6 kroků

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 kroků

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 kroků
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, Listopad
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Tento projekt je založen na mikrofonu a vyžaduje minimální externí komponenty. Používají se 2 knoflíkové buňky LR44, abych mohl celou konstrukci pracovat v mezích 170 prkénka s vázacím bodem. Jsou použity a ukázány ADC10, TimerA přerušení LPM probuzení, TimerA PWM jako výstup, použití tlačítek, celočíselná aritmetika.

Funkce

  • 8bitové celočíselné FFT 16 vzorků při 500Hz separaci
  • nelineární ukazuje 8 amplitud 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K
  • mapa částečného logaritmu pro zobrazení amplitud, omezené, protože rozlišení bylo sníženo pro 8bitový FFT
  • Jednostupňové mikrofonní zesilovače TLC272 se 100x násobným ziskem 100x (můžete zažít 2 stupně)
  • z nabídky volitelně volitelné Hammingovo okno
  • menu upravit 4 úrovně jasu
  • menu upravit 8 úrovní vzorkovací frekvence / doba odezvy
  • 2 x knoflíkový článek LR44 napájený „na palubě“

Krok 1: Získejte díly

Následující jsou potřebné pro tento projekt

  • MSP430G2452 (další čip z TI Launchpad G2 nebo libovolného 4K 20 pinového MCU řady MSP430G)
  • mini prkénko nebo perfboard pro 170 zesilovačů pro konstrukci předzesilovače
  • Duální operační zesilovač TLC272
  • mini elektretový mikrofon
  • 47k (pull-up), 100k, 2 x 10k, 1k odpory
  • 1 x 0,1 uF
  • propojovací vodiče
  • dvouřadý konektor s kolíkovým kolíkem, který se použije pro držák baterie
  • 2 x knoflíková baterie LR44

Krok 2: Naplánujte rozložení součástí

Projekt má být postaven na 170 tie-point mini prkénku. Rozložení komponent je uvedeno níže. Zvláště je třeba poznamenat, že matice LED 8x8 má být umístěna na MCU MSP430. Kromě komponent existují ještě propojovací propojovací vodiče znázorněné znaky „+------+“.

G V + Gnd (rozložení 1 fáze) POUŽÍVÁME TOTO ROZVRH + ==================+ 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 a r1 sdílí stejný pin a nezobrazí se | +. +-+-+-+| +-+-+-+-+-+-+-+-+-++ *možná aplikace má c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | tím se uvolní b6 pro 32kHz xtal hodiny | | | TLC272 | | | | | | | out - + G | | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| | o || o o o. +-+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o- [10k]-o……… | |. o- [1k] o o o………._. | | o ---- [10k] ----------- o……. o o | +====================================================================== ====+.1uF 100k 10k ADC tlačítko+ -----------------+

používáme pouze jeden stupeň TLC272

Krok 3: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění

Můžete začít umisťovat komponenty na základě rozložení prkénka. Jelikož jde o umění ASCII, nemusí to být příliš jasné. V tomto kroku můžete spárovat fotografie a identifikovat všechna připojení.

Je třeba dbát na umístění čipů IC. V jednom z rohů je obvykle tečka označující pin 1 zařízení.

Použil jsem kabelové kabely CAT5 ethernet a jsou velmi snadno použitelné na projektech typu breadboard. Pokud máte staré kabely CAT5, můžete je rozříznout a zjistíte, že uvnitř je 6 zkroucených vodičů. Jsou ideální pro prkénka.

Krok 4: Kompilace a načtení firmwaru

Zdrojový kód se obvykle nachází v mých úložištích github.

U tohoto konkrétního projektu je jediný zdrojový soubor C nfft.c uložen v mém úložišti sbírek. Potřebujete pouze nfft.c

K kompilaci firmwaru používám mps430-gcc, ale s TI CCS by to mělo jít dobře. Můžete se vyhnout všem problémům s instalací IDE nebo kompilátorů tím, že přejdete na cloud TI CCS, což je webové IDE. Dokonce si stáhne firmware do cílového zařízení.

Toto je příklad příkazu kompilace s přepínači

msp430 -gcc -Os -Wall -funkce -sekce -fdata -sekce -fno -inline -small -functions -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- sekce -I/energia -0101E0016/hardware/msp430/jádra/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

K programování MCU používám jako programátor TI Launchpad G2.

Krok 5: Pochopte obvod

Pochopte obvod
Pochopte obvod
Pochopte obvod
Pochopte obvod

Schéma zapojení je uvedeno níže

MSP430G2452 nebo podobný, vyžaduje 4K Flash TLC272 duální operační zesilovač, GBW @1,7 MHz, @x100 zisk, šířka pásma až 17 kHz

* používáme pouze jeden stupeň TLC272

._.

| MSP430G2452 | Vcc | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^ --- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (viz rozložení prkénka) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | matice | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ //// /// /// ///

LED řízení

LED matice má 8 x 8 prvků. Jsou poháněny 15 GPIO piny. Jsou multiplexované s 8 řádky a 8 sloupcovými schématy. Protože poté, co použijeme 1 pin pro vstup ADC, existuje pouze 15 pinů, multiplexování má řádek 1 a sloupec 0, které sdílejí jeden pin. To znamená, že konkrétní LED na řádku 1 a sloupci 0 nemůže svítit. Jedná se o kompromis, protože k ovládání všech prvků LED není dostatek pinů GPIO.

Zachycení zvuku

Zvuk je zachycen pomocí integrovaného kondenzátorového mikrofonu ve vzdělávacím BoosterPacku. Jelikož jsou signály mikrofonu malé, musíme jej zesílit na úroveň, kterou msp430 ADC10 může používat s rozumným rozlišením. K tomuto účelu jsem použil dvoustupňový zesilovač.

Operační zesilovač se skládá ze dvou stupňů, každý s přibližně 100násobným ziskem. Přijal jsem TLC272, protože je to také velmi běžná součást a funguje s 3V. Šířka pásma zisku přibližně 1,7 MHz znamená, že pro náš zisk 100x můžeme pouze zaručit, že bude fungovat pěkně (tj. Zachovat požadovaný zisk) pod 17 kHz. (1,7 MHz / 100).

Původně jsem chtěl, aby tento spektrální analyzátor měřil až 16-20Khz, ale nakonec jsem zjistil, že asi 8Khz je dost dobrých na ukázku hudby. To lze změnit výměnou LM358 za něco s hodnocením zvuku a změnou vzorkovací frekvence. Stačí se podívat na šířku pásma zisku operačních zesilovačů, které si vyberete.

Odběr vzorků a FFT

Použitá funkce FFT je kód „fix_fft.c“, který přijalo mnoho projektů, na internetu se pohybuje už několik let. Zkoušel jsem 16bitovou a 8bitovou verzi. Nakonec jsem se spokojil s 8bitovou verzí, pokud jde o můj účel, neviděl jsem zásadní pokrok v 16bitové verzi.

Nerozumím dobře mechanismu FFT, kromě toho, že jde o konverzi časové domény na frekvenční doménu. To znamená, že rychlost (čas) zvukových vzorků po vložení do funkce výpočtu FFT ovlivní frekvenci amplitudy, kterou v důsledku dostávám. Takže úpravou rychlosti na samplovací zvuk mohu ve výsledku určit frekvenční pásmo.

TimerA 0 CCR0 se používá k udržení doby vzorkování. Nejprve určíme počty, které potřebujeme k dosažení frekvence pásma (odpovídá naší hodinové frekvenci DCO 16 MHz). tj. TA0CCR0 nastaveno na (8000/(BAND_FREQ_KHZ*2))-1; kde BAND_FREQ_KHZ je pro mě 8. Lze to změnit, pokud máte lepší operační zesilovač a / nebo chcete, aby to bylo jiné.

Frekvenční pásma a škálování amplitudy

Firmware zpracovává 16 pásem jedním tahem a časování snímání vytváří mezi těmito bankami oddělení 500 Hz. Matice LED má 8 sloupců a zobrazí pouze 8 pásem / amplitud. Namísto zobrazení jednoho každých dvou pásem se k zobrazení dynamičtějších frekvenčních pásem (pokud jde o hudbu) používá nelineární seznam frekvenčních pásem. Seznam obsahuje mezery 500 Hz na dolním konci, mezery 1 KHz ve středních pásmech a pásma 1,5 kHz na výškách.

Amplituda jednotlivých pásem je zmenšena na 8 úrovní, které jsou reprezentovány počtem horizontálních 'bodů' na LED maticovém displeji. Amplitudové úrovně jsou zmenšeny pomocí nelineární mapy, která převádí výsledky FFT do jedné z 8 tečky. Používá se jakési logaritmické škálování, které nejlépe reprezentuje naše vnímání hladin zvuku.

Je zde vestavěná logika AGC a spektrální analyzátor se pokusí snížit úrovně amplitudy, pokud je v předchozích cyklech detekováno několik špičkových úrovní. To se provádí pomocí srovnávací tabulky posuvného pravítka.

Krok 6: Ovládání zařízení

  • Krátké stisknutí klávesy v režimu zobrazení cykluje po zobrazení bez bodů, jedné tečky, 2 teček a 3 bodů.
  • Dlouhým stisknutím přejdete do režimu nastavení, následným dlouhým stisknutím otočíte nabídku.
  • Položky nabídky cyklují pomocí 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • V režimu nastavení 'Hamming Window' krátké stisknutí cykluje bez hamming, hamming 1, hamming 2, hamming 3, dlouhé stisknutí potvrzuje nastavení.
  • V režimu nastavení „Dimmer“krátké stisknutí cykluje mezi dostupnými úrovněmi jasu od 0 do 3, dlouhé stisknutí potvrzuje nastavení.
  • V režimu nastavení „Vzorkovací / obnovovací frekvence“krátká stisknutí cyklují dostupné obnovovací frekvence od 0 do 7, 0 znamená žádné zpoždění, dlouhé stisknutí potvrzuje nastavení.
  • Multiplexování LED segmentů zahrnuje časové zpoždění pro kompenzaci rozdílů jasu pro jednotlivé řádky.

Doporučuje: