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.
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.
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.
// 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:
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.
|
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!