22. O Contador de Parafusos (Funil):
Deseja-se empacotar parafusos em dezenas. Um funil possui uma válvula solenoide. Quando energizada, ela abre e deixa cair os parafusos. Um sensor óptico gera um pulso a cada parafuso.
- Ao apertar o botão “Start”, a válvula abre.
- Após a contagem de exatos 10 parafusos, a válvula deve fechar.
- A esteira avança a caixa (Saída Q2 por 3 segundos), o contador deve ser resetado e o ciclo recomeça.
Passo 1
Vou clarear exatamente o que o enunciado pede e quais são as informações dadas, sem resolver ainda.
-
O que o enunciado pede (as perguntas/imposições):
- Ao apertar o botão “Start” a válvula do funil deve abrir.
- A cada parafuso que cai o sensor óptico gera um pulso.
- Quando forem contados exatamente
parafusos a válvula deve fechar. - Após a válvula fechar, a esteira deve avançar a caixa (saída
) por segundos. - Depois desses
segundos, o contador deve ser resetado e o ciclo recomeça automaticamente (ou seja, repetir o processo enquanto o sistema estiver em operação).
-
Informações relevantes que o enunciado dá:
- Há um botão de entrada (Start) que inicia o processo.
- Há um sensor que gera um pulso por parafuso (cada pulso = 1 parafuso).
- Existe uma válvula controlada por uma saída (vou chamar genericamente de
). - Existe uma saída que comanda a esteira/avançamento por exatamente
segundos (vou chamar de ). - O objetivo final é um ciclo repetitivo: abrir válvula → contar 10 pulsos → fechar válvula → ligar
por s → resetar contador → reabrir válvula → etc.
Passo 2
Definir sinais, nomes e pressupostos práticos (isso ajuda a formular a solução com clareza).
-
Entradas (sensores/controles):
-
: botão digital (pulso de comando para começar / armar o ciclo). -
: sinal digital do sensor óptico, gera um pulso por parafuso. Pode ser nível alto por um tempo curto; atenção a ruído/bounce.
-
-
Saídas:
-
: saída digital que energiza a válvula (1 = aberta, 0 = fechada). -
: saída digital que aciona a movimentação da esteira (1 = esteira ligada/avança).
-
-
Variáveis internas:
-
: contador de pulsos (inteiro, inicia em , incrementa até ). -
: temporizador programável com tempo segundos. -
: bit que indica que o sistema está em operação (após o Start). -
: bit que indica que já chegaram os parafusos e aguardamos o avanço da esteira.
-
-
Pressupostos práticos que farei (importante para a implementação):
- Contagem deve ser por borda do pulso do sensor (tipicamente borda de subida). Se o sensor gera nível, é preciso detectar a borda para evitar múltiplas contagens por um mesmo parafuso.
- O botão
coloca o sistema em (latch), e o ciclo repete enquanto . Se desejar comportamento diferente (Start só inicia um ciclo único), a lógica muda levemente. - Se houver necessidade de parada de emergência/Stop, isso seria um input adicional; aqui não foi solicitado, então não adiciono, mas menciono que na prática recomenda-se.
Passo 3
Explicar os elementos lógicos e componentes que usaremos — ensinar o conceito de cada um para você saber como aplicá-los na prova.
-
Contador (
): - O contador é um elemento que armazena um número inteiro e possui normalmente entradas para incrementar, decrementar e resetar.
- Aqui usaremos um contador que incrementa em
a cada pulso de borda do sensor e compara seu valor com . - Em lógica simples, podemos representar a ação: quando ocorrer uma borda válida do sensor e
e então . Se então dispare . - Exemplo didático: se
e chegam 3 pulsos, evolui .
-
Detecção de borda (one-shot):
- Sensores muitas vezes produzem sinais que duram algum tempo; se na lógica só testarmos o nível, podemos contar várias vezes. Para contar uma vez por parafuso, precisa-se detectar a borda (por exemplo, subida).
- Uma técnica simples (em PLC ou algoritmo) é armazenar o estado anterior
e definir: Isso é verdadeiro só na transição . Depois atualiza-se . - Ensina: borda é como “pegar o momento exato” quando um pulso sobe.
-
Temporizador (
): - Usaremos um temporizador que, quando habilitado, conta o tempo até
segundos e então fica em estado “done” (ou “timed out”). - Em PLCs há temporizadores TON (on-delay) que começam a contar quando a entrada fica 1; depois de
s a saída do temporizador vira 1. - Aqui: ao detectar
iniciamos . Enquanto não expirou, fica 1; quando expira, resetamos e voltamos ao estado inicial.
- Usaremos um temporizador que, quando habilitado, conta o tempo até
-
Lógica de latch para
: - O botão
normalmente dá um pulso; queremos que o sistema continue funcionando após o release do botão. Então fazemos um latch: Em prática: um contato que sela a si mesmo. Isso significa que, uma vez iniciado, o ciclo repete automaticamente.
- O botão
Passo 4
Descrever a máquina de estados (sequência) e a transição entre estados — conceito essencial para a prova e para implementar com contador e temporizador.
-
Estados (nomes e significado):
- Estado
: . Válvula fechada ( ), , . - Estado
: , válvula aberta ( ), contador contando pulsos enquanto . - Estado
: quando passa para aqui: válvula fechada ( ), , timer ligado por s. - Retorno: após
expirar reseta para e volta a (com válvula aberta) mantendo .
- Estado
-
Transições (condições):
-
: ao pressionar Start. -
: quando contador atinge 10. -
: quando os 3 segundos terminaram, reseta contador e reabre válvula. - Em
, cada borda incrementa (desde que e ).
-
-
Comportamentos das saídas por estado:
- Em
: . - Em
: . - Em
: .
- Em
Passo 5
Agora mostro a lógica passo a passo, como se fosse implementada num PLC simples ou num pseudocódigo reativo. Vou exibir a lógica em bloco sequencial para você entender e poder reproduzir na prova ou em ladder.
-
Variáveis internas (resumo):
-
(bit) -
(bit) -
(contagem, valor inteiro) -
(bit) -
(bit para habilitar temporizador) -
(bit temporizador expirado) -
(saída) -
(saída)
-
-
Rotina cíclica (executada repetidamente; estilo PLC scan):
- Detecção de borda:
Depois atualize:- Lógica de start (latch):
(Se quiser que Start só dispare um ciclo e depois precise apertar de novo para recomeçar, usar em vez de latch.)- Controle da válvula e contagem:
- Se
e (ou ) então válvula deve estar aberta: - Se
ou estiver em então: - Incremento do contador:
ã - Comparação:
(colocarã para travar o valor e evitar contagens acima).
- Temporizador e
:
- Habilitar temporizador quando
. - Enquanto o temporizador não expirar:
- Quando o temporizador expirar (
): E então reabre-se a válvula (porque volta ao passo 3 com e ).
-
Observação sobre proteção contra ruído:
- Se o sensor
for ruidoso, aplique um pequeno filtro ou debounce antes da borda (ex.: exigir que o pulso dure pelo menos ms ou usar um filtro por tempo). Em provas, basta mencionar a necessidade de detectar borda e debouncing.
- Se o sensor
Passo 6
Mostro a mesma lógica agora em forma de pseudocódigo sequencial (mais concreto — ótimo para escrever em prova ou converter em ladder):
Inicializações (no power-up):
Loop (cada ciclo de varredura):
Explicando em palavras:
- Enquanto
e o temporizador não estiver ativo, a válvula fica aberta e cada pulso de borda incrementa o contador. - Ao chegar a
, ativa-se ( ), o que faz e fecha . - Depois de
s, reseta e desliga , voltando a abrir válvula automaticamente.
Passo 7
Dicas práticas e cuidados que valem na prova e na implementação (essenciais para não errar):
- Sempre conte por borda — na prova explique explicitamente a expressão de borda como mostrei (
). - Trave o contador em
quando atingir para não aumentar acima caso haja pulso após a detecção até a ação do timer. - Use um timer do tipo TON (on delay): ao habilitar
ele começa a contar; quando completar s gera . - Lembre-se de resetar o temporizador ao reentrar em estado de contagem (no pseudocódigo acima,
controla isso). - Se o Start tiver que ser acionado apenas no início (um só ciclo), troque o latch
por (ou use um botão com retenção por hardware). Em provas, explique qual comportamento você escolheu e por que. - Em diagramas de ladder: haverá um contato de Start que sela em paralelo consigo mesmo (seal-in) a bobina
; o pulso do sensor incrementa o contador CUP; a comparação aciona uma bobina que liga o temporizador e desativa a válvula.