Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Função setup() Empty 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
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Função setup() Empty 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)
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos