Innholdsfortegnelse:
- Trinn 1: Skaff deg deler
- Trinn 2: Oppsett av komponentplaner
- Trinn 3: Montering
- Trinn 4: Kompiler og last inn fastvare
- Trinn 5: Forstå kretsen
- Trinn 6: Bruke enheten
Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Dette prosjektet er mikrofonbasert og krever minimale eksterne komponenter. 2 x LR44 myntceller brukes slik at jeg kan få hele strukturen til å fungere i rammen av et 170 tie-point mini-brødbrett. ADC10, TimerA interrupt LPM wake-up, TimerA PWM like output, knappbruk, heltall aritmetikk brukes og demonstreres.
Funksjoner
- 8 -bits heltall FFT 16 -sampler ved 500Hz separasjon
- viser 8 amplituder på 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K ikke-lineær
- delvis logaritmekart for å vise amplituder, begrenset ettersom oppløsningen er redusert for 8 biters FFT
- TLC272 ett -trinns mikrofonforsterkninger ved 100x ganger 100x forsterkning (du kan oppleve to trinn)
- meny valgfritt Hamming -vindu
- meny juster lysstyrken på 4 nivåer
- meny juster 8 nivåer sample rate / responstid
- 2 x LR44 myntcelle drevet "om bord"
Trinn 1: Skaff deg deler
Følgende er det som trengs for dette prosjektet
- MSP430G2452 (den ekstra brikken fra TI Launchpad G2, eller hvilken som helst 4K 20 -pins MSP430G -serie MCU)
- en 170 tie-point mini breadboard eller perf board for pre-amp konstruksjona
- TLC272 Dual op-amp
- mini electret mikrofon
- 47k (pull-up), 100k, 2 x 10k, 1k motstander
- 1 x 0,1 uF
- jumper ledninger
- dobbel rad mannlig pin header som skal brukes til batteriholder
- 2 x LR44 myntcellebatteri
Trinn 2: Oppsett av komponentplaner
Prosjektet skal bygges på et 170 tie-point mini-brødbrett. Oppsettet av komponenter er som vist nedenfor. Spesiell oppmerksomhet er at 8x8 LED -matrisen skal plasseres på toppen av MSP430 MCU. Bortsett fra komponenter, er det også tilkoblingsstikkledninger avbildet med "+------+" tegn.
G V + Gnd (1 -trinns layout) VI BRUKER DENNE LAYOUT + ======================================= ==================+ 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 og r1 deler samme pin og vises ikke | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| *mulig søknad om å ha c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | dette frigjør b6 for 32khz xtal -klokke | | | TLC272 | | | | | | | ut - + 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-knapp+ -----------------+
vi bruker bare ett trinn i TLC272
Trinn 3: Montering
Du kan begynne å plassere komponenter basert på brødbrettoppsettet. Siden det er ASCII -kunst, er det kanskje ikke veldig klart. Du kan koble sammen bildene i dette trinnet for å identifisere alle tilkoblinger.
Det må utvises forsiktighet for å plassere IC -brikkene. Det er vanligvis en prikk på et av hjørnene for å indikere pinne 1 på en enhet.
Jeg hadde brukt CAT5 ethernet -kabeltråder, og de er veldig enkle å jobbe med brødbrettprosjekter. Hvis du har gamle CAT5 -kabler, kan du kutte den opp, og du vil finne at det er 6 vridde ledninger inni. De er perfekte til brødbrett.
Trinn 4: Kompiler og last inn fastvare
Kildekoden ligger vanligvis på mine github -lagre.
For dette spesifikke prosjektet er den eneste C -kildefilen nfft.c satt sammen i depotet for brødbrettsamlinger. Du trenger bare nfft.c
Jeg bruker mps430-gcc til å kompilere fastvaren, men det burde gå bra med TI CCS. Du kan unngå alle problemer med å installere IDEer eller kompilatorer ved å gå til TI CCS -skyen, som er en nettbasert IDE. Det vil til og med laste ned fastvaren til målenheten.
Dette er et eksempel på en kompileringskommando med brytere
msp430 -gcc -Os -Wall -funksjon -seksjoner -fdata -seksjoner -fno -inline -små -funksjoner -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- seksjoner -I/energia -0101E0016/hardware/msp430/cores/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c
Jeg bruker en TI Launchpad G2 som programmerer for å programmere MCU.
Trinn 5: Forstå kretsen
Kretsskjemaet er presentert nedenfor
MSP430G2452 eller lignende, trenger 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 gain, båndbredde opptil 17Khz
* vi bruker bare ett trinn i TLC272
._.
| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (se brødbrettoppsett) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | matrise | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///
LED -kjøring
LED -matrisen består av 8 x 8 elementer. De drives av 15 GPIO -pinner. De er multiplekset med 8 rader og 8 kolonneskjema. Siden det bare er 15 pinner etter at vi bruker 1 pinne for ADC -inngang, har multiplexingen rad 1 og kolonne 0 som deler en enkelt pinne. Dette betyr at den spesielle LED -en på rad 1 og kolonne 0 ikke kan tennes. Dette er et kompromiss ettersom det bare ikke er nok GPIO -pinner til å drive alle LED -elementer.
Lydopptak
Lyd fanges opp via den innebygde kondensatormikrofonen på Educational BoosterPack. Siden mikrofonsignaler er små, må vi forsterke det til et nivå som msp430 ADC10 kan bruke med en rimelig oppløsning. Jeg hadde brukt en to-trinns op-forsterker til dette formålet.
Op-amp-forsterkeren består av to trinn, hver med en gevinst på omtrent 100x. Jeg hadde adoptert TLC272, da den også er en veldig vanlig del, og den fungerer med 3V. Forsterkningsbåndbredden er omtrent 1,7 Mhz betyr at for vår gevinst på 100x kan vi bare garantere at det ville fungere pent (dvs. opprettholde gevinsten vi ønsker) under 17Khz. (1,7 Mhz / 100).
Opprinnelig har jeg tenkt å få denne spektrumanalysatoren til å måle opptil 16-20Khz, men til slutt fant jeg ut at 8Khz er bra nok til å vise musikk. Dette kan endres ved å bytte ut LM358 med noe lydklassifisert og endre samplingshastigheten. Bare se etter forsterkningsbåndbredden til op-forsterkere du velger.
Prøvetaking og FFT
FFT -funksjonen som brukes er "fix_fft.c" -koden som mange prosjekter hadde tatt i bruk, den har svevet rundt på internett i noen år. Jeg hadde prøvd en 16 -biters versjon og en 8 -biters versjon. Til slutt nøyde jeg meg med 8 -bits versjonen som for mitt formål, jeg så ikke et stort fremskritt på 16 -bits versjonen.
Jeg har ikke en god forståelse av FFT -mekanismen bortsett fra at det er en tidsdomene til frekvensdomenekonvertering. Det betyr at frekvensen (tiden) til lydprøvene, etter at de er matet til FFT -beregningsfunksjonen, vil påvirke frekvensen av amplituden jeg får som et resultat. Så ved å justere frekvensen for å prøve lyd, kan jeg bestemme frekvensbåndet som resultatet.
Timer A 0 CCR0 brukes til å beholde prøvetiden. Vi bestemmer først tellingen vi trenger for å oppnå båndfrekvensen (tilsvarer vår DCO -klokkefrekvens på 16Mhz). dvs. TA0CCR0 satt til (8000/(BAND_FREQ_KHZ*2))-1; hvor BAND_FREQ_KHZ er 8 for meg. Den kan endres hvis du har en bedre op-amp og / eller ønsker at den skal være annerledes.
Frekvensbånd og amplitude skalering
Firmware behandler 16 bånd på en fei, og opptakstiden gir 500Hz separasjon mellom disse bankene. LED -matrisen består av 8 kolonner og vil bare vise 8 bånd / amplituder. I stedet for å vise hvert annet bånd, brukes en ikke-lineær frekvensbåndsliste for å vise de mer dynamiske frekvensbåndene (når det gjelder musikk). Listen er over 500Hz -hull i den lave enden, 1KHz -hull i mellombåndene og 1,5Khz -bånd i høyden.
Amplituden til individuelle bånd skaleres ned til 8 nivåer, som er representert med antall horisontale 'prikker' på LED-matrisedisplayet. Amplitudenivåene skaleres ned via et ikke-lineært kart som oversetter FFT-resultater til en av de 8 prikker. En slags logaritmisk skalering brukes da den best representerer vår oppfatning av lydnivåer.
Det er innebygd AGC-logikk, og spektrumanalysatoren vil prøve å skalere ned amplitudenivået når det er oppdaget flere toppnivåer i de foregående syklusene. Dette gjøres med en sammenligningstabell for glidende linjal.
Trinn 6: Bruke enheten
- Kort tastetrykk i visningsmodus går gjennom ingen prikk, én prikk, 2 prikker og 3 prikker.
- Langt trykk går inn i oppsettsmodus, etterfølgende langt trykk roterer gjennom menyen.
- Menyelementene går gjennom 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
- I oppsettsmodusen 'Hamming Window', går korte trykk gjennom ingen hamming, hamring 1, hamming 2, hamming 3, langt trykk bekrefter innstillingen.
- I "Dimmer" -oppsettsmodus går korte trykk gjennom tilgjengelige lysstyrkenivåer fra 0 til 3, langt trykk bekrefter innstillingen.
- I oppsettsmodusen "Sampling / Refresh rate", korte trykk blar gjennom de tilgjengelige oppdateringshastighetene fra 0 til 7, 0 betyr ingen forsinkelse, et langt trykk bekrefter innstillingen.
- Led -segmentmultipleksering inkluderer tidsforsinkelser for å kompensere for lysstyrkeforskjeller for individuelle rader.
Anbefalt:
Superstørrelse Acryllic Spectrum Analyzer: 7 trinn (med bilder)
Superstørrelse Acryllic Spectrum Analyzer: Hvorfor vil du se på de små LED -skjermene eller de små LCD -skjermene hvis du kan gjøre det stort? Dette er en trinnvis beskrivelse av hvordan du bygger din egen Giant sized Spectrum analysator.Bruker akrylfliser og ledede strimler for å bygge et rom som fyller lys
DIY FFT Audio Spectrum Analyzer: 3 trinn
DIY FFT Audio Spectrum Analyzer: FFT spektrumanalysator er et testutstyr som bruker Fourier -analyse og digital signalbehandlingsteknikk for å gi spektrumanalyse. Ved å bruke Fourier -analyse er det mulig for en verdi i for eksempel det kontinuerlige tidsdomenet å konvertere
10 Band Led Spectrum Analyzer: 11 trinn
10 Band Led Spectrum Analyzer: God ettermiddag, kjære seere og lesere. I dag vil jeg vise deg den komplette monteringsguiden for 10 -bånds LED -spektrumanalysator
DIY Arduino Audio Signal Spectrum Analyzer: 3 trinn
DIY Arduino Audio Signal Spectrum Analyzer: Dette er en veldig enkel lydanalysator med visuelle moduser som kan endres
Audio Spectrum Analyzer (VU Meter): 6 trinn
Audio Spectrum Analyzer (VU Meter): Hva er musikk? Fra et teknisk synspunkt er musikk i utgangspunktet et signal med varierende spenning og frekvens. Audio Spectrum Analyzer er en enhet som viser spenningsnivået til en bestemt frekvens. Det er et instrument som hovedsakelig brukes på steder som