1
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
ENGENHARIA ELÉTRICA
Leandro Fernando Mendes
Rafael Lopes Goularte
PEDALEIRA MULTI-EFEITOS PARA GUITARRA
COM PROCESSAMENTO DIGITAL DE SINAIS
Curitiba, 2009
2
Leandro Fernando Mendes
Rafael Lopes Goularte
PEDALEIRA MULTI-EFEITOS PARA GUITARRA
COM PROCESSAMENTO DIGITAL DE SINAIS
Monografia apresentada à disciplina de
Trabalho de Conclusão de Curso como
requisito parcial à conclusão do Curso
de Engenharia Elétrica, orientada pelo
Prof. Anselmo Rodrigues.
Curitiba, 2009
3
DEDICATÓRIA
Primeiramente, agradecemos a DEUS pela oportunidade e pelo privilégio que nos
foram dados em compartilhar tamanha experiência e, ao freqüentar este curso,
perceber e atentar para a relevância de temas que não faziam parte, em profundidade,
das nossas vidas.
Obrigado mestres! Por vossa grande competência em ensinar, passar trabalhos, cobrar
prazos e finalmente por contar ótimas piadas e nos fazer sorrir quando necessário.
Particularmente ao Prof. Anselmo Rodrigues Junior, por sua vocação inequívoca com a
área técnica, por seu senso de humor entusiástico, por não poupar esforços como
interlocutor dos alunos e por suprir eventuais falhas e lacunas.
Agradecemos a todos os nossos colegas de turma, em especial ao Moacir Lourenço,
que de maneira direta ou indireta nos ajudaram a atingir objetivos acadêmicos,
pessoais e profissionais. Agradecemos também ao amigo e colega Thiago Righetto por
nos emprestar sua guitarra ao longo de 10 meses para testes e ajustes no projeto.
Leandro Fernando Mendes / Rafael Lopes Goularte
Agradeço aos meus pais Aércio e Maria, e irmãos por todo o apoio moral, financeiro e
afetivo que foi desprendido durante todo o curso.
Também manifesto minha gratidão à minha namorada Bárbara pelo carinho, paciência,
motivação e transmissão de otimismo durante todas as etapas deste curso.
A todos os meus amigos que me apoiaram e que souberam entender minha ausência
nos momentos de descontração.
Leandro Fernando Mendes
Agradeço aos meus pais Cláudio e Nilva, por me trazerem ao mundo e me ensinarem a
superar as dificuldades, além de proverem toda a base para que eu conseguisse
chegar até este momento.
À minha esposa Camille por estar presente em todos os momentos, sempre me
apoiando e não me deixando jamais desistir. Obrigado por fazer parte da minha vida.
A todos os amigos que compreenderam minha ausência durante todo o curso, e
àqueles que me ajudaram com mensagens de otimismo e perseverança.
Rafael Lopes Goularte
4
EPÍGRAFE
"A melhor obra é aquela que se realiza sem a preocupação do esforço imediato;
e o mais glorioso esforço é aquele em que se põe as esperanças além do horizonte
visível."
José Henrique Rodó
"Engenheiros de verdade são aqueles que nunca se rendem e jamais desistem!"
Leandro Mendes e Rafael Goularte
5
SUMÁRIO
CAPÍTULO 1 – INTRODUÇÃO ..................................................................................... 10
1.1 Guitarra .................................................................................................................... 10
1.2 Histórico dos Efeitos ................................................................................................... 11
1.3 Pedal ....................................................................................................................... 12
1.4 Efeitos ..................................................................................................................... 13
1.4.1 Phaser................................................................................................................ 13
1.4.2 Compressor ......................................................................................................... 13
1.4.3 Overdrive e Distorção ............................................................................................ 14
1.4.4 Flanger ............................................................................................................... 14
1.4.5 Chorus ............................................................................................................... 15
1.4.6 Delay (Atraso) ...................................................................................................... 15
1.4.7 Reverberação (Reverb) .......................................................................................... 15
1.5 Som e Audição Humana .............................................................................................. 15
CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA ........................................................... 19
2.1 Processamento Digital de Sinais - DSP ........................................................................... 19
2.2 Processador Digital de Sinais ........................................................................................ 20
2.3 Arquitetura básica de um DSP ...................................................................................... 21
2.3.1 Compressão e Descompressão do Sinal .................................................................... 22
2.3.2 Filtros Digitais ...................................................................................................... 22
2.4 Efeitos ..................................................................................................................... 24
2.4.1 Delay (Atraso) ...................................................................................................... 24
2.4.2 Flanger ............................................................................................................... 26
2.4.3 Chorus ............................................................................................................... 27
2.4.4 Reverberação (Reverb) .......................................................................................... 29
2.4.5 Overdrive ............................................................................................................ 32
CAPÍTULO 3 – ESPECIFICAÇÃO TÉCNICA ............................................................... 34
3.1 Aquisição do Sinal ...................................................................................................... 34
3.2 Filtro Anti-aliasing ....................................................................................................... 35
3.2.1 Estabelecimento da largura de banda........................................................................ 36
3.2.2 Cálculo do filtro passa-baixa .................................................................................... 37
3.3 Bloco de Conversão A/D .............................................................................................. 38
3.4 Efeito Overdrive ......................................................................................................... 39
3.4 Efeito Delay .............................................................................................................. 41
3.4 Efeito Reverb ............................................................................................................ 42
3.5 Efeito Chorus ............................................................................................................ 44
3.6 Efeito Flanger ............................................................................................................ 45
3.7 Tratamento de Saída do Sinal ....................................................................................... 46
3.7.1 Conversão DAC ................................................................................................... 46
3.7.1 Zero Hold ............................................................................................................ 46
3.7.1 Filtro Smoothing ................................................................................................... 47
CAPÍTULO 4 – IMPLEMENTAÇÃO, TESTES E RESULTADOS ................................. 48
4.1 Execução e testes de Hardware .................................................................................... 48
4.1.1 Alimentação da PCI analógica ................................................................................. 48
4.1.2 Aquisição do sinal ................................................................................................. 48
6
4.1.2 Filtro Antialiasing .................................................................................................. 50
4.1.3 Polarização e configuração do PIC ........................................................................... 50
4.1.1 Alimentação da PCI digital ...................................................................................... 51
4.1.4 Polarização do Display Gráfico ................................................................................ 51
4.1.5 Polarização do oscilador ......................................................................................... 51
4.1.6 Botões e chaves ................................................................................................... 52
4.1.7 Circuito de Reset do dsPIC ..................................................................................... 53
4.1.8 Conversor DAC .................................................................................................... 53
4.1.9 Filtro smoothing .................................................................................................... 54
4.1.10 Zero Hold .......................................................................................................... 55
4.1.11 Montagem PCI ................................................................................................... 56
4.2 - Kit didático e sua interação com o Hardware .................................................................. 58
4.2.2 - Linguagem e compilador utilizados ......................................................................... 58
4.2.3 Função Main() – Função principal ............................................................................. 59
4.2.4 Função Timer1Int() – Função de estouro por Timer1 .................................................... 61
4.2.5 Utilização de Programas de Simulação; ..................................................................... 69
4.2.6 Configuração dos Timers utilizados; .......................................................................... 69
4.2.7 Utilização de sinais/valores de teste para os quais a resposta do programa é conhecida ...... 69
4.2.8 Ajuste de velocidades de interrupção por Timer ........................................................... 69
4.2.9 Limitações do projeto ............................................................................................. 70
4.3 Placas de Circuito Impresso (PCI) .................................................................................. 70
4.4 Custos do Projeto ....................................................................................................... 72
CAPÍTULO 5 – CONCLUSÃO ...................................................................................... 73
CAPÍTULO 6 – REFERÊNCIAS BIBLIOGRÁFICAS .................................................... 74
APÊNDICE A – CUSTOS DO PROJETO ..................................................................... 75
7
LISTA DE FIGURAS
1.1 – Guitarra................................................................................................................. 10
1.2 – Pedal marca Boss, efeito Overdrive – OD-3 ......................................................... 12
1.3 – Case BCB-60 marca Boss .................................................................................... 12
1.4 – Pedaleira Multi-efeitos Boss GT-10B .................................................................... 13
1.5 – Exemplo de níveis de saturação ........................................................................... 14
1.6 – Ouvido Humano .................................................................................................... 16
1.7 – Esquema representativo da audição humana ...................................................... 17
2.1 – Exemplo de Conversão e Processamento............................................................ 20
2.2 – Arquitetura do Processador Digital de Sinais Blackfin® da Analog Devices ........ 21
2.3 – Esquema básico de representação da filtragem de sinal ..................................... 23
2.4 – Esquema de Configuração básica de um filtro digital ........................................... 23
2.5 – Implementação de um Delay Digital com derivação única ................................... 25
2.6 – Delay com uma reflexão simples .......................................................................... 25
2.7 – O efeito “pente” e o espectro de freqüência do Flanger. ...................................... 26
2.8 – Implementação do efeito Flanger. ........................................................................ 27
2.9 – Implementação do efeito Chorus simulando dois instrumentos............................ 28
2.10 – Implementação do efeito Chorus simulando três instrumentos ...................... 28
2.11 – Armazenamento da tabela de onda LFO randômica de 4K ............................ 29
2.12 – Reverberação em espaços acústicos grandes ............................................... 30
2.13 – Resposta ao impulso para reverberações de um grande auditório................. 31
2.14 – Valores típicos de amplitude em função do comprimento do buffer ............... 31
2.15 – Estrutura do algoritmo de reverberação (J. A. Moorer)................................... 32
2.16 – Os dois tipos fundamentais de clipping .......................................................... 33
3.1 – Sinal analógico proveniente da guitarra................................................................ 34
3.2 – Os dois tipos fundamentais de clipping ................................................................ 35
3.3 – Circuito do Filtro Passa-Baixa .............................................................................. 38
3.4 – Amostragem ......................................................................................................... 38
3.5 – Fluxograma do efeito Overdrive ........................................................................... 40
3.6 – Sinal de entrada ................................................................................................... 40
3.7 – Sinal de Saída ...................................................................................................... 41
3.8 – Variações do Sinal de Saída ................................................................................ 41
3.9 – Buffer do efeito Delay ........................................................................................... 41
3.10 – Fluxograma do efeito delay ............................................................................ 42
3.11 – Fluxograma do efeito reverb ........................................................................... 43
3.12 – Resposta ao impulso e equação de diferenças do efeito reverb .................... 43
3.13 – Fluxograma do efeito chorus .......................................................................... 44
3.14 – Fluxograma do efeito flanger .......................................................................... 45
3.15 – Retorno do sinal à referência zero .................................................................. 46
3.16 – Atuação do filtro Smoothing ............................................................................ 47
4.1 – Diagrama esquemático do circuito de aquisição do sinal. .................................... 48
4.2 – Gráfico medido em osciloscópio do deslocamento de 0 V para 2,5 V .................. 49
4.3 – Diagrama esquemático do circuito de aquisição do sinal. .................................... 49
4.4 – Diagrama esquemático do filtro anti-aliasing. ....................................................... 50
4.5 – Diagrama esquemático do circuito oscilador. ....................................................... 51
4.6 – Diagrama esquemático do circuito oscilador. ....................................................... 52
4.7 – Diagrama esquemático do circuito de acionamento dos dip swiches. .................. 52
4.8 – Diagrama esquemático do circuito de reset do dsPIC. ......................................... 53
8
4.9 – Diagrama esquemático do circuito de conversão digital/analógico. ..................... 54
4.10 – Gráfico obtido em osciloscópio do filtro de alisamento (smoothing). .............. 54
4.11 – Diagrama esquemático do filtro smoothing. .................................................... 55
4.12 – Diagrama esquemático do circuito de saída. .................................................. 55
4.13 – Gráfico obtido em osciloscópio do circuito smoothing e Zero Hold................. 56
4.14 – Software Proteus, esquemáticos da placa digital. .......................................... 57
4.15 – Software Proteus, layout da placa analógica. ................................................. 57
4.16 – Placa didática EasydsPIC 4 da MikroElektronika ........................................... 58
4.17 – IDE do compilador MikroC da MikroElektronika ............................................. 59
4.18 – Efeito Overdrive no osciloscópio..................................................................... 64
4.19 – Efeito Fuzz no osciloscópio. ........................................................................... 66
4.20 – Efeito Delay no osciloscópio. .......................................................................... 67
4.21 – Ausência de qualquer efeito. Sinal passando pelo circuito digital. ................. 68
4.22 – Diagrama esquemático placa analógica ......................................................... 70
4.23 – Diagrama esquemático placa digital ............................................................... 71
9
LISTA DE SIGLAS
IDE – Integrated Development Environment – Ambiente integrado de desenvolvimento
ADC – Analog to Digital Converter – Conversor analógico-digital
DAC – Digital to Analog Converter – Conversor digital-analógico
DSP – Digital Signal Processor/Processing - Processador ou processamento digital de
sinais
ALU – Arithmetic logic unit – Unidade Lógico-Aritmética
DMA – Direct memory Access – Acesso direto à memória
DJ – Disc Jockey
LFO – Low-Frequency Oscillation – Oscilação em baixa freqüência
AOP – Amplificador Operacional
AC – Alternate Current – Corrente Alternada
10
CAPÍTULO 1 – INTRODUÇÃO
Neste capítulo tem-se uma descrição sobre o histórico da guitarra e os motivos
que levaram à necessidade de se utilizar efeitos. Faz-se também uma breve introdução
ao processamento digital de sinais.
1.1 Guitarra
O Violão, ou guitarra clássica, surgiu na Itália em 1870. A guitarra elétrica foi
uma modificação do próprio Violão. Em suma, uma guitarra elétrica é um violão sem a
caixa de ressonância. A captação dos sons nesta, é feita pelos captadores indutivos
que captam as vibrações das cordas de aço, transformando-as em sinais elétricos[6].
A guitarra é considerada hoje o mais popular e versátil instrumento do mundo, e
se originou a partir de um instrumento musical espanhol, a Vihuela1. Este instrumento
surgiu por meio de dois outros instrumentos ainda mais antigos: o “ud”, com cinco
cordas, bastante conhecido no Oriente Médio, e a “cozba”, um instrumento musical
romano[6].
As guitarras elétricas, como mostrado na figura 1.1, surgiram em 1930, gerando
um som muito suave e baixo, bem diferente do som produzido atualmente. Para
amplificar a potência sonora do instrumento, colocaram-se captadores indutivos, que
funcionavam como microfones. Isso acabou por gerar um pequeno problema, pois os
mesmos faziam o corpo das guitarras vibrarem, provocando a famosa alteração sonora
chamada
“feedback”,
mais
conhecida
como
“microfonia”,
que
consiste
na
realimentação dos captadores, a partir reverberações do som original. Como solução
deste problema, o corpo da guitarra passou a ser maciço, e assim chegou à forma
contemporânea [6]. A figura 1.1 mostra uma típica guitarra contemporânea.
1.1 – Guitarra
FONTE: http://www.fender.com, 2009.
1
Utilizada entre os séculos XV e XVII, a Vihuela foi um instrumento de cordas medieval cujo formato
assemelhava-se ao do violão. Apesar de ter sido criada pelos espanhóis, a Vihuela era utilizada pela
nobreza em grande parte da Europa.
11
1.2 Histórico dos Efeitos
A guitarra ganhou popularidade nos anos 60 com o surgimento do rock and roll,
que pedia um som mais grave, pesado. O primeiro registro dessa característica de som
foi o timbre obtido pelo guitarrista Dave Davies, da banda inglesa The Kinks2 na década
de sessenta quando ele furou propositalmente um alto-falante com um lápis, dando ao
som uma característica trêmula e duplicada. Paralelo a isso, descobriu-se que a
saturação no ganho dos amplificadores valvulados gerava uma distorção, que se
tornou quase que um símbolo do rock and roll. Essa distorção hoje é feita hoje por meio
de amplificadores valvulados ou transistorizados, e pedais analógicos ou digitais, estes
últimos podem reunir vários efeitos.
Além da distorção, existem vários outros efeitos que auxiliam o guitarrista na
busca pelos timbres mais diversos, como o delay, que causa um determinado atraso no
som; o chorus, que produz uma sensação de aumento na quantidade de fontes
sonoras, freqüentemente chamado de dobra; o flanger, que produz uma ondulação no
volume do som; o compressor, que atenua sinais com amplitude alta e incrementa
sinais de baixa amplitude, e fornece sustentação prolongada deixando o som uniforme;
e o reverb, que como o nome sugere, mistura uma reverberação ao som original.
Existem vários outros que se encaixam dentro destes grupos, por exemplo, os efeitos
acoustic, overdrive, fuzz e metal, entram no grupo dos efeitos baseados em distorção
das ondas, já os efeitos chorus e flanger, tem a característica de alterar a modulação
do sinal.
O que começou com o rock and roll, hoje se espalha por muitos segmentos da
música, que usam estes efeitos com o objetivo de melhorar o som, e personalizar as
músicas, dando características diversas a solos e arranjos.
Os efeitos são acessórios atualmente considerados como essenciais para
músicos e técnicos de som e DJ’s3, pois ajudam na equalização ou timbragem, e
possibilitam novas nuances no som. Alguns efeitos também são usados para o baixo e
para o teclado, porém em menor escala que a guitarra.
2
The Kinks foi uma banda de rock britânica formada em Londres em 1963 pelos irmãos Davies. Com
estilo rock and roll, rhythm, blues e proto punk a banda era originalmente composta por Ray Davies,
Dave Davies, Pete Quaife e Mick Avory.
3
DJ é o profissional que seleciona e reproduz as mais diferentes composições previamente gravadas
para um determinado público alvo. Ele insere modificações e efeitos nas composições com o intuito de
aplicar o seu próprio estilo às mesmas.
12
1.3 Pedal
Os pedais, como são chamados alguns geradores de efeito, recebem esse nome
por serem acionados com os pés. Ao entrar no pedal, o som passa por estágios de
adequação para que então possa ser modificado. Tais modificações são feitas
utilizando-se estágios de saturação ou modulação. Na figura 1.2 pode-se ver um
exemplo de pedal.
1.2 – Pedal marca Boss, efeito Overdrive – OD-3
FONTE: http://roland.com.br/boss, 2008.
A busca por efeitos mais complexos leva guitarristas a montarem conjuntos de
pedais, que são popularmente chamados de cases. Os fabricantes perceberam então
outra necessidade, e criaram os cases com conjunto de alimentação, o que também
facilitam o transporte dos pedais. Um exemplo de case é mostrado na figura 1.3.
1.3 – Case BCB-60 marca Boss
FONTE: http://roland.com.br/boss, 2008.
Embora os cases de pedais analógicos oferecessem mais de um efeito e uma
boa organização no palco, estes ainda eram vulneráveis a defeitos e interferências.
Além disso, possuíam um número reduzido de efeitos. Com isso surgiram as pedaleiras
digitais, que além de minimizar os defeitos e interferências, possuíam uma maior
13
variedade de efeitos. Com o avanço tecnológico, os efeitos digitais conseguem chegar
cada vez mais próximos do timbre dos efeitos analógicos. A figura 1.4 mostra uma
pedaleira da marca Boss.
1.4 – Pedaleira Multi-efeitos Boss GT-10B
FONTE: http://roland.com.br/boss, 2008.
1.4 Efeitos
Neste tópico faz-se uma breve descrição de alguns dos vários efeitos
disponíveis para guitarras. No capítulo 2 será feito um estudo mais aprofundado sobre
os efeitos deste projeto.
1.4.1 Phaser
O phaser é produzido por um oscilador interno de baixa freqüência que move
automaticamente cortes na freqüência de resposta para cima e para baixo no espectro
de freqüências. O phaser trabalha uniformemente em todo o espectro de freqüência,
misturando o sinal original com o sinal defasado que foi deslocado ao longo do
espectro de freqüências [4].
1.4.2 Compressor
Compressores são comumente usados em gravações para controlar o nível,
atenuando os sinais com amplitudes mais altas, e incrementando os sinais de baixa
amplitude. Isso é útil para permitir um vocalista a cantar com alta ou baixa intensidade
para ênfases diferentes, e sempre ter um sinal de qualidade chegando ao
14
equipamento. A compressão geralmente é aplicada à guitarra para dar sustentação,
onde o início de uma nota é "esmagado"[4].
1.4.3 Overdrive e Distorção
Estes efeitos são destinados a produzir o som de um amplificador saturado. Os
pedais originais eram destinados a um som natural saturado, e estes ainda são
populares. Existem outros pedais adaptados ao heavy, rock, metal, blues, grunge,
retro, e outros estilos, baseados em distorção da onda por saturação[4].
Os efeitos overdrive e distorção surgiram das muitas experiências com circuitos
na década de 60. Hoje, o efeito overdrive significa que a saturação é baixa, ou soft
clipping, enquanto que a distorção geralmente significa uma saturação maior, ou hard
clipping. O efeito denominado “distorção” é um pouco mais pesado, bem indicado para
o rock and roll, enquanto o overdrive gera um som mais natural. A figura 1.5 mostra os
níveis de saturação.
1.5 – Exemplo de níveis de saturação
FONTE: http://users.sa.chariot.net.au, 2008.
1.4.4 Flanger
O efeito flanger ganhou este nome devido à um truque utilizado em estúdios de
gravação onde a mesma faixa de áudio era reproduzida em dois aparelhos toca-fitas.
Os engenheiros de gravação sutilmente tocaram a flange de uma das bobinas para
produzir um curto delay (atraso) entre as máquinas. Então, ao tocar na flange da outra
bobina, ele estariam trazendo as máquinas de volta à sincronização, removendo o
delay. Isto gerou um efeito sonoro muito similar ao gerado por um avião a jato [4].
15
1.4.5 Chorus
É uma mistura variando o sinal atrasado com o original para produzir um grande
número de harmônicos relacionados com os cortes na freqüência de resposta. O
chorus usa um atraso mais longo do que flanger, portanto há uma percepção de
"espaço", apesar do delay (atraso) ser muito curto para ouvir-se como um eco. Há
também pouco retorno, de modo que o efeito é mais sutil [4].
1.4.6 Delay (Atraso)
Delay é um efeito de eco, com uma ou mais repetições do sinal original, após um
período de tempo. Os atrasos variam de 50ms a 100ms, onde se tem a nítida
percepção de eco[4].
1.4.7 Reverberação (Reverb)
Reverberação é o som que se percebe em ambientes com paredes de alta
reflexão, como por exemplo, banheiros, onde o som circula ao redor do ambiente por
um tempo após o som original ser emitido. A reverberação é composta de um grande
número de ecos ao longo do tempo, mas com tons diferentes[4].
1.5 Som e Audição Humana
As ondas sonoras são ondas mecânicas longitudinais, por isso precisam de um
meio material para se propagar, e fazem-no através de pequenas oscilações das
partículas que o constituem. Seja o meio o ar, um líquido ou um sólido.
O som é produzido por corpos que vibram, mas nem toda vibração é capaz gerar
um som que vá excitar o nosso tímpano. Para que tenhamos a sensação auditiva é
necessário que a onda sonora esteja numa uma faixa de freqüência bem definida. Para
o ouvido humano, essa faixa de freqüência vai de 20 Hz a 20000 Hz. Fora desses
limites, o ouvido humano não é capaz de perceber a onda como som. Abaixo de 20 Hz,
as ondas são conhecidas como infra-sons e acima de 20000 Hz elas são conhecidas
como ultra-sons. Na natureza, existem diversos animais que são capazes de perceber
16
sons acima de 20000 Hz. Os cães, por exemplo, conseguem captar freqüências de
50000 Hz[5].
A parte externa do ouvido, chamada de orelha, serve para captar as ondas
sonoras. O ouvido externo é virado para frente e tem várias curvas. Essa estrutura
ajuda a determinar a direção do som. Um som que vem de cima ou de trás vai
ricochetear na orelha de uma maneira diferente que um som vindo de baixo ou de
frente. Essa reflexão do som altera o padrão da onda sonora. O cérebro reconhece
padrões distintos e determina se o som está na frente, atrás, acima ou abaixo. Pode-se
ver uma representação do ouvido humano na figura 1.6.
1.6 – Ouvido Humano
FONTE: http://saude.hsw.uol.com.br, 2008.
O cérebro determina a posição horizontal de um som pelo acompanhamento das
informações que vêm dos dois ouvidos. Se o som vem da esquerda, vai chegar ao
ouvido esquerdo um pouco antes de chegar ao ouvido direito. Também será percebido
um pouco mais intensamente no ouvido esquerdo do que no direito [7].
Como a orelha é virada para a frente, o homem ouve sons na sua frente melhor
do que atrás. Muitos mamíferos, como os cães, têm orelhas grandes e móveis, que
permitem que eles concentrem-se em sons vindos de uma direção específica. As
orelhas humanas não são especializadas o suficiente para fazer o mesmo. Elas ficam
achatadas contra a cabeça e não têm os músculos necessários para esse tipo de
movimento [5].
Pode-se tomar como exemplo, a vibração causada por um sino. Quando este é
tocado, o metal vibra balançando de um lado para o outro. Ao balançar para um lado,
17
ele empurra as partículas de ar ao seu redor. Estas então colidem com as partículas
que estão em sua frente e assim sucessivamente. Isso é chamado de compressão. Ao
balançar para o outro lado, o sino puxa as partículas de ar. Isso cria uma queda na
pressão, que puxa mais partículas ao redor, criando outra queda na pressão num
processo contínuo. Essa queda na pressão é chamada rarefação [2].
Dessa maneira, o objeto vibrante envia uma onda de flutuação de pressão
através da atmosfera. Os sons são ouvidos diferentemente por causa das variações na
freqüência de onda sonora. Uma freqüência de onda mais alta significa que a flutuação
da pressão do ar muda para frente e para trás mais rapidamente. O ouvido humano
entende isso como um tom mais alto, ou som mais agudo. Quando há poucas
flutuações em um período de tempo, o tom é mais baixo, ou grave. O nível de pressão
do ar em cada flutuação, a amplitude das ondas, determina a intensidade ou potência
do som[2].
Na figura 1.7 vê-se um esquema representando a audição humana. (Azul: ondas
sonoras; Vermelho: tímpano; Amarelo: cóclea; Verde: Células receptoras de som;
Púrpura: espectro de freqüências da resposta da audição; Laranja: Potencial de ação
do nervo.
1.7 – Esquema representativo da audição humana
FONTE: http://pt.wikipedia.org/wiki/Wiki, 2008.
Embora muitos seres na natureza utilizem sinais analógicos para comunicação,
estes não podem utilizar sinais digitais para a mesma tarefa. De modo análogo, as
máquinas também não podem entender a imensa quantidade de sinais analógicos
existentes na natureza. É justamente neste contexto de interface entre o mundo
analógico e digital, que surge o processamento digital de sinais.
18
Entende-se por processamento digital de sinais, uma metodologia matemática
para analisar, interpretar e transformar sinais analógicos (do mundo real), utilizando
sinais discretos, amostrados no tempo. O
processamento
abordado de forma mais profunda no capítulo a seguir.
digital
de
sinais
será
19
CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA
2.1 Processamento Digital de Sinais - DSP
Para que nossos computadores, celulares e quaisquer outros dispositivos
eletrônicos, que utilizam interface com sinais analógicos, possam trabalhar, é
indispensável que haja uma conversão desses sinais analógicos para a forma digital.
Sinais analógicos na natureza, como o som, a luz, pressão, temperatura, entre
outros só podem ser tratados por computadores quando amostrados digitalmente. No
caso do ser humano, todas essas informações são enviadas o continuamente e
analisadas por nosso cérebro através de impulsos elétricos, que também são uma
forma de sinal analógico.
Para que um sinal analógico possa ser representado digitalmente, utilizam-se
conversores analógico-digitais (ADC), que convertem os sinais analógicos e os
transformam numa seqüência binária (portanto digital). Só assim, poderão ser
interpretados, analisados e manipulados por algoritmos computacionais.
Após a análise computacional, pode-se ainda realizar o reenvio destas
informações para o mundo real. O dispositivo responsável por converter esta
informação digital para o domínio analógico é o DAC (Digital-Analog Converters). A
função dos DACs é analisar uma determinada seqüência binária digital e transformá-la
num sinal analógico.
Vantagens do Processamento Digital de Sinais:
Imunidade a ruído;
Imunidade a variação de temperatura;
Maior precisão;
Maior flexibilidade;
Capacidade e memória e inteligência;
Realiza sistemas não possíveis por sistemas analógicos.
Desvantagens do Processamento Digital de Sinais:
Custo alto (em algumas aplicações);
Processamento lento (em algumas aplicações).
20
Na figura 2.1 o microfone capta ondas mecânicas da voz humana e envia o sinal
ao conversor AD, que por sua vez, converte o mesmo em sinal digital. Deste modo, o
DSP analisa e trabalha com o sinal digital e o devolve para o domínio analógico
utilizando um conversor DA. Com o sinal novamente sob o domínio analógico este
pode ser amplificado e drenado pelos transdutores de áudio4, também conhecidos
como alto-falantes.
2.1 – Exemplo de Conversão e Processamento
FONTE: http://www.ti.com, 2008.
2.2 Processador Digital de Sinais
O acrônimo DSP possui dois significados: Processamento Digital de Sinais
(Digital Signal Processing) ou Processador de sinais digitais (Digital Signal Processor).
Embora em ambos os casos seu uso esteja correto, é mais comum utilizar a sigla DSP
quando se deseja fazer referência ao processador de sinais em si e não o ato de fazer
processamento digital do sinal[3]. O DSP é um dispositivo programável, capaz de
transportar seu próprio código de instruções. Além do próprio chip, cada fabricante
possui também seu ambiente integrado de desenvolvimento (IDE) que facilita o
desenvolvimento programas para do DSP.
4
Trandutores são dispositivos que transformam um tipo de energia em outro, utilizando para isso um
elemento sensor que recebe os dados e os transforma. Por exemplo, o sensor pode traduzir informação
não elétrica (velocidade, posição, temperatura, pH) em informação elétrica (corrente, tensão,
resistência). Um tipo curioso de transdutor é elaborado a partir de cristais naturais denominados cristais
"piezoelétricos". Estes transdutam energia elétrica em energia mecânica na relação de 1:1 (um sinal
elétrico para um sinal mecânico).
21
DSPs são projetados para realizar operações de adição, multiplicação e
transferência de memória (Também conhecidas como MAC: Multiply, Add, Carry) de
forma rápida e eficaz. Estas operações são as mais comuns em processamento digital.
É importante salientar, que existem instruções de repetição, que são posicionadas
antes das operações MAC, o que possibilita executá-las em poucos ou apenas um ciclo
de máquina[8].
2.3 Arquitetura básica de um DSP
Por trás do processador digital de sinais existem componentes importantes como
registradores, unidades lógico-aritméticas (ALU – Arithmetic logic unit), geradores de
endereço e memória. No diagrama de blocos abaixo temos uma visão geral da
formulação de uma placa de DSP. A maioria dos DSPs possuem basicamente a
mesma arquitetura: o processador principal (core processor), uma porta SRAM, uma
porta para comunicação externa e um processador do tipo I/O, bem como seus
componentes internos[1]. Na figura 2.2 pode-se ver o esquema com a arquitetura de
um DSP.
2.2 – Arquitetura do Processador Digital de Sinais Blackfin® da Analog Devices
FONTE: http://www.analog.com, 2009.
No core processor encontra-se subgrupos importantes como geradores de
endereço (DAG), que são responsáveis por fornecer um endereçamento imediato entre
a memória e os registradores.
As Unidades Lógico-Aritméticas (ALU – Arithmetic logic unit) realizam operações
aritméticas e lógicas, podendo estas ser em ponto fixo ou em ponto flutuante. A maioria
das placas de DSP conta com um timer programável, que pode ser usado para realizar
22
interrupções periódicas, bem como ativar funções ou rotinas a cada novo ciclo. As
unidades de acesso direto à memória (DMA - Direct Memory Access) podem operar de
forma independente e “invisível” ao processador principal. Alem de ser importante na
comunicação entre a memória interna e as portas seriais ou link ports, o DMA pode ser
usado em programas onde é necessária a liberação do processador principal para
realização de outras rotinas.
Dependendo do tipo e modelo do DSP desejado pode-se encontrar placas
específicas para processamento de áudio ou de vídeo e imagem. A capacidade de
processar informações em tempo real torna o DSP ideal para aplicações onde o delay
(tempo de resposta/atraso) não é tolerável. Exemplos de aplicações com esta
característica são: processamento de áudio, telefonia celular, etc.
2.3.1 Compressão e Descompressão do Sinal
Uma aplicação muito utilizada nos DSP’s é a compressão e descompressão de
sinais. A compressão de sinal, a qual é amplamente utilizada em celulares digitais,
câmeras multimídia e em computadores pessoais, permite que pessoas possam se
comunicar em tempo real, sem que haja interrupção do sinal.
Técnicas de compressão de sinais são utilizadas tanto para armazenar como
para transmitir de maneira compacta os sinais de voz, áudio ou vídeo. Também
utilizado para a manipulação de arquivos de texto e imagens. A necessidade destas
técnicas cresce com o surgimento de novos serviços de comunicação digital através da
Internet ou para comunicações multimídia como teleconferências e televisão digital.
Também em sistemas de áudio, como CD players e MP3 Players, a tecnologia
DSP é utilizada para realizar um complexo desempenho de detecção e correção de
“raw data” (registro sem informação), diretamente a partir da leitura do disco.
2.3.2 Filtros Digitais
O filtro é responsável por remover partes indesejadas do sinal, bem como
ruídos, ou simplesmente extrair partes importantes do mesmo, como componentes de
uma certa banda de freqüência. Na figura 2.3 pode-se ver o esquema básico de
representação da filtragem do sinal.
23
2.3 – Esquema básico de representação da filtragem de sinal
O filtro analógico utiliza circuitos eletrônicos analógicos feitos basicamente de
resistores, capacitores e amplificadores operacionais. Muitos destes filtros são
largamente usados em aplicações como: redução de ruído, realce de sinal de vídeo,
equalização gráfica em sistemas de alta fidelidade sonora, entre outros.
Com o avanço da tecnologia de processamento digital, pode-se obter filtros
digitais, que utilizam um processador digital para realizar cálculos numéricos em cima
de amostras de sinal. Através da entrada de um sinal analógico, um conversor
analógico-digital (ADC) realiza a conversão deste sinal para ser lido pelo DSP. Este
tem o papel de realizar os cálculos necessários para fazer a filtragem, multiplicando os
valores da entrada por constantes e somando os produtos resultantes. São técnicas
matemáticas como as Transformadas de Fourier e Hilbert.
Caso seja necessário, estes valores, que agora representam numericamente o
sinal filtrado, podem ser convertidos através de um conversor digital-analógico (DAC).
A figura 2.4 mostra um esquema básico de um filtro digital.
2.4 – Esquema de Configuração básica de um filtro digital
FONTE: http://www.dsptutor.freeuk.com, 2008.
24
Filtros digitais possuem diversas vantagens em relação aos analógicos:
Filtros digitais são programáveis e possuem a capacidade de adaptar-se
automaticamente à característica de cada sinal. Isto os torna muito mais
versáteis no processo de filtragem.
Filtros digitais são mais estáveis. Filtros analógicos são compostos por
componentes ativos, que estão sujeitos a variações devido a alterações de
temperatura. Filtros digitais não sofrem estas variações e garantem maior
estabilidade.
Filtros digitais possuem uma larga escala de trabalho em sinais de baixa
freqüência.
2.4 Efeitos
Neste tópico faz-se uma descrição mais aprofundada dos efeitos que serão
estudados e implementados neste projeto. São apresentados funções de transferência
e equações de diferença, bem como gráficos no domínio de tempo e freqüência.
2.4.1 Delay (Atraso)
O delay digital é o mais simples de todos os efeitos de áudio do tipo delay
(atraso) de tempo. O efeito delay é freqüentemente a base para que se produzam
efeitos mais complexos tais como flanger e chorus, os que variam o tempo de delay
dinamicamente. É também utilizado em algoritmos de reverberação. Quando uma fonte
de som é refletida em uma superfície rígida distante, uma versão atrasada do sinal
original é ouvida em um momento posterior. Para recriar essa reflexão digitalmente,
unidades de efeito de delay em DSP codificam os sinais de entrada e os armazenam
digitalmente em uma linha de buffer de delay até ser novamente requisitados e
decodificados de volta à forma analógica[9]. Nas figuras 2.5 e 2.6 pode-se ver a
implementação de um delay digital, juntamente com um gráfico mostrando uma
reflexão simples.
25
2.5 – Implementação de um Delay Digital com derivação única
FONTE: Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
2.6 – Delay com uma reflexão simples
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
Para criar a reflexão simples de um sinal de entrada, a implementação mostrada
acima é representada na seguinte equação de diferenças:
E sua função de transferência é:
Deve-se observar que o sinal de entrada
adicionado a uma cópia do sinal
de entrada. O sinal pode ser atenuado por um fator que é menor do que um, devido ao
fato de que superfícies refletivas, bem como o ar, contém uma constante de perda
em função da absorção da energia do sinal de origem. O delay
total que leva para que o sinal retorne da parede que o reflete.
representa o tempo
é criado utilizando-se
uma linha de buffer de comprimento específico na memória do DSP[9].
26
2.4.2 Flanger
O efeito Flanger ganhou este nome devido a um truque utilizado em estúdios de
gravação onde a mesma faixa de áudio era reproduzida em duas máquinas de fita
bobina a bobina, e engenheiros de gravação sutilmente tocaram a flange de uma das
bobinas para produzir um curto delay (atraso) entre as máquinas. Então, ao tocar a
flange da outra bobina, ele estariam trazendo as máquinas de volta à sincronização,
removendo o delay. Isto gerou um efeito sonoro muito parecido com o de um “avião a
jato”.
Em processamento digital de sinais, o efeito flanger é produzido ao misturar um
sinal atrasado variante (geralmente entre 5ms e 15ms) com o sinal original, o que
produzirá uma série de fendas no espectro de freqüência [9]. Deste modo, a resposta
em freqüência de um flanger resulta em um Filtro Comb (Pente), como ilustrado na
figura 2.7.
2.7 – O efeito “pente” e o espectro de freqüência do Flanger.
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
Com o aumento do delay, aumenta-se o número de picos. Modificando-se o
delay, modifica-se o Filtro Comb, que por sua vez afeta as freqüências que são
amplificadas ou canceladas. A figura 2.8 mostra o diagrama funcional do efeito Flanger.
27
2.8 – Implementação do efeito Flanger.
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
Uma importante diferença entre o efeito flanger e o phaser é que o flanger
produz uma grande quantidade de fendas, e os picos entre estas fendas são
harmonicamente (musicalmente) relacionados. Já um phaser produz um número menor
de fendas que são uniformemente espalhados pelo espectro de freqüências [9].
A maioria dos “flangers” provê um controle de ressonância para utilizar
realimentação interna de modo a aperfeiçoar os picos na freqüência de resposta.
Os controles comuns são:
Taxa de profundidade - controla a velocidade e a distância com que as fendas se
movem.
Intensidade (ou Efeito ou ainda Mixagem) controla o nível do sinal atrasado e
conseqüentemente a profundidade das fendas na freqüência.
Ressonância adiciona ênfase ao aplicar realimentação interna.
2.4.3 Chorus
O efeito chorus é utilizado para "afinar" os sons. Este algoritmo de delay (atrasos
entre 15ms e 35ms) tem por função duplicar o efeito que ocorre quando muitos
músicos tocam o mesmo instrumento e a mesma música simultaneamente.
Geralmente, os músicos tocam de maneira sincronizada uns com os outros, mas há
sempre ligeiras diferenças no momento, volume, e espaçamento entre cada
instrumento que toca as mesmas notas musicais [9].
28
O chorus pode ser recriado digitalmente com um atraso variável na derivação
central, adicionando o resultado variante no tempo atrasado junto com o sinal de
entrada. Ao utilizar-se deste efeito criado digitalmente, uma guitarra de seis cordas
pode soar como uma guitarra de doze cordas (ou viola, no Brasil). Os vocais também
são reproduzidos de modo a soar como mais do que um vocalista cantando [9].
O algoritmo de Chorus é semelhante ao Flanger, utilizando a mesma equação
de diferenças, com exceção do tempo de atraso que é mais longo. Com um tempo da
linha de atraso mais longo, o efeito de Filtro Comb é reduzido à freqüência fundamental
com harmônicos de ordem inferior. As figuras 2.9 e 2.10 mostram a estrutura do efeito
chorus simulando dois e três instrumentos respectivamente.
2.9 – Implementação do efeito Chorus simulando dois instrumentos
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
2.10 – Implementação do efeito Chorus simulando três instrumentos
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
29
A equação de diferenças da figura 2.10 é
Onde os coeficientes de ganho a1[n] e a2[n] pode ser um número aleatório de
baixa-frequência com média unitária. O valor d[n] pode vir de uma tabela LFO (LowFrequency oscilator) conforme a figura 2.11.
2.11 – Armazenamento da tabela de onda LFO randômica de 4K
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
2.4.4 Reverberação (Reverb)
A Reverberação é outro efeito baseado no tempo. Embora tenha um
processamento mais complexo do que os efeitos eco, chorus e flanger, a reverberação
é freqüentemente confundida com os efeitos de delay e eco. A maioria das pedaleiras
multi-efeitos fornecem uma variação em ambos os efeitos [9].
A primeira unidade de simulação de reverberação criada entre os anos 60 e 70
consistia no uso de uma mola mecânica ou placa conectada ao transdutor de áudio, de
modo que passasse um sinal elétrico através dos mesmos. Um outro transdutor do lado
oposto convertia as reflexões mecânicas de volta para o transdutor de saída.
Entretanto, isto não criava uma reverberação realística. M. A. Schroeder and James A.
30
Moorer desenvolveram algoritmos de modo a produzir a reverberação realística
utilizando um DSP (processador digital de sinais) [9].
O efeito reverberação simula o efeito de reflexão sonora em um grande auditório
ou sala, como mostra a figura 2.12.
2.12 – Reverberação em espaços acústicos grandes
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
Ao invés de poucas repetições discretas de um som como um delay de múltiplos
atrasos, a reverberação gera muitas repetições atrasadas muito próximas no tempo, de
modo que o ouvido não pode distinguir as diferenças entres os atrasos. As repetições
são continuamente misturadas ao som. A fonte sonora soa em todas as direções a
partir da fonte, reflete nas paredes e tetos e retorna de muitos ângulos com diferentes
atrasos. A reverberação está quase sempre presente em ambientes fechados, e as
reflexões são ainda maiores quando refletidas de superfícies rígidas. A figura 2.13
mostra um som reverberado classificado em três principais faixas: Som direto,
Reflexões adiantadas e reflexões misturadas com eco [9].
31
2.13 – Resposta ao impulso para reverberações de um grande auditório
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
Som direto: atinge o ouvinte com som diretamente vindo da fonte
Reflexões adiantadas: são ecos adiantados, os quais chegam num intervalo
entre 10ms e 100ms, oriundos das reflexões de superfícies próximas à fonte
sonora.
Reflexões misturadas com eco: são reflexões sonoras que chegam ao ouvindo
após 100ms de atraso.
A figura 2.14 apresenta valores típicos de amplitude em função do comprimento do
buffer colocado dentro do DSP.
2.14 – Valores típicos de amplitude em função do comprimento do buffer
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
32
A figura 2.15 mostra a estrutura do algoritmo escrito por J.A. Moorer para uma
resposta de um grande auditório assumindo a taxa de amostragem de 44.1 kHz.
Moorer demonstrou uma técnica que envolve seis filtros comb em paralelo com uma
saída passa-baixa, somando suas saídas e então mandando o resultado somado para
um filtro “passa tudo” antes de produzir o sinal final.
2.15 – Estrutura do algoritmo de reverberação (J. A. Moorer)
FONTE – Using The Low-Cost, High-Performance ADSP-21065L Digital Signal
Processor For Digital Audio Applications
2.4.5 Overdrive
O efeito Overdrive, também conhecido como clipping é uma forma de distorção
que corta o sinal em limites pré-estabelecidos. Pode ocorrer quando um sinal tem seu
ganho saturado, quando um sinal é digitalizado ou ainda ocorrer na ocasião onde o
sinal analógico ou digital é transformado[9]. O clipping pode ser dividido em dois tipos:
hard clipping (rígida) – casos onde o sinal é bruscamente cortado.
soft clipping (suave) – casos onde o sinal continua a ter a forma do sinal original
porém com o ganho diminuído.
A figura 2.16 mostra os gráficos em função do tempo dos sinais com soft clipping e
hard clipping.
33
2.16 – Os dois tipos fundamentais de clipping
FONTE – www.geofex.com, 2009
O hard clipping resulta em muitas harmônicas de alta freqüência enquanto o soft
clipping resulta em poucas harmônicas de ordem superior e com componentes de
distorção intermoduladas. O overdrive pode ser criado digitalmente com a inserção de
harmônicas do sinal original, ou programando-se um limiar máximo de ganho, toda vez
que o sinal passar pelo limite.
34
CAPÍTULO 3 – ESPECIFICAÇÃO TÉCNICA
Neste capítulo serão abordados os blocos de hardware externos ao DSP bem
como os blocos de software, utilizando fluxogramas para a descrição dos efeitos.
3.1 Aquisição do Sinal
Os sinais analógicos variam sempre em torno do eixo zero, adquirindo valores
positivos e negativos. No caso da guitarra, foram feitos testes que comprovaram a faixa
de tensão que chegará à entrada do sistema. A figura 3.1 mostra o sinal que sai da
guitarra e chega ao sistema variando de -2 V a 2 V, com pequenos picos que passam
destes valores, nunca ultrapassando 2,5 V.
3.1 – Sinal analógico proveniente da guitarra.
Tendo isso como base, será considerado o valor máximo de 2,5 V. Para realizar
a conversão ADC, o sinal terá que passar por um circuito grampeador, que será
implementado com um AOP. Dessa forma o sinal deixará de ter a referencia em zero, e
passará a ter a referência em 2,5 V, variando de 0 a 5 V, tensão que é facilmente
interpretada pelo ADC. A figura 3.2 mostra o sinal sendo grampeado.
35
3.2 – Os dois tipos fundamentais de clipping
FONTE – www.eletrica.ufpr.br, 2009
3.2 Filtro Anti-aliasing
Todo sinal analógico está suscetível a ruídos, ruídos estes que podem gerar
muitos problemas no processamento digital que será feito pelo DSP. A filtragem
consiste em aplicar um filtro com o objetivo de eliminar estes sinais indesejáveis do
sinal de interesse que se pretende converter para um sinal digital. Sinais AC que
variam rapidamente, como o sinal elétrico proveniente de uma guitarra, requerem
muitas vezes um tipo diferente de filtro, conhecidos por filtros anti-aliasing. O filtro antialiasing é um filtro passa-baixa, que apresenta uma freqüência de corte bem definida,
eliminando assim completamente todas as componentes de freqüência que são
maiores que a largura de banda do componente de aquisição de dados.
O sistema de aquisição de dados que realizará a digitalização dos sinais
provenientes do transdutor, pretende obter uma representação a mais exata dos
mesmos. As técnicas de amostragem dos equipamentos de digitalização não podem
interpretar com tanta fidelidade as componentes de alta freqüência, como as
componentes de baixa freqüência. Este fenômeno é conhecido como aliasing. Se um
sinal varia mais rapidamente que a amostragem feita pelo sistema de aquisição de
dados, erros ocorrem.
O fenômeno aliasing torna-se um problema quando o sinal contém freqüências
maiores do que a freqüência de Nyquist (igual a metade do valor da máxima freqüência
de amostragem). Qualquer componente do sinal que for maior que a freqüência de
Nyquist sofrerá aliasing e será “projetado” para uma gama de baixas freqüências, estas
componentes serão incorretamente interpretadas, e consideradas inferiores à
freqüência de Nyquist.
36
Como se vê na equação abaixo, uma componente fx de alta freqüência do sinal,
amostrado a uma freqüência fs, aparece no sinal amostrado com uma freqüência f,
igual à diferença entre fx e o múltiplo da freqüência de amostragem mais próximo.
, com n inteiro.
As primeiras considerações envolvidas no aliasing são a taxa de amostragem do
conversor ADC e das freqüências presentes nos dados amostrados. Para eliminar o
fenômeno de aliasing, existem duas opções, pode-se aumentar a taxa de amostragem
ou passar o sinal num filtro passa-baixa, removendo assim as componentes de alta
freqüência do sinal. Neste projeto serão utilizadas as duas técnicas. A eliminação do
aliasing será implementada de acordo com os seguintes passos:
3.2.1 Estabelecimento da largura de banda
Se for considerado que o sinal guitarra seja monotônico, com apenas a
freqüência fundamental, sua faixa vai de 31 Hz a 1319 Hz. Porém deve ser
considerado que existem muitas harmônicas provenientes do timbre da guitarra,
madeira utilizada, qualidade dos captores, por isso considerando que teremos pelo
menos cinco harmônicas importantes, chega-se a freqüência de 6595 Hz. Será
utilizada uma banda um pouco superior nos primeiros testes, fixando o corte em 8 KHz.
Um filtro passa-baixa é aquele que atenua a potência de qualquer sinal com
freqüências superiores a freqüência de corte
freqüência inferior a
superiores a
definida pelo filtro. A gama de
é a banda passante do filtro, enquanto que freqüências
pertencem à banda de corte.
Um filtro passa-baixa ideal não atenua qualquer componente do sinal na banda
passante, enquanto que elimina todas as freqüências pertencentes à banda de corte. O
filtro passa-baixa ideal também possui uma fase linear na freqüência, preservando o
aspecto geral da forma de onda filtrada. Os filtros reais são caracterizados por funções
de transferências que representam de forma aproximada as características de um filtro
ideal.
37
3.2.2 Cálculo do filtro passa-baixa
Passo 1 – Definição do ganho do filtro. A tensão já estará entre zero e 5 V, por
isso o ganho será unitário.
Passo 2 – Freqüência de corte, já explicada no item anterior.
Passo 3 – Definição do capacitor.
Capacitor comercial
Como o valor é muito alto, divide-se por
, chegando ao valor comercial de:
Passo 4 – Definição de R1
Fc = Freqüência central de corte
Fs = Freqüência superior de corte
Passo 5 – Definição de R2
Passo 6 – Definição de R3
Os valores dos resistores ficaram muito baixos, então usa-se a conversão
inversa á dos capacitores, multiplicando por
.
38
A figura 3.3 mostra o diagrama esquemático do filtro passa-baixa.
Vi
R1
VO
R3
C
R2
3.3 – Circuito do Filtro Passa-Baixa
3.3 Bloco de Conversão A/D
No contexto de processamento digital, amostragem pode ser definida como o
processo de medição instantânea de valores de um sinal analógico em intervalos de
tempo regulares. O intervalo entre as amostras é determinado por um pulso de
sincronismo e a sua freqüência é chamada de taxa de amostragem. Isto pode ser mais
bem representado na figura 3.4 abaixo.
3.4 – Amostragem
FONTE – www.eletrica.ufpr.br, 2009
Onde:
fs ou s é frequência de amostragem.
t é o intervalo de tempo entre as amostras.
39
Em 1928, Henry Nyquist dos Laboratórios Bell, estabeleceu que a representação
digital de um sinal analógico seria funcionalmente idêntico à forma de onda original se
a taxa de amostragem fosse pelo menos duas vezes a maior freqüência presente na
forma de onde analógica. Um sinal contínuo no tempo g(t) pode ser reconstruído de
forma exata das suas amostras gs(t) caso sejam atendidas duas condições:
g(t) deve ser de banda limitada com uma freqüência máxima
A freqüência de amostragem
s de gs(t) deve ser maior que 2
, ou seja,
. Esta condição é conhecida como Critério de Nyquist.
referenciada como freqüência de Nyquist, a menor freqüência de
amostragem possível para recuperar o sinal original a partir das suas amostras.
Baseado no Teorema de Nyquist, a voz humana com uma freqüência máxima de
quatro mil Hertz requer oito mil amostras por segundo, enquanto que um áudio
com qualidade de CD com freqüência máxima de vinte mil Hertz requer quarenta
mil amostras por segundo.
Para o caso de um sinal vindo de uma guitarra elétrica, a freqüência de
amostragem deverá ser de 10khz. Isto devido ao fato de que a guitarra pode gerar
ondas de até 5khz. O super dimensionamento da taxa de amostragem é chamado de
oversampling5.
Embora a guitarra não gere sons próximos a 10 khz, esta freqüência será
utilizada a fim de facilitar o projeto do filtro anti-aliasing, bem como garantir boa
qualidade sonora. [3]
3.4 Efeito Overdrive
A implementação do efeito Overdrive se dará conforme o diagrama da figura 3.5.
5
Em processamento de sinais, oversampling é o processo de amostrar um sinal com uma freqüência de
amostragem significativamente superior a duas vezes a largura da banda ou freqüência mais alta do
sinal a ser amostrado. Entre outras, a razão principal de se fazer oversampling é o fato de que filtros com
corte abrupto no espectro de freqüência são difíceis de serem projetados. Com a freqüência de
amostragem mais alta, aumenta-se também a freqüência máxima de Nyquist.
40
AJUSTA VALOR DO
COEFICIENTE A
AJUSTA VALOR DO
COEFICIENTE B
Leitura do Valor
de ENTRADA
Valor lido é maior ou igual a 0
ENTRADA >= 0?
N
S
SAIDA = (ENTRADA * A)-(ENTRADA 2 * B)
SAIDA = (ENTRADA * A)+(ENTRADA 2 * B)
3.5 – Fluxograma do efeito Overdrive
Utilizam-se dois coeficientes (a e b). Estes coeficientes são responsáveis por
ajustar o ganho do valor de entrada (a) e o ganho do valor a ser somado com a saída
(b). Caso o valor de entrada seja maior que zero, a saída terá o seu valor de entrada
multiplicado pelo ganho a e subtraída do quadrado da entrada multiplicado pelo ganho
(b). A figura 3.6 mostra um exemplo do sinal na entrada.
Entrada
1,5
1
0,5
-0,5
Entrada
1
13
25
37
49
61
73
85
97
109
121
133
145
157
169
181
193
205
217
229
241
253
265
277
289
301
313
325
337
349
0
-1
-1,5
3.6 – Sinal de entrada
A figura 3.7 mostra o exemplo do sinal na saída, utilizando os coeficientes
e
.
41
Saída
1,5
1
0,5
-0,5
Saída
1
13
25
37
49
61
73
85
97
109
121
133
145
157
169
181
193
205
217
229
241
253
265
277
289
301
313
325
337
349
0
-1
-1,5
3.7 – Sinal de Saída
Outras formas gráficas podem ser geradas alterando os valores dos coeficientes
a e b, como mostra a figura 3.8.
Saída
Saída
2,5
1
2
0,8
1,5
0,6
1
0,4
0,2
-0,5
Saída
1
13
25
37
49
61
73
85
97
109
121
133
145
157
169
181
193
205
217
229
241
253
265
277
289
301
313
325
337
349
0
0
-0,2
-1
-0,4
-1,5
-0,6
-2
-0,8
-2,5
-1
Saída
1
13
25
37
49
61
73
85
97
109
121
133
145
157
169
181
193
205
217
229
241
253
265
277
289
301
313
325
337
349
0,5
3.8 – Variações do Sinal de Saída
3.4 Efeito Delay
Conforme apresentado no capítulo 2, o efeito delay é produzido digitalmente
adicionando-se o valor de entrada a uma cópia defasada desse mesmo sinal. Portanto,
os valores anteriores devem ser salvos em um buffer como mostra a figura 3.9.
VALOR NOVO
00
Tamanho fixo do buffer
Endereço
Valor contido:
Endereço
Valor contido:
0
10
0
00
1
20
1
10
2
30
2
20
3
40
3
30
4
50
4
40
5
60
5
50
6
70
6
60
7
80
7
70
8
90
8
80
90
3.9 – Buffer do efeito Delay
VALOR
DESCARTADO
42
O fluxograma da figura 3.10 exemplifica como os dados serão processados:
Leitura do Valor
de ENTRADA
DESLOCA A PILHA
LIBERANDO ESPAÇO NA PRIMEIRA POSIÇÃO
E DESCARTANDO A ÚLTIMA
ARMAZENA VALOR NA PRIMEIRA
POSIÇÃO DA PILHA DE MEMÓRIA
SAÍDA =
ENTRADA (PRIMEIRA POSIÇÃO DA PILHA)
+ [ENTRADA (N’ésima POSIÇÃO DA PILHA)]*a
3.10 – Fluxograma do efeito delay
O sinal de entrada poderá ainda ser atenuado, multiplicando o seu valor por um
número menor que um. Isto pode ser feito a fim de não gerar ganhos de amplificação
no sinal de saída do bloco.
3.4 Efeito Reverb
O efeito de reverberação não é confundido com o delay por acaso. Assim como
o delay, o efeito de Reverberação também precisa de um buffer de tempo. A diferença
é que ao invés de se somar apenas um sinal defasado ao sinal de entrada, somar-seão vários. Isto pode ser exemplificado com o diagrama em blocos da figura 3.11.
43
Leitura do Valor
de ENTRADA
DESLOCA A PILHA
LIBERANDO ESPAÇO NA PRIMEIRA POSIÇÃO
E DESCARTANDO A ÚLTIMA
ARMAZENA VALOR NA PRIMEIRA
POSIÇÃO DA PILHA DE MEMÓRIA
SAÍDA =
ENTRADA (PRIMEIRA POSIÇÃO DA BUFFER)
+ [ENTRADA (POSIÇÃO DO BUFFER X)] *0,80
+ [ENTRADA (POSIÇÃO DO BUFFER Y)] * 0,60
+ [ENTRADA (POSIÇÃO DO BUFFER Z)] * 0,40
+ [ENTRADA (POSIÇÃO DO BUFFER K)] * 0,20
+ [ENTRADA (POSIÇÃO DO BUFFER W)] *0,10
3.11 – Fluxograma do efeito reverb
A entrada atual, quando somada às entradas previamente armazenadas no
buffer, gerará sons reverberantes. A figura 3.12 mostra a resposta ao impulso e a
equação de diferenças para este efeito.
3.12 – Resposta ao impulso e equação de diferenças do efeito reverb
44
3.5 Efeito Chorus
O efeito Chorus será implementado em linguagem de máquina utilizando a
estrutura mostrada na figura 3.13.
Leitura do Valor
de ENTRADA
DESLOCA A PILHA
LIBERANDO ESPAÇO NA PRIMEIRA POSIÇÃO
E DESCARTANDO A ÚLTIMA
ARMAZENA VALOR NA PRIMEIRA
POSIÇÃO DA PILHA DE MEMÓRIA
Interrupção por Timer
Irá alterar o valor de delay em
uma freqüência baixa.
SAÍDA = ENTRADA
+ ENTRADA[DE UM TEMPO VARIÁVEL DE DELAY]
3.13 – Fluxograma do efeito chorus
A equação de diferenças do efeito chorus é mostrada abaixo.
Os coeficientes de ganho
e
podem ser qualquer número, desde sua
soma não passe de um. Caso ultrapasse este valor, o sinal na saída estará sofrendo
amplificação.
O valor
é um valor de delay variável. Existem diversas técnicas para
implementação de delay variável. Para o efeito chorus, a variação deve durar de 15 a
35 milisegundos. Neste projeto, este efeito será produzido coletando valores variados
no buffer. A variação será feita por uma função do tipo
triangular. Caso seja utilizada a variação senoidal,
corresponda entre
a
ou ainda por uma função
deverá ser um valor que
. Deste modo o atraso será variado de forma senoidal. O
incremento de se dará utilizando uma interrupção por timer, visto que esta oscilação
45
deve ser lenta (em torno de 3 Hz), e não pode ser implementada junto ao laço principal
do programa. [9]
O delay variante
Onde
será atualizado utilizando a seguinte equação:
é um sinal randômico de baixa freqüência que varia entre [-0,5 e 0,5].
3.6 Efeito Flanger
A implementação do Flanger ocorre de maneira muito parecida com a do efeito
Chorus. A diferença está na velocidade oscilação do delay, que no caso do Flanger é
mais rápida. A variação fica entre 0,25 e 25 milisegundos. Abaixo, está sua equação de
diferenças.
Conseqüentemente o fluxograma é idêntico ao chorus, como é mostrado na
figura 3.14.
Leitura do Valor
de ENTRADA
DESLOCA A PILHA
LIBERANDO ESPAÇO NA PRIMEIRA POSIÇÃO
E DESCARTANDO A ÚLTIMA
ARMAZENA VALOR NA PRIMEIRA
POSIÇÃO DA PILHA DE MEMÓRIA
Interrupção por Timer
Irá alterar o valor de delay em
uma freqüência baixa.
SAÍDA = ENTRADA
+ ENTRADA[DE UM TEMPO VARIÁVEL DE DELAY]
3.14 – Fluxograma do efeito flanger
46
3.7 Tratamento de Saída do Sinal
Na saída do DSP tem-se um sinal totalmente digital. Antes de ser entregue ao
amplificador este sinal deverá passar por três estágios: Conversão DAC, zero hold6 e
filtragem smoothing.
3.7.1 Conversão DAC
Os conversores DAC convertem uma palavra digital em um sinal analógico sob a
forma de uma tensão ou corrente de saída. São formados por elementos passivos,
fontes de referência, chaves e AOP’s. A conversão é, em geral, paralela e o tempo de
conversão depende essencialmente da velocidade dos componentes utilizados.
O conversor utilizado neste projeto será serial, utilizando o protocolo SPI (Serial
Peripheral Interface). O protocolo SPI foi desenvolvido pela Motorola para a linha de
processadores da família MC68K. O SPI é um protocolo de comunicação síncrono e
opera no modo full-duplex. O protocolo de comunicação é muito simples, não requer
uma programação complicada. Por isso mesmo, este protocolo permite velocidade de
comunicação mais alta que o
.
3.7.1 Zero Hold
Para que o sinal seja enviado corretamente ao amplificador, deve-se levar a
referencia novamente para zero. Isso será implementado usando-se novamente um
amplificador operacional, similar ao utilizado na entrada do circuito. Desta vez o AOP
será polarizado de forma que o sinal seja “desgrampeado” de volta para a referência
zero. A figura 3.15 mostra o gráfico resultante da operação realizada pelo circuito.
3.15 – Retorno do sinal à referência zero
6 Zero hold é o termo em inglês utilizado para explicar o processo de “desgrampear” o sinal, ou seja,
levar o sinal novamente a referencia zero.
47
3.7.1 Filtro Smoothing
Na saída do conversor DAC o sinal tem apenas valores digitais, isso deixa a
onda como se fosse uma onda quadrada, sem muita definição. Para “alisar” este sinal,
e deixá-lo mais fiel ao sinal analógico, deve-se usar um filtro Smoothing.
O filtro Smoothing é um filtro passa-baixa, que tem por objetivo eliminar as
componentes de alta freqüência, que deixam a onda quadrada. Quanto menos
freqüências de alta ordem o sinal possuir, mais “arredondado” será o sinal. Dessa
forma serão eliminados os ruídos indesejáveis, e o sinal chegará limpo ao amplificador.
A figura 3.16 mostra a atuação de um filtro Smoothing.
3.16 – Atuação do filtro Smoothing
48
CAPÍTULO 4 – IMPLEMENTAÇÃO, TESTES E RESULTADOS
Neste capitulo apresenta-se uma descrição detalhada da implementação de
Hardware e Software deste projeto, mostrando os testes que foram realizados,
problemas encontrados, bem como o código fonte do firmware.
4.1 Execução e testes de Hardware
4.1.1 Alimentação da PCI analógica
Para que a alimentação do circuito fique o mais próxima possível de 9 V, foi
utilizado o regulador de tensão LM7809. A figura 4.1 mostra como este circuito foi
implementado.
4.1 – Diagrama esquemático do circuito de aquisição do sinal.
4.1.2 Aquisição do sinal
Para os testes do circuito de aquisição, que consiste em um somador não
inversor com Amp Op, foi utilizado um gerador de funções, juntamente com um
osciloscópio, para garantir que a nova referencia do sinal amostrado seria elevada para
2,5 V. A polarização do Amp Op foi feita com um trimpot de 1 KΩ, para permitir uma
calibração próxima do ideal para esta parte do circuito. Caso este nível de 2,5 V não
seja bem calibrado, tem-se uma distorção do sinal nos próximos estágios do circuito.
49
A figura 4.2 mostra o deslocamento da referência do sinal de 0 V para 2,5 V.
4.2 – Gráfico medido em osciloscópio do deslocamento de 0 V para 2,5 V
No esquemático da figura 4.3, tem-se o trimpot RV1 de 1 KΩ formando um
divisor de tensão com o resistor de R3 de 1 KΩ, a fim de fornecer a tensão exata de 2,5
V para o somador. O conector J3 faz a conexão com a guitarra, e logo após envia o
sinal para a entrada não inversora do Amp Op, juntamente com o nível DC de 2,5 V. O
trimpot RV2 garante que o ganho deste estágio do circuito seja próximo de 1, para que
não haja distorção do sinal.
4.3 – Diagrama esquemático do circuito de aquisição do sinal.
50
4.1.2 Filtro Antialiasing
A implementação deste estágio foi feita com um filtro ativo utilizando o Amp Op
LM358, de forma que o ruídos de alta freqüência fossem eliminados, evitando
interferências nos outros estágios do circuito. Os testes consistiram em aplicar
freqüências distintas à entrada do circuito, verificando sua funcionalidade no
osciloscópio. Este estágio também foi polarizado com um trimpot de 1 KΩ, a fim de
garantir uma melhor calibração, evitando perdas e distorções do sinal de áudio.
O esquemático da figura 4.4 mostra o filtro ativo com o resistor R5 de 10 KΩ e o
capacitor C1 de 1nF. O ganho de saída é controlado pelo trimpot RV3 de 1 KΩ, de
forma que fique próximo a 1.
4.4 – Diagrama esquemático do filtro anti-aliasing.
4.1.3 Polarização e configuração do PIC
Para os testes iniciais do PIC, foi elaborado um firmware contemplando apenas
entradas e saídas, com leds e chaves, de forma que pudessem ser testadas todas as
portas de entrada e saída necessárias no projeto. Após isso, a estas mesmas portas de
entrada e saídas foram conectados o display gráfico, as entradas e saídas de sinal, e
um novo firmware foi gravado no PIC, desta vez com o processamento do sinal.
51
4.1.1 Alimentação da PCI digital
Para que a alimentação do circuito fique o mais próxima possível de 5 V, foi
utilizado o regulador de tensão LM7805. A figura 4.5 mostra como este circuito foi
implementado. O trimpot RV2 e o resistor R18 fazem um divisor de tensão
4.5 – Diagrama esquemático do circuito oscilador.
4.1.4 Polarização do Display Gráfico
O display gráfico de 128x64 pixels utilizado foi configurado conforme o projeto
exemplo do fabricante, com um trimpot de 1 KΩ para calibrar o contraste, conectado
entre os pinos 5 e 18 do display, e também ao terra. A alimentação do mesmo é de 5 V,
realizada através do pino 4. O pino 19 controla a luz de fundo do display, podendo ser
ativado por uma chave, ou diretamente conectado a um resistor em série com o
barramento VCC. Todos os outros pinos do display são para recebimento de dados do
PIC, e foram conectados aos pinos indicados pelo projeto modelo do fabricante.
4.1.5 Polarização do oscilador
O oscilador utilizado é conectado a dois capacitores de 33 pF ligados ao terra,
como mostra o esquemático da figura 4.6. Os pinos do oscilador são ligados aos pinos
52
18 e 19 do dsPIC. O oscilador será conectado à PCI através de um soquete do tipo
barra de pinos com três pinos, devido ao espaçamento do componente.
4.6 – Diagrama esquemático do circuito oscilador.
4.1.6 Botões e chaves
A portas de entrada do dsPIC são muito sensíveis a ruídos, portanto foi utilizado
um filtro passa baixa em conjunto com os botões, funcionando como um debouncing.
Dessa forma não corre-se o risco de a cada toque nos botões ter-se vários pulsos
enviados ao dsPIC. Para este filtro foram utilizados um resistor de 3,3 KΩ e um
capacitor de 33 pF.
O esquemático da figura 4.7 mostra o filtro com um dip switch NA conectado ao
soquete J3, ligando o VCC ao dsPIC.
4.7 – Diagrama esquemático do circuito de acionamento dos dip swiches.
53
4.1.7 Circuito de Reset do dsPIC
Conforme indicação do datasheet do dsPIC, o pino 1 ou Master Reset funciona
com nível lógico 1. Através deste pino é possível resetar o firmware, aplicando nível
lógico 0.
O diagrama exquemático da figura 4.8 mostra como foi implementado este
circuito. O nível do pino 1 do dsPIC se mantém alto através da conexão direta com
VCC até que a chave seja pressionada. Quando isto ocorre o VCC é aterrado atravé do
filtro passa baixa, que bloqueia ruídos de alta freqüência.
4.8 – Diagrama esquemático do circuito de reset do dsPIC.
4.1.8 Conversor DAC
Nos testes iniciais foi utilizada uma placa da Microchip compatível com a placa
de desenvolvimento utilizada. Esta placa utiliza o CI MCP4921 para a conversão DAC
pelo protocolo SPI. No circuito digital será usado diretamente o MCP4921, configurado
conforme instruções de seu datasheet.
O diagrama esquemático da figura 4.9 mostra como este CI é configurado. Os
pinos 1 e 7 são a alimentação do CI, ligados diretamente a VCC e a GND. O pinos 2, 3
e 4 são ligados diretamente ás portas RF0, RF6 e RF3 do dsPIC. O pino 6 funciona
como tensão de referência, neste caso VCC de 5 V. O pino 8 dá a saída do circuito, já
com nível analógico de tensão, que é enviado ao circuito analógico de saída.
54
4.9 – Diagrama esquemático do circuito de conversão digital/analógico.
4.1.9 Filtro smoothing
Neste estágio, foi utilizado um filtro idêntico ao anti-aliasing, tendo por função
alisar a onda, retirando os componentes de alta freqüência que deixam o áudio
metalizado e com ruídos. Para a realização dos testes, foi inserido um sinal analógico
proveniente do circuito digital, que ainda estava com degraus provenientes da
conversão DAC. Após isso, o osciloscópio conseguiu comprovar a eficácia do filtro, que
gerou em sua saída uma onda senoidal pura, sem os componentes de alta freqüência.
A figura 4.10 mostra a atuação do filtro de alisamento (smoothing).
4.10 – Gráfico obtido em osciloscópio do filtro de alisamento (smoothing).
55
O esquemático da figura 4.11 mostra o filtro ativo com o resistor R7 de 10 KΩ e
o capacitor C2 de 1 nF. Da mesma forma que no filtro anti-aliasing, o ganho de saída é
controlado pelo trimpot RV4 de 1k, de forma que fique próximo a 1.
4.11 – Diagrama esquemático do filtro smoothing.
4.1.10 Zero Hold
Este estágio do circuito teve implementação e testes bem simples, com o
capacitor C3 de 100 nF da figura 4.12 funcionando como circuito aberto para o nível
DC de 2,5 V. O gerador de sinal foi calibrado com um offset, de forma que o nível
médio do sinal chegasse a 2,5 V, desta forma os testes com o osciloscópio mostraram
o retorno do sinal ao nível 0 V.
4.12 – Diagrama esquemático do circuito de saída.
56
A figura 4.13 mostra o sinal antes e depois de passar pelo filtro smoothing e pelo
Zero Hold. Pode-se notar o alisamento da onda, e a troca da referência de 2,5 V de
volta ao zero.
4.13 – Gráfico obtido em osciloscópio do circuito smoothing e Zero Hold.
4.1.11 Montagem PCI
Para a montagem das PCIs, o circuito foi dividido em duas partes, uma
analógica, e uma digital. Estes blocos possuem alimentações distintas, e desta forma
os circuitos ficaram mais bem distribuídos nas PCIs. A alimentação dos Amp Ops da
parte analógica é de 9 V, enquanto a alimentação do PIC e do display gráfico é 5 V.
O esquemático das placas foi projetado utilizando-se o Software Proteus, que
além de possibilitar simulações do diagrama esquemático, como mostra a figura 4.14,
também gera o layout da PCI, como mostra a figura 4.15. Este Software gera os
arquivos Gerber compatíveis com a fresadeira da Universidade Positivo, possibilitando
a confecção das placas na própria Universidade.
57
4.14 – Software Proteus, esquemáticos da placa digital.
4.15 – Software Proteus, layout da placa analógica.
58
4.2 - Kit didático e sua interação com o Hardware
A
empresa
MikroElektronika
há
anos
desenvolve
kits
didáticos
para
microcontroladores da PIC (Microchips). Apesar da existência de empresas nacionais
como a Microgenios, optou-se a utilização do kit didático da MikroElektronika devido à
grande quantidade de referências encontradas além da simples interação dos
compiladores (Linguagens Pascal, Basic ou C) que são do mesmo fabricante.
A figura 4.16 mostra a placa didática da MikroElektronika
4.16 – Placa didática EasydsPIC 4 da MikroElektronika
4.2.2 - Linguagem e compilador utilizados
O projeto da pedaleira faz utilização de configurações e freqüentes laços de
iteração. A opção pela linguagem C, foi tomada com base no fato de que existem
muitas referências bibliográficas de processamento digital de sinais em linguagem C
que em outras linguagem típicas tais como Basic e Pascal. Como o Kit escolhido foi o
da fabricante MikroElektronika, optou-se também em utilizar o compilador MikroC, do
mesmo fabricante.
59
A figura 4.174.16 mostra uma tela da interface de desenvolvimento e compilador
MikroC.
4.17 – IDE do compilador MikroC da MikroElektronika
O software da pedaleira para ser melhor compreendido e analisado será dividido
em duas funções principais, sendo uma delas a própria Função Main() e a outra a
Função Timer1Int(). Abaixo segue-se uma abordagem de cada uma delas com suas
respectivas sub-funções.
4.2.3 Função Main() – Função principal
Esta função é responsável pela inicialização e configuração dos recursos do
dsPIC 30F4013. Com exceção das funções Timer, todas as sub-funções são chamadas
à partir da função principal. Existem algumas linhas de código ainda que embora não
estejam agrupadas em uma função (linguagem C) pertencem ao mesmo grupo de
configuração. Ex.: Linhas de inicialização do display.
As sub-funções e blocos chamados pela função principal (main) são:
Inicialização do display: Função responsável por inicializar o display
gráfico GLCD e preparar sua comunicação com o PIC ds30F4013.
60
Função de Leitura de parâmetros EEPROM: Durante a utilização da
pedaleira, o usuário poderá salvar parâmetros na memória não-volátil
EEPROM para posterior carregamento. Caso o usuário tenha utilizado a
pedaleira e gravado configurações na memória EEPROM (a gravação é
feita sempre que o usuário sai do menu principal), este laço será
responsável por carregar as informações para a memória RAM, onde o
usuário poderá utilizá-los. Além de carregar os parâmetros, esta função
também escreve os dizeres “CARREGANDO parâmetros” no display
gráfico (GLCD).
Bloco de Escrita da tela inicial: Fará com que durante a inicialização, o
display exiba o formato básico de sua tela inicial.
Bloco de Inicialização do protocolo SPI: O projeto conta com a utilização
de um chip DAC (conversor Digital Analógico) denominado MCP4921,
que é um conversor de 12 bits que comunica com o PIC através do
protocolo SPI. O protocolo SPI é parametrizado e ajustado para ser
utilizado no conversor DAC nesta função.
Bloco de Inicialização e configuração da Porta RB7 como porta ADC:
Devido à característica de algumas portas do dsPIC 30F4013 serem
digitais ou analógicas é necessário ajustar as portas conforme
necessidade. Esta função é responsável por ajustar todas as portas como
digitais, exceto a porta RB7 que será utilizada para aquisição do sinal
vindo da guitarra.
Bloco de Inicialização da Interrupção por Timer23: A Interrupção ao
programa principal é uma seqüência de comandos que é executada
sempre que houver o estouro do timer. No caso do Timer2 consiste na
geração de uma LFO (Low Frequency Oscilator ou ainda Oscilador de
Baixa Frequência) que será utilizada para a geração dos efeitos Flanger e
Chorus. Nesta sub-função do programa principal, sua configuração é
executada.
Inicialização da Interrupção por Timer1: Uma das mais importantes
atribuições está ligada à interrupção por estouro do Timer1. A freqüência
desta interrupção é que definirá a taxa de amostragem do projeto, visto
61
que esta função faz a chamada de funções de entrada e saída do sinal.
Nesta sub-função do programa principal, sua configuração é executada.
Laço infinito com monitoramento de entrada ao menu: Este laço infinito é
utilizado para detectar a inatividade da interrupção por Timer1. Sempre
que for detectada tal inatividade, o laço principal será responsável por
entrar no menu, e salvar as configurações na memória EEPROM do PIC.
Uma vez saído do menu e salvo as configurações na memória EEPROM,
o próprio laço será responsável por reabilitar a interrupção por Timer1.
4.2.4 Função Timer1Int() – Função de estouro por Timer1
Toda vez que ocorrer o estouro por Timer1, esta função, junto com suas
respectivas sub-funções serão chamadas. Suas atribuições básicas são:
Detectar o pressionar do botão RB8, que causa inatividade da própria
interrupção por Timer1. Isto fará com que no laço principal da Função
Main, seja chamada a função que controla o Menu de configurações da
pedaleira.
Detectar o pressionar do botão RB12, que irá preparar o Banco de Efeitos
acima do Banco atual. Por exemplo: Trocar Banco B para Banco C. O
pressionar do botão RB12 não faz com que o Banco exibido no display
seja selecionado.
Detectar o pressionar do botão RC14, que irá preparar o Banco de Efeitos
abaixo do Banco atual. Por exemplo: Trocar Banco E para Banco D. O
pressionar do botão RC14 não faz com que o Banco exibido no display
seja selecionado.
Detectar o pressionar do botão RC13, que irá selecionar o Banco de
Efeitos preparado pelos botões RB12 e RC14. O pressionar do botão
RC13 faz com que o Banco exibido no display seja selecionado e seus
respectivos efeitos sejam aplicados ao sinal.
62
As principais sub-funções chamadas pela interrupção por Timer1 são:
ADC_INPUT_BUFFER: Função responsável por fazer a aquisição do sinal vindo
da guitarra. O sinal é armazenado numa palavra de 12 bits. Desde modo, cada amostra
do sinal assumirá valores entre 0 e 4095. Esta função também é responsável por
armazenar os valores de entrada em um Buffer para utilização dos efeitos baseados
em Tempo (Delay, Flanger, Chorus e Reverb).
O bit ADCON1.F1 deve ser sempre ajustado para 0 no início de cada conversor.
Este bit é responsável por limpar buffer e informar ao PIC que o módulo ADC está
disponível para a próxima conversão.
O registro ADCBUF0, contém o último valor oriundo do conversor AD. Este valor
é colocado na variável adc_value.
Existe ainda um ponteiro que varre o vetor de dados chamado de BUFFER. Este vetor
é declarado no início do programa onde será seu tamanho alocado de acordo com o
"DEFINE Size". Cada vez que um valor é colocado dentro de uma determinada posição
do buffer, este vai para a posição posterior até que o Buffer chegue ao fim.
Depois do Buffer varrer 1 vez, o próximo valor em posição do Buffer será o
último armazenado em função do tempo. Este tipo de Buffer é chamado de buffer
circular ou buffer FIFO (first in first out).
Abaixo a implementação da função ADC_INPUT_BUFFER em código C:
void ADC_INPUT_BUFFER(void)
{
ADCON1.F1 = 0;
adc_value=ADCBUF0;
BUFFER[Position]=adc_value;
Position++;
if (Position>(Size-1))
{
Position=0;
}
OVERDRIVE: Esta função cria o efeito de distorção por overdrive que ocorre
quando se multiplica os valores amostrados por uma constante de modo que estas não
excedam os limites superiores e inferiores da palavra de dados. (Neste caso, não pode
ser maior que 4095 nem menor que 0.)
63
Param1: É o numerador do coeficiente.
Param2: É o denominador do coefieciente.
Ex.: Param1 = 3 e Param2 = 2. Significa que o valor de saída será o valor atual
multiplicado por 3/2 ou seja 1,5.
Se parâmetros de entrada forem iguais a 0 ou maior que 10, retorna da
função sem executar qualquer modificação no sinal.
Se parâmetros de entrada estiverem entre 1 e 10, o valor será deslocado
em torno de 0 (min -2047 e máximo +2047) e será multiplicado por 2
vezes o valor do coeficiente formado pelos Parâmetros 1 e 2.
Se este valor ultrapassar 2047, o valor passará a ser 2047.
Se este valor ultrapassar -2047, o valor passará a ser -2047.
Desloca-se novamente o valor para os limites de 0 a 4095.
Retorna da função
Obs.: A variável global adc_value é variável que contem o valor atual coletado da
função ADC_INPUT_BUFFER(). Já a variável global adc_value2 existe apenas para
deslocar o sinal para baixo (em torno de 0) e é capaz de assumir valores negativos
visto que a mesma é declarada como signed int.
Abaixo a implementação da Função OverDrive em código C:
void OverDrive(unsigned int Param1, unsigned int Param2)
{
if ((Param1==0)||(Param1>10))
{return;}
else
{
adc_value2 = adc_value-2047;
adc_value2 = adc_value2*((2*Param1)/(Param2));
if(adc_value2>2047)
{
adc_value2 = 2047;
}
if(adc_value2<-2047)
{
64
adc_value2 = -2047;
}
adc_value2 = adc_value2+2047;
adc_value = adc_value2;
return;
}
}
A figura 4.164.18 mostra o efeito Overdrive aplicado à uma onda senoidal de
freqüência entre 100 Hz a 12 kHZ.
4.18 – Efeito Overdrive no osciloscópio.
FUZZ: Como o próprio nome sugere, esta função é responsável pela criação do
efeito Fuzz que ocorre quando se tem o sinal cortado em limites superiores e inferiores
pré-estabelecidos. (Lembrando que no Overdrive, os limites são os máximos
permitidos). Também no Fuzz é possível aplicar um ganho no sinal ou simplesmente
deixá-lo com ganho unitário.
Param1: Número de 0 a 10 que define o tamanho do valor a ser cortado.
Param2: Não é utilizado.
Ex.: Param1 = 3. Significa que o valor de saída será cortado em 3/10 do valor
atual multiplicado por 1.
Se parâmetros de entrada forem iguais a 0 ou maior que 10, retorna da
função sem executar qualquer modificação no sinal.
65
Se parâmetros de entrada estiverem entre 1 e 10, o valor será deslocado
em torno de 0 (min -2047 e máximo +2047) e será multiplicado por 1.
(Ganho unitário)
Seus limites então, serão definidos de acordo com Param1.
Desloca-se novamente o valor para os limites de 0 a 4095.
Retorna da função
Abaixo a implementação da Função Fuzz em código C:
void Fuzz(unsigned int Param1, unsigned int Param2)
{
if ((Param1==0)||(Param1>10))
{return;}
else
{
signed aux = 0;
adc_value2 = adc_value-2047;
adc_value2 = adc_value2*((Param1)/(Param1));
aux = (2047/10)*Param1;
if(adc_value2>(aux))
{
adc_value2 = (aux);
}
if(adc_value2<(-aux))
{
adc_value2 = -aux;
}
adc_value2 = adc_value2+2047;
adc_value = adc_value2;
return;
}
}
66
A figura 4.164.19 mostra o efeito Fuzz aplicado à uma onda senoidal de
freqüência entre 100 Hz a 12 kHZ.
4.19 – Efeito Fuzz no osciloscópio.
DELAY: O efeito Delay é o mais simples efeito baseado em tempo contido neste
projeto. A utilização do Buffer é essencial ao seu funcionamento. O delay ocorre
quando é somado o valor atual à um valor atrasado no tempo. O valor atrasado no
tempo na programação em C fica armazenado em no Buffer e é definido o nível de
atraso de acordo com os 2 parâmetros explanados a seguir:
Param1: É o percentual de quanto do sinal entrará com Delay.
Ex.: Param1 = 2 --> 20% do sinal tem delay e 80% do sinal é original.
Param2: É utilizado para definir qual o atraso (delay), 10 para atraso máximo, 0
para atraso mínimo.
Ex: Param2 = 10 -> O delay será o máximo possível.
Ex: Param2 = 5 -> O delay será de 50% do tamanho do Buffer. Se buffer tiver
100 posições terá 50 posições de delay.
Ex: Param2 = 0 -> O Delay será de 0%. Isto quer dizer que o efeito está
desativado, ou seja, entregará o sinal atual.
Abaixo a implementação do efeito Delay em linguagem C:
void Delay(unsigned int Param1, unsigned int Param2)
{
if ((Param1==0)||(Param1>10)||(Param2==0))
{
return;
}
67
else
{
unsigned int Auxiliar;
if (Param2==10)
{
Auxiliar = 1;
}
else
{
Auxiliar = (10-Param2)*(Size/10);
}
if (Position == (Size-1))
{
adc_value = ((adc_value*(10-Param1))/(10));
adc_value = adc_value + (((Param1)*BUFFER[Position-(Size Auxiliar)])/(10));
}
else{
if ((Position+Auxiliar)<Size)
{
adc_value = ((adc_value*(10-Param1))/(10));
adc_value = adc_value +(((Param1)*BUFFER[Position+Auxiliar])/(10
}
else{
adc_value = ((adc_value*(10-Param1))/(10));
adc_value = adc_value +
(((Param1)*BUFFER[(Position+Auxiliar)-Size])/(10
}
}
A figura 4.164.20 mostra o efeito Delay aplicado à uma onda senoidal de
freqüência entre 100 Hz a 12 kHZ. Foi utilizado o recurso Trigger do osciloscópio para
se observar tal efeito.
4.20 – Efeito Delay no osciloscópio.
68
DAC_OUTPUT: Uma vez que os sinais entraram e saíram das funções dos
efeitos, eles devem ser “devolvidos” ao mundo real. Para tal é utilizado um conversor
DAC que funciona com o protocolo SPI. O chip utilizado é o Microchip MCP4921.
Esta função foi construída e embasada de acordo com a documentação da
Microchip®.
Abaixo, a implementação da função DAC_OUTPUT em linguagem C:
void DAC_OUTPUT(unsigned int valueDAC) {
char temp;
PORTF.CS_PIN = 0;
// Send 2 bytes of valueDAC variable
temp = (valueDAC >> 8) & 0x0F;
transfer
// Select DAC module
// Prepare hi-byte for
// It's a 12-bit number, so
only
// lower nibble of high byte
is used
temp |= 0x30;
Spi_Write(temp);
temp = valueDAC;
transfer
Spi_Write(temp);
PORTF.CS_PIN = 1;
}
// Set MCP4921 control bits
// Send data via SPI
// Prepare lo-byte for
// Send data via SPI
// Deselect DAC module
A figura 4.164.21 mostra o sinal na saída do DAC do circuito digital sem receber
qualquer processamento de efeito. Nota-se que o sinal de entrada e saída estão em
fase. Também é possível observar que o sinal na saída está sem o filtro de alisamento.
4.21 – Ausência de qualquer efeito. Sinal passando pelo circuito digital.
69
4.2.5 Utilização de Programas de Simulação;
No início deste projeto, foram utilizados programas exemplo para simular e testar
alguns módulos de hardware do 30F4013. Entre eles foram feitos programas para
configuração do display, programas de inicialização e utilização do protocolo SPI bem
como programas para configurar a porta Analógica-Digital. Foram a partir destes
programas básicos que surgiu o primeiro programa “Pedaleira”, propriamente dito.
4.2.6 Configuração dos Timers utilizados;
Configuração do Timer23 (LFO em 4.75HZ): O timer 23 é formado por dois
Timers internos de 16 bits cada. (Timer2 e Timer3). Este pode ser concatenado de
modo gerar um Timer de 32 bits. Sua configurção em linguagem C segue como abaixo.
IPC1 = IPC1 | 0x1000;
IEC0 = IEC0 | 0x0080;
PR2
= 34;
clock.
PR3
= 0x0000;
T2CON = 0x8038;
delay_ms(1000);
// Prioridade do Timer3 definida como 1
// Interrupção do Timer3 ativada
// Período de interrupção é 65570 (65536 + 35) pulsos de
// Quantidade pulsos necessária total PR3/2=1*65536 + 34
// Timer2/3 é ativado, clock interno é dividido por 256
// Atraso de 1000 milisegundos = 1 segundo.
Configuração do Timer1 (Entrada, processamento e saída do sinal em 12kHz):
IPC0
= IPC0 | 0x1000;
IFS0
= IFS0 & 0xFFF7;
IEC0
= IEC0 | 0x0088;
PR1
= 400;
T1CON = 0x8000;
delay_ms(1000);
//
//
//
//
//
//
Prioridade da interrupção nível = 1
Limpa o registro TMR1IF
Ativa interrupção por Timer1
Periodo de interrupção é de 400 pulsos de clock.
Timer1 ativado, FCY do clock interno
Atraso de 1000 milisegundos = 1 segundo.
4.2.7 Utilização de sinais/valores de teste para os quais a resposta do
programa é conhecida
Para facilitar a confecção do circuito em protoboard, foi criado um software de
teste que colocava todos os pinos de saída digitais em nível alto e nível baixo, de
acordo com o pressionar dos pinos de entrada digitais.
4.2.8 Ajuste de velocidades de interrupção por Timer
Como calcular o período de pedidos de interrupção? Uma vez que o Clock
interno é de 10MHz com PLL 8X (80mhz), seu período é de 12,5 nS. Sendo o relógio
70
dividido por 8 (o prescaler reduz o clock em escala de 1:8) para formar o clock do timer,
segue-se que o clock do timer 12,5 * 8 = 100 ns isto 0.1 μs. A cada 400 pulsos de clock
uma interrupção é solicitada, ou seja , a uma freqüência de aproximadamente 12 kHz.
4.2.9 Limitações do projeto
Devido à escassez de memória RAM, o buffer de processamento permite efeitos
baseados em tempo de até 6 ms. Isto, pode dificultar a percepção auditiva de alguns
efeitos.
4.3 Placas de Circuito Impresso (PCI)
A figura 4.22 4.16mostra o diagrama esquemático da placa analógica. Esta placa
PCI contém os seguintes blocos: Aquisição do sinal, filtro antialiasing, filtro de
alisamento e zerohold.
4.22 – Diagrama esquemático placa analógica
71
A figura 4.23 4.16mostra o diagrama esquemático da placa digital.
4.23 – Diagrama esquemático placa digital
72
4.4 Custos do Projeto
A tabela abaixo mostra uma síntese dos custos do projeto.
Data
Item
Valor
26/fev
Impressão da Proposta
R$ 9,00
2/abr
Conectores P10 p/ Guitarra
R$ 6,00
14/abr
Placa didática MikroE EasydsPIC 4
22/abr
Impressão Datasheets
R$ 1,30
22/abr
Impressão Monografia
R$ 6,00
22/jun
Componentes diversos
R$ 28,50
17/jul
Componentes diversos
R$ 41,00
12/ago
Componentes diversos
R$ 1,00
14/ago
2 PICs Microchip 30F4013
R$ 60,02
1/set
Componentes diversos
R$ 16,00
11/set
Componentes diversos
R$ 5,00
23/set
3 DAC Microchip MCP4921
R$ 41,97
25/set
Componentes diversos
R$ 92,00
5/out
Componentes diversos
R$ 6,00
13/out
Parafusos p/ caixa de acrílico
R$ 10,80
22/out
Conectores p/alimentação da caixa
R$ 14,00
29/out
Parafusos p/ caixa de acrílico
R$ 5,00
30/out
Impressão Monografia
R$ 6,90
3/nov
Caixa de acrílico
R$ 45,00
3/nov
Led's para caixa de acrílico
R$ 4,00
R$ 448,00
TOTAL
R$ 847,49
73
CAPÍTULO 5 – CONCLUSÃO
O presente trabalho consistiu na utilização de processamento digital de sinais,
para criar efeitos para Guitarra. Estes efeitos foram criados com o auxílio do dsPIC
30F4013, utilizando a linguagem de programação C.
A partir dos resultados mostrados no capítulo 4, pode-se concluir que os efeitos
foram produzidos satisfatoriamente, a não ser pelos efeitos delay e reverb. Isto deveuse à escassez de memória RAM. Por serem baseados em armazenamento por buffer
(RAM), intervalos de tempo maiores não puderam ser obtidos, o que resultou em
efeitos pouco perceptíveis ao ouvido humano.
Nos últimos testes em protoboard, foram utilizados filtros mais eficazes para os
sinais de entrada e saída. Despendeu-se uma grande atenção à relação sinal/ruído,
uma vez que todo ruído que entra no dsPIC recebe um ganho que se mistura ao sinal
de interesse (áudio).
A taxa de amostragem utilizada (12 KHz) não proporcionou uma qualidade
excelente de áudio se comparada a qualidade encontrada em CD Players ou ainda
MP3 Players. Contudo, para o escopo deste projeto a qualidade obtida foi satisfatória.
Uma possibilidade de melhoria para o projeto seria o uso de um processador
DSP com maior capacidade de memória RAM. No que diz respeito à parte analógica
(aquisição, filtragem e saída do sinal) podem ser usados processadores com a
tecnologia FPAA, com filtros analógicos configuráveis digitalmente.
Este projeto teve a finalidade de promover o desenvolvimento técnico, portanto,
a montagem física final ficou bem robusta e pesada. Isto dificulta sua principal
aplicação, que seria o uso em palcos de apresentações. O que se sugere é a
confecção de uma pedaleira menor, mais leve e consequentemente mais portátil, o que
a viabilizaria comercialmente.
Conclui-se em aspectos gerais que o equipamento desenvolvido apresentou
respostas satisfatórias à sua proposta inicial, embora pudesse receber algumas
melhorias de modo a atender aplicações profissionais.
74
CAPÍTULO 6 – REFERÊNCIAS BIBLIOGRÁFICAS
[1]
Analog Devices: Digital to Analog Converters. Disponível em [http://www
.analog.com] Acesso em Abril de 2009.
[2]
BISQUOLO, PAULO AUGUSTO. Velocidade do som, eco e limites de
audibilidade. Santos, 2009. Artigo Educação UOL - Pedagogia & Comunicação.
Disponível em [http://educacao.uol.com.br] Acesso em Abril de 2009.
[3]
Digital Signal Processing: DSP tutorial. Disponível em [http://www.dsptutor.
freeuk.com/] Acesso em Abril de 2009.
[4]
GM Arts, Gutar Effects. Disponível em [http://users.sa.chariot.net.au/~gmarts
/fx.htm] Acesso em Abril de 2009.
[5]
HARRIS, TOM. Como Funciona a Audição. Artigo do HowStuffWorks.
Disponível em [http://saude.hsw.uol.com.br/audicao.htm] Acesso em Abril de 2009.
[6]
História de Tudo: História da Guitarra. Disponível em
[http://www.historiadetudo.com/ guitarra.html] Acesso em Abril de 2009.
[7]
Núcleo de Física do Instituto Superior Técnico: Ondas Sonoras. Disponível
em [http://astrocv.nfist.pt/sf/sf3/musica/ondas.htm] Acesso em Abril de 2009.
[8]
Texas Instruments: DSP tutorial. Disponível em [http://www.ti.com] Acesso em
Abril de 2009.
[9]
TOMARAKOS, JOHN E LEDGER, DAN – Using The Low-Cost, High-
Performance ADSP-21065L Digital Signal Processor For Digital Audio
Applications. Norwood, MA 02062, EUA, Abril, 1998.
75
APÊNDICE A – CUSTOS DO PROJETO
Data
Item
Valor
26/fev
Impressão da Proposta
R$ 9,00
2/abr
Conectores P10 p/ Guitarra
R$ 6,00
14/abr
Placa didática MikroE EasydsPIC 4
22/abr
Impressão Datasheets
R$ 1,30
22/abr
Impressão Monografia
R$ 6,00
22/jun
Componentes diversos
R$ 28,50
17/jul
Componentes diversos
R$ 41,00
12/ago
Componentes diversos
R$ 1,00
14/ago
2 PICs Microchip 30F4013
R$ 60,02
1/set
Componentes diversos
R$ 16,00
11/set
Componentes diversos
R$ 5,00
23/set
3 DAC Microchip MCP4921
R$ 41,97
25/set
Componentes diversos
R$ 92,00
5/out
Componentes diversos
R$ 6,00
13/out
Parafusos p/ caixa de acrílico
R$ 10,80
22/out
Conectores p/alimentação da caixa
R$ 14,00
29/out
Parafusos p/ caixa de acrílico
R$ 5,00
30/out
Impressão Monografia
R$ 6,90
3/nov
Caixa de acrílico
R$ 45,00
3/nov
Led's para caixa de acrílico
R$ 4,00
R$ 448,00
TOTAL
R$ 847,49
Download

Universidade Positivo