OBTENDO EFEITO REVERB/ECO – COM PIC 16F877A E RAM IS61C256AH (REF170)

O uso do efeito reverb/eco nas musicas tem sido uma constante. Como reproduzir estes efeitos usando um microcontrolador?

Primeiramente, devemos deixar claro que o objetivo desta montagem não se destina a obter algum tipo sofisticado de equipamento para uso em gravações musicais, mas unicamente um sistema simples, didático, de geração de delays sonoros com uso de microcontroladores. Temos apenas o básico para gerar e controlar o efeito, em forma de uma experiência caseira. Logicamente, poderá servir de base para alguma montagem mais apurada, como por exemplo, um pedal de delays, desde que se acrescente circuitos adicionais na entrada e saída, os quais não serão tratados neste artigo.
Veja o esquema proposto abaixo:

Vamos agora obter resposta a algumas perguntas quanto ao circuito:

O que é reverberação?
É quando um som é refletido por um objeto (ex.paredes de uma sala) e retorna até nós com um pequeno atraso, na escala de milissegundos. Não conseguimos diferenciar o som emitido do refletido, mas ocorre uma sensação sonora peculiar a quem ouve.
Ex. Entre numa sala grande que esteja vazia e comece a conversar com alguém. Notará um efeito diferente gerado pela reflexão dos sons nas paredes.

O que é eco?
É quando um som é refletido por um objeto situado a uma distância maior e retorna até nós com um grande atraso, e conseguimos diferenciar o som emitido do recebido.
ex. Grite brevemente em direção a um objeto grande (prédio, montanha) situada a mais de 17 metros. Notará um ‘eco’ .

Porque usar um PIC de 40 pinos?
Pelo motivo que favorece a ligação direta com os pinos da memória RAM IS61C256AH. Se fosse usado um microcontrolador com poucas portas, seria necessário usar outros circuitos integrados para multiplexar os endereços e dados, complicando ainda mais a montagem.

Porque usar uma memória externa nesta montagem?
Se usássemos apenas a memória RAM interna do PIC, esta seria insuficiente para gerar os tempos de retardo pretendidos. Com esta memória externa de 32kbytes, podemos obter tempos de atraso relativamente grande. O calculo para obter este valor é feito dividindo o tamanho da memória (em bytes) pela frequência de amostragem, a qual será igual a frequência de trabalho do PWM (no nosso caso será 19,53 khz). O tempo máximo será então:

32768/19530 = 1,67 segundos (tempo de delay máximo)

Como funciona o processo de obtenção de delays?
O som proveniente de uma fonte sonora, como um aparelho de som,é convertido seu nível de tensão em um valor digital, e gravamos a primeira posição da RAM (endereço 0x0000). A próxima amostragem é salva na próxima posição (0x0001) e assim sucessivamente, até chegar ao limite de 32768 bytes. Após isto, começa a sobrescrever o endereço 0x0000, depois o 0x0001 em laço continuo. Podemos afirmar que sempre temos na RAM uma porção de som dos últimos 1,67 segundos.
O que aconteceria se lêssemos a partir da RAM, a ultima amostragem gravada e a colocássemos no PWM para gerar o som?
Ouviríamos o som sem atrasos (ou imperceptível aos ouvidos).
E se agora lêssemos a partir da RAM o endereço de 100 amostragens antes da ultima que foi gravada? Ouviríamos um som de 100 amostragens atrasadas. Seria o tempo de:

1/19530 x 100 = 5,1 milissegundos de atraso

Vemos portanto que aumentando a diferença do endereço em que foi gravado a ultima amostragem da que vai ser lida, aumentamos o delay (respeitando o limite de 32768 bytes).

Como obtemos este valor para dar a diferença desejada?
Usamos os potenciômetros de ajustes de delay (em cascata). Medimos a tensão resultante destes e convertemos em valores de 8 bits com ajuda do conversor analógico/digital interno. O endereço que será reproduzido é obtido pela soma do contador de endereço para gravação com o valor obtido dos potenciômetros de delay.
Por ex.
contador de gravação= 0x0780 ;
potenciômetro = 0x03ff
contador de leitura= 0x0780 + 0x03ff = 0xb7f
(gravando no endereço 0x0780 e lendo no endereço 0x0b7f)

Para testes, usei como fonte de sinal sonoro, um rádio sintonizado em uma emissora qualquer. Liguei os fios no próprio alto falante, com um potenciômetro atenuador. Ele deve ser ajustado para o mínimo de distorção para o volume usado no rádio.
Na saída da montagem usei um amplificador integrado LM386, por ser fácil de montar no protoboard, usando poucos componentes. Liguei um alto falante adicional na sua saída. Qualquer amplificador poderá ser usado no lugar. Em caso de dúvidas na ligação, inclui um esquema de montagem que foi usado por mim nesta experiência, estando anexo na pasta fornecida abaixo.
O circuito deve ser alimentado com 5 volts contínuos e bem regulados. Poderá usar uma fonte de celular (5 volts) ou um transformador de 110/9 a 12 volts, retificadores, capacitores de filtro e um regulador 7805.
Após ligar a alimentação, ligue a fonte sonora, aumentando o volume da fonte de som e do amplificador, ao nível confortável, e em seguida ajuste o potenciômetro atenuador para produzir um som da melhor qualidade possível (lembrando que a conversão é limitada, de 8 bits apenas). Ajuste os potenciômetros de delay para obter o reverb/eco no som reproduzido no amplificador ligado a saída da montagem. Os ajustes demoram um certo tempo para serem observados, devendo ajustar um pouco e esperar o resultado do ajuste. O potenciômetro nomeado de ‘limite’ permite ajustar o limite máximo de tempo para o outro potenciômetro.

Caso deseje, poderá ver um vídeo caseiro com o funcionamento do circuito em placa experimental clicando aqui.

Obs. Esta montagem foi feita apenas em placa de protoboard, sujeita a bugs ainda não observados. Esta sendo fornecido os arquivos que poderão ser modificados segundo a necessidade do hobista.

Segue a pasta com os arquivos desta montagem:

ECO_PIC_

Manuais:

PIC16F877a
IS61C256AH
REVERBERAÇÃO
ECO

Outros assuntos:
Perguntas que valem a pena ser feitas
O bigode do gato
Você faz bom uso da tecnologia digital?
Como lidar com a solidão
O que aconteceu com a disciplina?
O que eu preciso saber sobre jogos eletrônicos?
Sol e ar fresco — são “antibióticos” naturais?
A impressionante audição da traça-da-cera

Videos Infantis:
Aprenda a perdoar
Seja limpo e organizado
Divida suas coisas com outros
Dar de coração traz alegria
Seja esperto: saiba usar as redes sociais

Dicas para promover bons relacionamentos:
Como ter um bom relacionamento com os sogros
Valores práticos para qualquer pessoa em qualquer época — honestidade
Como controlar um temperamento explosivo

14 comments on “OBTENDO EFEITO REVERB/ECO – COM PIC 16F877A E RAM IS61C256AH (REF170)

  1. Boa noite ao colega Larios,gostaria de saber se tem como converter um sinal analógico de audio em digital em temporeal e um outro PIC recebe o sinaldigital e converte em analógico ?

    1. Olá Maurício!
      Existe sim. Pode ser usado um pic com conversor/analógico para digital, para converter o som na entrada deste para níveis digitais, sendo então enviado para outro pic onde seria convertido de digital para analógico, usando o método com rede R_2R ou PWM. Visto que os pic da série 16 tem frequência de trabalho máxima de 20 Mhz, o envio de um pic para outro deve ser feito preferencialmente por um port inteiro, de forma paralela. Para envios seriais e alta taxa de amostragem, deverá usar um DSpic ou outro microcontrolador mais potente, que não é mais minha área.
      Cláudio

Comments are closed.

Back To Top