sexta-feira, 22 de fevereiro de 2013

Contador de peças digital com pic 16F877a + LCD V3.6

Nesta nova postagem eu vou mostrar o máximo possivel os passos da montagem da versão 3.6.
Comegando pela caixa que vai abrigar o projeto. Vou utilizar a caixa PB 900 da PATOLA.  R$ 26,81
As medidas da furação interna, ou seja, as distancias entre os pinos são: 87 mm e 109 mm. São 6 pinos na parte interna, usarei 4 para fixar a placa PCB.



- A furação farei na máquina de corte a laser. A precisão é melhor.
- Vou utilizar uma placa de fenolite dupla face de 10X15 cm.
- Conectores PCF para ligação da placa PCB. São bons de trabalhar, e baratos.



 - Para ligação externa, utilizarei os conectores LS 3003 4 vias, LS 3004 5 vias e LS 3005 6 vias. São conectores metálicos e resistentes. A fixação será feita na parte trazeira da caixa. Usarei estes conectores para ligação da máquina a ser controlada.

- Continuando, a imagem abaixo mostra o recorte da tampa da caixa em MDF, papel, e plástico. Eu substituí a tampa original de plástico por esses materiais. Tudo cortado no laser CO2.
Note que a camada de plástico que é a primeira, não tem o corte do LCD, justamente para ser uma proteção para o LCD, mais o papel que tem as impressões.

Próximas fotos já com os botões push button instalados.


Na caixa.
Nesta foto a caixa está deitada, mas eu a utilizarei em pé, fixado na máquina.

Foto da placa PCB feita em serigrafia, dupla face, ainda sem furos, envernizada.
O verniz não ficou muito legal, mas funciona.
Tamanho 10X15 CM.


Desenho em 3D da placa montada. Esta placa foi confeccionada errada, sendo assim logo postarei o projeto correto.


 Para corrigir a falha de desenvolvimento da placa, fiz uma placa separada 
para os relês.

Esquema placa relê.
No conector J2, os pinos 1 e 2 são ligados ao interruptor tipo push-button para acionar a gravação. Quando o Contador estiver desligado, ou ligado mas não programado para contar, o relê RL1 mantêm o botão de acionamento da gravação ligado diretamente na máquina laser. Como no projeto original sem o Contador. 
Ao ligar a contagem, o RL1 é ativado desligando o botão da máquina laser e ligando diretamente no Contador no pino 5 da 16F877A. A PIC fica lendo o estado deste pino, quando o pino 5 passar do nivel 0 para 1 (+5v), botão pressionado, a PIC vai levar ao nivel 1 o pino 36 por uma fração   segundos, e ativar o RL2, que por sua vez ativará a máquina laser. A verdadeira função do RL2 é fazer o papel do botão de acionamento da gravação. 
Os conectores J1 e J2 são do tipo PCF, conforme foto acima.





terça-feira, 5 de fevereiro de 2013

Contador V3.5

Efetuei várias modificações no projeto inicial e agora estou na versão 3.5

Mudanças:
-Removi o LED de aviso, já que não preciso dele, pois tenho todos os dados no display.
-Removi o botão DESCE bem com as rotinas sobre ele no programa em C.
-Adicionei um botão para ativar o motor de passo(projeto futuro).
-Adicionei um sensor óptico para interagir com o motor de passo (fim de curso). Ainda em testes.
-Adicionei um aviso sonoro curto apó a penúltima gravação. Para avisar o operador em caso de gravações múltiplas. Desta forma ele vai checar se precisa preencher o gabarito com todas as peças, ou somente o necessário.
-Mudei o valor dos resistores dos transistor de acionamento dos reles para 100 Ohms.
-Adicionei um capacitor eletrolítico de 100uf na entrada do PULSO. Para evitar ruídos.

Aqui todos os arquivos desta última versão.

Obs.: A parte de acionamento do motor de passo ainda será testada.

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.