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

4 comentários:

  1. Olá Amarildo seu projeto e muito legal nota 10!
    Mais quando eu testo no proteus da uma mensagem
    de erro (Internal Exception access violation in unknown)
    Como posso resouver isso?
    Grato!

    ResponderExcluir
    Respostas
    1. Ola Eduardo! Nunca tive esse problema. Mas com certeza tem ligação direta com o PRoteus. Eu estou usando a versão 7.9 SP1.
      Acabei de testar novamente e aqui tudo funciona. Tente uma versão versão anterior do Proteus. Eu utilizava uma versão anterior, nunca tive problemas também. Nesta versão 7.9 SP1 não consigo usar o ARES para fazer o layout da placa, apresenta erro no programa. Assim que possível vou testar na versão anterior. Se eu tiver programa eu coloco o link também.
      Estou trabalhando em uma melhoria para este projeto (V2.5).
      Também estou trabalhando na versão 3.0 que vai controlar um motor de passo para move uma bandeja rotatória.

      Excluir
  2. https://skydrive.live.com/redir?resid=B0BADE4E4A60929B!228&authkey=!AAZOxKmBpQJHv38

    Nesse link tem o Proteus 7.8.

    ResponderExcluir
  3. E Aqui uma biblioteca melhor para o Proteus.
    https://skydrive.live.com/redir?resid=B0BADE4E4A60929B!255&authkey=!AN_zglZZ520kr-Y

    ResponderExcluir