Inhaltsverzeichnis:

MSP430 Breadboard Audio Spectrum Analyzer - Gunook
MSP430 Breadboard Audio Spectrum Analyzer - Gunook

Video: MSP430 Breadboard Audio Spectrum Analyzer - Gunook

Video: MSP430 Breadboard Audio Spectrum Analyzer - Gunook
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, November
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Dieses Projekt ist mikrofonbasiert und erfordert nur minimale externe Komponenten. Es werden 2 x LR44-Knopfzellen verwendet, damit ich die gesamte Struktur in den Grenzen eines 170-Tie-Point-Mini-Steckbretts arbeiten kann. ADC10, TimerA Interrupt LPM Wake-up, TimerA PWM-ähnlicher Ausgang, Tastenbelegung, Integer-Arithmetik werden verwendet und demonstriert.

Merkmale

  • 8-Bit-Integer-FFT 16 Samples bei 500 Hz Trennung
  • zeigt 8 Amplituden von 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K nichtlinear
  • partielle Logarithmus-Karte zur Darstellung von Amplituden, eingeschränkt, da die Auflösung für 8-Bit-FFT reduziert wurde
  • TLC272 einstufiges Mikrofon verstärkt mit 100x 100x Verstärkung (Sie können mit 2 Stufen erleben)
  • menüwählbares optionales Hamming-Fenster
  • Menü 4 Helligkeitsstufen einstellen
  • Menüeinstellung 8 Stufen Abtastrate / Reaktionszeit
  • 2 x LR44 Knopfzelle mit Stromversorgung "on board"

Schritt 1: Teile erwerben

Folgendes wird für dieses Projekt benötigt

  • MSP430G2452 (der zusätzliche Chip von TI Launchpad G2 oder eine beliebige 4K 20-Pin-MCU der MSP430G-Serie)
  • ein 170-Tie-Point-Mini-Steckbrett oder Perf-Board für den Vorverstärkerbaua
  • TLC272 Dualer Operationsverstärker
  • Mini-Elektretmikrofon
  • 47k (Pull-up), 100k, 2 x 10k, 1k Widerstände
  • 1 x 0,1uF
  • Überbrückungsdrähte
  • zweireihige Stiftleiste zur Verwendung für Batteriehalter
  • 2 x LR44 Knopfzellenbatterie

Schritt 2: Komponentenlayout planen

Das Projekt soll auf einem 170-Tie-Point-Mini-Steckbrett gebaut werden. Das Layout der Komponenten ist wie unten gezeigt. Besonders hervorzuheben ist, dass die 8x8 LED-Matrix auf der MSP430 MCU platziert wird. Neben Komponenten gibt es auch Verbindungsbrücken, die durch "+------+"-Zeichen dargestellt sind.

G V+ Gnd (1-stufiges Layout) WIR VERWENDEN DIESES LAYOUT +=================================== =================+ c0…………c7 | MIK……. +-----+ +--+…. | 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 und r1 teilen sich denselben Pin und werden nicht angezeigt | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *mögliche Anwendung mit c6 + c0 + r1 | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | dies wird b6 für 32khz xtal Clock freigeben | | | TLC272 | | | | | | | aus - + 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 ADC-Taste +-----------------+

wir verwenden nur eine Stufe des TLC272

Schritt 3: Montage

Montage
Montage
Montage
Montage

Sie können beginnen, Komponenten basierend auf dem Steckbrett-Layout zu platzieren. Da es sich um ASCII-Kunst handelt, ist dies möglicherweise nicht sehr klar. Sie können in diesem Schritt mit den Fotos koppeln, um alle Verbindungen zu identifizieren.

Es muss darauf geachtet werden, dass die IC-Chips positioniert werden. Normalerweise befindet sich an einer der Ecken ein Punkt, um Pin 1 eines Geräts anzuzeigen.

Ich hatte CAT5-Ethernet-Kabeldrähte verwendet und sie sind sehr einfach an Steckbrettprojekten zu arbeiten. Wenn Sie alte CAT5-Kabel haben, können Sie sie aufschneiden und Sie werden feststellen, dass sich darin 6 verdrillte Drähte befinden. Sie sind perfekt für Steckbretter.

Schritt 4: Firmware kompilieren und laden

Der Quellcode befindet sich normalerweise in meinen Github-Repositorys.

Für dieses spezielle Projekt ist die einzelne C-Quelldatei nfft.c in meinem Breadboard-Sammlungs-Repository gebündelt. Sie brauchen nur nfft.c

Ich verwende mps430-gcc, um die Firmware zu kompilieren, aber es sollte gut mit TI CCS funktionieren. Sie können den ganzen Aufwand der Installation von IDEs oder Compilern vermeiden, indem Sie zur TI CCS Cloud wechseln, einer webbasierten IDE. Es wird sogar die Firmware auf Ihr Zielgerät herunterladen.

Dies ist ein Beispiel für einen Kompilierungsbefehl mit Schaltern

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

Ich verwende ein TI Launchpad G2 als Programmierer, um die MCU zu programmieren.

Schritt 5: Verstehen Sie die Schaltung

Verstehen Sie die Schaltung
Verstehen Sie die Schaltung
Verstehen Sie die Schaltung
Verstehen Sie die Schaltung

Der Schaltplan ist unten dargestellt

MSP430G2452 oder ähnlich, benötigt 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 Gain, Bandbreite bis zu 17Khz

* wir verwenden nur eine Stufe des TLC272

._.

| MSP430G2452 | Vcc | | | +-------------------------2|ADC0 |1--+ | | | |. | Vcc | | | | Pull-up (47k) Vcc Vcc | -------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (siehe Steckbrett-Layout) |.1u | | | | | /_+\ | | / |------_ +--||---|-[1k]--+-2|---+ | | | | | 15 GPIO | | | | +----------3|--+ +-|--|6 | P1.1-P1.7| | 8x8 | | | +-4|Gnd +--|5 | P2.0-P2.7| | LED | |+ | | -------------- | | | Matrix| ((O)) |. | | / | |_| |MIC | |10k | +-20|Gnd \|-------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

LED-Fahren

Die LED-Matrix besteht aus 8 x 8 Elementen. Sie werden von 15 GPIO-Pins angesteuert. Sie sind mit 8 Reihen und 8 Spalten gemultiplext. Da es nur 15 Pins gibt, nachdem wir 1 Pin für den ADC-Eingang verwendet haben, teilen sich beim Multiplexing Zeile 1 und Spalte 0 einen einzigen Pin. Das bedeutet, dass die jeweilige LED in Zeile 1 und Spalte 0 nicht leuchten kann. Dies ist ein Kompromiss, da einfach nicht genügend GPIO-Pins vorhanden sind, um alle LED-Elemente anzusteuern.

Tonaufnahme

Der Ton wird über das integrierte Kondensatormikrofon des Educational BoosterPack aufgenommen. Da die Mikrofonsignale klein sind, müssen wir sie auf einen Pegel verstärken, den der msp430 ADC10 mit einer angemessenen Auflösung verwenden kann. Ich hatte zu diesem Zweck einen zweistufigen Operationsverstärker verwendet.

Der Operationsverstärker besteht aus zwei Stufen, jede mit einer etwa 100-fachen Verstärkung. Ich hatte den TLC272 übernommen, da er auch ein sehr häufiges Teil ist und mit 3V funktioniert. Die Verstärkungsbandbreite von etwa 1,7 MHz bedeutet, dass wir für unsere Verstärkung von 100x nur garantieren können, dass sie unter 17 kHz gut funktioniert (dh die gewünschte Verstärkung beibehalten). (1,7 MHz / 100).

Ursprünglich beabsichtige ich, diesen Spektrumanalysator bis zu 16-20 kHz messen zu lassen, aber am Ende fand ich, dass etwa 8 kHz gut genug sind, um Musik zu zeigen. Dies kann geändert werden, indem der LM358 mit etwas Audio-Rating ersetzt und die Abtastrate geändert wird. Suchen Sie einfach nach der Verstärkungsbandbreite der von Ihnen gewählten Operationsverstärker.

Sampling und FFT

Die verwendete FFT-Funktion ist der Code "fix_fft.c", den viele Projekte übernommen hatten und der seit einigen Jahren im Internet kursiert. Ich hatte eine 16-Bit-Version und eine 8-Bit-Version ausprobiert. Schließlich entschied ich mich für die 8-Bit-Version, da ich für meinen Zweck keinen großen Fortschritt gegenüber der 16-Bit-Version sah.

Ich habe kein gutes Verständnis des FFT-Mechanismus, außer dass es sich um eine Konvertierung vom Zeitbereich in den Frequenzbereich handelt. Das bedeutet, dass die Rate (Zeit) der Soundsamples, nachdem sie in die FFT-Berechnungsfunktion eingespeist wurde, die Frequenz der Amplitude beeinflusst, die ich als Ergebnis erhalte. Durch Anpassen der Rate an den Sample-Sound kann ich als Ergebnis das Frequenzband bestimmen.

TimerA 0 CCR0 wird verwendet, um die Abtastzeit zu halten. Wir bestimmen zunächst die Anzahl, die wir benötigen, um die Bandfrequenz zu erreichen (entspricht unserer DCO-Taktrate von 16Mhz). d.h. TA0CCR0 auf (8000/(BAND_FREQ_KHZ*2))-1 gesetzt; wobei BAND_FREQ_KHZ für mich 8 ist. Es kann geändert werden, wenn Sie einen besseren Operationsverstärker haben und / oder es anders haben möchten.

Frequenzbänder und Amplitudenskalierung

Die Firmware verarbeitet 16 Bänder in einem Durchlauf, und das Capture-Timing erzeugt eine 500-Hz-Trennung zwischen diesen Bänken. Die LED-Matrix besteht aus 8 Spalten und zeigt nur 8 Bänder / Amplituden an. Anstatt alle zwei Bänder anzuzeigen, wird eine nichtlineare Frequenzbandliste verwendet, um die dynamischeren Frequenzbänder (in Bezug auf Musik) anzuzeigen. Die Liste besteht aus 500-Hz-Lücken am unteren Ende, 1-kHz-Lücken in den mittleren Bändern und 1,5-kHz-Bändern in den Höhen.

Die Amplitude der einzelnen Bänder wird auf 8 Stufen herunterskaliert, die durch die Anzahl der horizontalen „Punkte“auf dem LED-Matrix-Display dargestellt werden. Die Amplitudenstufen werden über eine nichtlineare Karte herunterskaliert, die FFT-Ergebnisse in eines der 8. übersetzt Punkte. Es wird eine Art logarithmische Skalierung verwendet, da sie unsere Wahrnehmung von Schallpegeln am besten wiedergibt.

Es gibt eine integrierte AGC-Logik und der Spektrumanalysator versucht, die Amplitudenpegel herunterzuskalieren, wenn in den vorherigen Zyklen mehrere Spitzenpegel erkannt wurden. Dies geschieht mit einer Schiebelineal-Vergleichstabelle.

Schritt 6: Bedienung des Geräts

  • Kurzer Tastendruck im Anzeigemodus schaltet durch die Anzeige ohne Punkt, 1 Punkt, 2 Punkte und 3 Punkte.
  • Langes Drücken ruft den Setup-Modus auf, anschließendes langes Drücken dreht sich durch das Menü.
  • Die Menüpunkte durchlaufen 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • Im Setup-Modus 'Hamming Window' schalten kurzes Drücken durch kein Hamming, Hamming 1, Hamming 2, Hamming 3, langes Drücken bestätigt die Einstellung.
  • Im Setup-Modus 'Dimmer' schalten kurzes Drücken durch die verfügbaren Helligkeitsstufen von 0 bis 3, langes Drücken bestätigt die Einstellung.
  • Im Setup-Modus 'Sampling / Refresh rate' schalten kurzes Drücken durch die verfügbaren Refresh-Raten von 0 bis 7, 0 bedeutet keine Verzögerung, langes Drücken bestätigt die Einstellung.
  • Das LED-Segment-Multiplexing umfasst Zeitverzögerungen, um Helligkeitsunterschiede für einzelne Reihen auszugleichen.

Empfohlen: