terça-feira, 15 de janeiro de 2013

Contador de peças PIC16F877a

Na empresa onde trabalho surgiu a necessidade de controlar a quantidade de peças gravadas nas máquinas laser; como parte de um processo de melhorar o controle de qualidade .
Sendo técnico em eletrônica, e tendo paixão pela mesma, resolvi voltar a ativa e desenvolver este projeto. 
A dificuldade inicial estava justamente na linguagem de programação C para microcontroladores, da qual sei apenas o básico.

Eu gostaria de escrever este blog com o intuito de ajudar os leigos (como eu), mas não sei se conseguirei me expressar. De qualquer forma vou tentar.

Qual a função do deste contador? Por que ele foi criado?
- Contar peças, uma a uma, inserir a quantidade desejada e iniciar a contagem regressiva até ZERO. Impedindo a máquina de continuar.
- Aviso sonoro e visual ao término da contagem.
- Contagem regressiva.
- contagem máxima 9999. Pode ser facilmente alterada pelo software C.

Funcionamento:



-Ao ligar, o cursor no display começa com ZERO, que é o valor do MILHAR. As teclas SOBE e DESCE alteram o valor de 0 á 9. Após escolhido o valor a tecla ENTER armazena o valor escolhido e salta para o próximo digito, a CENTENA. E assim vai até que os quatro dígitos estiverem inseridos.
Apertando ENTER no último dígito. o valor total aparecerá na primeira linha do display e o contador ficará aguardando o sinal de PULSO para começar a contagem.

Exemplo: 1  0  0 0
              ^ ^ ^ ^
               !  !  !  Unidade
               !  !  Dezena
               !  Centena
               Milhar.



 
Exemplo de 1000 gravações com uma já gravada(PULSO já acionado uma vez).

Projetei este dispositivo para interagir com a máquina laser através do botão PULSO, na minha máquina tem um botão simples que é acionado para gravar. Vou mudar esta chave e colocar uma dupla, ou seja, um botão que vale por dois, são isolados eletricamente, não tem ligação uma com a outra. Desta forma eu garanto uma isolamento entre a máquina laser e o contador. 
Também vou utilizar um relê para cortar a ligação desta chave quando o valor chegar a ZERO.
Para começar uma nova contagem, basta pressionar o botão RESET.
E se precisar utilizar a máquina sem contagem, basta não digitar nada.

O projeto dividido em etapas.
- Hardware:
               - Placa de Circuito impresso (fabricar). O layout da placa será disponibilizado em breve.
               - Montagem dos componentes eletrônicos.
               - Ligações elétricas externas.
               - Fonte de alimentação DC 12V 500 ma.
- Software:
               - Programação da PIC.
               - Compilador para possíveis alterações e adaptações a gosto.

Lista de peças:
1x PIC 16F877A.  Link do mercado livre.
1x Display LCD 16X2L, muito comum no mercado, com várias cores. Dê preferencia com BACK LIGHT, para o display ficar bem iluminado.
Link do mercado livre para o LCD.
1x Relê Metaltex AX1RC-5V - bobina 5v. Ou qualquer outro compatível
2x Transistor BC 548.
1x Cristal 4mhz.
2x Capacitor cerâmico 27pf.
1x Regulador de tensão 7805. Você pode dispensá-lo se for ligar numa fonte de 5v DC.
1x Capacitor eletrolítico 100 uf.
1x Capacitor eletrolítico 1uf.
1x Diodo 1N4148.
4x Resistor 1k.
2x Resistor 330 ohms.
1x Trimpot 10k.
1x Resistor 10k.
1x LED vermelho comum.
4x Botões tipo push button.

Demais peças:
Cabo muito vias (16) para o LCD.
Soquete 40 pinos para a PIC.
Conectores para a ligação da placa com a fonte e o botão PULSO.






Softwares utilizados:
- Proteus 7.9.

- Compilador PCW HD 4.078
Para gravar na PIC eu utilizo o programa DIY K150 PCmicro Programmer.
Baixe aqui.
Eu tenho um gravador universal, nem sei a marca.

Arquivos do projeto:
- Eu incluí no projeto o arquivo MOD_LCD.C - Biblioteca de manipulação de módulo LCD do autor : Fábio Pereira. Facilita muito o manuseio do LCD.
- O arquivo main.h e 16F877A.H, este último já disponibilizado pelo compilador PCW HD. Obs.: O arquivo 16F877A.H foi alterado(comentado a linha) //#define VREF_HIGH 0x80. Esta linha comentada desabilita os resistores PULL-UP internos do chip, para as entradas. Isto quer dizer que da forma que deixei as portas de entradas por padrão estarão em nível baixo, utilizando os resistores da placa, ficarão em PULL-DOWN. Já que fiz o projeto eletrônico desta forma.
Você deve ter em mente que o arquivo 16F877A.H que deve ser alterado está dentro da pasta do C:\Program Files (x86)\PICC\Devices, e protegido contra gravação. Voce vai precisar alterar as permissões para poder gravar nele. Pelo windows explorer clique no arquivo com o botão direito, em propriedades/segurança e mude os atributos para MODIFICAR o arquivo. Faça isso para seu usuário.

Pasta com os arquivos deste projeto.


Esquema elétrico desenvolvido no Proteus e testado na prática.





A placa PCB você deve projetar. Pode utilizar o próprio ARES do Proteus.
Como o circuito é simples, eu utilizei uma placa padrão perfurada, e fiz as ligações com fios. É facil.
Falando um pouco do display LCD.
- Um detalhe importante na montagem é não esquecer de ligar o pino 3 no trimpot ou potenciômetro. Muitas pessoas fazem projetos de testes e não ligam este pino. 

Teste do LCD.
- Um teste simples para saber se o LCD esta funcionando, é ligar ele sem conectar os pinos dos dados. A primeiro linha do LCD aparece toda preenchida.






13 comentários:

  1. Olá Amarildo Cunha.
    Montei,em placa de ensaios, a versão v2,5. Funciona na perfeição!
    Mas, alterei as resistências pull down para 10k.
    Obrigado por compartilhar.

    Att:
    Raúl

    ResponderExcluir
    Respostas
    1. olá , boa noite amigo carpinteiro , voce tem este arquivo ai pra me fornecer ., nao conseguir baixar lá no One Drive onde o amigo amarildo colocou
      desde ja agradeço pela ajuda
      meu e-mail :joaobrito15@yahoo.com.br

      Excluir
    2. Olá João brito.
      Já enviei! E nunca é demais agradecer ao Amarildo Cunha, por compartilhar.

      Excluir
    3. Olá Raul poderia me passar o arquivo se ainda o tem , não consigo baixar por aqui.
      carolinecommandeur.ege@gmail.com

      Excluir
  2. voce pode disponibilizar a bcp deste projeto, desde ja agradeco!

    ResponderExcluir
  3. olá boa noite Amarildo,gostei do seu projeto, excelente, gostaria de montar este projeto.
    mas nao conseguir baixar a pasta de arquivo que é direcionada para o One Drive , fica carregando a pagina mas nao abre, fica só uns pontinhos correndo e nunca pára.

    ResponderExcluir
  4. Ola Meu amigo, você disponibilizou o código fonte?

    ResponderExcluir
  5. Parabéns pelo seu projeto Muito bom

    ResponderExcluir
  6. Este comentário foi removido pelo autor.

    ResponderExcluir
  7. Poderia disponibilizar o código fonte??
    carolinecommandeur.ege@gmail.com
    Obrigado

    ResponderExcluir
    Respostas
    1. https://drive.google.com/file/d/0Bx9HJTIr6RTlcTlhRHJpSWdHNzA/view?usp=sharing

      Excluir
  8. https://drive.google.com/file/d/0Bx9HJTIr6RTlcTlhRHJpSWdHNzA/view?usp=sharing

    ResponderExcluir
  9. Olá boa noite, porque você não disponibiliza o arquivo em .hex aí no blog, em vez de direcionar para outro lugar, assim qualquer pessoa (internauta) possa baixa-lo sem ter de pedir para mandar em e-mail, Obrigado

    ResponderExcluir