- 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.