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

1

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

1

14 comments

  1. 0

    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. 0

      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

  2. 0

    olá Claudio boa noite .estou com uma dificuldade em obter um determinado efeito neste projeto . o nome do efeito chama-se small room aprox 0.5seg reverb decay. é possivel obter esse efeito . abraços

    1. 0

      Olá Marcos!
      Infelizmente não conheço este efeito para poder te responder se é ou não possível. Muitos efeitos envolvem mais do que simplesmente atrasar um sinal. Procure algum circuito específico para gerar o efeito desejado. O pessoal que mexe com pedais de guitarras não teria um esquema pronto para você?
      Cláudio

  3. 0

    b.dia Claudio 2 coisa que percebi na montagem ,saída de áudio esta no pino 17 e não no 16 do pic e ,tem como resolver a saída de áudio que não sai em tempo real com o efeito. ex:fala depois que sai o som.abraços

    1. 0

      Olá Marcos!
      Obrigado por seu comentário. Você montou o circuito e percebeu que a saída de som correta é o pino 17, é isto? Eu não entendi bem o que você quis dizer com ” não sai em tempo real com o efeito”.
      O áudio entra no pino 10, é amostrado e convertido em digital, vai para a memória, para posteriormente se lido com atraso, e convertido em som indo para o pino de saída (17?). O som normal esta na entrada do pino 10 e o atraso no pino de saída (17?). Poderia, por gentileza, explicar qual é o ponto que não estou entendendo?

      Cláudio

      1. 0

        isso Claudio pino 17 é a saída de áudio .quando digo em tempo real ,seria a voz sair praticamente ao mesmo tempo na saída quando entra a voz . pois o que esta acontecendo é que ao falar o som demora para sair no pino 17 ou será que esse funcionamento é normal. abraços

        1. 0

          Olá Marcos!
          Os potenciômetros ligados ao pino 9 do pic é para justamente controlar este tempo de atraso. Você ajustou estes potenciômetros para obter o tempo de atraso desejado? (Veja o vídeo caseiro junto ao artigo)
          Cláudio

    1. 0

      Olá Marcos!
      Pelo datasheet da HY62256 nota-se que tem pinagens iguais e mesma capacidade e tipo, apenas de fabricante diferente. Assim, deverá funcionar perfeitamente.
      Cláudio

    1. 0

      Olá Valter! Realmente é uma memória já antiga. Mas ainda se encontra a venda os equivalentes como: UT61256, KM62256C, HM62256A, UM61256, UPD43256B, etc.
      Cláudio

  4. 0

    Caro Lários. Fiquei muito feliz em ver esse projeto, justo o que eu queria, a tempos que eu queria fazer testes com DELAY digital, mas que fosse um circuito simples e com PIC.E caiu feito uma luva pois tenho o PIC que você usou e a memória, só testar agora. A propósito as vezes fico com dúvida de perguntar algo e estar perguntando no lugar errado do Blog. há um lugar neutro de postar pergunta ou comentário? que não seja sobre o projeto em pauta? foi o caso que perguntei sobre o DSP, mas no último projeto publicado que era da Ponta de Prova. Mais uma vez obrigado.

    1. 0

      Olá Marcustito!
      Se você desejar, poderá dar alguma sugestão ou tirar alguma dúvida de assuntos não publicados acessando o Forum, por iniciar um novo tópico, ou usar a pagina ‘Sugestões & Dúvidas’ encontrada na caixa de pesquisa por ‘CATEGORIAS’, enviando um comentário nela . Não que eu realmente me importe com comentários diferentes do assunto, mas fica muito mais fácil para o leitores acompanharem o tema se ele estiver junto ao artigo. As vezes eu mesmo tenho esta dificuldade, quando publico um artigo e não lembro mais quem sugeriu, pois o comentário está em algum lugar entre os centenas de artigos publicados.
      Cláudio

Comments are closed.