Instalando sensor ultrassônico de distância na Beaglebone Black

Instalando sensor ultrassônico de distância na Beaglebone Black


Olá pessoal,  neste tutorial vou  mostrar uma forma fácil e rápida de instalar um sensor ultrassônico de distância na Beaglebone Black , como usar o sistema de arquivos do Linux  para ler os valores adquiridos pelo conversor A/D e também como isso poderá ser feito pela sua aplicação (aqui vamos exemplificar utilizando Python).

Para demonstrar vou utilizar o sensor de distância ultrassônico LV-MaxSonar-EZ0  que, entre outras interfaces de comunicação, possui uma saída analógica que entrega uma tensão proporcional à distância do sensor  até a superfície que ele estiver apontando.


http://api.ning.com/files/Ho7RWhwBiVeWgY-wtFrVR2YkzPJJdZdmFnyo-35jKZGpGZXl0xbcHQVNz6P4E*iv*v5NUWdnVuVk6xZoEq5SRrX3xQuOpRB4/image_364.jpgC:\Users\Leandro\Desktop\images.jpg



Dimensões:


Este compacto sonar da Maxbotix consegue detectar objetos até 6,45m de distância com uma resolução de 2,5cm. Diferente de outros sensores este sonar não tem zona morta, ou seja, pode detectar objetos muito pequenos e até muito próximos.


O VL-MaxSonar oferece 3 tipos de saídas: largura de pulso digital, saída analógica, saída digital serial assíncrona. O sensor indicará na saída 15cm quando houver objetos entre 0-15cm.

Para que serve um sensor ultrassônico?

Um sensor ultrassônico  serve para detectar obstáculos e medir distâncias e tem inúmeras aplicações. Quer saber tudo sobre ele? Chega mais.

Talvez você não o conheça pelo nome, mas provavelmente já o ouviu em ação! Eles estão presentes nos famosos “sensores de estacionamento” dos automóveis mais modernos. Aqueles que apitam quando você está perto demais de uma parede , outro veículo ou obstáculo. Além de detectar a presença de uma barreira, eles também conseguem medir a distância do obstáculo. Por isso, além dos carros, também são muito usados em fábricas, processos de automação industrial, robótica e até na medicina.


Como funcionam os sensores ultrassônicos?

O sensor ultrassônico é composto de um emissor e um receptor de ondas sonoras. Podemos compará-los a um alto-falante e um microfone trabalhando em conjunto.

Entretanto, ambos trabalham com ondas de altíssima frequência, na faixa dos 40.000 Hz (ou 40KHz). Isto é muito, muito acima do que os nossos ouvidos são capazes de perceber.

O ouvido humano consegue, normalmente, perceber ondas na entre 20 e 20.000 Hz e por isto o sinal emitido pelo sensor ultrassônico passa despercebido por nós.

O sinal emitido, ao colidir com qualquer obstáculo, é refletido de volta na direção do sensor. Durante todo o processo, o aparelho está com uma espécie de “cronômetro” de alta precisão funcionando.

Assim, podemos saber quanto tempo o sinal levou desde a sua emissão até o seu retorno. Como a velocidade do som no ar é conhecida, é possível, de posse do tempo que o sinal levou para ir até o obstáculo e voltar, calcular a distância entre o sensor e o obstáculo. Para isto vamos considerar a velocidade do som no ar (340 m/s) na seguinte equação:

d = ( V * t ) /2

Onde:

d = Distância entre o sensor e o obstáculo (é o que queremos descobrir).

V = Velocidade do som no ar (340 m/s).

t = Tempo necessário para o sinal ir do sensor até o obstáculo e voltar (é o que o nosso módulo sensor ultrassom mede).

A divisão por dois existe pois o tempo medido pelo sensor é na realidade o tempo para ir e voltar, ou seja, duas vezes a distância que queremos descobrir.

C:\Users\Leandro\Desktop\S_R.jpgC:\Users\Leandro\Desktop\MA55_pg16-figura17.png


Aplicações:

C:\Users\Leandro\Desktop\images (1).jpgC:\Users\Leandro\Desktop\images (2).jpg

Na indústria                                                        Na robótica

C:\Users\Leandro\Desktop\esquema-sensor-estacionamento.png                                    No dia a dia









http://www.embarcados.com.br/wp-content/uploads/2015/02/ultrasonic-820x820.jpg 

Conversores analógico/digital são circuitos eletrônicos fundamentais para sistemas embarcados, necessários para transformar sinais contínuos de tensão em representações discretas para que possam ser processados em sistemas digitais.

 

A  Beaglebone Black possui sete entradas para o seu conversor A/D de aproximação sucessiva, com resolução de 12 bits, capaz de realizar 200 mil amostras por segundo, e com uma tensão de entrada que pode variar de 0 a 1,8V. Com uma divisão simples então podemos concluir que a Beaglebone Black pode detectar variações de tensão de até 0,439mV, suficiente para a maioria das aplicações.

 Atenção:

Não exponha a entrada analógica da Beaglebone Black a tensões superiores a 1.8V;

Para que o nosso sensor ultrassônico forneça tensões compatíveis com a Beaglebone Black tivemos que alimentá-lo com 3,3V;

No exemplo estou utilizando a última imagem oficial lançada para a Beaglebone Black com Debian.

Caso você queira clonar o projeto utilizado no exemplo, irá precisar de acesso à internet na Beaglebone Black. Isso pode ser feito pela porta USB.

Caso você execute o comando abaixo, você poderá ver que as entradas analógicas não estão habilitadas.

No Debian

Clique aqui para saber como instalar  sistema debian na beaglebone black

Verificando os slots

cat  /sys/devices/bone_capemgr.*/slots

C:\Users\Leandro\Desktop\slots0.png.jpg

Como a Beaglebone Black já possui um device tree overlay (DTO) para o conversor A/D pronto para uso, podemos habilitar as entradas analógicas facilmente apenas com o comando abaixo:

Conversor A/D

echo BB-ADC > /sys/devices/bone_capemgr.*/slots

C:\Users\Leandro\Desktop\slots1.png.jpg                                          Nova verificação dos slots.


Agora conectando o sensor na Beaglebone Black conforme:

O VDD do sensor ultrassônico no +3,3V da Beaglebone Black (P9_03);

O GND do sensor ultrassônico no GNDA_ADC da Beaglebone Black (P9_34);

O sinal analógio do sensor ultrassônico na entrada AIN0 da Beaglebone Black (P9_39);


C:\Users\Leandro\Desktop\fritzing.jpg

Conexões entre o sensor e a Beaglebone Black.

Já podemos fazer nossa primeira leitura utilizando o comando: 


Verificando os slots


cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw


C:\Users\Leandro\Desktop\slots1.png.jpg                                                                    Leitura do conversor A/D.


O valor recebido varia linearmente de 0 a 4095 à medida que a tensão na entrada varia de 0 a +1,8V. 

Utilizando Python

Agora vamos desenvolver um pequeno script em Python  2.7.3 para realizarmos a leitura do sensor ultrassônico, e exibir o resultado em centímetros na tela. O código está no GitHub [4] e para clonar e rodar o projeto basta utilizar os três comandos seguintes: 

Clonando e rodando a aplicação

git clone https://github.com/igorTavares/bbb_ultrasonic_python.git

cd bbb_ultrasonic_python

python ultrasonic.py


C:\Users\Leandro\Desktop\cu.jpg

  As explicações estão todas nos comentários do script, assim acho que fica mais fácil de visualizar o funcionamento do programa.

Aplicação em Python

#!/usr/bin/env python

 

# Modulo para evocar novos processor

import subprocess

 

# Recebe a saída do comando "cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw"

output = subprocess.check_output("cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw", shell=True)

 

# Regra de tres para achar o valor em volts

voltage = (float(output)*1.8)/4096.0

 

# Converte voltage para string para escrever na tela

print "Voltage = " + str(voltage)

 

# Equacao do sensor. Vide datasheet.

inchs = (voltage*512.0)/3.3

 

# Converte inchs para string para escrever na tela

print "Inchs = " + str(inchs)

 

# Converte polegadas para centimetros

centimeters = inchs*2.54

 

# Converte centimeters para string para escrever na tela

print "Centimeters = " + str(centimeters)


Pronto galera!! Agora é só soltar a imaginação.


Para baixar a versão em PDF clique no link abaixo:

http://www.lojamundi.com.br/download/sensor-ultrassonico-na-beaglebone-black/sensor-ultrassonico-na-beaglebone-black.pdf


ENTRE EM CONTATO COM A LOJAMUNDI.

Assine nossa Newsletter! É gratuito!

Cadastre seu nome e email para receber novidades e materiais gratuitos da Lojamundi.