Às vezes é necessário Medir distâncias e para isso tem à sua disposição diversos sensores. Já dedicamos um artigo para falar sobre um sensor de distância de alta precisão, como o VL52L0X. Este sensor era do tipo ToF e se baseava em medições muito precisas graças ao seu laser. Mas se a precisão não é tão importante para você e você quer algo que lhe permite medir distâncias a um preço baixo, outra possibilidade que que você tem na ponta dos dedos é o HC-SR04.
No caso de Sensor de distância HC-SR04, a distância é medida por ultrassom. O sistema é semelhante ao método óptico do VL52L0X. Ou seja, ele é emitido, há um salto e ele é recebido, mas nesse caso em vez de ser um laser ou infravermelho, é ultrassom. Se você é apaixonado por eletrônica, robótica ou fabricante amador, pode usá-lo para uma infinidade de projetos DIY, como sistemas de detecção de obstáculos para robôs, sensores de presença, etc.
O que é HC-SR04?
Bem, é óbvio, como já comentei nos parágrafos anteriores, O HC-SR04 é um sensor de distância de baixa precisão baseado em ultrassom. Com ele permite medir distâncias de forma simples e rápida, embora em princípio não seja utilizado para isso. Na maioria das vezes, é usado como um transdutor para detectar obstáculos e evitá-los por meio de outros mecanismos associados à resposta do sensor.
A aparência do HC-SR04 é muito distinto e facilmente reconhecível. Além disso, é um item muito popular nos kits iniciais do Arduino e necessário para uma infinidade de projetos. É facilmente identificado porque possui dois "olhos" que são na verdade os dispositivos de ultrassom que este módulo integra. Um deles é um emissor de ultrassom e o outro um receptor. Ele funciona a uma frequência de 40 Khz, portanto, é inaudível para os humanos.
Princípios do sensor ultrassônico
O princípio em que É baseado na simulação daquele usado quando você joga uma pedra em um poço para medir sua profundidade. Você joga a pedra e calcula quanto tempo leva para ela cair no fundo. Em seguida, você faz cálculos da velocidade para o tempo decorrido e obtém a distância que a pedra percorreu. Mas, nesse caso, o sensor é você.
No HC-SR04, o emissor irá emitir ultrassons e quando eles ricochetearem em um objeto ou obstáculo no caminho serão capturados pelo receptor. O circuito fará os cálculos necessários desse eco para determinar a distância. Isso também pode ser familiar para você se você conhece o sistema que alguns animais, como golfinhos, baleias ou morcegos usam para localizar obstáculos, presas, etc.
Contando o tempo desde o envio do pulso até o recebimento da resposta, o tempo e, portanto, a distância podem ser determinados com precisão. Lembra que [Espaço = tempo de velocidade] pero en el caso del HC-SR04 deberá dividir esta cantidad entre /2, ya que se ha medido el tiempo desde que sale el ultrasonido y recorre el espacio hasta impactar con el obstáculo y el camino de vuelta, así que será aproximadamente de la mitad Deste…
Pinagem e folhas de dados
Você já sabe que para ver os dados completos do modelo que adquiriu, o melhor é encontre a folha de dados concreto do fabricante. Por exemplo, aqui está um Folha de dados do Sparkfun, mas existem muitos mais disponíveis em PDF. No entanto, aqui estão os dados técnicos mais importantes do HC-SR04:
- Pinagem: 4 pinos para alimentação (Vcc), gatilho (Trigger), receptor (Echo) e aterramento (GND). O gatilho indica quando o sensor deve ser acionado (quando o ultrassom é lançado), e assim será possível saber o tempo decorrido até que o receptor receba o sinal.
- Alimentação: 5v
- Freqüência de ultrassom: 40 kHz, o ouvido humano só consegue ouvir de 20 Hz a 20 kHz. Tudo abaixo de 20 Hz (infra-som) e acima de 20 KHz (ultra-som) não será perceptível.
- Consumo (em espera): <2mA
- Consumo funcionando: 15mA
- Ângulo efetivo: <15º, dependendo dos ângulos dos objetos você pode ter resultados melhores ou piores.
- Distância medida: de 2cm a 400cm, embora a partir de 250cm a resolução não seja muito boa.
- Resolução média: Variação de 0.3 cm entre a distância real e a medição, portanto, apesar de não serem consideradas altamente precisas como o laser, as medições são bastante aceitáveis para a maioria das aplicações.
- Preço: desde cerca de € 0,65
Integração com Arduino
Pára conectá-lo ao Arduino não poderia ser mais fácil. Você só precisa se encarregar de conectar o GND na saída correspondente do seu Arduino marcado como tal, Vcc com a fonte de alimentação do Arduino 5v e os outros dois pinos do HC-SR04 com as entradas / saídas escolhidas para o seu projeto. Você pode ver que é simples no esquema de Fritzing superior ...
Você apenas tem que ter uma consideração, que o tigre deve receber um pulso elétrico de pelo menos 10 microssegundos para ativar corretamente. Anteriormente, você deve se certificar de que o valor é BAIXO.
Quanto a código para Arduino IDE, você não precisa usar nenhuma biblioteca ou algo parecido com outros componentes. Basta fazer a fórmula para calcular a distância e pouco mais ... Claro, se você quiser que seu projeto faça algo em resposta à medição do sensor HC-SR04, terá que adicionar o código que você precisa. Por exemplo, ao invés de simplesmente mostrar as medições no console, você pode fazer os servomotores se moverem em uma direção ou outra por certas distâncias para evitar o obstáculo, ou para um motor parar, um alarme para ser ativado quando detecta proximidade, etc. .
Mais informações sobre programação: Manual do Arduino (PDF grátis)
Por exemplo, você pode ver este código básico para usar como base:
//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger const int EchoPin = 8; const int TriggerPin = 9; void setup() { Serial.begin(9600); pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); } //Aquí la muestra de las mediciones void loop() { int cm = ping(TriggerPin, EchoPin); Serial.print("Distancia medida: "); Serial.println(cm); delay(1000); } //Cálculo para la distancia int ping(int TriggerPin, int EchoPin) { long duration, distanceCm; digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us delayMicroseconds(4); digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us delayMicroseconds(10); digitalWrite(TriggerPin, LOW); duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm return distanceCm; }
Achei a explicação muito útil e simples.