FAÇA UM MINI TECLADO RECREATIVO – USANDO UM PIC 16F628A (REF157)

3

Gostaria de montar um circuitinho simples para brincar com notas musicais?

Esta montagem tem fins apenas recreativos e didáticos e não se trata de uma montagem profissional para músicos, mas unicamente para mostrar como podemos obter notas musicais usando um timer do PIC. Veja o esquema abaixo:

Conforme se nota no esquema, usamos 12 ports como entrada para interruptores, um para cada nota. Temos também uma única saída que poderá acionar diretamente um disco piezoelétrico ou a base de um transistor, colocando em seu coletor, um pequeno falante, destes de radio de pilhas (miniatura de 8 ohms). Nada impede de se injetar este sinal na entrada de um amplificador, usando um cabo blindado, com malha aterrada.
O circuito poderá ser alimentado por 4 pilhas AA de 1,5 volts, com um diodo 1n4007 em série para dar um pequena queda de tensão de 0,7 volts, colocando na faixa segura de trabalho do PIC.
Opcionalmente, poderá usar um carregador de celular com saída de 5 volts para alimentar o circuito.
A rotina geradora de notas musicais faz uso do timer 1 para gerar as frequências das notas musicais. Foi usado um cristal de 4 mhz para estabilizar a frequência e mante-la na tolerância mínima. A titulo de exemplo, para obter a nota ‘dó’ de frequência igual a 261 Hz , carregamos o timer 1 com o valor de metade do período total, que no caso = 1000000/261 -> 3.831 microssegundos /2 = 1915 microssegundos e ligamos a saída. Aguarda o flag de over estourar, e em seguida carregamos mais 1915 e desligamos a saída, repetindo todo o ciclo enquanto o botão estiver pressionado. Como o timer conta incrementando, precisamos lembrar de pegar o valor máximo da contagem e subtrair o valor pretendido (65536 – 1915 -> carga do timer 1). A cada estouro devemos também resetar o flag.
Por ser um circuito ‘primitivo’, apenas uma só nota será tocada, mesmo que uma ou mais teclas seja acionadas ao mesmo tempo.
Caso deseje oitavas acima ou abaixo, altere as frequências das notas em seus múltiplos superiores ou inferiores, nas constantes nomeadas de ‘tabelas de notas’ no arquivo ‘C’ e recompile novamente.
Poderá usar, como sugestão, o compilador CCS v.3200.
Obs. Esta montagem foi feita apenas em placa de protoboard, sujeita a bugs ainda não observados. Esta sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobista.

Segue pasta com os arquivos desta montagem:

MINI_TECLADO

Segue um vídeo caseiro com a montagem em placa de protoboard:

[stream base=x:/blog.larios.tecnologia.ws/iBlog/wp-content/photos/2014/07/ flv=miniorgao.flv embed=false share=false width=640 height=360 dock=true controlbar=over bandwidth=high autostart=false /]

Manuais:
Pic 16f628a
tabela de frequências das notas

Curiosidades:

Os eficientes e versáteis escudos da Terra
A Grande Fome na Irlanda — Uma epopéia de morte e emigração
Variedade é essencial
Enxaqueca — o que você pode fazer?
Diabetes — como se prevenir
A Terra foi ‘fundada’ por acaso?
Os ciclos que sustentam a vida
“Quase projetado”?
Será que toda vida tem um ancestral em comum?
Ainda há tempo para salvar o planeta?

Outros assuntos:
Como ser educado ao trocar mensagens de texto
Como se livrar do ressentimento
Como ensinar seu filho a usar a internet com segurança
Por que rejeitar a pornografia?
Como ser feliz no casamento?
Quando seu casamento não é o que você esperava
Como resolver diferenças no casamento
Como recuperar a confiança no casamento
Quando um dos cônjuges tem necessidades especiais
Aprenda a perdoar
Como acabar com a tática do silêncio
Como criar filhos responsáveis
Como administrar o seu dinheiro
Como posso controlar meu peso?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

3

26 comments

  1. 0

    Olá Claudio! Esse projetinho é show de bola. Andei mudando algumas coisas mas tem uma que não consegui… no caso queria adicionar uma tecla à mais (no caso Dó mais agudo). Poderia me ajudar?

    1. 0

      Olá Zur!
      Você poderia usar o pino 4 para acrescentar mais uma tecla, lembrando de mudar a ‘palavra de configuração’ para usar este pino como entrada e acrescentar a rotina para tratar o evento desta nova tecla.

      #fuses NOWDT,HS, NOPUT, NOPROTECT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD //altere para esta

      Acrescente:
      #bit b13 =0x05.5 //PINO 4
      const int16 nota_do_x =524;

      E acrescente após if(!b12){…….}

      while(!b13){ //TESTA BOTÃO DA NOTA ‘Dó aguda’

      output_high(TONE_PIN);
      set_timer1(0xffff-(500000/nota_do_x-10));
      t1if=0;
      while(!t1if);
      output_low(TONE_PIN);
      set_timer1(0xffff-(500000/nota_do_x-10));
      t1if=0;
      while(!t1if);

      Cláudio

      1. 0

        Olá Claudio! Muito obrigado pela atenção e prestatividade.Confesso que antes de perguntar ate fiz esses passos mas esbarrei na definição “#bit b13 =0x05.5” pesquizei na internet sobre essa parte e entender o que significa mas nao obtive sucesso. Senão fosse pedir muito poderia me ajudar a entender do se trata essas linhas #bit? Esses valores seriam hexadecimal (por conta do .5)? Desde de ja agradeço a atenção. Abração.

        1. 0

          Olá Zur!
          Esta ‘definição’ abaixo:
          #bit b13 = 0x05.5

          Significa o seguinte:
          #bit —-> diz ao compilador que estamos trabalhando com apenas um bit.
          b13 —-> diz para o compilador que queremos apelidar o bit com este ‘label’ ou rotulo (um nome qualquer que me facilite a vida)
          = 0x05.5 —> diz para o compilador que o bit que será apelidado vai ser o portA , o bit n. 5 ( ou seja, estou manipulando um pino de saida do pic , sendo o portA=0x05, conforme o datasheet)

          Traduzindo:
          A definição #bit b13 = 0x05.5
          diz que, doravante usarei nas linhas de código, o apelido “b13” no lugar de “portA.5”
          Colocando apelidos fáceis de lembrar, a digitação fica mais intuitiva, rápida e fácil.
          Use o help do compilador para obter exemplos de outras definições e funções.
          Cláudio

  2. 0

    eu desmontei o projeto, mas eu acho que o ruído devia ser da polaridade invertida do microfone hehe vou montar novamente rs

    vc tem algum projeto com efeitos de pisca pisca moderno, tipo esses que ilumina a lagoa? fazer um led emitir forte e fraco? e tal….

    boa semana

    1. 0

      Olá Musicianrj!
      O único artigo sobre leds, foi o ‘CONTROLE DE LUMINOSIDADE (DIMMER) PARA LEDS RGB INDIVIDUAIS OU FITAS DE LEDS – COM PIC 16F676 (REF 160)’ usando leds de 3 cores (rgb) para obter efeitos. Pode como opção, usar fitas de leds, encontrada no comércio eletrônico, e usar no comprimento que desejar. Apenas, lembre de usar transistores de acordo com a corrente de consumo (fita mais comprida consome proporcionalmente mais).
      Cláudio

  3. 0

    não consegui tirar a zoeira não! mas eu acho que deve ser da fonte, está tudo certo! vou levar o projeto no laboratório da escola que eu estudava para ver…

    bom final de semana!

  4. 0

    cladio vou testar o capacitor agora, eu estou usando tudo similar ao seu circuito! vc tem algum projeto de alguma carro que se mova com um sensor usando o 16f628A no CCS?

    1. 0

      Olá musicianrj!
      Ok, espero que tenha sucesso. Quanto ao que pede, não tenho nada na parte de robotização. Procure pelo tópico na internet , pois é muito abundante.
      Cláudio

    1. 0

      Olá musicianrj!
      O capacitor em questão, seria para filtrar mais a alimentação, e deveria ser colocado o seu positivo no pino 14 (+5v) e o seu negativo no pino 5 (gnd). Se for uma má filtragem (ronco do tipo ‘onnnnnnnnnn’ de 60 ou 120 hz) deverá resolver. Alguns adaptadores de parede para 5 volts não tem capacitor de filtro ou é de pequeno valor, insuficiente para uma boa filtragem. Alimentando com 4 pilhas AA (com um diodo 1n4007 em serie para reduzir para 5,3 volts), também poderá resolver o problema. A parte do amplificador com 1 transistor e saída de som é o mesmo circuito postado ou está usando um outro amplificador na saída? Se estiver usando circuito amplificador externo, certifique de ligar o gnd ao gnd do aparelho, além do sinal de som que sai do pino 17 ao sinal de entrada do amplificador.
      Cláudio

  5. 0

    boa noite
    consegui tirar um som rs o problema pelo não funcionamento do projeto era no FUSES do gravador…
    mas já resolvi! mas o problema agora é quando eu alimento com a fonte o SPEAKER faz muito barulho sem eu tocar nenhuma tecla, e só para quando eu toco a nota!
    o capaictor é de 100uf? já coloquei outros e o barulho continua!

    1. 0

      Olá Musicianrj! É ronco de 60 Hz ? Use capacitor na fonte de alimentação de 1000 uf entre o vcc e o gnd.
      Claudio

  6. 0

    vejo um capacitor grande que não está no desenho do projeto… vc não especificou quais são os capacitores que estão juntos com o oscilador, só diz que é de 22…. pf? qual o capacitor que vc usa junto como o resistor de 150K?

    1. 0

      Olá musicianrj! O capacitor grande é da fonte, onde usei um adaptador de parede de 12 volts reduzindo a tensão com um ci 7805, para 5 volts. Este capacitor faz a filtragem do +vcc. Os capacitores de 22 são de 22 picofarads ( só se usa na faixa de picofarads nesta aplicação). O capacitor no coletor do transistor é de 100 microfarads/16 volts e o resistor é de 150 ohms e não de 150k (kiloohms). Não desista! Pode ser algum simples ‘engano’ nas ligações!
      Cláudio

    1. 0

      Olá musicianrj!
      Desculpe por favor. Houve falha de digitação! Acabou falhando o número ‘1’ na frente do ‘6’. O correto é pinos 15 e 16.
      Cláudio

    2. 0

      Olá musicianrj! Postei um vídeo caseiro com a montagem do mini-orgão junto ao artigo original. Quem sabe seja de ajuda para você.
      Cláudio

  7. 0

    boa noite
    sou músico e gostei do projeto! copilei sem erros e montei, mas não toca nenhuma nota! alimentei os resistores de 10k que faz ligações entre o ci e as chaves e alimentei cada um no vcc! acho que fiz tudo certo! e tenho que entregar esse projeto e mais outro até a próxima semana! me de uma ajuda

    1. 0

      Olá musicianrj!
      Por favor, verifique o seguinte:
      Você carregou o firmware no pic? Colocou um cristal de 4Mhz nos pinos 15 e 16?
      Está usando disco piezoelétrico ou o circuito com transistor do circuito? Está alimentando com vcc de 5 volts? O pino 4 está com o resistor de 10k ao vcc? Confira as ligações pino a pino, porque é muito comum inverter as ligações.
      Cláudio

  8. 0

    Caro Claudio Larios, queria agradecer por nos ajudar a entender melhor o mundo dos microcontroladores, gosto muito de eletrônica como hobby e gosto também do ferromodelismo, o primeiro projeto de sua autoria que fiz foi o controle remoto de 32 canais com o pic 16f628 e ficou perfeito, removi todos os fios do painel do controle, uma dúvida, é possível que eu utilize o PIC para gerar sons como o do apito, do sino e do vapor de uma locomotiva utilizando o conceito apresentado aqui?

    1. 0

      Olá Fernando!
      Obrigado por seu retorno da montagem e o comentário apreciativo. É possível gerar muitos sons usando o PIC. Talvez o mais simples seja o de ‘apito’. Já de ‘sino’ será um pouco mais complexo por usar amortecimento das oscilações. Mas o de ‘vapor’, este sim dará trabalho, sendo o mais complicado, pois necessita de um gerador de ruido branco. Existiam alguns integrados que geravam sons específicos. Pode ser que exista algum para esta área de hobby. Estou fazendo alguns poucis experimentos nesta área e ainda não serei de muita ajuda na sua necessidade. Tente ver outros sites na internet. Se futuramente obter algum sucesso nestes sons, eu postarei.
      Cláudio

    2. 0

      alimentei o pino 4 no positivo com o resistor de 10k, e o pino 14 tbm. Eu testo de uma ponta a outra tem tensão, mas parece que nada acontece queando uso as chaves! entre os CIs e as chaves coloquei resistor de 10k e não outra ponta alimente com o vcc! minha fonte está com 4,80 de tensão, mas acho que é o suficiente para acontecer algo!no coletor do transistor coloquei uma perna do alto falante e na outra um resistor de 150R com um capacitor fazendo filtro ativo de 100uf sendo ambos alimentados com 5v! acho que o problema é na ligação dos resistores de 10k! vc tem o video no youtube para que eu possa ver a montagem?

      1. 0

        Olá musicianrj! Você carregou o firmware no pic com sucesso? Usou um programador de pic? Desculpe a pergunta óbvia, mas alguns iniciantes dão atenção a montagem do circuito e se esquecem de programar o pic. Em todo caso, montarei novamente na placa de protoboard e verei se consigo postar um pequeno video.
        Cláudio

Comments are closed.