Sensores

Como Programar o Sensor de Inclinação SW-520D

Eletrogate 4 de maio de 2022

Introdução

Imagine, comigo, uma situação em que um carro anda normalmente em uma rua plana, sem nenhuma dificuldade. Mas, de repente, ele precisa fazer uma curva em uma rua e, depois, subir uma ladeira. Agora, imagine o que precisa acontecer com o motor do carro para conseguir subir essa ladeira… Sim, o motor precisa gerar mais torque. Não concorda? Se o motor não tiver mais potência, provavelmente não ira conseguir subir. Neste exemplo, quem reconhece a ladeira é o motorista, que percebe a inclinação e pisa no acelerador para que o carro suba. Mas, e se estivéssemos sem o motorista e o carro precisasse, então, identificar, sozinho, o momento em que precisa acelerar. É exatamente isso que nós vamos ver aqui hoje.


Vamos Montar um Exemplo

Agora, iremos montar um projeto simples para mostrar como isso funcionaria. Temos um módulo sensor de inclinação SW-520D, que faz o papel dos olhos do motorista. Ele reconhece quando há uma alteração no nível do solo. Agora, imagine usar este módulo em um pequeno robô que precisa andar em terrenos irregulares, por exemplo. Usar de tal sensor pode facilitar muito a confecção do seu projeto. Quer aprender a usar este módulo sensor de inclinação? Então, fique conosco até o final e eu prometo que você vai sair daqui sabendo como usar esse módulo. Este módulo é usado, principalmente, para identificar quando há subidas e descidas. Em nosso exemplo, ele identifica quando estamos subindo. Por isso, é perfeito para projetos de robótica. Com a ajuda do sensor de inclinação, podemos programar o robô, por exemplo, para ligar um motor extra ao atingir uma inclinação. Mas, claro, tudo vai depender de como a gente calibra a sensibilidade do sensor, o que a gente faz manualmente, aqui, no próprio módulo, com uma chave. Agora, o que o Arduino vai fazer com a informação que ele recebe vai depender da nossa programação e de como nós queremos usar. Nesse exemplo, nós queremos que o sistema entenda que, quando estiver em uma rampa, o motor deve ser acelerado. Para fazer a comunicação entre o sensor de inclinação e os movimentos do motor, estamos usando o Arduino Uno e uma Ponte-H. Sobre o sensor, especificamente, nós temos 3 conexões: positivo e negativo, que vão, respectivamente, no 5 V e no GND do Arduino. Além destes, temos uma terceira conexão, que deve ser ligada a uma porta digital. Veja esse esquema um pouquinho mais de perto.

Materiais necessários para o projeto de exemplo

Veja, conectamos o módulo à porta digital 7, mas ele pode estar em qualquer porta digital. Então, neste caso, se posicionarmos o sensor para que ele mude quando estiver na rampa de subida, ele enviará um nível lógico para o Arduino dizendo que sim, está na rampa. Também é importante posicionarmos o robô corretamente, como dissemos. Nós também temos um motor, que não é o foco desse post. Ainda assim, é importante comentar, porque não podemos ligar o motor direto ao Arduino, mas, sim, à ponte H. Devemos, também, alimentar este módulo com duas baterias 18650 em série.


Agora, Vejamos a Programação

// DEFINIÇÕES DE PINOS
#define pinMot1A  10
#define pinMot1B  11
#define pinSensor 7
#define INTERVALO 5000
// DECLARAÇÃO DE VARIÁVEIS
unsigned long controleTempo;
int movimento;

void setup() {
  pinMode(pinMot1A, OUTPUT);
  pinMode(pinMot1B, OUTPUT);
  pinMode(pinSensor, INPUT);
}
void loop() {
  bool ladeira = !digitalRead(pinSensor); // QUANDO ESTÁ INCLINADO == false
  int velocidade = 100 + (ladeira * 150); // SE ESTIVER INCLINADO VAI SOMAR 150 NA VELOCIDADE

  switch (movimento) {
    case -2 : {} // SEM O BREAK EXECUTA O CODIGO DE BAIXO
    case 0 : {   // if ( movimento == -2 || movimento == 0) {
        // PARADO
        digitalWrite(pinMot1A, LOW );
        digitalWrite(pinMot1B, LOW );
        break;
      }
    case 1 : {
        // MOVER PARA FRENTE
        analogWrite(pinMot1A, velocidade );
        analogWrite(pinMot1B, LOW );
        break;
      }
    case -1 : {
        analogWrite(pinMot1A, LOW );
        analogWrite(pinMot1B, velocidade );
        break;
      }
  }
  if ( millis() - controleTempo > INTERVALO) { // CONTROLA A TROCA DE MOVIMENTOS
    movimento++;
    if (movimento > 1) movimento = -2;
    if (movimento == -2 || movimento == 0) controleTempo = ((millis() - INTERVALO) + 500);
    else controleTempo = millis();
  }
}

Logo no início, definimos os pinos que estão conectados à Ponte-H:

Abaixo, o pino que está conectado ao sensor:

Já no loop, ele esta lendo as informações do sensor:

E salvando na variável “ladeira”

Aqui, também temos uma variável que armazena a velocidade:


Conclusão

Agora, é com você!! Caso crie qualquer projeto, ou use esse sensor, poste e marque a Eletrogate no Instagram: @eletrogate

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Alejandro Rocha

Desde muito jovem eu me interessava por robótica e tive que aprender sozinho, hoje tento dividir meu conhecimento com outras pessoas que queiram estar entrando nesse hobby maravilhoso.


Eletrogate

4 de maio de 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!