UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE TECNOLOGIA E GEOCIÊNCIAS CURSO DE ENGENHARIA ELETRÔNICA TRABALHO DE GRADUAÇÃO

Pedro Filipe Leite Correia de Toledo Pedro Lyra Pereira Cabral

Interruptor Eletrônico Controlado por Palmas

RECIFE, 28 DE JULHO DE 2010

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE TECNOLOGIA E GEOCIÊNCIAS CURSO DE ENGENHARIA ELETRÔNICA TRABALHO DE GRADUAÇÃO

Pedro Filipe Leite Correia de Toledo Pedro Lyra Pereira Cabral

Interruptor Eletrônico Controlado por Palmas

Trabalho de Graduação apresentado como requisito para obtenção do título de Bacharel em Engenharia Elétrica Eletrônica em Julho de 2010, pelo Curso de Engenharia Elétrica Eletrônica da Universidade Federal de Pernambuco Orientador: João Paulo Cerquinho Cajueiro

RECIFE, 28 DE JULHO DE 2010

Pedro Filipe Leite Correia de Toledo Pedro Lyra Pereira Cabral

Interruptor Eletrônico Controlado por Palmas
Trabalho de Graduação apresentado como requisito para obtenção do título de Bacharel em Engenharia Elétrica Eletrônica em Julho de 2010, pelo Curso de Engenharia Elétrica Eletrônica da Universidade Federal de Pernambuco Orientador: João Paulo Cerquinho Cajueiro

Aprovado em 28 de Julho de 2010

BANCA EXAMINADORA

___________________________________________________________________ Professor João Paulo Cerquinho Cajueiro – Universidade Federal de Pernambuco

___________________________________________________________________ Professor Mauro Rodrigues dos Santos – Universidade Federal de Pernambuco

___________________________________________________________________ Professor Tomaz de Carvalho Barros – Universidade Federal de Pernambuco

DEDICATÓRIA

Eu dedico este trabalho a toda minha família e amigos, em especial a minha avó Edite Leite da Silva (in memoriam) Pedro Toledo

Dedico este trabalho a meus queridos pais e irmãs, que sempre me apoiaram nesta longa empreitada da graduação Pedro Cabral

“Probabilitas enim est gradus certitudinis, et ab hac differt ut pars à toto." Jacob Bernoulli

RESUMO

Este trabalho se constitui do desenvolvimento de um circuito que tem a função de um interruptor controlado a palmas. O circuito tem uma parte analógica e outra digital. A parte analógica deve receber o sinal sonoro através de um microfone e filtrá-lo para gerar um impulso digital correspondente a palma e utiliza componentes como capacitores, resistores, amplificadores operacionais, além do circuito integrado LM 555, operando como monoestável. O processamento digital foi feito utilizando o microcontrolador PIC 16F877A do fabricante microchip. O circuito também possibilita gravar uma sequência de palmas, para que o interruptor seja ativado apenas quando esta sequência for repetida.

LISTA DE FIGURAS

Figura 1 - Diagrama de Blocos do Circuito .............................................................................. 12 Figura 2 - Circuito do sensor completo .................................................................................... 13 Figura 3 - Microfone de carvão (Esquemas Eletrônicos, 2010) .............................................. 14 Figura 4 - Microfone de cristal (Esquemas Eletrônicos, 2010) ................................................ 14 Figura 5 - Microfone condensador (PCB Piezotronics, 2010) ................................................. 15 Figura 6 - Microfone condensador de eletreto.......................................................................... 15 Figura 7 - Microfone magnético dinâmico ............................................................................... 15 Figura 8 - Um microfone magnético dinâmico típico .............................................................. 16 Figura 9 - Principais diagramas direcionais de microfones (WIKIPEDIA, 2010) ................... 16 Figura 10 - Esquema do filtro passa altas ativo ........................................................................ 17 Figura 11 - Resposta em frequência do filtro passa alta ativo .................................................. 18 Figura 12 – Esquema de conexão dos pinos do 555 (STMicroelectronics, 2008) ................... 18 Figura 13 - Esquema simplificado do 555 (STMicroelectronics, 2008) .................................. 18 Figura 14 - Esquema de ligação como monoestável (STMicroelectronics, 2008) ................... 19 Figura 15 - Esquema da ligação do 555 ................................................................................... 20 Figura 16 - Filtro passa-baixas ................................................................................................. 20 Figura 17 - Resposta em frequência do filtro passa-baixa ....................................................... 21 Figura 18 - Foto do PIC 16F877A (Fonte: HTTP://www.solarbotics.com)............................. 23 Figura 19 - Esquema do PIC 16F877A (fonte: http://derbytimer.com/diy/) ............................ 24 Figura 20 - Esquemático do modo de operação astável (STMicroelectronics, 2008) .............. 25 Figura 21 - Esquema de ligação do astável .............................................................................. 26 Figura 22 - Displays de 7 segmentos comerciais (Soares, 2009) ............................................. 27 Figura 23 - Ligação dos pinos do display de 7 segmentos (Soares, 2009) ............................... 27 Figura 24 - Ligação cátodo comum e ânodo comum (Soares, 2009) ....................................... 28 Figura 25 - Esquema do modo de varredura (Soares, 2009) .................................................... 28 Figura 26 - Ligação do circuito para fazer a varredura ............................................................ 29 Figura 27 - Foto de um display LCD de 16 pinos .................................................................... 30 Figura 28 - Esquema de ligação do LCD (Messias, 2007) ....................................................... 31 Figura 29 - Diagrama de tempo do protocolo de comunicação ................................................ 32 Figura 30 - Tempo entre duas palmas ...................................................................................... 37 Figura 31 - Diagrama de tempo de varredura dos displays de 7 segmentos ............................ 37 Figura 32 - Fluxograma do programa detector de duas palmas ............................................... 38 Figura 33 - Fluxograma do programa detector de sequência de palmas .................................. 40

LISTA DE TABELAS

Tabela 1 - Pinagem do LCD ..................................................................................................... 30 Tabela 2 - Descrição do RS ...................................................................................................... 31 Tabela 3 - Descrição do R/W ................................................................................................... 31 Tabela 4 - Comando 0x30 ........................................................................................................ 32 Tabela 5 - Comando de comunicação em 8 vias ...................................................................... 33 Tabela 6 - Comando para limpar o display............................................................................... 33 Tabela 7 - Comando para ligar display sem cursor .................................................................. 33 Tabela 8 - Comando para deslocamento automático do cursor para direita ............................. 33 Tabela 9 - Limpeza do display ................................................................................................. 34 Tabela 10 - Retorno do cursor .................................................................................................. 34 Tabela 11 - Modo de operação ................................................................................................. 34 Tabela 12 - Descrição dos modos de operação......................................................................... 35 Tabela 13 - Controle de display e cursor .................................................................................. 35 Tabela 14 - Descrição de controle de display e cursor ............................................................. 35 Tabela 15 - Deslocamento do cursor ou da mensagem ............................................................ 35 Tabela 16 - Descrição do deslocamento do cursor ou da mensagem ....................................... 35 Tabela 17 - Configuração para utilização ................................................................................. 36 Tabela 18 - Descrição de configuração para utilização ............................................................ 36

SUMÁRIO

1 INTRODUÇÃO ..................................................................................................................... 10 2 OBJETIVO ............................................................................................................................ 11 3 VISÃO GERAL DO CIRCUITO .......................................................................................... 12 4 SENSOR PARA RECONHECER A PALMA...................................................................... 13 4.1 Captação do Som ............................................................................................................ 13 4.2 Filtro Ativo ..................................................................................................................... 17 4.3 Temporizador 555 ........................................................................................................... 18 4.4 Última Filtragem ............................................................................................................. 20 5 MICROCONTROLADOR .................................................................................................... 22 5.1 Microcontroladores PIC .................................................................................................. 22 5.2 Histórico.......................................................................................................................... 22 5.3 Estrutura .......................................................................................................................... 22 5.4 PIC 16F877A .................................................................................................................. 23 6 PERIFÉRICOS ...................................................................................................................... 25 6.1 Oscilador Astável ............................................................................................................ 25 6.2 Display de Sete Segmentos ............................................................................................. 27 6.3 Display LCD ................................................................................................................... 29 7 ALGORITMO ....................................................................................................................... 37 7.1 Sensor de Palmas Simples .............................................................................................. 37 7.1.1 Fluxograma............................................................................................................... 38 7.2 Sensor de Palmas com Detector de Sequência (música) ................................................ 39 7.2.1 Fluxograma............................................................................................................... 40 8 MANUAL DE OPERAÇÃO DO CIRCUITO ...................................................................... 41 8.1 Funcionamento do Sensor de Duas Palmas .................................................................... 41 8.2 Funcionamento Sensor Sequência de Palmas ................................................................. 43

9 RESULTADOS OBTIDOS ................................................................................................... 47 9.1 Circuito de Captação de Duas Palmas ............................................................................ 47 9.2 Circuito de Captação de Sequência de Palmas ............................................................... 47 10 CONCLUSÃO ..................................................................................................................... 49 REFERÊNCIAS ....................................................................................................................... 50 APÊNDICE A – CÓDIGO DUAS PALMAS .......................................................................... 52 APÊNDICE B – CÓDIGO SEQUÊNCIA DE PALMAS ........................................................ 55 APÊNDICE C – ESQUEMA CIRCUITO COMPLETO DUAS PALMAS ............................ 60 APÊNDICE D – ESQUEMA CIRCUITO COMPLETO SEQUÊNCIA DE PALMAS ......... 61 APÊNDICE E – CUSTOS DO CIRCUITO ............................................................................. 62 ANEXO A – PRINCIPAIS FIGURAS DOS DATASHEETS ................................................. 64

10 1 INTRODUÇÃO

Nos dias de hoje a eletrônica está cada vez mais presente no cotidiano. Um dos objetivos da engenharia é desenvolver aplicações tecnológicas que possam tornar a vida das pessoas mais confortável. Apesar de ser uma tecnologia já existente no mercado, foi desenvolvido um interruptor de palmas. É muito prático, por exemplo, ao chegar em casa simplesmente acender as luzes com o bater de palmas. Também é útil quando se está deitado e deseja-se apagar as luzes. Para isto foi desenvolvido um circuito completo com diversas etapas analógicas e digitais que tem por objetivo processar o sinal sonoro das palmas e com isso ativar o interruptor.

11 2 OBJETIVO

O objetivo básico do projeto é detectar o som do bater de palmas das mãos e com isso ativar uma lâmpada. O primeiro objetivo é desenvolver um sensor que com duas palmas acenda uma luz e com uma única palma apague-a. Outro ponto crucial do projeto é a ampliação do mesmo para que ao toque de uma sequência de palmas o interruptor seja ativado. É um requisito do projeto a utilização do microcontrolador PIC 16F877A, por ser o disponível para uso.

12 3 VISÃO GERAL DO CIRCUITO

O princípio de funcionamento do circuito se baseia na utilização de um microfone, capaz de gerar um sinal muito intenso devido a intensidade do som propagado pelo bater palmas ou estalar os dedos. Esse sinal deve ser interpretado por um circuito como um pulso de entrada que está ligado a um microcontrolador, o qual será responsável por ligar ou desligar o interruptor do sistema. O microcontrolador PIC 16F877A recebe um pulso e faz toda a parte de processamento. Inicialmente o microcontrolador é usado apenas para capturar duas palmas e ativar uma saída. Depois várias palmas são registradas, formando uma sequência. Ele terá a função de gravar a sequência e sempre que ela for executada novamente deverá ativar o interruptor.

Figura 1 - Diagrama de Blocos do Circuito

13 4 SENSOR PARA RECONHECER A PALMA

Para reconhecer o som da palma é necessário um transdutor que converta o sinal mecânico do som em um sinal elétrico, ou seja, um microfone. Em seguida uma interface para digitalizar o sinal. São necessários vários estágios para realizar esta função. Inicialmente há um microfone que faz a conversão entre o sinal mecânico do som e um sinal elétrico. Em seguida um filtro ativo passa-altas depois há um capacitor de acoplamento e um circuito LM555 ligado como monoestável. Na saída do LM 555 é colocado um filtro passa-baixas.

Figura 2 - Circuito do sensor completo

4.1 Captação do Som

Para captar o sinal sonoro é utilizado um microfone. Ele capta a vibração do ar provocado pelo som, transformando essa vibração mecânica em impulsos elétricos, produzindo ondas de mesma frequência que o som que a gerou. O microfone converte vibrações mecânicas na faixa audível (em frequências de 20 Hz a 20 kHz - seja no ar, água ou num material sólido) em um sinal elétrico. Na maioria dos microfones em uso as ondas sonoras são convertidas em vibrações mecânicas através de um diafragma (palavra oriunda do grego diáphragma, significa literalmente barreira, separação) fino e flexível e em seguida convertidas em sinal elétrico. Serão brevemente analisados aqui alguns dos tipos mais comuns de microfone: carvão, cristal, condensador, eletreto e dinâmico. O microfone de carvão possui um grande número de grânulos de carvão dentro de pequeno invólucro. Quando esses grânulos são comprimidos, sua resistência é baixa e quando

14 são soltos, sua resistência é alta, o que faz com que a resistência varie quando ondas sonoras atingem o diafragma. O microfone de carvão é um exemplo de transdutor passivo pois não pode produzir uma tensão de saída por si mesmo. É necessário ter uma fonte de tensão contínua para obter corrente através de R. Essa corrente é necessária para produzir a tensão de áudio.

Figura 3 - Microfone de carvão (Esquemas Eletrônicos, 2010)

Também existe o microfone de cristal. Este cristal é um material piezoelétrico que gera uma tensão quando submetido à pressão. A pressão das ondas sonoras que deslocam o diafragma para frente e para trás provoca a vibração do cristal, o que produz uma tensão de saída. A tensão de saída está diretamente relacionada com a onda sonora que incide sobre o microfone. O microfone de cristal é um transdutor ativo, porque pode produzir uma tensão de saída por si mesmo.

Figura 4 - Microfone de cristal (Esquemas Eletrônicos, 2010)

Um microfone condensador funciona com um princípio capacitivo. Um diafragma fino colocado a uma pequena distância de uma placa de metal estacionária forma um capacitor. Quando ocorre uma variação de pressão o diafragma se move, fazendo com que a distância entre diafragma e placa varie, produzindo uma variação na capacitância proporcional a variação de pressão.

15

Figura 5 - Microfone condensador (PCB Piezotronics, 2010)

Um eletreto, material ferroelétrico permanentemente carregado ou polarizado, pode ser colocado na placa metálica a fim de criar uma “pré-polarização” fazendo com que sejam criados microfones de baixo custo e fácil utilização.

Figura 6 - Microfone condensador de eletreto

Um microfone magnético ou dinâmico é baseado no princípio de indução magnética. Este sistema simples pode ser obtido juntando uma bobina de fio a um diafragma fino. Quando ocorrer uma variação de pressão a bobina irá se mover. Como a bobina está submetida a um campo magnético, o seu movimento cria uma tensão proporcional à pressão exercida.

Figura 7 - Microfone magnético dinâmico

16 Em relação ao tipo de transdução acústica há dois tipos de microfone: microfones de pressão (geralmente de pior qualidade) e microfones de gradiente de pressão (microfones com propriedades direcionais). Os microfones de gradiente de pressão apresentam um fenômeno chamado efeito de proximidade que resulta num aumento acentuado da amplitude das frequências graves na proximidade da fonte sonora.

Figura 8 - Um microfone magnético dinâmico típico

Sendo assim, os microfones podem ser classificados quanto à diretividade da seguinte forma:    Omnidirecionais - Captam o som da fonte não importando a direção em que este chegue a sua cápsula. Bidirecionais - Captam o som igualmente no eixo da cápsula (0º e 180º), rejeitando o som que chega a 90º e a 270º. Cardioides - Captam com maior eficácia os sons emitidos na sua frente. À medida que a fonte sonora se desloca do eixo central do microfone, sua captação é reduzida. Desta forma, sons vindos de trás não são captados ou são captados com pequena intensidade.  Super e Hipercardioides - Captam além dos sons emitidos na sua frente, parte dos sons emitidos na parte de trás. Isto é bastante útil para aumentar o ganho do som, sem que haja microfonia.

Figura 9 - Principais diagramas direcionais de microfones (WIKIPEDIA, 2010)

17 4.2 Filtro Ativo

Como se deseja que o circuito atue quando houver uma palma, mas não quando houver uma voz muito alta, um filtro que separe um sinal do outro foi implementado. Dado que a voz humana se concentra em baixas frequências, enquanto que uma palma pode ser aproximada por um delta de Dirac e, portanto, tem componentes em todas as frequências, um filtro passa-altas deve atenuar a voz e deixar passar apenas as palmas. É o utilizado o circuito com amplificador operacional, mostrado na Figura 10.

Figura 10 - Esquema do filtro passa altas ativo

Procedendo com a análise no domínio de Laplace, considerando o amplificador operacional ideal.

Tem-se então o ganho

E a frequência de corte

Para os valores escolhidos de componentes

18 Encontra-se então o gráfico na resposta em frequência mostrado na Figura 11, este encontrado através de simulação pelo programa Circuit Maker 2000.

Figura 11 - Resposta em frequência do filtro passa alta ativo

4.3 Temporizador 555

O circuito 555 é extremamente popular e encontra diversas aplicações. Ele pode ser utilizado em geração de pulsos, temporização sequencial, atraso de tempo, modulação de largura de pulso (PWM) e geração de rampa linear.

Figura 12 – Esquema de conexão dos pinos do 555 (STMicroelectronics, 2008)

O circuito equivalente interno é como mostrado na Figura 13.

Figura 13 - Esquema simplificado do 555 (STMicroelectronics, 2008)

19 O CI 555 pode ser conectado de diversas maneiras. No caso escolheu-se a ligação como monoestável para detectar quando ocorreu uma palma. O multivibrador monoestável ou one-shot é uma variação do flip-flop, que é um multivibrador biestável, no qual uma das saídas está capacitivamente acoplada a uma das entradas. Assim o circuito permanece em um estado, sendo forçado a outro estado por um pulso momentâneo. Ele retorna ao estado inicial após certo tempo determinado pelo valor do resistor e capacitor.

Figura 14 - Esquema de ligação como monoestável (STMicroelectronics, 2008)

Neste modo de operação o timer funciona como um one-shot. O capacitor externo está inicialmente descarregado. Após a aplicação de um pulso trigger negativo de menos de um ⅓VCC (Pino 2) o flip-flop é ativado e capacitor começa a ser carregado. A voltagem no capacitor cresce exponencialmente por um período T=1,1.R1.C1, até que a voltagem se iguala a ⅔VCC. O comparador do threshold então reseta o flip-flop, o qual descarrega o capacitor a partir do transistor do pino e leva a saída para o nível lógico zero. Deseja-se um tempo de aproximadamente 8 ms e escolheu-se arbitrariamente um capacitor de 680 nF, então R deve ser igual a 10,7 kΩ. Considerando esse valor, foi utilizado o valor comercial mais próximo e mais comum, que é 10 kΩ. Logo, o novo valor para o tempo será de 7,48 ms. A forma como foi ligado no circuito é mostrada na Figura 15.

20

Figura 15 - Esquema da ligação do 555

4.4 Última Filtragem

Na saída do monoestável, para evitar a ocorrência de mais de um pulso é colocado um filtro passa-baixas. Isto evita oscilações indesejadas na saída do monoestável.

Figura 16 - Filtro passa-baixas

21 Para os valores utilizados

Através da simulação foi encontrado o gráfico da Figura 17.

Figura 17 - Resposta em frequência do filtro passa-baixa

22 5 MICROCONTROLADOR

5.1 Microcontroladores PIC

Os PICs (PICmicro) são uma família de microcontroladores fabricados pela Microchip Technology, que processam dados de 8 bits, de 16 bits e, mais recentemente, de 32 bits. Seu nome é oriundo de "Programmable Interface Controller". Contam com extensa variedade de modelos e periféricos internos. Possuem alta velocidade de processamento devido a sua arquitetura Harvard e conjunto de instruções RISC. Os PICs podem ser programados em linguagem mnemônica (assembly) ou usando-se compiladores de linguagem de alto nível (Pascal-petasse, C, Basic) que geram um código para ser gravado na memória de programa desses microcontroladores.

5.2 Histórico

As raízes dos PICs se originaram na universidade de Harvard com um projeto para o Departamento de Defesa, mas este foi vencido por um projeto de memória mais simples (e mais confiável na época) da Universidade de Princeton. A arquitetura Harvard foi primeiramente usada no 8x300 da Signetics, e foi adotada pela General Instruments para uso como interface controladora de periféricos (PIC) que foi projetada para compensar o fraco barramento de I/O da sua CPU CP1600 de 16 bits. A divisão de microeletrônica foi depois transformada na Arizona Microchip Technology (por volta de 1985), com os PICs como seu produto principal.

5.3 Estrutura

O PIC16x é muito simples, tem somente 33 instruções de 12 bits de largura fixa, incluindo diversas instruções de salto condicional a flags para a próxima instrução (para loops e rotinas condicionais), produzindo um código enxuto importante para aplicações em sistemas embarcados. Ele tem pipelines marginais (2 estágios, 1 de busca e 1 de execução), combinados com execução em um ciclo (exceto para saltos, com 2 ciclos), tendo um desempenho muito bom para a sua categoria.

23 O PIC 17x tem mais modos de endereçamento (direto, indireto, e relativo; as instruções de modo indireto gastam 2 ciclos para execução), mais instruções (58 de 16 bits), mais registradores (232 a 454), mais até 64k palavras de espaço de programa (2k a 8k no chip). As versões top de linha também possuem instruções de multiplicação de 8 bits sem sinal de 1 ciclo. Esse modelo está obsoleto, não sendo mais recomendado para novos projetos de acordo com a Microchip.

5.4 PIC 16F877A

O modelo de controlador disponível para este projeto foi o PIC 16F877A da empresa Microchip. Este modelo possui 40 pinos, sendo que destes 40 pinos, 7 pinos são usados para alimentação e controle do mesmo.

Figura 18 - Foto do PIC 16F877A (Fonte: HTTP://www.solarbotics.com)

Os demais pinos são conhecidos por I/Os (Inputs/Outputs). Estas I/Os são agrupadas em portas (ports), de no máximo 8 pinos cada (limitação pois o componente possui um núcleo de 8 bits). Há um total de 33 I/Os disponíveis, que podem ser configuradas como entradas ou saídas em tempo de execução.

24

Figura 19 - Esquema do PIC 16F877A (fonte: http://derbytimer.com/diy/)

Alguns pinos, porém, possuem outras funções além de serem entradas ou saídas digitais. Por exemplo, pode-se observar que os pinos 2 a 10 (exceto o pino 6) são entradas analógicas, e podem ser usados para detectar uma variação de tensão entre 0V e 5V, transformando esta variação em uma informação binária de 10 bits. Os pinos 39 e 40 também são pinos usados na gravação do microcontrolador, e os pinos 25 e 26 são usados para comunicação SERIAL padrão RS232. Os pinos 16 e 17 são pinos geradores de pulso (PWM), muito útil para controle de velocidade de motores, por exemplo. O pino 6 é um pino usado para contagem rápida.

25 6 PERIFÉRICOS

6.1 Oscilador Astável

Para o funcionamento do circuito é necessário o uso de um oscilador de 10 Hz. Decidiu-se utilizar um circuito integrado 555 ligado no modo astável. A partir disto foi possível conseguir a frequência desejada.

Figura 20 - Esquemático do modo de operação astável (STMicroelectronics, 2008)

Se o circuito for conectado da forma mostrada na Figura 20 ele dispara a si próprio e funciona como um multivibrador. O capacitor externo carrega através de R A+RB e descarrega através de RB. Então o duty cycle pode ser precisamente ajustado pela razão desses dois resistores. Neste modo de operação o capacitor carrega e descarrega entre ⅓VCC e ⅔VCC. No modo de disparo os tempos de carga e descarga do capacitor e também a frequência independem da tensão de alimentação. O tempo de carregamento do capacitor é dado por

O tempo de descarregamento do capacitor é dado por

Então o período total de oscilação é

26 Assim a frequência de oscilação é dada por

O duty cycle é dado por

Escolheram-se os seguintes valores para os componentes

Sendo assim tem-se uma frequência

E um duty cycle

Figura 21 - Esquema de ligação do astável

27 6.2 Display de Sete Segmentos

Os displays de sete segmentos são compostos, basicamente, de sete LEDs internos dispostos de maneira a formar um dígito. De acordo com a forma que são “acesos” ou “apagados” é possível demonstrar os números de 0 a 9 e até mesmo algumas letras. Na Figura 22 são mostrados alguns tamanhos encontrados no mercado.

Figura 22 - Displays de 7 segmentos comerciais (Soares, 2009)

Na Figura 23 é possível observar a posição de cada segmento, sua nomenclatura, assim como sua ligação através dos pinos. Existem muitos outros modelos, com pinagens diferentes e até mesmo com mais segmentos. E antes de usá-los é recomendável uma consulta ao datasheet do fabricante.

Figura 23 - Ligação dos pinos do display de 7 segmentos (Soares, 2009)

Além dos tipos, tamanhos, cores e pinagens diferentes é preciso também observar a ligação do pino comum. Ele pode ser do tipo Anodo Comum com ligação no VCC ou Catodo Comum com ligação no GND. A escolha de um ou outro depende do tipo do projeto, mas um não substitui o outro.

28

Figura 24 - Ligação cátodo comum e ânodo comum (Soares, 2009)

São necessários sete (ou oito se for considerado o ponto) pinos de I/O do microcontrolador para ligar um display. Se for necessário ligar mais de um display seriam necessários muitos pinos. Para isto é possível utilizar o modo de varredura. A varredura não serve apenas para entradas, mas também saídas. A Figura 25 mostra como isso pode ser implementado. Ligam-se todas as linhas dos segmentos juntas. Assim quando é enviado um valor para um display, é enviado para todos.

Figura 25 - Esquema do modo de varredura (Soares, 2009)

O que determinará qual display mostrará o valor é o controle do anodo/catodo. Ao inserir um valor na linha, estando todos os anodos (ou catodos) desligados, nenhum display acende e não há nenhum valor em nenhuma posição. Porém se é ligado um dos displays através de seu anodo (ou catodo) o valor será apresentado por este display e na posição desejada. Para mostrar outro valor, em outro ponto, basta trocar o valor da linha e ligar apenas o display desejado. Assim é possível fazer uma varredura, usando mais de um display e apenas uma linha de dados para sete segmentos. O ponto mais importante é a velocidade com que isso é feito, pois devido à limitação da visão humana não é possível perceber que os valores estão sendo trocados e muito menos que a posição dos mesmos variou. Dessa forma é possí-

29 vel visualizar um valor com um número de dígitos, todos mostrados ao mesmo tempo. Em média podem-se usar tempos de 5 ms (0,005s) a 30 ms (0,03s). No caso do circuito montado foi utilizado esse modo varredura no circuito de duas palmas para visualizar o tempo entre as duas palmas.

Figura 26 - Ligação do circuito para fazer a varredura

6.3 Display LCD

Para uma melhor interface máquina–usuário, um display de cristal líquido (LCD) está configurado para mostrar todas sequências gravadas do experimento. Mas antes, devemos inicializá-lo, isto é, configurar o LCD. Para isso, exige-se que um protocolo de configuração seja implementado. Existem muitos LCDs no mercado, mas trabalhar-se-á com o modelo mais padrão de todos. Trata-se de um display de duas linhas com 16 caracteres cada uma. Esse display é bem conhecido por ser o modelo utilizado nos telefones públicos (orelhões). Outra característica importante do display que estaremos estudando é que ele já possui um drive de controle inter-

30 no. Desta forma, nos comunicaremos com ele através de uma comunicação paralela, passando comandos e caracteres que desejamos escrever, diretamente em código ASCII.

Figura 27 - Foto de um display LCD de 16 pinos

Neste LCD possuímos 16 pinos para ligação do mesmo ao PIC. A Tabela 1identifica cada um desses pinos:
Tabela 1 - Pinagem do LCD

Os dois primeiros pinos (Vss e Vdd) são relativos à alimentação do componente e devem ser ligados a uma tensão nominal de 5VDC. As tensões mínima e máxima para alimentação podem variar conforme o fabricante, mas na maioria dos casos ficam entre 4,75 e 5,25Vdc. O pino Vo é utilizado para controle contraste e normalmente o ligamos ao centro de um potenciômetro de 10k com as extremidades ligadas ao Vss e ao Vdd. Na verdade, esse pino deve possuir uma tensão entre Vss e Vdd.

31

Figura 28 - Esquema de ligação do LCD (Messias, 2007)

O pino RS (Register Select) é utilizado para definirmos o tipo de informação passada através da comunicação paralela.
Tabela 2 - Descrição do RS

O pino R/W muda o estado do LCD entre Leitura (Read) e Escrita (Write). Essa mudança pode ser feita para escrevermos um comando ou dado e checarmos quando o LCD terminou a operação e está pronto para darmos continuidade ao processo.
Tabela 3 - Descrição do R/W

Neste caso, o LCD só opera em modo de escrita. Por isso, precisamos garantir o termino das operações internas do módulo de LCD através de tempos pré-estabelecidos. Esses tempos serão descritos adiante. O pino E(Enable) é utilizado para efetivar a leitura da informação escrita no barramento de dados. Essa leitura é efetuada na borda de descida deste sinal. Os pinos DB0 na DB7 equivalem ao barramento de dados paralelo. Apesar de existirem oito vias de dados, esses displays também podem operar com apenas quatro vias (DB4 a

32 DB7), com as demais vias ficando sem função. Neste caso, as informações são enviadas em dois pacotes de 4 bits cada um. O pinoas A(Anode) e K(Katode) são usados para ligação do Backligth(iluminação de fundo). O fato é que, apesar da existência dos pinos, nem todos os displays possuem essa iluminação. Para nós, então, valerá a comunicação em oito vias de dados, acrescida dos controles RS e E, dando um total de dez pinos interligando o PIC ao LCD. Desta forma, para enviarmos uma informação ao LCD precisaremos primeiramente ajustar RS para informarmos se é um comando ou um dado. Em seguida, devemos escrever a informação no barramento de dados. Próximo passo é darmos um pulso em E.

Figura 29 - Diagrama de tempo do protocolo de comunicação

A primeira ação a ser efetuada no display é a sua inicialização, garantido a comunicação em 8 vias. Para isso, devemos criar ma rotina baseada no seguinte roteiro: 1. Aguarde pelo menos 15 ms após a energização do LCD para garantir que ele já está operando corretamente. 2. Envie o comando 0x30 para o display 3 vezes e aguarde pelo menos 3 ms para cada vez.
Tabela 4 - Comando 0x30

3. Estabeleça as condições de utilização. Neste caso, comunicação em oito vias, display de duas linhas e matriz de 7x5 e aguarde 2ms.

33
Tabela 5 - Comando de comunicação em 8 vias

4. Comando de para limpar o display e posicionar o cursor na primeira linha, primeira coluna(esquerda) e aguarde 2ms.
Tabela 6 - Comando para limpar o display

5. Envie o comando para ligar o display sem cursor e aguarde 2ms.
Tabela 7 - Comando para ligar display sem cursor

6. Envie o comando para estabelecer o modo de operação. Por exemplo, deslocamento automático do cursor para a direita e aguarde 2ms.
Tabela 8 - Comando para deslocamento automático do cursor para direita

O código abaixo mostra como foi configurado. “char const tabela[6] = { 0x30,0x38,0x0f, 0x01, 0x06 }; void lcd_ini(void){ delay_ms(15); char contador = 0; RS=0; E = 0; for(contador=0;contador<3; contador++){ DATA = tabela[0]; E = 1; E = 0; delay_ms(3); }

34 for(contador=0;contador<4 ;contador ++ ){ DATA = tabela [ contador + 1] ; E = 1; E = 0; delay_ms(2); } }” Vejamos agora quais são os comandos existentes no display. As nomeclaturas utilizadas respeitam a maioria dos datasheets existentes para esse tipo de componente. Para informações mais detalhadas, recomendamos a consulta direta ao manual do modelo em uso no seu projeto. Os tempos apresentados também podem variar de um modelo pra outro. Alguns comandos estão tabelados.

Tabela 9 - Limpeza do display

Tabela 10 - Retorno do cursor

Tabela 11 - Modo de operação

35
Tabela 12 - Descrição dos modos de operação

Tabela 13 - Controle de display e cursor

Tabela 14 - Descrição de controle de display e cursor

Tabela 15 - Deslocamento do cursor ou da mensagem

Tabela 16 - Descrição do deslocamento do cursor ou da mensagem

36
Tabela 17 - Configuração para utilização

Tabela 18 - Descrição de configuração para utilização

No código em anexo é mostrado o que foi realizado para a configuração do LCD.

37 7 ALGORITMO

7.1 Sensor de Palmas Simples

Conhecido um pouco mais do PIC, é preciso entender o que o algoritmo do programa faz. A cada palma um pulso quadrado será gerado e processado pelo PIC. A ideia principal é contar o tempo entre as palmas como mostrado no diagrama da Figura 30 e verificar se essa diferença é maior ou menor que um tempo definido.

Figura 30 - Tempo entre duas palmas

Com o periférico capture será capturado cada pulso para entrar em uma interrupção. Dentro de cada interrupção será gravada a diferença de tempo entre pulsos, isto é, entre palmas em um registrador. Outro ponto principal é a varredura a qual tem como objetivo mostrar os tempos entre palmas. A varredura consiste em maximizar o uso dos pinos para jogar informação em cada Displays de 7-segmentos. Nesse caso, são usados 4 transistores npn para chavear cada display de 7 segmentos. Em cada ciclo de trabalho de cada display as informações são jogadas através de 8 pinos do PIC.A figura abaixo mostra o diagrama temporal do chaveamento do displays e o layout do circuito. Existe um pequeno delay para ativar cada display que está relacionado com o tempo de chaveamento do transistor.

Figura 31 - Diagrama de tempo de varredura dos displays de 7 segmentos

38 7.1.1 Fluxograma

A Figura 32 mostra o fluxograma do código do implementado mostrando o uso do capture e o uso da varredura pra mostrar o tempo entre as palmas.

Figura 32 - Fluxograma do programa detector de duas palmas

39 7.2 Sensor de Palmas com Detector de Sequência (música)

A ideia principal do sensor a música é armazenar as diferenças de tempos entre palmas em um vetor e compará-lo com outro vetor que armazena outra sequência de tempos entre palmas. Isto é, uma musica é armazenada a priori e comparada com outra musica. Se a sequência de tempos dos dois vetores forem iguais então acionará a carga desejada. Considerando quatro sequências e uma variável de controle: (a1,a2,a3....aN) (b1,b2,b3....bN) (c1,c2,c3..c[N-1]) (d1,d2,d3...d[N-1]) AcendE=0. As sequências são “c” e “d” são dadas por: c(i) = a(i+1)-a(i) d(i) = b(i+1)-b(i) Caso c(i) = d(i) para todo i E (1,2,3....,n) , então AcendE = AcendE +1. Nesse caso, se AcendE = N-1 , então as sequências são iguais.Consequentemente, a Luz acenderá. Algoritmicamente resolvido.

40 7.2.1 Fluxograma

As próximas figuras mostram o fluxograma do programa correspondente a sequência de palmas.

Figura 33 - Fluxograma do programa detector de sequência de palmas

41 8 MANUAL DE OPERAÇÃO DO CIRCUITO

8.1 Funcionamento do Sensor de Duas Palmas 1 – Estrutura geral: Azul -> LED de operação, Amarelo-> Simulação do sensor da palma e Verde-> dysplays de 7 segmentos (varredura)

2 –Azul -> Indica que aconteceu a primeira palma

42 3 - Azul-> Indica que a segunda palma aconteceu. Verde-> Como o tempo foi maior que 3 segundos(3,3 segundos jah que o oscilador externo está em 10Hz) então a LUZ(Vermelho) não acendeu.

4 - Azul-> Indica que a segunda palma aconteceu. Verde-> Como o tempo foi menor que 3 segundos(1,7 segundos jah que o oscilador externo está em 10Hz) então a LUZ(Vermelho) acendeu.

43 8.2 Funcionamento Sensor Sequência de Palmas 1 – Apresentação do trabalho de graduação: Vermelho->LED de Operação, Azul->LCD, Verde->simulação do sensor de palma e Amarelo->Botões de controle.

2 – Fase de gravação da musica, isto é, da primeira sequencia (a1, a2,..., aN): Amarelo -> botão de gravação ativado. Azul -> sequencia de tempos gravados.

44 3 – Gravação da segunda sequencia (b1,b2,b3....bN): Verde- Está habilitado para tentar ligar a luz ; Vermelho: A musica não está sendo gravada e sim testada ; Azul: O LCD está mostrando as duas sequencias.

4 – Gerando as seqüência: (a2-a1,a3-a2,a4-a3,....,an-a(n-1)) e (b2-b1,b3-b2,b4-b3,....,bn-b(n1)) e que serão comparadas para ligar a LUZ.

45 5 – Se tudo OK, então a Luz ligará:

6- Mais uma palma desligará a LUZ.

46 8 – Botão que mostra o vetor : (a2-a1,a3-a2,a4-a3,....,an-a(n-1))

9 – Botão que mostra o vetor : (b2-b1,b3-b2,b4-b3,....,bn-b(n-1))

47 9 RESULTADOS OBTIDOS

Inicialmente foram encontradas dificuldades para simular o circuito. As funções de interrupção de capture e outras do PIC não estavam sendo simuladas da forma esperada. Foi verificado que o problema era com a versão do programa Labcenter Electronics Proteus 7.6 SP0. Quando foi utilizada a versão 7.1 SP2 do Proteus a simulação funcionou da forma esperada. Outra dificuldade encontrada foi quanto a captação de som. O transdutor do microfone e o circuito tinha um alcance limitado. Foram feitas algumas melhorias no circuito, trocando componentes e procurando melhorar o ganho, a fim de obter o resultado satisfatório. Decidiuse por utilizar o amplificador operacional em malha aberta para obter maior ganho.

9.1 Circuito de Captação de Duas Palmas

O programa de captação de palmas funcionou da maneira esperada, ativando a saída e ligando o LED com duas palmas e desligando com uma palma. Foram utilizados neste caso três displays de sete segmentos ativados pelo modo de varredura. Isto foi feito no sentido de economizar I/O do PIC, já que cada display no modo normal consome sete (ou oito, se tiver o ponto) pinos de I/O. Neste caso foi recomendável utilizar o modo de varredura, que nada mais é do que atualizar um display de cada vez, tendo um pino que ativa esse display. Desta forma se usam 8 pinos para enviar as informações e mais os pinos para ativar o display. Este display mostrou da forma esperada o tempo entre batidas de palmas.

9.2 Circuito de Captação de Sequência de Palmas

Também foi feita uma melhoria para detectar uma sequência de palmas, ou seja, uma “música”. Ele recebe uma sequência de palmas, gravando os tempos correspondentes e depois verifica se a sequência é repetida. Neste caso, como havia vários valores de tempos, foi preferível utilizar um mostrador de LCD. Foi utilizado o popular mostrador de LCD que tem duas linhas com 16 caracteres cada uma. Após alguns estudos, funcionou como esperado, mostrando os tempos das palmas e

48 depois mostrando a comparação entre as diferenças. Se estivesse dentro do limite tolerável ele ativava a saída. Foram encontradas algumas dificuldades quanto a montagem do display LCD pois este tem 16 pinos. Quando foi ser feita a ligação do PIC com o LCD foi escolhida a porta D do PIC. Porém verificou-se que os pinos da porta D não estão adjacentes no PIC, fazendo com que se tornasse trabalhoso ligar todos os pinos do PIC e do LCD. Uma melhoria possível seria escolher pinos no PIC colocados de forma contínua, fazendo com que a ligação entre PIC e display LCD fosse mais prática.

49 10 CONCLUSÃO

Este trabalho de graduação foi desenvolvido no intuito de complementar os conhecimentos adquiridos ao longo do curso. Foi utilizado o aprendizado de eletrônica analógica e digital. A parte do sensor abrangeu disciplinas como Circuitos Elétricos, Eletrônica Analógica, Sinais e Sistemas e Princípios de Comunicação, no intuito de digitalizar um sinal analógico: as palmas. O programa do microcontrolador foi desenvolvido em linguagem C. Esta havia sido estudada em disciplinas como Computação Eletrônica, Métodos Computacionais e Microcomputadores. O microcontrolador PIC, que foi utilizado neste projeto, já havia sido estudado ao longo do curso na disciplina de microcomputadores. O PIC é largamente utilizado e esta foi apenas uma aplicação possível para este microcontrolador. A metodologia de projeto utilizada foi muito importante. Desenvolver o sensor de palmas em blocos e depois acoplá-los foi a melhor escolha para detectar oportunidades de melhoria, pois o projeto de um circuito grande acaba tornando sua análise muito complexa. Quanto à parte da programação foi interessante desenvolver primeiro um exemplo mais simples, que foi o sensor de detector de duas palmas para depois desenvolver o mais complexo sensor detector de sequência de palmas. Concluiu-se que a utilização da teoria em conjunto com a prática, com o auxílio da matemática, física, simulações computacionais, fazendo um planejamento e divisão do trabalho é essencial para o sucesso em um projeto desta magnitude. Em relação ao projeto final concluí-se que talvez seja mais vantajosa à produção deste circuito em larga escala, pois o custo unitário cairia bastante, estima-se metade do preço. Neste caso, os custos foram altos por que os componentes foram comprados no varejo. Para futuros projetos de graduação poderia ser proposto o desenvolvimento de um circuito de alimentação de corrente contínua, a montagem em circuito impresso e um estudo mais aprofundado da parte de captação.

50 REFERÊNCIAS

CUSTOM COMPUTER SERVICES. CCS Downloads. C Compiler Reference Manual, 2010. Disponivel em: <http://www.ccsinfo.com/downloads/ccs_c_manual.pdf>. Acesso em: 15 de Junho de 2010.

ESQUEMAS ELETRÔNICOS. Como Funciona um Microfone?, 2010. Disponivel em: <http://eletronicos.etc.br/tag/microfones/>. Acesso em: 23 de Julho de 2010.

HOROWITZ, P.; HILL, W. The Art of Electronics. 2ª. ed. Cambridge: Cambridge University Press, 1989.

MAIA, T. A. C.; RETES, P. F. L. eletronica.org. Interruptor Eletrônico Controlado por Som, 2008. Disponivel em: <http://www2.eletronica.org/projetos/interruptor-eletronicocontrolado-por-som/>. Acesso em: 12 de Julho de 2010.

MESSIAS, A. R. Rogercom. Conectando um Pen-drive a um Microcontrolador, 2007. Disponivel em: <http://www.rogercom.com/Microcontrolador/Pag05.htm>. Acesso em: 25 de Julho de 2010.

PCB

PIEZOTRONICS.

Microphone

Handbook,

2010.

Disponivel

em: Acesso

<http://www.pcb.com/Linked_Documents/Vibration/Microphone_Handbook.pdf>. em: 22 de Julho de 2010.

PEREIRA, F. Microcontroladores PIC: Programação em C. São Paulo: Érica, 2003.

SILVA JÚNIOR, V. P. Linguagem C para microcontroladores PIC. [S.l.]: Vidal Projetos Personalizados, 1999.

SOARES, M. J. Arne Robotics. Controle de Displays de Sete Segmentos, 2009. Disponivel em: <http://www.arnerobotics.com.br/eletronica/Microcontrolador_PIC_pratica_4.htm>.

Acesso em: 24 de Julho de 2010.

51

SOUZA, D. J.; LAVINIA, N. C. Conectando o PIC 16F877A: Recursos Avançados. 3ª. ed. São Paulo: Érica, 2003.

STMICROELECTRONICS. General-purpose single bipolar timers. NE555, SA555, SE555, 2008. Disponivel em: <http://www.st.com/stonline/products/literature/ds/2182.pdf>. Acesso em: 20 de Julho de 2010.

STMICROELECTRONICS. General-purpose single operational amplifier. UA741, 2009. Disponivel em: <http://www.st.com/stonline/products/literature/ds/5304/ua741.pdf>. Acesso em: 21 de Julho de 2010.

WIKIPEDIA.

Wikipedia.

Microfone,

2010.

Disponivel

em:

<http://pt.wikipedia.org/wiki/Microfone>. Acesso em: 13 de Julho de 2010.

52 APÊNDICE A – CÓDIGO DUAS PALMAS

#include <16f877A.h> #device adc=8 #use delay(clock=4000000) #fuses HS,NOWDT,PUT #priority timer0, ccp1 int codificacao[] = {// DPGFEDCBA 0b00111111, // 0 0b00000110 // I-1 0b01011011, // T-2 0b01001111, // A-3 0b01100110, // E-4 0b01101101, // U-5 0b01111101, // M1-6 0b00000111, // M2-7 0b01111111, // O-8 0b01101111};// vazio -9 int diferenca=0,unidade=0,dezena=0,centena=0,milhar=0,controle=0,controle2=0; int tempoPassado,tempoAtual; #INT_CCP1 void trata_ccp1(){ //teste para ver se essa interrupção está funcionando// if(controle2%3 == 0){ output_high(PIN_B2); tempoPassado = CCP_1; output_low(PIN_B3); } if(controle2%3 == 1){ output_low(PIN_B2); tempoAtual = CCP_1; diferenca= tempoAtual - tempoPassado; if(diferenca<30){ output_high(PIN_B3); }else{ output_low(PIN_B3); controle2=-1; } } if(controle2%3==2){ output_low(PIN_B3);

53
} controle2++; } #int_timer0 void trata_t0(){ if(controle%4==0){ //varre a unidade output_a(2); output_d(codificacao[unidade]); } if(controle%4==1){ //varre a dezena output_a(16); output_d(codificacao[dezena]); } if(controle%4==2){ //varre a dezena output_a(8); output_d(codificacao[centena]); } if(controle%4==3){ //varre a dezena output_a(4); output_d(codificacao[milhar]); } controle++; } int pegaDezena(int numero){ int temp=0; temp = numero; temp = temp%100; temp = temp - temp%10; temp = temp/10; return(temp); } int pegaCentena(int numero){ int temp=0; temp = numero; temp = temp - temp%100; temp = temp/100; return(temp);

54
} void atualiza(long int numero ){ unidade = numero%10; dezena = pegaDezena(numero); centena = pegaCentena(numero); } void main(){ /* Configuração */ //configuração da conversao setup_adc(ADC_OFF); //configuração da varredura setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2); set_timer0(0); //habilitação da interrupção enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER0); enable_interrupts(INT_CCP1); /* liga o computador */ output_high(PIN_B1); //ligando a maquina /* configuração do capture 1 */ setup_timer_1(T1_EXTERNAL); // habilita o timer 1 com clock externo set_timer1(0); /*Computador*/ while(true){ atualiza(diferenca); } } //limpando o timer 1 setup_ccp1(CCP_CAPTURE_FE) ; // coloca a entrada CCP1 em captura com sensibilidade na borda descida

55 APÊNDICE B – CÓDIGO SEQUÊNCIA DE PALMAS
#include <16f877.h> #include <REGS.h> #device adc=8 #use delay(clock=4000000) #fuses HS,NOWDT,PUT //definição das variáveis de controle// int botaoDeGravacao=0,verificacaoIgualdade=0,botaoDeMostraTempoGravados = 0, botaoDeMostraTempoTestados = 0,acende=0,apagaLuz=0,i2=0; int numeroDePalmas=0; int numeroDePalmasTeste=0; int numeroDePalmasTotal=0; int vetorDeTempos[15]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int vetorDeRazoes[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int vetorDeTemposTeste[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int vetorDeRazoesTeste[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //rotina da interrupção de borda de descida da entrada CCP1 pino 17// #define DATA PORTD #define RS PORTE_0 #define E PORTE_1 #define lcd_seg_lin 0x40 char const tabela[6] = { 0x30,0x38,0x0f, 0x01, 0x06,0x01}; void lcd_pos_xy(char x ,char y){ char endereco; if(y!=1) endereco = lcd_seg_lin; else endereco = 0 ; endereco = endereco + (x - 1); RS=0; endereco = 0x80 | endereco; DATA = endereco ; E = 1; E = 0; delay_ms(2); } void lcd_ini(void){ delay_ms(15); char contador = 0; RS=0; E = 0; for(contador=0;contador<3; contador++){ DATA = tabela[0];

56
E = 1; E = 0; delay_ms(3); } for(contador=0;contador<4;contador ++ ){ DATA = tabela [ contador + 1] ; E = 1; E = 0; delay_ms(2); } } void lcd_escreve(char caracter){ RS = 1 ; delay_us(100); DATA = caracter ; E = 1; E = 0; } void limpa_lcd(){ lcd_pos_xy(1,1); lcd_escreve(" lcd_pos_xy(1,2); lcd_escreve(" } #INT_CCP1 void trata_ccp1(){ //zerando a variavel acende// acende = 0; //caso a opção de gravação foi requisitada// if(botaoDeGravacao==1){ //começando a gravação// numeroDePalmas++; //imprimindo os tempos das palmas lcd_pos_xy(2*(numeroDePalmas)-1,1); printf(lcd_escreve,"%d",vetorDeTempos[numeroDePalmas-1]); numeroDePalmasTotal = numeroDePalmas; rados //com os intervalos gravados anteriormente if(apagaLuz == 0){ //verificação da música if((botaoDeGravacao==0)&&(vetorDeTempos[0]!=0)){ //grava o numero total de palmas //se não for a palma para desligar a luz, então essa rotina grava os interlos entre as palmas que serão compa//conta o numero de palmas vetorDeTempos[numeroDePalmas-1] = CCP_1; //grava os tempos entre as palmas "); ");

57
numeroDePalmas=0; numeroDePalmasTeste++; //essa variável é zerada caso uma nova musica seja gravada denovo //conta o número de palmas

vetorDeTemposTeste[numeroDePalmasTeste-1] = CCP_1; //grava os tempos entre as palmas //imprimindo os tempos das palmas de testes lcd_pos_xy(2*(numeroDePalmasTeste)-1,2); printf(lcd_escreve,"%d",vetorDeTemposTeste[numeroDePalmasTeste-1]); if(numeroDePalmasTeste == numeroDePalmasTotal){ output_high(PIN_B2); numeroDePalmasTeste = 0; verificacaoIgualdade = 1; comparados } } }else{ //caso seja palma para desligar entao a luz será desligada lcd_pos_xy(1,1); lcd_escreve("Luz OFF"); output_low(PIN_B3); //apaga a luz apagaLuz=0; } } void main(){ /*definição*/ int i=0,botaoDeApagamento=0; /* Configuração */ //configuração da conversao setup_adc(ADC_OFF); //configuração da varredura setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2); set_timer0(0); //habilitação da interrupção enable_interrupts(GLOBAL); enable_interrupts(INT_CCP1); /* liga o computador */ output_high(PIN_B1); //ligando a maquina /* configuração do capture 1 */ setup_timer_1(T1_EXTERNAL); // habilita o timer 1 com clock externo set_timer1(0); de descida //configurando o LCD; TRISD=0b00000000; //limpando o timer 1 setup_ccp1(CCP_CAPTURE_FE) ; // coloca a entrada CCP1 em modo de captura com sensibilidade na borda //variável que define se a palma é para ser gravada ou a que apagará a luz //zera a variavel de contagem para uma nova comparação //permite que os intervalos dos dois eventos diferentes sejam

58
TRISE=0b00000000; lcd_ini(); lcd_pos_xy(1,1); lcd_escreve("TG 2010.1"); lcd_pos_xy(1,2); lcd_escreve("Pedro s"); delay_ms(2000); limpa_lcd(); set_timer1(0); /*Computador*/ while(true){ //verificando se o sistema está em fase de gravação ou não botaoDeGravacao = input(PIN_B4); botaoDeMostraTempoGravados = input(PIN_C3); botaoDeMostraTempoTestados = input(PIN_C4); if((botaoDeGravacao == 1)){ output_low(PIN_B2); }else{ output_high(PIN_B2); } //verificando se o sistema está em fase de apagamento botaoDeApagamento = input(PIN_B5); //atualiza os display para verificar os tempos entre as palmas if((verificacaoIgualdade == 1)){ output_high(PIN_B6); //formando as razoes para a verificação e comparando as razoes limpa_lcd(); for(i=1;i<numerodePalmasTotal;i++){ //formando o vetor de razões da musica gravada// vetorDeRazoes[i-1]=vetorDeTempos[i] - vetorDeTempos[i-1]; lcd_pos_xy(2*i-1,1); printf(lcd_escreve,"%d",vetorDeRazoes[i-1]); //formando o vertor de razões da musica de teste// vetorDeRazoesTeste[i-1] = vetorDeTemposTeste[i] - vetorDeTemposTeste[i-1]; lcd_pos_xy(2*i-1,2); printf(lcd_escreve,"%d",vetorDeRazoesTeste[i-1]); //testando a igualdade// if((vetorDeRazoesTeste[i-1]>=vetorDeRazoes[i-1]-2)&&(vetorDeRazoesTeste[i-1]<=vetorDeRazoes[i1]+2)){ acende++; } delay_ms(3000); }

59
//ligando o led de acordo com a comparação anterior if ((acende >= numerodePalmasTotal-1)){ output_high(PIN_B3); apagaLuz = 1; limpa_lcd(); lcd_pos_xy(1,1); lcd_escreve("Luz ON"); delay_ms(300); } verificacaoIgualdade=0; } if(botaoDeApagamento ==1){ for(i=0;i<9;i++){ //limpando os dados totais// vetorDeRazoes[i]=0; vetorDeTempos[i]=0; } limpa_lcd(); } if((botaoDeMostraTempoGravados == 1)){ limpa_lcd(); for(i2=1;i2<numerodePalmasTotal;i2++){ //Mostando todas diferenças de tempos gravados// lcd_pos_xy(2*i2-1,1); printf(lcd_escreve,"%d",vetorDeRazoes[i2-1]); } lcd_pos_xy(1,2); lcd_escreve("Tempos Gravados"); delay_ms(1000); } if((botaoDeMostraTempoTestados ==1)){ limpa_lcd(); for(i2=1;i2<numerodePalmasTotal;i2++){ //Mostando todas diferenças de tempos de testes gravados// lcd_pos_xy(2*i2-1,1); printf(lcd_escreve,"%d",vetorDeRazoesTeste[i2-1]); } lcd_pos_xy(1,2); lcd_escreve("Tempos Testes"); delay_ms(1000); } } }

60 APÊNDICE C – ESQUEMA CIRCUITO COMPLETO DUAS PALMAS

61 APÊNDICE D – ESQUEMA CIRCUITO COMPLETO SEQUÊNCIA DE PALMAS

62 APÊNDICE E – CUSTOS DO CIRCUITO

CIRCUITO DETECTOR DE DUAS PALMAS Quantidade 2 2 2 1 2 1 4 1 3 1 2 1 1 1 1 1 Referencia Capacitor Capacitor Capacitor Capacitor Resistor Resistor Resistor Resistor Resistor AMPOP TIMER LED LED LED TRANS MICROFONE Valor 100nF 10nF 680nF 220n 330k 1k 10k 560k 220 UA741 NE555 AMARELO VERMELHO VERDE PIC16F877A ELETRETO Preço Unitário 0,53 0,26 1,46 0,53 0,10 0,10 0,10 0,10 0,41 1,46 0,80 0,29 0,29 0,29 29,90 0,71 TOTAL Preço Total 1,06 0,52 2,92 0,53 0,2 0,1 0,4 0,1 1,23 1,46 1,6 0,29 0,29 0,29 29,9 0,71 41,6

63

CIRCUITO DETECTOR DE SEQUÊNCIA DE PALMAS Quantidade 2 2 2 1 2 5 1 3 4 Referencia Capacitor Capacitor Capacitor Capacitor Resistor Resistor Resistor Resistor Resistor Valor 680nF 10nF 100nF 220nF 330k 1k 560k 330 10k Preço Unitário 1,46 0,26 0,53 0,53 0,10 0,10 0,10 0,10 0,10 Preço Total 2,92 0,52 1,06 0,53 0,20 0,50 0,10 0,30 0,40 0,00 2 1 1 1 1 1 1 2 1 TIMER AMPOP DIODO DIODO DIODO LCD1 PIC TRIMPOT MICROFONE NE555 UA741 AMARELO VERMELHO VERDE JHD162A PIC16F877A 2K2 ELETRETO 0,80 1,46 0,29 0,29 0,29 28,60 29,90 1,00 0,71 TOTAL 1,60 1,46 0,29 0,29 0,29 28,60 29,90 2,00 0,71 71,67

64 ANEXO A – PRINCIPAIS FIGURAS DOS DATASHEETS

65

Sign up to vote on this title
UsefulNot useful