Desenvolvimento de sensores para testes automotivos – Parte 2
1. Introdução
Como parte de uma série de posts sobre a instrumentação de um simulador de direção automotiva, este aborda o desenvolvimento de um método para leitura da posição dos pedais de aceleração, frenagem e embreagem. Apesar de haver diversos métodos para realização dessa leitura, apenas um foi realizado e descrito aqui.
A primeira parte abordou a leitura do sentido e velocidade de giro do volante (parte 1).
2. Referencial teórico
Para realizar a instrumentação dos pedais, foram consideradas diversas formas de aquisição dos dados e optou-se pela utilização de sensores ultrassônicos, por não haver contato físico e possíveis desgastes e desalinhamento entre o pedal e o sensor.
O princípio de funcionamento é baseado na reflexão das ondas de som e ultrassom. A frequência de som audível ao ser humano é de 20Hz a 20KHz e do ultrassom, imperceptível ao homem, é a partir de 20KHz. Por isso, é mais conveniente a utilização do ultrassom por não pertencer a faixa audível do ser humano.
Esse tipo de sensor é montado em um módulo que contêm um transmissor e um receptor de ultrassom. O emissor envia um pulso ultrassônico que se propaga até atingir um obstáculo, onde reflete e retorna ao módulo, onde é captado pelo receptor. Essa dinâmica gera no módulo um pulso de saída (figura 1). Em um microcontrolador, é temporizada a duração do nível alto no receptor e aplicado à uma equação, que resulta na distância entre o módulo e o obstáculo.
3. Metodologia
O módulo sensor utilizado é o HC-SR04. Ele permite medir distâncias entre 2cm e 4m, com precisão de 3mm e ângulo de operação de 15°. As conexões são feitas através de quatros pinos: VCC, Trigger, Echo e GND.
Para a realização da medição com o sensor ultrassônico é necessário alimentar a tensão VCC com 5V e o terra (GND). Além disso, é preciso aplicar nível alto ao pino Trigger por 20us e depois aplicar nível baixo novamente. Com isso o emissor emitirá uma onda de ultrassom que se propagará até encontrar um obstáculo (dentro da faixa de operação), onde rebaterá e ecoará de volta ao módulo, onde será recebido e identificado pelo pino Echo.
O tempo de duração do nível alto no pino Echo corresponde ao tempo que o ultrassom foi emitido, refletido e retorna ao sensor. Esse tempo é medido através de uma função no código e então aplicado à equação abaixo.
O parâmetro velocidade da equação é a velocidade do som e pode ser considerada ideal, isto é, 340 m/s.
Para toda essa realização, foi implementado o código apresentado abaixo, que faz a medição da distância por apenas um sensor ultrassônico.
[sourcecode language=”c”]
float calculaDistancia(int trig, int echo){
struct timeval inicio, final;
setPinValue(trig, OFF);
pauseNanoSec(1000);
setPinValue(trig, ON);
pauseNanoSec(20000);
setPinValue(trig, OFF);
while(getPinValue(echo) == OFF); // enquanto não recebe o retorno do sinal
gettimeofday(&inicio, NULL);
while(getPinValue(echo) == ON); // enquanto entrada estiver em alto
gettimeofday(&final, NULL);
float temp = (float) (final.tv_usec – inicio.tv_usec)/1000;
// Possiveis equações para calculo da distância
// Formula -> distancia = velocidade_da_luz * tempo
float mmdist = (340*temp)/2 ;
return mmdist;
}
[/sourcecode]
O projeto foi depurado e compilado para ser executado na BeagleBone Black (BBB), pois essa placa de desenvolvimento, com seu grande número de GPIOs permite maior versatilidade em projetos desse tipo.
O circuito construído em uma protoboard,apresentado em foto nas figuras 3 e 4, faz a interligação entre os módulos sensores e a BeagleBone Black. Os resistores utilizados formam um divisor de tensão para a saída Echo. Essa saída é de 5V e a entrada da BBB é de 3,3V. A montagem desse divisor de tensão é apresentado na figura 5.
A pinagem utilizada da BBB para interligá-la ao protoboard é apresentada na figura 6. Foram utilizados chicotes com 4 fios em cada. Como são 4 fios por chicote, os pinos foram escolhidos de forma agrupada. Na figura 6, são destacados em quadrados azuis. Esses chicotes, permitem mais segurança e facilidade nas ligações.
Com o objetivo de não correr o risco de sobrecarregar a alimentação de 5V fornecida pela BBB, optou-se pela utilização de uma fonte de alimentação externa. Salienta-se aqui que o terra dessa fonte deve ser curto-circuitado com o terra da BBB e do circuito da protoboard para deixá-lo ao mesmo nível de tensão.
Executando o projeto por alguns segundos, obteve-se as leituras apresentadas abaixo.
cmdistACEL: 177.34 – cmdistFR: 167.46 – cmdistEMB: 176.63
cmdistACEL: 177.97 – cmdistFR: 169.89 – cmdistEMB: 178.02
cmdistACEL: 177.97 – cmdistFR: 171.76 – cmdistEMB: 177.59
cmdistACEL: 177.53 – cmdistFR: 168.64 – cmdistEMB: 177.10
cmdistACEL: 177.97 – cmdistFR: 171.85 – cmdistEMB: 178.98
cmdistACEL: 176.97 – cmdistFR: 169.97 – cmdistEMB: 175.83
cmdistACEL: 178.15 – cmdistFR: 168.19 – cmdistEMB: 178.47
cmdistACEL: 178.02 – cmdistFR: 167.70 – cmdistEMB: 179.38
cmdistACEL: 178.42 – cmdistFR: 168.68 – cmdistEMB: 180.77
cmdistACEL: 178.42 – cmdistFR: 168.16 – cmdistEMB: 177.17
cmdistACEL: 177.97 – cmdistFR: 168.19 – cmdistEMB: 176.08
cmdistACEL: 177.53 – cmdistFR: 168.68 – cmdistEMB: 176.28
cmdistACEL: 178.09 – cmdistFR: 167.29 – cmdistEMB: 176.34
4. Próximos trabalhos
A próxima etapa será a integração dos dois sistemas descritos.
O objetivo será criar um único código em C a ser executado pela BeagleBone e uma placa extensora dos pinos da Beagle que será dedicada a realizar as conexões com os sensores. Esse placa terá a finalidade de substituir o protoboard citado nesse post.