Função setup()
Qua Set 28, 2022 1:10 am
Espaço para descrever os pinos, conexões e configuração de bibliotecas e o setup do hardware
Re: Função setup()
Dom Out 02, 2022 10:47 pm
Para fazer a bobina reproduzir sons a estratégia usada será a utilização de um pino PWM modificado para operar em uma frequencia acima da perceptível pelo ouvido humano.
Daí a entrada de audio é conectada na entrada analógica e as amostras coletadas são escritas no pino PWM
Essa técnica de amostragem por amplitude e convertida para PWM é chamada de PAM (pulse amplitude modulation), ou modulação por amplitude de pulso.
https://pt.lambdageeks.com/pulse-amplitude-modulation-pam/
Para alterar a frequencia do pino PWM precisa mudar um registrador interno que faz a divisão de frequencia do clock do processador, abaixo a descrição de como funciona
A frequencia do PWM no arduino são:
- 1KHz nos pinos 5 e 6
- 500 Hz nos pinos 3,9,10,11
A frequencia do PWM de cada pino é controlado por um dos três temporizadores internos do microcontrolador ATmega328.
O valor de cada temporizador pode ser trocado via programação na interface IDE do arduino. mas como disse o Wiechert, isto afetará outras funções que usam esses temporizadores.
Abaixo segue tabela da configuração dos temporizadores:
Temporizador Arduino codigo divisor Frquencia
0(pino 5 e 6 ) 0X01 1 62500
0(pino 5 e 6 ) 0X02 8 7812.5
0(pino 5 e 6 ) 0X03 64 976.56
0(pino 5 e 6 ) 0X04 256 244.14
0(pino 5 e 6 ) 0X05 1024 61.04
1(pino 9 e 10 ) 0X01 1 31250
1(pino 9 e 10 ) 0X02 8 3906.25
1(pino 9 e 10 ) 0X03 64 488.28
1(pino 9 e 10 ) 0X04 256 122.07
1(pino 9 e 10 ) 0X05 1024 30.52
2(pino 3 e 11 ) 0X01 1 31250
2(pino 3 e 11 ) 0X02 8 3906.25
2(pino 3 e 11 ) 0X03 32 976.56
2(pino 3 e 11 ) 0X04 64 488.28
2(pino 3 e 11 ) 0X05 128 244.14
2(pino 3 e 11 ) 0X06 256 122.07
2(pino 3 e 11 ) 0X07 1024 30.52
Exemplo:
Modificar frequencia PWM do pino 3 e 11 para 4KHz acrescentar o linha:
void setup() {
TCCR2B = TCCR2B & 0b11111000 | 0x02;
}
Resumo dos temporizadores:
TCCR0B = TCCR0B & 0b11111000 |; //Temporizador 0 (PWM pinos 5 & 6)
TCCR1B = TCCR1B & 0b11111000 |; //temporizador 1 (PWM pinos 9 & 10)
TCCR2B = TCCR2B & 0b11111000 |; //temporizador 2 (PWM pinos 3 & 11)
Daí a entrada de audio é conectada na entrada analógica e as amostras coletadas são escritas no pino PWM
Essa técnica de amostragem por amplitude e convertida para PWM é chamada de PAM (pulse amplitude modulation), ou modulação por amplitude de pulso.
https://pt.lambdageeks.com/pulse-amplitude-modulation-pam/
Para alterar a frequencia do pino PWM precisa mudar um registrador interno que faz a divisão de frequencia do clock do processador, abaixo a descrição de como funciona
A frequencia do PWM no arduino são:
- 1KHz nos pinos 5 e 6
- 500 Hz nos pinos 3,9,10,11
A frequencia do PWM de cada pino é controlado por um dos três temporizadores internos do microcontrolador ATmega328.
O valor de cada temporizador pode ser trocado via programação na interface IDE do arduino. mas como disse o Wiechert, isto afetará outras funções que usam esses temporizadores.
Abaixo segue tabela da configuração dos temporizadores:
Temporizador Arduino codigo divisor Frquencia
0(pino 5 e 6 ) 0X01 1 62500
0(pino 5 e 6 ) 0X02 8 7812.5
0(pino 5 e 6 ) 0X03 64 976.56
0(pino 5 e 6 ) 0X04 256 244.14
0(pino 5 e 6 ) 0X05 1024 61.04
1(pino 9 e 10 ) 0X01 1 31250
1(pino 9 e 10 ) 0X02 8 3906.25
1(pino 9 e 10 ) 0X03 64 488.28
1(pino 9 e 10 ) 0X04 256 122.07
1(pino 9 e 10 ) 0X05 1024 30.52
2(pino 3 e 11 ) 0X01 1 31250
2(pino 3 e 11 ) 0X02 8 3906.25
2(pino 3 e 11 ) 0X03 32 976.56
2(pino 3 e 11 ) 0X04 64 488.28
2(pino 3 e 11 ) 0X05 128 244.14
2(pino 3 e 11 ) 0X06 256 122.07
2(pino 3 e 11 ) 0X07 1024 30.52
Exemplo:
Modificar frequencia PWM do pino 3 e 11 para 4KHz acrescentar o linha:
void setup() {
TCCR2B = TCCR2B & 0b11111000 | 0x02;
}
Resumo dos temporizadores:
TCCR0B = TCCR0B & 0b11111000 |
TCCR1B = TCCR1B & 0b11111000 |
TCCR2B = TCCR2B & 0b11111000 |
Permissões neste sub-fórum
Não podes responder a tópicos
|
|