Sensor Hall KY-003 com Servo Tower Pro SG-5010 12

Sensor Hall é um sensor que utiliza o efeito hall para verificar se foi detectado algum campo magnético na área do sensor. No Arduino, podemos utilizar o Sensor Hall como um prático dispositivo para determinar se algum objeto magnético se aproximou do sensor, e assim acionar outras portas do Arduino. O sensor hall funciona com uma simples chave ou botão, sendo que, na ausência de campo magnético, o sensor envia o sinal 1 (HIGH) para o Arduino, e ao detectar algum campo magnético, a porta vai à nível 0 (LOW).

Sensor Hall

Como é comum em outros módulos para o Arduino, o Sensor Hall KY-003 tem apenas 3 pinos : Vcc, GND e Sinal, sendo que este módulo funciona com tensões de 4,5 à 24 volts DC. O módulo também possui um led que permanece aceso ao detectar um campo magnético.

Detectar a abertura de portas e janelas em um sistema de alarme ou montar um contador de RPM para motores são algumas das aplicações sugeridas. Neste post, ilustramos a utlização deste sensor de efeito hall em conjunto com um Servo Tower Pro com rotação infinita, onde fixamos um ímã no motor, e a cada acionamento do sensor, o sentido de rotação é invertido.

Montagem Sensor Hall e Servo Tower Pro

Lembrando que no servo motor que estamos utilizando, o Tower Pro SG-5010, o fio laranja corresponde ao pino de dados/controle, o fio vermelho ao Vcc 5v, e o fio marrom ao GND.

Circuito Sensor Hall - Servo Motor

O programa utiliza apenas a biblioteca Servo, já que o sensor hall não exige biblioteca própria. No ínicio do programa definimos os pinos do sensor (pino_hall) e o de controle do servo (sinal_servo). Dentro do loop, uma rotina inverte o valor da variável estado a cada acionamento do sensor, e essa variável, por sua vez, é responsável por inverter o sentido de rotação do motor, por meio da variável sentido.

Você pode utilizar o mesmo princípio de funcionamento e utilizar o sensor hall para contar o número de rotações do motor, por exemplo, ou para executar determinada tarefa um certo número de vezes.

Gostou? Conte-nos sua experiência com este post e visite nossa loja FILIPEFLOP!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

12 Comentários

  1. I could read a book about this without finding such real-world apprcaohes!

  2. One thing I would like to say is that before getting more pc memory, look at the machine in which it can be installed. If the machine can be running Windows XP, for instance, the particular memory limit is 3.25GB. Applying in excess of this would just constitute a waste. Make sure that one’s mother board can handle this upgrade volume, as well. Great blog post.

  3. I’m impressed! You’ve managed the almost impossible.

  4. Olá. Excelente trabalho.
    Tem jeito de fazer um velocímetro com o servo? Tipo… o sensor hall conta quantas voltas por segundo dá o motor e o servo fica numa posição diferente pra cada velocidade. Me ajuda ai????

    1. É preciso colocar o imã no eixo de transmissão do eixo ou roda de tração para coletar o dado. Lembre de que haverá um fator de pulso. Ou seja, haverá um determinado número de pulsos por km rodado.

  5. ola como vai, gostei do projeto apresentado faz algum tempo que acompanho site de vocês e gostaria de dar os parabéns pela a iniciativa de divulgar projetos interessante e fácil de executar e dizer obrigado.

    wilson domingos machado
  6. Olá, estou com um problema de diferença de rotação entre dois motores DCs. A solução mais viável que possuo é utilizar sensores hall nas rodas para igualar a rotação desses dois motores. Estou com dificuldades para criar um código no arduíno. Alguém poderia me dizer como solucionar esse problema?

    Aguardo.

  7. Alguém sabe como ficaria a programação para utilizar esse módulo como um velocímetro?

  8. qual a area de detecção do campo deste sensor?

  9. Boa tarde,
    Quando se aproxima um ímã do sensor, o sensor vai de 1 para 0. Isso é desejável.
    Contudo, ao se manter o ímã próximo ao sensor, esse fica disparando pulsos seguidos de 0.
    Em um velocímetro, ou contador de rpm, quando o campo magnético de um ímã vai se aproximando do sensor, o sensor detecta, e já começa a disparar esses pulsos até que o ímã se afaste novamente e o sensor deixe de detectar o campo magnético.
    Ou seja, o sensor detecta o campo magnético a medida em que ele vai se aproximando, cruza o sensor e vai se distanciando. Nesse período, múltiplos pulsos são disparados e o contador do programa conta a mais.
    Há alguma maneira de fazer com que o sensor marque apenas um pulso enquanto o ímã permanece constantemente a frente do sensor; ou, marque apenas um pulso a cada revolução?
    Att,
    Bruno

    1. Bruno, você pode tentar implementar a mesma lógica do exemplo “StateChangeDetection” do Arduino. Assim ele só vai contar quando mudar o estado do sensor.

      Depois voce precisará fazer o calculo do rpm

      //rpm = (60 * 1000 ) / (millis() – timeold) * Counter;

      const int sensorPin = 2;

      int Counter = 0;
      int sensorState = 0;
      int lastSensorState = 0;

      void setup() {
      pinMode(sensorPin, INPUT);
      Serial.begin(9600);
      }

      void loop() {

      sensorState = digitalRead(sensorPin);

      if (sensorState != lastSensorState) {

      if (sensorState == HIGH) {
      Counter++;
      Serial.print(“pulses: “);
      Serial.println(Counter);
      }

      }
      lastSensorState = sensorState;

      }

  10. Boa tarde, estou fazendo um projeto que utilizo os três componentes. É uma lixeira que separa metais e não-metais. O sensor vou para detectar a entrada e quero colocar um imã do outro lado da entrada para induzir o campo no material, porém estou com dúvida de como vou desconsiderar o campo magnético gerado pelo imã na programação, você saberia? O servo motor seria para abrir uma porta quando detectasse o metal.