Você está na página 1de 7

1 – Desenhe as ligações elétricas realizadas no projeto do seu robô móvel:

a) Ligações entre os Sensores Ultrassônicos e o Arduino

b) Ligações entre a Ponte H, Motores e o Arduino


2 – Explique o princípio de funcionamento dos sensores ultrassônicos.

O princípio de funcionamento do HC-SR04 consiste na emissão de sinais


ultrassônicos pelo sensor e na leitura do sinal de retorno (reflexo/eco) desse mesmo
sinal. A distância entre o sensor e o objeto que refletiu o sinal é calculada com base
no tempo entre o envio e leitura de retorno.

” Sinais Ultrassônicos são ondas mecânicas com frequência acima de 40 KHz“

Como ouvido humano só consegue identificar ondas mecânicas até a frequência de


20KHz, os sinais emitidos pelo sensor Ultrassônico não podem ser escutados por nós.

O sensor HC-SR04 é composto de três partes principais:

 Transmissor Ultrassônico – Emite as ondas ultrassônicas que serão refletidas


pelos obstáculos;
 Um receptor – Identifica o eco do sinal emitido pelo transmissor;
 Circuito de controle – Controla o conjunto transmissor/receptor, calcula o
tempo entre a emissão e recepção do sinal;

O funcionamento consiste em três etapas:

1. O circuito externo(Arduino) envía um pulso de trigger de pelo menos 10us


em nível alto;
2. Ao receber o sinal de trigger, o sensor envía 8 pulsos de 40khz e detecta se
há algum sinal de retorno ou não;
3. Se algum sinal de retorno for identificado pelo receptor, o sensor gera um
sinal de nível alto no pino de saída cujo tempo de duração é igual ao tempo
calculado entre o envio e o retorno do sinal ultrassônico;

Por meio desse pulso de saída cujo tempo é igual a duração entre emissão e
recepção, nós calculamos a distância entre o sensor e o objeto/obstáculo, por meio
da seguinte equação:
Distância = (Tempo de duração do sinal de saída × velocidade do som) / 2

Em que:

 Tempo de duração do sinal de saída é o tempo no qual o sinal de output


permanece em nível alto;
 Velocidade do som = 340 m/s;

Repare que as unidades devem estar coerentes para o resultado da conta ser correto.
Assim, se a velocidade do som é dada em metros/segundo, o tempo de duração do
sinal de saída deve estar em segundos para que possamos encontrar a distância em
metros.
3 –A ilustração abaixo descreve um teste de desempenho destes tipos de sensores.
Esboce a disposição da montagem dos sensores no seu projeto, visando evitar um
sombreamento/superposição das medições. Justifique a sua escolha técnica.

Foi utilizado uma inclinação entre os sensores de 22° para anular o efeito de
sobreposição entre os sensores. Também foi utilizado a função Delay para minimizar
os conflitos de leitura entre os sensores.
4 – Explique o trecho da sua programação responsável por fazer o robô desviar de
obstáculos à direita e a esquerda. Explique a lógica de uso do sensor central.

A lógica utilizada para desviar de objetos à direita e à esquerda foi pensada para
maximizar essa habilidade do robô da seguinte forma: Por meio de testes práticos
vimos que os melhores valores de distância que um objeto tem que estar do robô para
ele desviar com êxito é se esse objeto estiver entre 5 e 19 centímetros de distância
dos sensores.
Caso o sensor da esquerda identifique um objeto entre 5 e 19 centímetros de
distância, a ordem dada pelo código é de inverter a rotação do motor da roda da
direita, gerando um movimento de rotação, para a direita, no próprio eixo no robô, a
fim de usar o menor espaço possível para fazer essa manobra.
Da mesma forma acontece para um objeto detectado ao lado direito do robô. Porém,
nesse caso, a rotação invertida é a do motor da roda da esquerda. A fim de gerar uma
rotação no próprio eixo para a esquerda e desviar com êxito.
A outra função utilizada, que faz parte dos movimentos responsáveis por desviar de
objetos, é a função que identifica se um objeto está mais próximo que 5 centímetros
do robô. Nesse caso, os comandos da função são para inverter a rotação dos dois
motores, tanto da esquerda quanto da direita, resultando em uma ré. Contudo, caso
o objeto esteja à direita, o motor da esquerda terá uma maior velocidade
comparado ao da direita, justamente para gerar uma curvatura na ré para a direita, a
fim de proporcionar novas leituras para os sensores e não ficar repetindo os mesmos
movimentos.
Caso o objeto estiver mais próximo de 5 centímetros à esquerda, o comando é para
executar as mesmas tarefas como no caso do objeto à direita, mas quem terá uma
maior velocidade quando estiver dando ré, será o motor da direita. Gerando a
curvatura da ré para a esquerda.
O sensor central foi trabalhado como um regulador da velocidade. O valor para a
velocidade varia de 0 à 255 unidades, sendo 0 a mínima e 255 a máxima. Por meios
de experimentos, vimos que a velocidade padrão para linhas retas poderia ser
estabelecida no começo do código com o valor de 120, mas caso o sensor central
detectar uma distância maior do que 60 centímetros, a variável velocidade receberia
150 como valor. Aumentando a velocidade do robô em linhas retas em que esteja
distante de qualquer objeto.

1. /Inverte a rotação do motor da esquerda, afim de desviar do objeto


reconhecido.
2. if ((distanciaD > 5) && (distanciaD < 19))
3. {
4. analogWrite(ENA, 120);
5. analogWrite(ENB, 120);
6. digitalWrite(IN1, 1);
7. digitalWrite(IN2, 0);
8. digitalWrite(IN3, 0);
9. digitalWrite(IN4, 1);
10. }
11.
12. //Inverte a rotação do motor da direita, afim de desviar do objeto
reconhecido.
13. else if ((distanciaE > 5) && (distanciaE < 19))
14. {
15. analogWrite(ENA, 120);
16. analogWrite(ENB, 120);
17. digitalWrite(IN1, 0);
18. digitalWrite(IN2, 1);
19. digitalWrite(IN3, 1);
20. digitalWrite(IN4, 0);
21. delay(5);
22. }
23.
24. //Aumento da velocidade para distâncias maiores que 60 cm
25. else if ((distanciaC > 60) || (distanciaC == 0))
26. {
27. velocidade = 150;
28. }
29.
30. //Pequena ré com um pouco de curvatura, para desviar de objetos muito
próximos,
31. a fim de conseguir fazer a rotação sem impactos
32. if (distanciaE > 1 && distanciaE < 5 || distanciaE == 0)
33. {
34. analogWrite(ENA, 100);
35. analogWrite(ENB, 120);
36. digitalWrite(IN1, 0);
37. digitalWrite(IN2, 1);
38. digitalWrite(IN3, 0);
39. digitalWrite(IN4, 1);
40. delay(5);
41. }
42. //Pequena ré com um pouco de curvatura, para desviar de objetos muito
próximos,
43. a fim de conseguir fazer a rotação sem impactos
44. if (distanciaD > 1 && distanciaD < 5 || distanciaD == 0)
45. {
46. analogWrite(ENA, 120);
47. analogWrite(ENB, 100);
48. digitalWrite(IN1, 0);
49. digitalWrite(IN2, 1);
50. digitalWrite(IN3, 0);
51. digitalWrite(IN4, 1);
52. delay(5);
53. }
54. }

Você também pode gostar