Sensor de efeito Hall
Sensores de efeito Hall podem detectar a presença de campo magnético e produzir uma tensão de saída quando um é detectado. Sensores de efeito Hall, quando usados comatuadores lineares, normalmente são posicionados dentro da caixa de engrenagens do atuador junto com um disco magnético. À medida que o atuador linear se estende ou retrai, este disco gira e passa pelo sensor de efeito Hall, o que faz com que o sensor produza uma saída digital na forma de um pulso de tensão. Esses pulsos podem ser contados e usados para determinar a distância que o atuador se moveu.
Feedback posicional de um sensor de efeito Hall
Uma desvantagem de usar um sensor de efeito Hall para feedback posicional é que eles não medem uma posição absoluta. Em vez disso, eles produzem pulsos que podem ser contados para determinar a distância que o atuador se moveu. Para utilizar esses pulsos para feedback posicional, você precisará usar um microcontrolador para contar os pulsos produzidos. Para fazer isso, você precisará usar pinos de interrupção externos do seu microcontrolador para contar esses pulsos à medida que ocorrem. Interrupções externas são pinos que detectam uma mudança na tensão e no nosso caso podem ser usadas para detectar o pulso de tensão do sensor de efeito Hall. Você precisará consultar a folha de dados do seu microcontrolador para garantir quais pinos do seu microcontrolador podem ser usados como pinos de interrupção. Usando um Arduino Uno por exemplo, os pinos 2 e 3 podem ser usados para interrupções externas. Depois de selecionar um pino de interrupção apropriado, você pode conectar o fio da saída do sensor de efeito Hall a esse pino, bem como conectar a tensão de entrada a 5V e aterrar a um pino de aterramento.
O exemplo de código abaixo mostra como configurar uma interrupção no Arduino IDE onde a interrupção será acionada na borda ascendente do pulso de tensão. Você pode configurar sua interrupção para ser acionada em diferentes pontos de uma mudança de tensão e deve consultar a folha de dados do seu microcontrolador para determinar as opções disponíveis. O último aspecto que você precisa fazer para configurar sua interrupção é escrever sua rotina de serviço de interrupção, que é a função que o código executará toda vez que a interrupção for acionada. Esta função deve ser curta e executar apenas tarefas simples, como contar o número de pulsos do nosso sensor de efeito Hall. A função countSteps() no exemplo de código abaixo é usada para contar o número de pulsos do sensor de efeito Hall.
Para utilizar esses pulsos para determinar um valor posicional, você precisará saber a posição anterior do atuador linear e a direção em que o atuador linear está se deslocando. Seu microcontrolador já saberá para que lado você está conduzindo seu atuador linear, portanto, você pode simplesmente configurar uma variável para rastrear a direção do atuador em seu código, que será usada para determinar se você adiciona ou subtrai os pulsos de sua posição anterior. Depois de atualizar sua posição, você precisará zerar os pulsos contados. O exemplo de código abaixo mostra uma função que atualiza a posição com base no número de pulsos contados. Depois de ter uma posição em termos de pulsos, você pode converter em polegadas usando a especificação de pulso por polegada do seu atuador linear. No exemplo de código abaixo, o deslocamento do pulso por polegada é 3.500.
Direcionando seu atuador linear
Para utilizar com precisão o feedback de posição de um sensor de efeito Hall, você precisa sempre saber a posição inicial do seu atuador linear. Embora quando você ligar o sistema pela primeira vez, o microcontrolador não será capaz de dizer se o atuador está estendido ou não. Isso exigirá que você posicione seu atuador linear em uma posição conhecida. Para posicionar seu atuador linear, você precisará direcioná-lo para uma posição conhecida, como totalmente retraído. Você também pode fazer uso de interruptores de limite externos para definir sua posição conhecida para algum lugar diferente de totalmente estendido ou retraído. Usando o código Arduino abaixo como exemplo, desejaremos configurar um loop WHILE que conduzirá nosso atuador linear em direção à sua posição conhecida, neste caso totalmente retraída. Sabemos que você está em nossa posição conhecida porque a interrupção do sensor de efeito Hall não será acionada. Neste caso, verificamos se a variável steps foi alterada ou não para determinar se a interrupção foi acionada. Também precisamos ter certeza de que passou tempo suficiente para esperar que a interrupção fosse acionada, para isso usamos a função millis() que exibe o tempo em milissegundos desde que o código foi iniciado e comparamos isso com o carimbo de data/hora anterior . Depois de determinarmos que o atuador linear está em nossa posição inicial, paramos de acionar o atuador, redefinimos a variável de etapas e saímos do loop WHILE.
Lidando com falsos gatilhos
Embora os sensores de efeito Hall não sejam tão sensíveis ao ruído elétrico quanto um potenciômetro, o ruído elétrico ainda pode impactar o sinal de saída. O salto do interruptor também pode ser um problema com sensores de efeito Hall que podem acionar a contagem de pulsos falsos, o que afetaria a distância que o microcontrolador acha que o atuador linear se moveu. Alguns pulsos extras não afetarão muito o posicionamento, pois há milhares de pulsos por polegada, mas com o tempo isso pode ser um problema maior. Você pode combater esses problemas usando um temporizador interno para filtrar falsos gatilhos. Como você pode determinar com que frequência espera que novos pulsos sejam detectados, você pode filtrar quando a interrupção foi acionada por ruído. No exemplo de código abaixo, trig-Delay é o atraso entre cada pulso. Se a interrupção foi acionada antes deste atraso, o pulso não será contado.
A duração desse atraso variará de acordo com sua aplicação, mas se for muito curto, não filtrará o ruído adequadamente e se for muito longo, perderá os pulsos reais do atuador linear. A velocidade do atuador linear também terá impacto neste atraso e se desejar ajustar a velocidade, esta variável pode precisar ser alterada para se ajustar à nova frequência dos pulsos esperados. Para determinar com precisão um atraso exato entre cada pulso, você pode usar um analisador lógico para visualizar o sinal real do sensor de efeito Hall. Embora isso não seja necessário na maioria das aplicações, se você precisar de um posicionamento muito exato, poderá desejar determinar um atraso preciso.
Outra forma de combater falsos disparos é corrigir o valor posicional toda vez que o atuador atinge uma posição conhecida. Assim como posicionar o atuador linear, se você tiver conduzido o atuador linear para uma posição totalmente retraída ou estendida ou se usar interruptores de limite externos, você saberá até que ponto o atuador se moveu. Como você sabe quantos passos o sensor de efeito Hall deve enviar para atingir sua posição conhecida, você pode simplesmente corrigir o valor quando o alcançarmos. No exemplo de código abaixo, isso é feito para as posições totalmente estendida e totalmente retraída. Como o atuador não se move quando atinge uma dessas posições, se tentarmos acionar o atuador e o valor da posição não mudar, sabemos que estamos no limite. Este método fornece uma solução prática para garantir que seu valor posicional permaneça preciso, especialmente se você estiver retraindo ou estendendo totalmente o atuador em algum momento durante a operação. Você pode usar este método em conjunto com o método descrito acima, o que deve ajudar a manter a precisão do seu valor posicional.
Resumo
A utilização de um sensor de efeito Hall para feedback posicional fornece uma resolução muito maior em comparação com o feedback de um potenciômetro. Como pode haver milhares de pulsos por polegada de movimento, os sensores de efeito Hall fornecem precisão e confiabilidade no posicionamento do seu atuador linear. Os sensores de efeito Hall também oferecem maior capacidade de garantir que vários atuadores lineares se movam juntos simultaneamente, pois as contagens de pulso são mais precisas do que a variação da tensão do potenciômetro. Utilizando nosso FA-SYNC-X controlador de atuador, você pode até mesmo garantir que os atuadores se movam em uníssono, independentemente da carga. Para DIYers, você pode verificar como garantir que seus atuadores se movam em uníssono usando um Arduino aqui.
Abaixo está o código de exemplo completo usado neste blog e foi construído para controlar um comprimento de traço de 14” Bala Série 36 Cal. Atuador linear. O atuador linear é acionado usando um motorista, que você pode aprender como configurar aqui.
[1] Monari, G. (junho de 2013) Compreendendo a resolução em codificadores ópticos e magnéticos. Obtido de: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders