top of page

Sensores de Parede

Os sensores de parede são utilizados para detectarem a presença ou ausência de paredes e para verificar a posição do micromouse no labirinto. Eles também são importantes para garantir que o micromouse mantenha um caminho apropriado sem bater no labirinto. Para esta aplicação, pode ser mais importante ter uma boa repetitividade que precisão. A chave é evitar bater em qualquer coisa, portanto, não importa correr com um pequeno erro, desde que ele não se acumule.

São vários os tipos de sensores capazes de medirem distâncias, mas será tratado aqui o sensor por emissão/recepção de luz infravermelha (LED + fototransistor) por serem os mais simples e mais recomendados para um micromouse.

a) Emissores

Especificações e características que se deve saber ao escolher um LED infravermelho para o seu micromouse (os termos entre parêntesis são os encontrados nos datasheets):

  • Comprimento de onda (wavelenght): os dois valores mais frequentes são 850 e 950nm, a atenção que deve ser tomada com este parâmetro é que o fototransistor deve combinar com o LED para que ocorra a máxima eficiência do conjunto.

  • Queda de tensão (forward voltage): os valores típicos para os LEDs de potência são na ordem de 1,5V quando acionados por uma corrente de 100mA; para melhor ajuste do projeto verifique no datasheet o gráfico .

  • Corrente de pulso e tempos (permissible pulse handling capability): procure verificar no datasheet o gráfico que indica a corrente máxima permitida quando o LED é acionado por pulsos, os valores variam em função do tempo ativo do pulso e do período entre os pulsos.

  • Ângulo de visão (half angle ou full angle): para esta aplicação ângulos pequenos são preferíveis, pois concentra mais a potência e possibilita mais precisão na medida de distância; recomenda-se um full angle de até 10°.

  • Intensidade de radiação (radiante intesity): indica a intensidade de potência por unidade de área [mW/sr], quanto maior este valor melhor (300mW/sr já é um bom valor).

Recomendações: de acordo com as características apresentadas, não é aconselhável o uso daqueles LEDs infravermelhos comuns que não sabemos nem se quer seu código, pois o parâmetro mais crítico é o ângulo de visão e normalmente estes LEDs comuns apresentam um ângulo muito grande por serem mais destinados a controles remotos. Os LEDs mais utilizados são o SFH4550 (850nm) e o SFH4545 (950nm).

b) Receptores

Os fototransistores não são tão críticos quanto os LEDs, o cuidado maior que deve se tomar é que o comprimento de onda combine com o do LED. O ângulo de visão pode ser entre 30° e 60°. O valor do resistor em série com o fototransistor (pull-up ou pull-down) deve ser encontrado através de testes de acordo com sua preferência, este valor afeta na leitura máxima e no tempo de carga/descarga do fototransistor (o carregamento rápido diminui o tempo dos pulsos, mas também deixa o fototransistor mais sensível aos ruídos do ambiente).

c) Circuito de exemplo

A figura a seguir mostra uma sugestão de como ligar o LED e o fototransistor. Para valores de referência, o projetista Green Ye do site Micromouse USA utiliza R1 = 12Ω e R3 = 1,8kΩ com o LED SFH4545 e com o fototransistor TEFT4300. Os tempos dos pulsos utilizados por Green Ye serão apresentados a seguir em “Técnica de leitura dos sensores”.



d) Número de sensores

São frequentemente encontradas duas configurações quanto ao número de sensores: quatro (dois frontais e dois laterais); seis (dois frontais, dois laterais e dois diagonais).

Para evitar interferências entre os sensores é necessário aciona-los em grupos, exceto pelos sensores frontais que devem ser acionados de forma independente. Portanto, em um robô com seis sensores a sequência de acionamento é a seguinte: frontal esquerdo, diagonais, laterais e frontal direito. Com isso, nota-se facilmente que uma desvantagem dos robôs com seis sensores é que o tempo de leitura será maior que em um robô com quatro sensores.

Além disto, seis sensores apresentam como desvantagens: maior dificuldade de codificação e de desenvolvimento da placa. Mas as vantagens de se utilizar os sensores diagonais é que eles permitem alinhar o micromouse mais precisamente no labirinto e também possibilitam uma corrida diagonal mais fácil e segura.

Para quatro sensores têm-se facilidade de implementação tanto no desenvolvimento da placa como no código, a desvantagem está na diminuição de possibilidades o que dificulta um pouco a corrida diagonal e a detecção das transições de “com parede” para “sem parede” e vice-versa.

Mas a questão toda é que não importa o número de sensores de parede que você usa, pois em primeiro lugar o micromouse deve ser capaz de navegar sem sensores de parede (corrida sega) devido a algumas situações em que não se tem parede para tomar de referência (procure por micromouse fishbone). Portanto, para um robô competitivo é fundamental ter outros sensores auxiliares para garantir que o micromouse efetue retas e curvas precisas. Estes sensores são o encoder e o giroscópio e serão tratos nos próximos tópicos.

e) Posicionamento dos sensores

Assumindo a configuração com quatro sensores é apresentado na figura a seguir o posicionamento dos sensores de parede. Nota-se que o centro de curvatura do robô deve estar no centro da célula. Os sensores laterais são posicionados de modo que seu ângulo de visão atinja um pouco a frente do poste. Já os sensores frontais têm que atingir uma parede frontal a uma distância de uma célula e meia. Recomendação: na biblioteca do LED adicione linhas de referência para o ângulo de visão de acordo com o datasheet, isso irá ajudar bastante no posicionamento dos sensores.



f) Técnica de leitura dos sensores

Como é necessária a amostragem dos sensores durante todo o funcionamento do micromouse, tanto na fase de busca como na fase de corrida rápida, não é aconselhável que os LEDs fiquem ativos o tempo todo. Uma metodologia utilizada pela maioria dos projetistas de micromouse é o acionamento dos LEDs em rajadas curtas (pulsos), permitindo reduzir consideravelmente o consumo de energia. E como a corrente do LED será pulsada, é possível aciona-lo com uma corrente muito maior, o que melhora a relação sinal/ruído e diminui a influência da iluminação ambiente.

Um exemplo de código é mostrado a seguir, deve ser considerado que este código é apenas para demonstração da lógica de acionamento e as funções deverão ser adaptadas de acordo com o microcontrolador utilizado.

// Esta função deve ser chamada a cada 1ms void lerSensores(void) { // Leitura dos ruídos de fundo provenientes do ambiente frontal_esquerdo = lerADC(FE_RECEPTOR); lateral_esquerdo = lerADC(LE_RECEPTOR); lateral_direito = lerADC(LD_RECEPTOR); frontal_direito = lerADC(FD_RECEPTOR); // Registra o tempo atual int t0 = lerMicros(); // Leitura do sensor frontal esquerdo ligar(FE_EMISSOR); while((lerMicros() - t0) < 60); frontal_esquerdo = lerADC(FE_RECEPTOR) - frontal_esquerdo; desligar(FE_EMISSOR); if(frontal_esquerdo < 0) frontal_esquerdo = 0; while((lerMicros() - t0) < 140); // Leitura do sensor frontal direito ligar(FD_EMISSOR); while((lerMicros() - t0) < 200); frontal_direito = lerADC(FD_RECEPTOR) - frontal_direito; desligar(FD_EMISSOR); if(frontal_direito < 0) frontal_direito = 0; while((lerMicros() - t0) < 280); // Leitura dos sensores laterais ligar(LE_EMISSOR); ligar(LD_EMISSOR); while((lerMicros() - t0) < 340); lateral_esquerdo = lerADC(LE_RECEPTOR) - lateral_esquerdo; lateral_direito = lerADC(LD_RECEPTOR) - lateral_direito; desligar(LE_EMISSOR); desligar(LD_EMISSOR); if(lateral_esquerdo < 0) lateral_esquerdo = 0; if(lateral_direito < 0) lateral_direito = 0; // TEMPO TOTAL: 340us }

Posts Destacados 
Posts Recentes 
Procure por Tags
Nenhum tag.
bottom of page