• Nenhum resultado encontrado

Processamento Digital do Sinal

No documento 2008.2DaviCaldas-Monografia (páginas 45-51)

Danielson-Lanczos e no bit reversal

3.2 Projeto de Hardware para Testes em Protoboard

3.2.3 Processamento Digital do Sinal

Continuando a descri¸c˜ao da Figura 8, o bloco seguinte (“Microcontrolador”) ´e o que representa o microcontrolador e sua estrutura adjacente. Considerando que o sinal encontra-se filtrado analogicamente e limitado em uma faixa de tens˜ao, o microcontrolador dever´a utilizar o algoritmo de estima¸c˜ao j´a definido. Uma vez estimada a frequˆencia de pitch, LEDs indicar˜ao a situa¸c˜ao de determinada corda do instrumento musical. O microcontrolador utilizado foi um ATMEGA8, de arquitetura RISC de 8- bits, da empresa Atmel. Tal escolha se deveu ao fato da disponibilidade imediata em laborat´orio do microcontrolador, al´em de atender as necessidades de projeto, devido `

a consider´avel velocidade na execu¸c˜ao de comandos (uma vez que instru¸c˜oes RISC s˜ao r´apidas e compactas) (TANENBAUM, 1990). Quanto `a estrutura adjacente a este microcontrolador, foram utilizados alguns resistores que eliminam o fator flutua¸c˜ao das portas do microcontrolador. Ou seja, tais resistores funcionam como um pull-down para algumas portas do microcontrolador (ATMEL, 2008). Esse pull-down ocorreu para evitar

3.2 Projeto de Hardware para Testes em Protoboard 45

que os LEDs de exibi¸c˜ao fiquem com valores flutuantes e acendam de maneira incorreta. Ou seja, os resistores aterram determinadas portas do microcontrolador.

O algoritmo presente no ATMEGA8 possui sua estrutura l´ogica baseada em um loop infinito, o qual verifica se um sinal est´a sendo obtido pelo microcontrolador. Caso afirmativo, ´e obtido um vetor de amostras e calculada a FFT de tal vetor e extra´ıdo o pitch do sinal. Em seguida o viol˜ao deve ser afinado pelo usu´ario.

3.2 Projeto de Hardware para Testes em Protoboard 46

Figura 13: Fluxograma da l´ogica presente no ATMEGA8.

Observa-se, na figura anterior, o que ocorre no sistema de forma sucinta. Enquanto n˜ao houver sinal de entrada, fica-se em loop, at´e que haja tal sinal. Uma vez presente o sinal, ´e verificada a escolha do usu´ario em rela¸c˜ao a que corda est´a sendo afinada.

3.2 Projeto de Hardware para Testes em Protoboard 47

Cada corda possui um c´odigo bin´ario de trˆes bits (uma vez que s˜ao seis possibilidades de escolha). ´E obtido um vetor de array de amostras do sinal amostrado, que servir´a de base para o passo seguinte: o c´alculo da FFT. Uma vez calculada a FFT, ´e obtida a frequˆencia de pitch de tal sinal, atrav´es da an´alise de janelamento e de magnitude. Ap´os isso, verifica-se qual LED dever´a ser aceso, afim de indicar ao usu´ario a situa¸c˜ao da corda. O usu´ario, por sua vez, atua no sistema, se preciso, afrouxando ou tensionando a corda. Dessa forma, o processo ´e realimentado, at´e que a corda esteja em sua frequˆencia correta de afina¸c˜ao.

O algoritmo desenvolvido referente ao fluxograma da Figura 13 ´e definido no Algoritmo 5.

3.2 Projeto de Hardware para Testes em Protoboard 48 begin 1 enquanto (1) fa¸ca 2 vetorAmostras ←− dadosDoConversorAD 3

enquanto h´a sinal de entrada fa¸ca

4

se h´a vetorAmostras ent˜ao

5

cordaEscolhida ←− verif icaCordaEscolhida()

6

limiteInf erior ←− limiteInf eriorCordaEscolhida()

7 limiteSuperior ←− limiteSuperiorCordaEscolhida() 8 pitchCorreto ←− pitchCorretoCordaEscolhida() 9 erro ←− pitchCorreto ∗ 2% 10

vetorF F T ←− resultadoF F T (vetorAmostras)

11

pitchObtido ←− identif icaP itchN oV etorF F T (vetorF F T )

12

se (pitchObtido ≤ limiteSuperior) e (pitchObtido ≥ limiteInferior)

13

ent˜ao

se pitchObtido > (pitchCorreto + erro) ent˜ao

14

LED V ermelho Corda Apertada()

15

fim

16

sen˜ao se pitchObtido < (pitchCorreto - erro) ent˜ao

17

LED V ermelho Corda F olgada()

18

fim

19

sen˜ao

20

LED V erde Corda Af inada()

21 fim 22 fim 23 sen˜ao 24

Mensagem de erro (fora dos limites do sistema)

25 fim 26 fim 27 fim 28 fim 29 end 30

Algoritmo 5: Algoritmo l´ogico presente no ATMEGA8.

3.2 Projeto de Hardware para Testes em Protoboard 49

captura de amostras atrav´es da porta de convers˜ao A/D do microcontrolador (linha 3). Foi definido que o projeto trataria, inicialmente, de vetores de 128 amostras. Ap´os a captura dos dados, o c´odigo presente no microcontrolador verifica qual corda foi selecionada pelo usu´ario. Como s˜ao seis cordas, foram utilizados 3 bits de precis˜ao (atrav´es das portas de entrada PIND.5, PIND.6 e PIND.7 do microcontrolador). Dessa forma, foi definido que os estados poss´ıveis seriam os expostos na Tabela 3.

Tabela 3: Poss´ıveis estados dos bits que definem a corda escolhida pelo usu´ario. Bits (PIND.5, PIND.6 PIND.7) Corda Escolhida Pitch Correto

000 nenhuma nenhum 001 1a Corda “mi” 329,63 010 2a Corda “si” 246,94 011 3a Corda “sol” 196,00 100 4a Corda “r´e” 146,83 101 5a Corda “l´a” 110,00 110 6a Corda “Mi” 83,407 111 nenhuma nenhum

Uma vez definida a corda, os pr´oximos passos (linhas 6 a 9) correspondem `a atualiza¸c˜ao das vari´aveis limiteInferior, limiteSuperior (que s˜ao as vari´aveis limitam o intervalo de frequˆencias a serem lidas em 50 Hz acima e abaixo do pitch correto da nota em quest˜ao) e pitchCorreto (que identifica qual a frequˆencia de pitch correta para a corda em quest˜ao).

Em seguida, na linha 10, calcula-se a taxa de erro para a afina¸c˜ao. Foi decis˜ao de projeto adotar uma margem de erro de 2%. Essa taxa de erro foi tomada levando em conta as varia¸c˜oes que costumam ocorrer em instrumentos musicais de corda. Como a pr´opria frequˆencia base de 440Hz (internacionalmente definida como a base para a afina¸c˜ao dos instrumentos) pode sofrer varia¸c˜oes, dependendo da orquestra em quest˜ao, varia¸c˜oes de 3% a 5% costumam ser consideradas aceit´aveis na afina¸c˜ao do instrumento (LERCH, 2006). O pr´oximo passo do algoritmo ´e calcular a transformada r´apida de Fourier para o vetor de amostras obtido. Esse procedimento ´e executado na linha 11 da figura anterior. Ap´os a transforma¸c˜ao, o que acontece na linha 12 ´e a execu¸c˜ao do algoritmo de janelamento criado e de busca do pitch no vetor de transformadas.

3.2 Projeto de Hardware para Testes em Protoboard 50

Ap´os a obten¸c˜ao do pitch, ´e verificado se o viol˜ao est´a fora das limites do sistema ( mais de 50 Hz acima ou abaixo do pitch correto) de acordo com a linha 13. Ap´os essa verifica¸c˜ao, ´e feita uma compara¸c˜ao do pitch obtido com o pitch correto (linhas 14 a 22) e, de acordo com a verifica¸c˜ao, o LED indicar´a ao usu´ario o estado da corda em quest˜ao: tensionada, afrouxada ou afinada. O usu´ario ent˜ao atua na corda, caso seja necess´ario e, ap´os isso, a corda dever´a possuir um novo pitch. Sendo assim, um novo vetor de amostras dever´a ser adquirido e todo o processo aqui descrito dever´a ser efetuado novamente.

No documento 2008.2DaviCaldas-Monografia (páginas 45-51)

Documentos relacionados