ARDUINO
NANO = ANALISADOR DE ESPECTRO DE AUDIO
ARDUINO
NANO = AUDIO SPECTRUM ANALYZER

Foto : Espectro do receptor do FT7, recebendo sinais (ruido
branco),
em CW, escala de 0 a 4,5kHz. Note a presença de sinais em torno
de 800Hz.
A esquerda o mesmo sinal com uso de um PC + software de audio espectro,
de 0 a 4,5kHz.
Mais um equipamento de medições para uso em radio, usando
o Arduino.
Este analisador é bem simples e não requer muitos
componentes, a maioria que monta este tipo de aparelho, é para
ver o espectro
dançar ouvindo musica. Nosso uso é outro.
Como dá para ver na foto ou nos videos (link abaixo), o
resultado é muito interessante.
É possivel ver a banda passante do nosso radio ou até
ajustar a banda passante de um QRP, ou ainda visualizar a reposta de um
filtro ladder recem montado.
Este projeto foi baseado nestes links :
Arduino
real time spectrum analyzer with TV out
Arduino
forum
Arquivo rar do sketch e biblioteca :
Arduino Audio Spectrum Analyzer Sketch and
library spectro.rar
Funcionamento :
O sinal de entrada passa por um amplificador simples com um transistor
comum com 3 resistores, 3 capacitores eletroliticos e um potenciometro,
para que o arduino possa ter um nivel mais alto de tensão.
O sinal de entrada é dividido em amostras de tensão e
submetido a um calculo matematico onde se consegue extrair as
frequencias dos sinais.
Os 4,5Khz são dvididos em 64 segmentos de 70,3Hz (aprox), como o
meu display tem 180 pixels na horizontal eu fui obrigado a fazer apenas
duas barras para cada frequencia, usando 128 pixels. Na vertical este
display tem 128 pixels e eu usei todos eles.
É possivel alterar o software, de tal forma a mudar de cor, de
500 em 500 Hz ou menos, assim identificar melhor as
medições.
Resultado :
Nos testes com radios ou visualizando filtros o resultado foi muito bom.
No teste com gerador de funções, com onda senoidal
o resultado foi bom até 4,5kHz, acima disto o calculo
matematico destas frequencias se sobrepõe a frequencias
mais baixas (acumula valores em celulas de frequencias mais baixas),
ficando inviavel o uso para observar frequencias acima de 4,5kHz.
Para observar musica até funciona, mas o que esta na tela
não será o real.
Esquema :

VIDEO :
ANALISADOR E GERADOR DE SINAIS
VIDEO: ANALISADOR
MEDINDO RADIO FT7 CW E SSB
Fotos da montagem :

Foto: Arduino montado em uma PCB padrão com soquete.

Foto: lado inferior da placa, montagem rapida.

Foto: Outra vista da parte superior.

Foto:
montagem com soquetes tipo sandwich.

Foto :
Amplificador de audio montado em uma placa (15x25mm) com ilhas .
SKETCH :
++++++++++++++++++++++++++++
#include <fix_fft.h>
char im[128], data[128] ;
int i = 0, val;
#include <TFT.h>
#include <SPI.h>
#define cs 10
#define dc 8
#define rst 9
int x0 = 0;
int x1 = 0;
int y1 = 0;
TFT TFTscreen = TFT(cs, dc, rst);
int alt; //altura do diplay automatica
int larg; // largura do display automatica
void setup()
{
TFTscreen.begin();
TFTscreen.background(0, 0, 0);
alt = TFTscreen.height();
larg = TFTscreen.width();
}
void loop()
{
x0++;
if (x0 == 100) {
TFTscreen.background(0, 0, 0); //executa 100 vezes
depois limpa
x0 = 0;
}
TFTscreen.stroke(0, 255, 255);
for (i = 1; i < 128; i++) {
val = analogRead(5);
data[i] = val / 4 - 128;
im[i] = 0;
}
fix_fft(data, im, 7, 0);
for (i = 1; i < 64; i++) {
data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);
x1 = i;
y1 = 5 * data[i];
if (y1 > 126) y1 = 126;
// TFTscreen.line(x1, alt, x1, alt - y1);// Uma
coluna
TFTscreen.line(2 * x1, alt, 2 * x1, alt - y1);
TFTscreen.line (2 * x1 - 1, alt, 2 * x1 - 1, alt -
y1); // duas colucas
// TFTscreen.line(3*x1-2, alt, 3*x1-2, alt -
y1);
// TFTscreen.line (3*x1-1, alt, 3*x1-1, alt -
y1);
// TFTscreen.line (3*x1, alt, 3*x1, alt -
y1);// tres colunas
// TFTscreen.line(1, 2* x1, y1, 2*x1);//128x160
invertendo eixos
// TFTscreen.line(1, 2* x1 -1, y1, 2*x1-1);//128x160
invertendo eixos
}
}
++++++++++++++++++++++++++++++
73 de py2ohh miguel
Aug/2018