sexta-feira, 18 de janeiro de 2013

Botões de acionamento

CONTADOR V2.5

- Devido a necessidade de melhorias no projeto, criei a versão 2.5.
Mudanças:

Hardware:
- Adicionei mais um relê.  Fiz essa mudança porque o botão de acionamento era duplo, as vezes dava mal contato e acionava apenas o Contador e não a máquina, e vice-versa.

- O que estou fazendo agora é a partir do momento que o contador entra em ação (quando o ENTER for pressionado pela última vez)  o relê RL01 ativa e interrompe o acionamento manual da máquina Laser. Deste ponto em diante será o Contador quem vai acionar a máquina utilizando o relê RL02. O RL02 fará o papel do botão de acionamento. Desta forma não terei o risco de uma mal contato, gerando falhas na contagem. Afinal, precisa ser confiável.
 Se houver a necessidade de utilizar a máquina Laser sem contar peças, sem utilizar o Contador, basta pressionar o RESET.
Neste esquema temos o botão B1 que é PULSO, e B2 que é da máquina laser. Note que eles não tem ligação elétrica entre si. Obs.: Esses dois botões são acionados juntos mecanicamente, ou seja, são duas chaves independentes mas acionadas por um único botão.
Chamados Botão de Acionamento tipo Cogumelo.
Mudanças no programa:
- Eu mantive o botão DESCE, mas não estou utilizando, nem montei ele no protótipo, já que a contagem com o botão SOBE zera automaticamente depois de chegar no 9.
- MULTIPLOS é principal mudança, foi incluído logo no início do programa, e seu valor já começa com 1, e no meu caso vai até 4. Isso quer dizer que eu posso querer gravar até 4 peças ao mesmo tempo. Ou seja, cada aperto do botão quatro peças são gravadas ao mesmo tempo pela máquina. 
Ex.: Eu costumo gravar chaveiros e as vezes a quantidade é grande, eu tenho um gabarito para 4 chaveiros. Eu posiciono os quatro e máquina grava todos de uma só vez, mas com único acionamento.
Neste caso o calculo é feito através da variavel M.

conta=conta-m;
Ex.: Eu defini MULTIPLOS de 4 e 100 peças para gravar.
No começo a variável CONTA tem o valor 100. Depois de apertar o botão PULSO, a variável CONTA ficará com 96. Conforme conta abaixo.

1- conta=conta-m;
   (100)=(100-4);
2 - conta=96
3 - conta=92
4 - conta=88...

Todos os arquivos do projeto aqui.
Atenção: Os arquivos são diferentes da versão 1.0

Um problema que eu tive no começo foi que ao pressionar um botão, o mesmo repetia como se estivesse sendo pressionado várias vezes rapidamente. Já que o programa corre muito rápido no processador, era um resultado esperado.
Eu resolvi esse problema desta forma:
- Verifica SE o BOTÃO foi pressionado, se foi, executa uma função, algo como acrescentar uma valor numa variável. Logo em seguida dentro do próprio laço existe mais uma verificação SE o BOTÃO foi pressionado. Neste laço enquanto o BOTÃO estiver pressionado, ele volta e faz um loop para verificar o botão novamente. Quer dizer que enquanto eu não soltar o botão ele não continuará. Isso o impedira de repetir.
Veja a rotina abaixo. Obs.: Isto é apenas uma parte do programa.

if (pulso==1) // verifica se o botão PULSO foi pressionado
       {
       rele2=1; //liga o relê que aciona a contagem da máquina, faz o papel do botão original
       conta=conta-m;// diminui a contagem
       delay_ms(100); // da um tempo antes de desligar o rele.
       rele2=0; // desliga o relê
       p: // sub-rotina, para detectar o botão PULSO pressionado continuamente
       ;
       if (pulso==1) //se o boão continuar pressionado
         {
         goto p; // fica em loop até ser solto
         }
       }


Neste link tem um vídeo mostrando o funcionamento do protótipo. Incluindo o final da contagem.




Continua...

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.