Componente · Sensor
Matriz de sensores IR
Uma matriz de sensores de refletância infravermelha permite que um robô seguidor de linha veja a linha. Veja como funciona, como calibrar e onde falha.
O que é
Uma matriz de sensores de refletância infravermelha é uma fileira de pequenos sensores montados em linha e voltados para o piso. Cada sensor combina um LED infravermelho que projeta luz para baixo com um fototransistor que mede quanto dessa luz retorna. Aponte-a para uma linha escura sobre um piso claro e a linha refletirá menos—portanto, o sensor sobre a linha produz uma leitura diferente dos que estão sobre o piso. Ao ler a matriz inteira, você descobre não apenas se está sobre a linha, mas onde a linha está sob o robô.
É o olho de quase todo robô seguidor de linha e o motivo pelo qual o seguidor de linha é um ótimo primeiro projeto: a detecção é barata, intuitiva e imediatamente visível.
Como funciona
Cada canal é um par emissor-detector. O LED infravermelho emite luz invisível de ~940 nm; o fototransistor conduz mais à medida que mais luz retorna. Uma superfície branca ou clara reflete muita luz (retorno alto); uma linha preta absorve infravermelho (retorno baixo). Existem dois estilos de saída:
- Analógica — cada canal informa um valor contínuo proporcional à refletância. É mais informativo: você pode calcular onde a linha fica entre dois sensores e obter um sinal de erro suave para um controlador PID.
- Digital — um comparador integrado informa apenas linha/sem linha por canal. É mais fácil de ler, mas menos preciso.
Para transformar a matriz em um sinal de direção, calcule uma média ponderada dos sensores que detectam a linha. Se a linha se deslocar para sob os sensores da esquerda, a média muda para a esquerda e esse desvio se torna o erro corrigido pela sua malha de controle.
Quando usar
Use uma matriz de refletância sempre que um robô precisar acompanhar um caminho de alto contraste—uma linha preta sobre branco ou fita branca sobre um piso escuro. Mais canais oferecem resolução de posição mais fina e permitem que o robô trate curvas e lacunas com mais facilidade; cinco bastam para aprender, enquanto oito são confortáveis para trajetórias mais rápidas ou sinuosas.
Não é a ferramenta certa para detectar objetos, medir distância ou detectar algo fora do plano do solo—essa é a função de um sensor ultrassônico ou de tempo de voo.
Calibração e armadilhas
- Calibre sempre. Luz ambiente, superfície e altura de montagem alteram as leituras. Antes de uma execução, passe a matriz sobre a linha e o piso, registre os valores mínimo e máximo de cada canal e normalize as leituras entre eles. Não fazer isso é o principal motivo para um seguidor de linha funcionar em uma mesa e falhar em outra.
- A altura importa. Sensores de refletância têm uma faixa ideal estreita (alguns milímetros). Se a matriz ficar alta demais, o contraste cai.
- Infravermelho ambiente é ruído. A luz do sol e algumas iluminações saturam os detectores com infravermelho. Proteja os sensores ou use o robô em ambientes internos para obter comportamento consistente e filtre o sinal—veja como reduzir o ruído dos sensores.
- O acabamento da superfície engana. Preto brilhante pode refletir como branco no ângulo errado; fita fosca sobre piso fosco é a combinação confiável.
Conexão com um Arduino
Uma matriz analógica precisa de um pino ADC por canal. Por isso, uma matriz de 8 canais e um Uno (com seis pinos analógicos) formam uma combinação inadequada — os oito pinos de um Nano (A0–A7) encaixam exatamente.
| Pino da matriz | Arduino | Observação |
|---|---|---|
VCC |
5 V | Os emissores, não os detectores, consomem corrente |
GND |
GND | |
OUT1–OUT8 |
A0–A7 | Canais analógicos, um por sensor |
LEDON / CTRL |
Qualquer pino digital | Opcional: liga e desliga os emissores |
Vale conectar esse pino LEDON, embora a maioria dos projetos o ignore. Os emissores de uma
matriz de 8 canais podem consumir 100–200 mA juntos, continuamente, o que consome uma parcela
significativa do orçamento de uma bateria pequena — e permite fazer a subtração da luz ambiente,
como veremos.
Calibração: o código que decide se ela funciona
Isso não é opcional nem um refinamento. Uma matriz sem calibração é o motivo mais comum para um seguidor de linha funcionar na mesa da cozinha e falhar em uma competição.
const int N = 8;
const int PIN[N] = {A0, A1, A2, A3, A4, A5, A6, A7};
int lo[N], hi[N];
void calibrate() {
for (int i = 0; i < N; i++) { lo[i] = 1023; hi[i] = 0; }
// Sweep the array across the line and the floor for ~3 seconds.
unsigned long start = millis();
while (millis() - start < 3000) {
for (int i = 0; i < N; i++) {
int v = analogRead(PIN[i]);
if (v < lo[i]) lo[i] = v;
if (v > hi[i]) hi[i] = v;
}
}
}
// 0 = floor, 1000 = line, per channel, normalised against this run's own extremes.
int normalised(int i) {
int span = hi[i] - lo[i];
if (span < 50) return 0; // this channel never saw contrast
return constrain(map(analogRead(PIN[i]), lo[i], hi[i], 0, 1000), 0, 1000);
}
Observe a proteção span < 50. Um canal que não tenha visto contraste durante a calibração —
porque a passagem não o encontrou ou porque o emissor está queimado — produziria, sem essa proteção,
valores normalizados enormes a partir de um ruído minuscule, e o robô faria um desvio brusco na
direção de um sensor que não está dizendo nada.
De oito leituras a um único valor de direção
A média ponderada é toda a técnica, e produz uma posição contínua, em vez de um valor discreto do tipo “o sensor 3 a vê”:
// Returns position in the same units as the weights: 0..7000 for an 8-channel array,
// or -1 if the line is not visible at all.
long linePosition() {
long weighted = 0, total = 0;
for (int i = 0; i < N; i++) {
int v = normalised(i);
if (v > 100) { // ignore channels that are clearly on floor
weighted += (long)v * i * 1000;
total += v;
}
}
if (total == 0) return -1; // line lost
return weighted / total;
}
// Error for the control loop: 0 when centred.
long error() {
long pos = linePosition();
if (pos < 0) return LAST_ERROR; // hold the last known direction, do not zero it
return pos - 3500; // centre of an 8-channel array
}
Duas decisões de projeto importam mais que a aritmética:
Ignorar canais abaixo de um limite impede que o ruído do piso puxe a média. Sem isso, oito canais que registram pequenos valores diferentes de zero puxam a estimativa para o meio, independentemente de onde a linha esteja.
Retornar o último erro quando a linha é perdida — em vez de zero — é o que permite que um robô se recupere de uma curva fechada. Zero significa “perfeitamente centralizado”, portanto um robô que zera a leitura ao perder a linha segue em frente à velocidade máxima, afastando-se da linha que acabou de perder. Manter o último erro faz o robô continuar na direção em que já estava virando, que é a direção para onde a linha foi.
Altura de montagem e por que ela decide tudo
Sensores de refletância têm uma faixa ideal estreita. O sinal cai rapidamente nas duas direções: muito alto, o retorno é fraco; muito baixo, o cone do emissor ainda não se espalhou o suficiente para iluminar o que o detector vê.
| Altura sobre o solo | Comportamento típico |
|---|---|
| 1–3 mm | Melhor contraste, mas raspa em qualquer irregularidade da superfície |
| 3–8 mm | A faixa utilizável — a maioria das matrizes indica cerca de 3 mm |
| 8–15 mm | Contraste diminuindo; a faixa de calibração diminui |
| > 15 mm | Praticamente cega na maioria das superfícies |
Há duas consequências práticas. Monte-a rigidamente — uma matriz em um suporte flexível muda de altura quando o robô acelera, o que altera as leituras, e a malha de controle interpreta isso como movimento da linha. E monte-a nivelada, porque uma matriz inclinada dá a cada canal uma altura efetiva diferente e, portanto, uma calibração diferente. Isso aparece como um robô que acompanha bem em uma direção e mal na outra.
Montá-la à frente das rodas também importa: quanto mais à frente, mais cedo o robô vê uma curva e mais tempo de reação o controlador tem. Se ficar longe demais à frente, a geometria amplifica o erro e provoca oscilação.
Como vencer a luz ambiente
A luz do sol contém muito infravermelho de 940 nm, e ele chega ao detector com aparência idêntica à de uma reflexão. Um robô que funciona em ambientes internos e falha perto de uma janela quase sempre está vendo esse problema.
Se os emissores da matriz puderem ser desligados, a solução é completa e custa apenas duas leituras:
int ambientSubtracted(int i) {
digitalWrite(LEDON, LOW); delayMicroseconds(200);
int dark = analogRead(PIN[i]); // ambient only
digitalWrite(LEDON, HIGH); delayMicroseconds(200);
int lit = analogRead(PIN[i]); // ambient + our own emitter
return lit - dark; // just our emitter
}
Tudo o que for constante no ambiente é cancelado exatamente. O tempo de amostragem dobra, o que representa um custo real em um robô seguidor de linha rápido — mas transforma um sensor não confiável em um sensor confiável. É a técnica usada por matrizes comerciais.
Se isso não for possível: proteja a matriz com uma saia para que ela veja somente o piso diretamente abaixo.
Solução de problemas
| Sintoma | Causa provável | Solução |
|---|---|---|
| Funciona em uma superfície, mas não em outra | Sem calibração ou calibração desatualizada | Recalibre no início de cada execução, na superfície real |
| O robô curva para um lado | A faixa de calibração de um canal está errada | Verifique o hi/lo de todos os canais; um emissor queimado produz uma faixa minúscula |
| Perde a linha em curvas fechadas | Matriz muito perto das rodas ou zerando a leitura ao perdê-la | Mova-a para a frente; mantenha o último erro em vez de zerar |
| Oscila em trechos retos | Matriz longe demais à frente ou ganho alto demais | Reduza o avanço; reajuste o controlador |
| Falha perto de uma janela | Infravermelho ambiente | Faça a subtração com o emissor desligado ou proteja a matriz |
| Comportamento irregular em fita preta brilhante | Reflexão especular na fita | Fita fosca sobre piso fosco é a combinação confiável |
| As leituras derivam durante a execução | Queda de tensão da bateria, que enfraquece os emissores | Emissores consumem bastante corrente; verifique a trilha sob carga |
| Todos os canais leem o mesmo valor | Matriz alta demais | Leve-a para 3–8 mm e recalibre |
Escolhendo uma matriz
| Canais | Resolução de posição | Boa para |
|---|---|---|
| 3 | Grossa — essencialmente esquerda/centro/direita | Apenas aprender o conceito |
| 5 | Adequada | Um primeiro robô seguidor de linha em uma trajetória suave |
| 8 | Confortável | Trajetórias rápidas, curvas fechadas e detecção de cruzamentos em labirintos de linha |
| 12–16 | Fina | Robôs de competição em alta velocidade |
A saída analógica é superior à digital em qualquer sistema que use uma malha de controle. O comparador de uma matriz digital fornece apenas linha/sem linha por canal, quantizando a posição em poucos valores discretos e tornando impossível a direção proporcional suave. A saída analógica fornece um sinal de erro contínuo, que é o que um controlador PID precisa.
O espaçamento entre canais importa tanto quanto a quantidade: a matriz deve ser mais larga que a linha o suficiente para que pelo menos um sensor esteja sempre sobre o piso em cada borda, mas não tão larga que a linha possa ficar invisível entre dois sensores. Para fita elétrica padrão de 19 mm, um espaçamento de 8 mm funciona bem.
Para um solucionador de labirinto de linhas, há uma exigência adicional: a matriz deve ser larga o suficiente para ver um cruzamento. O robô detecta uma curva à esquerda quando percebe que os sensores mais externos da esquerda ficaram escuros enquanto o centro ainda está sobre a linha — algo impossível se a matriz for apenas um pouco mais larga que a fita.
Explore o grafo
Usado nestas montagens
Projetos, caminhos de aprendizagem e simuladores que incluem Matriz de sensores IR.
- ProjetoConstrua um robô de cobertura que percorre todo o ambiente
- ProjetoConstrua um robô mini sumo: preensão, cunha e detecção de borda
- ProjetoConstrua um robô seguidor de linha com um microcontrolador 8051
- ProjetoConstrua um robô seguidor de linha: do simulador à pista real
- ProjetoSolucionador de labirintos de linhas com memória de rota LSRB
Perguntas
Perguntas frequentes sobre Matriz de sensores IR
O que é um sensor para robô seguidor de linha?
Um sensor para robô seguidor de linha é um sensor infravermelho de refletância que o robô aponta para o piso a fim de detectar uma linha marcada. Cada canal projeta luz infravermelha para baixo e mede quanto retorna; por isso, uma linha escura, que reflete menos, produz uma leitura diferente da do piso ao redor.
Como funciona um sensor para robô seguidor de linha?
Cada canal combina um LED infravermelho com um fototransistor. Superfícies claras refletem muita luz e linhas escuras absorvem infravermelho, portanto o sensor sobre a linha lê um valor baixo enquanto os demais leem valores altos. Ler a matriz inteira informa ao robô onde a linha está sob ele.
Como calibrar um sensor IR para um robô seguidor de linha?
Antes de uma execução, passe a matriz sobre a linha e sobre o piso sem marcação, registre a leitura mínima e máxima de cada canal e normalize as leituras em tempo real entre esses limites. Não calibrar é o principal motivo para um robô seguidor de linha funcionar em uma superfície e falhar em outra.
O que é PID em um seguidor de linha?
PID é o método de controle que transforma o erro de posição do sensor em direção suave. O termo proporcional reage a quanto o robô está fora da linha, o termo derivativo amortece a ultrapassagem e o termo integral elimina desvios persistentes—fazendo o robô acompanhar a linha sem oscilar. Você pode ajustá-lo em tempo real em nosso simulador de PID.
Quais são os principais componentes de um robô seguidor de linha?
Um robô seguidor de linha básico precisa de quatro coisas: uma matriz de sensores de refletância infravermelha para ver a linha, um microcontrolador como o Arduino Uno para executar a malha de controle, um driver de motor como o L298N e dois motores CC com rodas. Uma bateria e um chassi completam o projeto.
Para que serve uma matriz de sensores para robô seguidor de linha?
Além de robôs seguidores de linha, matrizes de refletância são usadas para detectar bordas (parar na borda de uma mesa), medir posição de forma semelhante a um encoder e detectar superfícies ou contrastes simples em automação. Em qualquer lugar onde um robô deva reagir a uma marca de alto contraste sobre uma superfície, uma matriz de refletância é uma opção barata e confiável."
Leitura complementar