O que é um Encoder?

Na automação industrial, se o CLP é o "cérebro", o encoder é o "olho". Ele converte movimento mecânico (rotativo ou linear) em pulsos digitais que o controlador pode entender.

👁️

Função Vital

Sem ele, o CLP não sabe se o motor realmente girou. O encoder fornece feedback de Posição, Velocidade e Direção.

Incremental vs. Absoluto

📈

Incremental

Gera pulsos conforme o movimento. O CLP conta esses pulsos. Se a energia cair, a contagem é perdida.

  • ✅ Simples e barato
  • ✅ Ótimo para velocidade
  • ❌ Precisa referenciar (Home) ao ligar
🎯

Absoluto

Possui um código único para cada posição (como um relógio). Sabe exatamente onde está, mesmo ao ser ligado.

  • ✅ Não perde posição sem energia
  • ✅ Ideal para robótica/segurança
  • ⚠️ Mais caro e complexo

Simulador: Encoder Absoluto

Gire o disco abaixo. Observe como o padrão de bits (Gray Code) muda. O sensor (linha vermelha) lê todos os bits de uma vez.

LEITOR
B3
B2
B1
B0
Código Binário
0000
Setor (Posição)
0 / 15

Princípio de Funcionamento (Óptico)

A maioria dos encoders usa um sistema óptico: Luz + Disco com Fendas + Sensor.

LED SENSOR Disco Girando

SINAL DIGITAL GERADO (A / B)

Sinais em Quadratura (A/B/Z)

O encoder incremental gera dois canais (A e B) defasados em 90°. A ordem das bordas diz a direção.

OSCILLOSCOPE VIRTUAL
CH A: 0 CH B: 0 CH Z: 0

Disco Incremental (A/B/Z)

LEITURA
A
B
Z

Gire o disco acima para ver os sinais

Pulsos Contados
0

Sentido Horário (CW)

Borda de subida de A ocorre quando B está LOW.

Sentido Anti-Horário (CCW)

Borda de subida de A ocorre quando B está HIGH.

Dimensionamento (Pulsos para mm)

Para que o CLP mostre a posição em milímetros, precisamos calcular a relação exata entre os pulsos elétricos e o movimento mecânico. Isso é chamado de Fator de Conversão.

Fórmulas de Cálculo

1. Resolução do Encoder ($R_E$):

$$ R_E = \text{PPR (Pulsos por Revolução)} $$

2. Avanço Mecânico ($A_M$):

Quanto o eixo avança em UMA volta do encoder?

  • Fuso de Esferas: $A_M = \text{Passo do Fuso (ex: 5mm)}$
  • Polia/Correia: $A_M = \text{Diâmetro da Polia} \times \pi$
  • Roda de Medição: $A_M = \text{Perímetro da Roda}$

3. Fator de Conversão Final ($F$):

Quantos pulsos são necessários para mover 1 mm?

$$ F = \frac{R_E}{A_M} \quad [\text{pulsos/mm}] $$

4. Calculando a Posição no CLP:

$$ \text{Posição (mm)} = \frac{\text{Contagem Atual do HSC}}{F} $$

Parâmetros

Distância que a mesa avança em 1 volta.

...
pulsos por mm

Simulação de Movimento

MOTOR ENC MESA (Eixo X) 0mm Max
Pulsos (HSC)
0
Posição Real
0.00 mm

Roda Conta Metros (Indutivo)

Uma solução econômica e robusta para medir grandes comprimentos (ex: bobinadeiras, corte de tubos) é usar uma roda dentada acoplada a um sensor indutivo. Cada dente que passa pelo sensor gera um pulso.

Cálculo de Deslocamento

O cálculo se baseia no perímetro da roda e no número de dentes.

$$ \text{Perímetro (P)} = \pi \times \text{Diâmetro} $$
$$ \text{Resolução (mm/pulso)} = \frac{P}{\text{Nº Dentes}} $$
$$ \text{Distância} = \text{Pulsos Contados} \times \text{Resolução} $$
Resolução Calculada
... mm/pulso
SENSOR INDUTIVO
TOTAL
0.00 m
Pulsos: 0
Material em movimento >>

Configuração HSC (Siemens)

Habilitar o Contador Rápido

No TIA Portal, vá em Device Configuration > Properties > High Speed Counters (HSC).

☑ Enable this high-speed counter

Código SCL (Conversão)

Função para converter o valor bruto do HSC em milímetros.

FUNCTION "FC_Encoder_To_MM" : Real
VAR_INPUT
    HSC_Raw_Value : DInt;   // Endereço %ID1000
    Resolution_PPR : Real;  // Pulsos por Revolução
    Pitch_MM : Real;        // Passo do Fuso (mm)
END_VAR

VAR_TEMP
    Pulses_Per_MM : Real;
END_VAR

BEGIN
    // 1. Calcular Fator (Evitar divisão por zero)
    IF #Pitch_MM > 0.0 THEN
        #Pulses_Per_MM := #Resolution_PPR / #Pitch_MM;
    ELSE
        #FC_Encoder_To_MM := 0.0;
        RETURN;
    END_IF;

    // 2. Converter DInt para Real e calcular posição
    #FC_Encoder_To_MM := DINT_TO_REAL(#HSC_Raw_Value) / #Pulses_Per_MM;
END_FUNCTION

Teste seu Conhecimento

Pergunta:

Qual a principal vantagem de um encoder Absoluto sobre um Incremental?