Inhoudsopgave:
- Stap 1: Onderdelen aanschaffen
- Stap 2: Lay-out van componenten plannen
- Stap 3: Montage
- Stap 4: Firmware compileren en laden
- Stap 5: Begrijp het circuit
- Stap 6: Het apparaat bedienen
Video: MSP430 Breadboard Audio Spectrum Analyser - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Dit project is gebaseerd op microfoons en vereist minimale externe componenten. Er worden 2 x LR44-muntcellen gebruikt, zodat ik de hele structuur kan laten werken binnen de grenzen van een mini-breadboard met 170 tie-point. ADC10, TimerA interrupt LPM wake-up, TimerA PWM-achtige output, knopgebruik, gehele rekenkunde worden gebruikt en gedemonstreerd.
Functies
- 8 bit integer FFT 16 samples bij 500Hz scheiding
- toont 8 amplitudes van 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K niet-lineair
- gedeeltelijke logaritmekaart om amplitudes weer te geven, beperkt omdat de resolutie is verlaagd voor 8 bit FFT
- TLC272 eentraps microfoon versterkt met 100x 100x gain (u kunt ervaren met 2 podia)
- menu selecteerbaar optioneel Hamming-venster
- menu aanpassen 4 niveaus helderheid:
- menu aanpassen 8 niveaus sample rate / responstijd
- 2 x LR44 knoopcel aangedreven "aan boord"
Stap 1: Onderdelen aanschaffen
Het volgende is nodig voor dit project:
- MSP430G2452 (de extra chip van TI Launchpad G2 of een 4K 20-pins MSP430G-serie MCU)
- een 170 tie-point mini breadboard of perf board voor pre-amp constructiea
- TLC272 Dubbele op-amp
- mini electret microfoon
- 47k (pull-up), 100k, 2 x 10k, 1k weerstanden
- 1x 0.1uF
- jumperdraden
- dubbele rij mannelijke pin header te gebruiken voor batterijhouder
- 2 x LR44 knoopcelbatterij
Stap 2: Lay-out van componenten plannen
Het project wordt gebouwd op een mini breadboard met 170 tie-point. De lay-out van componenten is zoals hieronder weergegeven. Bijzonder is dat de 8x8 LED-matrix bovenop de MSP430 MCU moet worden geplaatst. Naast componenten zijn er ook verbindingsdraden afgebeeld met "+------+" karakters.
G V+ Gnd (1 stage layout) WIJ GEBRUIKEN DEZE 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 en r1 delen dezelfde pin en laten |. niet zien +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *mogelijke toepassing om c6 + c0 + r1 te hebben | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | dit zal b6 vrijmaken voor 32khz xtal klok | | | TLC272 | | | | | | | uit - + 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-knop +-----------------+
we gebruiken slechts één fase van de TLC272
Stap 3: Montage
U kunt beginnen met het plaatsen van componenten op basis van de breadboard-indeling. Omdat het ASCII-kunst is, is het misschien niet erg duidelijk. U kunt in deze stap koppelen met de foto's om alle verbindingen te identificeren.
Er moet op worden gelet dat de IC-chips worden geplaatst. Er staat meestal een stip op een van de hoeken om pin 1 van een apparaat aan te geven.
Ik had CAT5-ethernetkabeldraden gebruikt en ze zijn heel gemakkelijk om aan breadboard-projecten te werken. Als je oude CAT5-kabels hebt, kun je deze openknippen en je zult zien dat er 6 gedraaide draden in zitten. Ze zijn perfect voor breadboards.
Stap 4: Firmware compileren en laden
Broncode bevindt zich meestal op mijn github-repository's.
Voor dit specifieke project is het enkele C-bronbestand nfft.c gebundeld in mijn breadboard-verzamelingsrepository. Je hebt alleen nfft.c. nodig
Ik gebruik mps430-gcc om de firmware te compileren, maar het zou goed moeten gaan met TI CCS. U kunt alle problemen van het installeren van IDE's of compilers vermijden door naar TI CCS cloud te gaan, een webgebaseerde IDE. Het zal zelfs de firmware downloaden naar uw doelapparaat.
Dit is een voorbeeldcompilatieopdracht met schakelaars
msp430--gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- secties -I/energia-0101E0016/hardware/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c
Ik gebruik een TI Launchpad G2 als programmeur om de MCU te programmeren.
Stap 5: Begrijp het circuit
Het schakelschema wordt hieronder weergegeven:
MSP430G2452 of vergelijkbaar, heeft 4K Flash TLC272 Dual Op-Amp nodig, GBW @1.7Mhz, @x100 gain, bandbreedte tot 17Khz
* we gebruiken slechts één fase van de TLC272
._.
| MSP430G2452 | Vcc | | | +-----------------------2|ADC0 |1--+ | | | |. | Vcc | | | | optrekken (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (zie breadboard-indeling) |.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 rijden
De LED-matrix bestaat uit 8 x 8 elementen. Ze worden aangedreven door 15 GPIO-pinnen. Ze zijn gemultiplext met 8 rijen en 8 kolommen. Aangezien er slechts 15 pinnen zijn nadat we 1 pin hebben gebruikt voor ADC-invoer, heeft de multiplexing rij 1 en kolom 0 die een enkele pin delen. Dit betekent dat de betreffende LED op rij 1 en kolom 0 niet kan branden. Dit is een compromis omdat er gewoon niet genoeg GPIO-pinnen zijn om alle LED-elementen aan te sturen.
Geluidsopname
Geluid wordt vastgelegd via de ingebouwde condensatormicrofoon op het Educational BoosterPack. Omdat microfoonsignalen klein zijn, moeten we deze versterken tot een niveau dat de msp430 ADC10 kan gebruiken met een redelijke resolutie. Ik had hiervoor een tweetraps op-amp versterker gebruikt.
De op-amp versterker bestaat uit twee trappen, elk met een versterking van ongeveer 100x. Ik had de TLC272 aangenomen omdat het ook een veel voorkomend onderdeel is en het werkt met 3V. De versterkingsbandbreedte van ongeveer 1,7 Mhz betekent dat we voor onze winst van 100x alleen kunnen garanderen dat het goed zou werken (d.w.z. de gewenste versterking behouden) onder de 17 Khz. (1,7 MHz / 100).
Oorspronkelijk was ik van plan om deze spectrumanalysator tot 16-20Khz te laten meten, maar uiteindelijk ontdekte ik dat ongeveer 8Khz goed genoeg is om muziek te laten zien. Dit kan worden gewijzigd door de LM358 te vervangen door iets met audiokwaliteit en de bemonsteringsfrequentie te wijzigen. Zoek gewoon naar de versterkingsbandbreedte van de op-amps die u kiest.
Sampling en FFT
De gebruikte FFT-functie is de "fix_fft.c"-code die door veel projecten is overgenomen en die al enkele jaren op het internet rondzweeft. Ik had een 16-bits versie en een 8-bits versie geprobeerd. Uiteindelijk heb ik genoegen genomen met de 8-bits versie, omdat ik voor mijn doel geen grote vooruitgang zag op de 16-bits versie.
Ik heb geen goed begrip van het FFT-mechanisme, behalve dat het een conversie van tijdsdomein naar frequentiedomein is. Dat betekent dat de snelheid (tijd) van de geluidssamples, na invoer naar de FFT-berekeningsfunctie, de frequentie van de amplitude die ik als resultaat krijg, zal beïnvloeden. Dus door de snelheid aan te passen om geluid te samplen, kan ik de frequentieband als resultaat bepalen.
TimerA 0 CCR0 wordt gebruikt om de bemonsteringstijd te behouden. We bepalen eerst de tellingen die we nodig hebben om de bandfrequentie te bereiken (komt overeen met onze DCO-kloksnelheid van 16 Mhz). d.w.z. TA0CCR0 ingesteld op (8000/(BAND_FREQ_KHZ*2))-1; waar BAND_FREQ_KHZ voor mij 8 is. Het kan worden gewijzigd als je een betere op-amp hebt en/of het anders wilt.
Frequentiebanden en amplitudeschaling
De firmware verwerkt 16 banden in één beweging en de opnametiming produceert een scheiding van 500 Hz tussen deze banken. De LED-matrix bestaat uit 8 kolommen en geeft slechts 8 banden / amplitudes weer. In plaats van één per twee banden weer te geven, wordt een niet-lineaire frequentiebandlijst gebruikt om de meer dynamische frequentiebanden (in termen van muziek) te tonen. De lijst bevat hiaten van 500 Hz aan de lage kant, hiaten van 1 kHz in de middenbanden en 1,5 kHz-banden in de hoge tonen.
De amplitude van individuele banden wordt verkleind tot 8 niveaus, die worden weergegeven door het aantal horizontale 'dots' op het LED-matrixdisplay. De amplitudeniveaus worden verkleind via een niet-lineaire kaart die FFT-resultaten vertaalt naar een van de 8 stippen. Er wordt een soort logaritmische schaling gebruikt omdat deze het beste onze perceptie van geluidsniveaus weergeeft.
Er is ingebouwde AGC-logica en de spectrumanalysator zal proberen de amplitudeniveaus te verlagen wanneer er meerdere piekniveaus zijn gedetecteerd in de vorige cycli. Dit doe je met een schuifliniaal vergelijkingstabel.
Stap 6: Het apparaat bedienen
- Door kort op de toets te drukken in de weergavemodus bladert u door de weergave zonder stip, één stip, 2 stippen en 3 stippen.
- Lang indrukken gaat naar de instellingsmodus, daarna lang indrukken draait door het menu.
- Menu-items doorlopen 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
- In de instelmodus 'Hamming Window', kort indrukken door niet hamming, hamming 1, hamming 2, hamming 3, lang indrukken bevestigt de instelling.
- In de instelmodus 'Dimmer' schakelt kort indrukken door de beschikbare helderheidsniveaus van 0 tot 3, lang indrukken bevestigt de instelling.
- In de instelmodus 'Sampling/Vernieuwingsfrequentie' schakelt kort indrukken door de beschikbare verversingsfrequenties van 0 tot 7, 0 betekent geen vertraging, lang indrukken bevestigt de instelling.
- Led-segment multiplexing omvat tijdvertragingen om helderheidsverschillen voor individuele rijen te compenseren.
Aanbevolen:
Zelfgemaakte breadboard met paperclips: 16 stappen
Zelfgemaakte breadboard met paperclips: we maken een zelfgemaakte breadboard met paperclips die in karton zijn gestoken. Vervolgens gebruiken we paperclips om onze elektronische componenten aan te sluiten op de papercliprails. We noemen dit paperclip-crimpen. Solderen is nooit nodig! Dit zijn ZEER STERKE VERBINDINGEN!En
Rugzak #4: Breadboard: 8 stappen
Rugzak #4: Breadboard: SPIKE Prime Rugzakken zijn uitbreidingen voor LEGO Education SPIKE Prime. Met deze rugzak kun je je SPIKE Prime verbinden met LED's, knoppen, schakelaars en joysticks om prototypes te maken om SPIKE Prime te besturen. We hebben ook een camerarugzak waarmee je
Pocket ZX (Handheld ZX-spectrum): 10 stappen
Pocket ZX (Handheld ZX Spectrum): ik ben een kind van de jaren 80 en heb goede herinneringen aan de 8-bits computers uit die tijd. Mijn eerste computer - een die een speciaal plekje in mijn hart heeft - was een Sinclair ZX Spectrum 48K. Na onlangs een aantal gemeenschappen te hebben ontdekt die gericht zijn op oudere computers
MSP430 DIP programmeren met een Ez430: 4 stappen
MSP430 DIP programmeren met een Ez430: Toen ik TI's ez430 USB-programmeur vond, leek het een van de gemakkelijkere methoden om met een MCU aan de slag te gaan. Hoe kan ik het mis hebben, het heeft ez in de naam! Het blijkt dat het in feite eenvoudig is … meestal. De ez430 is geweldig als je wilt
Bling Out Your Breadboard (hoe u een LED-stroomindicator toevoegt aan Solarbotics Transparant Breadboard): 7 stappen
Bling Out Your Breadboard (hoe voeg je een LED-stroomindicator toe aan Solarbotics Transparant Breadboard): Deze transparante breadboards lijken veel op elk ander elektronisch breadboard, maar ze zijn duidelijk! Dus, wat kun je doen met een duidelijk breadboard? Ik denk dat het voor de hand liggende antwoord is om power-LED's toe te voegen