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