Índice:

MSP430 Breadboard Audio Spectrum Analyzer: 6 etapas
MSP430 Breadboard Audio Spectrum Analyzer: 6 etapas

Vídeo: MSP430 Breadboard Audio Spectrum Analyzer: 6 etapas

Vídeo: MSP430 Breadboard Audio Spectrum Analyzer: 6 etapas
Vídeo: MSP430 Breadboard Audio Spectrum Analyser 2024, Dezembro
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Este projeto é baseado em microfone e requer componentes externos mínimos. 2 x células de moeda LR44 são usadas para que eu possa ter toda a estrutura trabalhando nos limites de uma mini placa de ensaio de 170 pontos de amarração. ADC10, TimerA interrupção LPM wake-up, TimerA PWM como saída, uso de botão, aritmética inteira são usados e demonstrados.

Recursos

  • Amostras FFT 16 inteiras de 8 bits na separação de 500 Hz
  • mostra 8 amplitudes de 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K não linear
  • mapa de logaritmo parcial para mostrar amplitudes, limitado porque a resolução foi reduzida para FFT de 8 bits
  • TLC272 amplifica o microfone de um estágio com ganho 100x vezes 100x (você pode experimentar com 2 estágios)
  • janela Hamming opcional selecionável no menu
  • menu ajustar 4 níveis de brilho
  • menu ajustar 8 níveis de taxa de amostragem / tempo de resposta
  • 2 x célula moeda LR44 alimentada "a bordo"

Etapa 1: adquirir peças

A seguir estão o que é necessário para este projeto

  • MSP430G2452 (o chip extra do TI Launchpad G2 ou qualquer MCU da série 4K 20 pinos MSP430G)
  • um mini breadboard de 170 pontos de amarração ou perfboard para construção de pré-amplificadora
  • TLC272 amplificador operacional duplo
  • mini microfone de eletreto
  • 47k (pull-up), 100k, 2 x 10k, resistores 1k
  • 1 x 0,1uF
  • fios de ligação
  • Cabeçalho de pino macho de duas carreiras para ser usado como suporte de bateria
  • 2 baterias de célula tipo moeda LR44

Etapa 2: planejar o layout dos componentes

O projeto será construído em uma mini breadboard com 170 pontos de amarração. O layout dos componentes é mostrado abaixo. Uma nota especial é que a matriz de 8x8 LED deve ser colocada na parte superior do MCU MSP430. Além dos componentes, há também fios de jumper de conexão representados pelos caracteres "+ ------ +".

G V + Gnd (layout de 1 estágio) ESTAMOS USANDO ESTE LAYOUT + ======================================== ================= + c0 ………… c7 | MICROFONE……. + ----- + + - +…. | r0 o o o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o 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 e r1 compartilham o mesmo pino e não mostram | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | * aplicação possível para ter c6 + c0 + r1 | | | V + | | | G b6 b7 T R a7 a6 b5 b4 b3 | | isso vai liberar b6 para o relógio xtal de 32 kHz | | | 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 Botão ADC + ----------------- +

estamos usando apenas um estágio do TLC272

Etapa 3: Montagem

conjunto
conjunto
conjunto
conjunto

Você pode começar a colocar componentes com base no layout da placa de ensaio. Como é arte ASCII, pode não ser muito claro. Você pode emparelhar com as fotos nesta etapa para identificar todas as conexões.

Deve-se tomar cuidado ao posicionar os chips IC. Geralmente, há um ponto em um dos cantos para indicar o pino 1 de um dispositivo.

Eu tinha usado fios de cabo Ethernet CAT5 e eles são muito fáceis de trabalhar em projetos de protoboard. Se você tiver cabos CAT5 antigos, pode cortá-lo e descobrir que há 6 fios trançados dentro. Eles são perfeitos para placas de ensaio.

Etapa 4: compilar e carregar o firmware

O código-fonte geralmente reside em meus repositórios github.

Para este projeto específico, o único arquivo de origem C nfft.c está incluído no meu repositório de coleções de breadboard. Você só precisa de nfft.c

Estou usando o mps430-gcc para compilar o firmware, mas deve funcionar bem com o TI CCS. Você pode evitar todos os problemas de instalação de IDEs ou compiladores indo para a nuvem TI CCS, que é um IDE baseado na web. Ele vai até baixar o firmware para o seu dispositivo de destino.

Este é um exemplo de comando de compilação com opções

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

Estou usando um TI Launchpad G2 como programador para programar o MCU.

Etapa 5: entender o circuito

Entenda o circuito
Entenda o circuito
Entenda o circuito
Entenda o circuito

O esquema do circuito é apresentado abaixo

MSP430G2452 ou similar, precisa de 4K Flash TLC272 Dual Op-Amp, GBW @ 1,7Mhz, ganho @ x100, largura de banda de até 17Khz

* estamos usando apenas um estágio do TLC272

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1 - + | | | | | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | + -1 | ----. Vcc | 8- + | | | | | | | ^.--- | 7 | | 16- + | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _ + / / / | | / | --- (consulte o layout da placa de ensaio) |.1u | | | | | / _ + / | | / | ------_ + - || --- | - [1k] - + - 2 | --- + | | | | | 15 GPIO | | | | + ---------- 3 | ----- + + - | - | 6 | P1.1-P1.7 | | 8x8 | | | + -4 | Gnd + - | 5 | P2.0-P2.7 | | LED | | + | | --------------- | | | matriz | ((O)) |. | | / | | _ | | MIC | | 10k | + -20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

LED de direção

A matriz de LED é de 8 x 8 elementos. Eles são acionados por 15 pinos GPIO. Eles são multiplexados com 8 linhas e esquema de 8 colunas. Como existem apenas 15 pinos após usarmos 1 pino para a entrada ADC, a multiplexação tem a linha 1 e a coluna 0 compartilhando um único pino. Isso significa que o LED específico na linha 1 e coluna 0 não pode ser aceso. Isso é um compromisso, pois simplesmente não há pinos GPIO suficientes para acionar todos os elementos de LED.

Captura de Som

O som é capturado por meio do microfone condensador integrado no Educational BoosterPack. Como os sinais do microfone são pequenos, precisamos amplificá-los para um nível que o msp430 ADC10 possa usar com uma resolução razoável. Eu tinha usado um amplificador op-amp de dois estágios para esse propósito.

O amplificador op-amp consiste em dois estágios, cada um com um ganho de cerca de 100x. Tive que adotar o TLC272 pois também é uma peça muito comum e funciona c / 3V. O ganho de largura de banda sendo de cerca de 1,7 MHz significa que para nosso ganho de 100x, podemos apenas garantir que funcionaria bem (ou seja, manter o ganho que desejamos) abaixo de 17 KHz. (1,7 MHz / 100).

Originalmente, eu pretendia fazer este analisador de espectro medir até 16-20 KHz, mas no final eu descobri que cerca de 8 KHz é bom o suficiente para mostrar música. Isso pode ser alterado substituindo o LM358 por algo com classificação de áudio e alterando a taxa de amostragem. Basta olhar para a largura de banda de ganho dos amplificadores operacionais que você escolher.

Amostragem e FFT

A função FFT utilizada é o código "fix_fft.c" que muitos projetos adotaram, e que já circula na internet há alguns anos. Eu tentei uma versão de 16 bits e uma versão de 8 bits. Eventualmente, eu me conformei com a versão de 8 bits para o meu propósito, não vi um grande avanço na versão de 16 bits.

Não tenho um bom conhecimento do mecanismo FFT, exceto que é um domínio do tempo para a conversão do domínio da frequência. Isso significa que a taxa (tempo) das amostras de som, após alimentar a função de cálculo FFT, afetará a frequência da amplitude que estou obtendo como resultado. Portanto, ao ajustar a taxa para o som da amostra, posso determinar a banda de frequência como resultado.

TimerA 0 CCR0 é usado para manter o tempo de amostragem. Primeiro determinamos as contagens de que precisamos para atingir a frequência da banda (corresponde à nossa taxa de clock DCO de 16Mhz). isto é, TA0CCR0 definido para (8000 / (BAND_FREQ_KHZ * 2)) - 1; onde BAND_FREQ_KHZ é 8 para mim. Ele pode ser alterado se você tiver um amplificador operacional melhor e / ou quiser que seja diferente.

Faixas de frequência e escala de amplitude

O firmware processa 16 bandas em uma varredura e o tempo de captura produz uma separação de 500 Hz entre esses bancos. A matriz de LED é de 8 colunas e exibirá apenas 8 bandas / amplitudes. Em vez de exibir uma a cada duas bandas, uma lista de bandas de frequência não linear é usada para mostrar as bandas de frequência mais dinâmicas (em termos de música). A lista é de intervalos de 500 Hz na extremidade inferior, intervalos de 1 KHz nas bandas médias e bandas de 1,5 KHz nos agudos.

A amplitude das bandas individuais é reduzida a 8 níveis, que são representados pelo número de 'pontos' horizontais no display de matriz de LED. Os níveis de amplitude são reduzidos por meio de um mapa não linear que traduz os resultados FFT em um dos 8 pontos. Uma espécie de escala logarítmica é usada porque representa melhor nossa percepção dos níveis de som.

Há uma lógica AGC embutida e o analisador de espectro tentará reduzir os níveis de amplitude quando houver vários níveis de pico detectados nos ciclos anteriores. Isso é feito com uma tabela de comparação de régua deslizante.

Etapa 6: operar o dispositivo

  • Pressionar brevemente a tecla no modo de exibição muda através da exibição de nenhum ponto, um ponto, 2 pontos e 3 pontos.
  • O pressionamento longo entra no modo de configuração, o pressionamento longo subsequente gira através do menu.
  • Os itens do menu passam por 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • No modo de configuração 'Janela de Hamming', pressionamentos curtos percorrem sem hamming, hamming 1, hamming 2, hamming 3, pressionamento longo confirma a configuração.
  • No modo de configuração 'Dimmer', pressionamentos curtos alternam os níveis de brilho disponíveis de 0 a 3, pressionamentos longos confirmam a configuração.
  • No modo de configuração 'Taxa de amostragem / atualização', pressionamentos curtos percorrem as taxas de atualização disponíveis de 0 a 7, 0 significa nenhum atraso, pressionamento longo confirma a configuração.
  • A multiplexação de segmento de LED inclui atrasos de tempo para compensar as diferenças de brilho em linhas individuais.

Recomendado: