Sensor de Linha com Arduino
Acessado 53782 vezes.Como citar esse artigo: VERTULO, Rodrigo Cesar. Sensor de Linha com Arduino. Disponível em: <http://labdeeletronica.com.br/sensor-de-linha-arduino/>. Acessado em: 11/09/2024.
A utilização de robôs para a exploração de locais inseguros para seres humanos vem sendo cada vez mais frequente. Estes equipamentos são criados para se comportarem de forma autônoma e responderem de acordo com o ambiente em que se localizam sem qualquer intervenção de um operador humano. A tecnologia utilizada nestes robôs é, geralmente, bastante complexa e de difícil compreensão para pessoas leigas. Para que seja possível construir estas máquinas é preciso conhecer diversos blocos funcionais que se comunicam a fim de fazer o robô realizar uma determinada tarefa. Os sensores de presença fazem parte de um desses blocos e podem ser utilizados para que os robôs desviem de obstáculos ou persigam determinados padrões encontrados nos terrenos a serem explorados.
Os sensores seguidores de linha são um tipo de sensor de presença e podem ser utilizados para a construção de carrinhos seguidores de linha (robôs seguidores de linha). Normalmente utilizados em competições de robôs seguidores de linha criadas por estudantes de engenharia, sua função é fazer com que o robô seja capaz de identificar uma linha desenhada no chão (normalmente uma linha preta sobre um piso branco), seguindo-a até completar um circuito previamente desenhado. O mesmo princípio de funcionamento poderia ser utilizado em robôs de inspeção que precisam se deslocar de forma autônoma em terrenos que possuem padrões em seu piso. Neste caso, bastaria programar o robô para que o padrão existente fosse reconhecido a partir dos sinais entregues pelo sensor seguidor de linha.
Existem muitas formas de se criar sensores desse tipo e neste artigo abordaremos uma delas que é utilizando um fototransistor e deds infra Vermelhos para a construção de um sensor infrared (sensor infravermelho). Um fototransistor funciona de forma semelhante a um transistor bipolar (falamos sobre transistores bipolares neste link), contudo, ao invés de sua base ser formada por um terminal tradicional ela possui um material foto sensível. De acordo com a intensidade da luz que incide na base, surge uma corrente entre seu coletor e emissor. Neste artigo utilizaremos um tipo de fototransistor que é sensível à luz infra vermelha para construir um sensor infrared e para que ele funcione é necessário que tenhamos uma fonte deste tipo de luz. É por este motivo que também utilizaremos um led infra vermelho. Seu funcionamento é praticamente idêntico ao dos leds tradicionais sendo que sua única diferença é o fato de emitirem luz no spectro infra vermelho (IR), ou seja, não visível a não ser que utilizemos algum tipo de equipamento para isso. A figura a seguir apresenta o aspecto físico do fototransistor TIL78 e de um led IR, iguais aos que utilizaremos no projeto do sensor infrared.
Figura 1 – Aspecto físico e símbolo do fototransistor e Led Infra Vermelho.
Para que possamos utilizar estes componentes como sensores de linha, nos aproveitaremos do fato de que a Luz Infra Vermelha é refletida quando atinge uma superfície. A intensidade de luz refletida depende do material que a mesma atinge. De modo geral, quanto mais lisa for a superfície, maior será a reflexão. Outro fator que pode influenciar na reflexão é a cor da superfície, sendo que superfícies lisas e de cor clara possuem melhor índice de reflexão. Como não é nosso objetivo nos aprofundarmos na teoria física da reflexão, este artigo poderá ser utilizado pelos mais curiosos para um maior aprofundamento no assunto.
As características construtivas do sensor que criaremos é mostrada na imagem abaixo.
Figura 2 – Características construtivas do sensor de linha.
Na Figura 2 podemos notar que a Luz Infra Vermelha emitida pelo Led reflete na superfície, assim uma parte do feixe luminoso incide no Fototransistor, acionando sua base e gerando uma corrente entre seu coletor e emissor. Ajustando-se o ângulo de incidência da Luz IR na superfície, podemos aumentar ou diminuir a quantidade de luz que atinge o Fototransistor. A razão pela qual estamos utilizando Luz IR é que desejamos minimizar a influência que a luminosidade do ambiente terá sobre o sensor.
Conforme estudado na série de artigos sobre transistores, mais especificamente quando falamos sobre a utilização dos transistores como chave, quando o mesmo encontra-se em corte a tensão existente em seu coletor é a mesma da fonte de alimentação. Portanto, se o transistor estiver sendo alimentado com 5V será esta a tensão que encontraremos em seu coletor quando o mesmo estiver em corte. Por outro lado, quando o transistor esta em condução, a tensão em seu coletor é de “zero volt”. Utilizaremos esta característica no sensor de linha, de modo que no momento que a Luz IR atingir o Fototransistor e o mesmo entrar em condução, teremos “zero volt” em seu coletor. Quando a incidência de Luz IR cessar-se, teremos a tensão de alimentação no coletor. Utilizando essa configuração e considerando que desejamos identificar uma linha na cor preta e com baixo índice de reflexão sobre uma superfície clara (próxima da cor branca) e lisa, poderemos ligá-lo ao Arduino para fazer a identificação da linha.
Do lado do Arduino faremos uso de seu conversor analógico digital, onde será injetada a tensão proveniente do coletor do Fototransistor e será criado um programa (sketch) para identificar quando há tensão no conversor analógico digital (portanto o sensor estará identificando a linha – transistor em corte) ou quando o nível de tensão for correspondente ao sensor fora da linha (transistor conduzindo).
Agora que já vimos a teoria relacionada a esse projeto, vamos à sua concretização.
OBJETIVO: Desenvolver um circuito sensor de linha conectado ao Arduino que seja capaz de identificar uma linha preta, de largura maior ou igual a 2cm, sobre um fundo branco liso.
MATERIAIS: Para a realização deste projeto serão utilizados os seguintes materiais:
- 1 Arduino Uno
- 1 Protoboard
- 1 Fototransistor TIL78
- 1 Led IR
- 1 Resistor de 200 Ohms
- 1 Resistor de 5 kOhms
- 1 Folha de Sulfite Branca
- 1 Rolo de Fita Isolante
PROCEDIMENTOS: Montar o circuito conforme apresentado na Figura 3.
Figura 3 – Montagem em Protoboard do Sensor de Linha.
O resistor de 100 Ohms conectado em série com o Led IR foi utilizado para limitar sua corrente em 20mA. Da mesma forma, utilizou-se um resistor de 5 kOhm no coletor do Fototransistor para limitar a sua corrente em 0.1mA, consequentemente limitando sua potência em 50mW conforme sugere o Datasheet do componente. É importante frisar que o posicionamento do Fototransistor e do Led IR do protoboard deverá ser feito experimentalmente até que se atinja a posição ótima que faz com que a Luz IR emitida atinja o Fototransistor quando o fundo branco for identificado (em outras palavras, tentativa e erro). Para testar o circuito deverá ser fixada uma tira de fita isolante preta sobre uma folha de papel sulfite branca. Esta folha deverá ser “passada” por cima do sensor, para verificar se a linha (fita isolante preta) esta sendo corretamente identificada.
PSEUDO-CÓDIGO PARA ARDUINO:
definir pino A0 como pinoSensor valorSensor = obter valor de pinoSensor valorCorrigido = (valorSensor * 5) / 1024 se valorSensor > 0: imprimir "Linha Detectada!!!" aguardar 1 segundo |
SKETCH PARA ARDUINO:
int pinoSensor = A0; int valorSensor = 0; void setup(){ Serial.begin(9600); } void loop(){ valorSensor = analogRead(pinoSensor); int valorCorrigido = (valorSensor * 5) / 1024; if(valorCorrigido > 0) Serial.println("Linha Detectada!!!"); delay(1000); } |
Apesar do código ser bastante simples, vale a pena fazer algumas considerações. Primeiro, note que na rotina “setup” a porta serial foi inicializada para que posteriormente possamos imprimir a frase “Linha Detectada!!!” no monitor serial da interface de desenvolvimento do Arduino, permitindo o teste do circuito. É importante também observar que foi criada uma variável chamada “valorCorrigido”, para a qual foi atribuído o resultado de uma equação. Esta equação é simplesmente uma regra de três para transformar os valores lidos pela porta analógica do Arduino em valores de tensão entre 0 e 5V. A porta analógica do Arduino é de 16 Bits, resultando em 1024 valores diferentes para cada nível de tensão lido pela mesma. Deste modo, foi utilizada a regra de três para realizar a devida conversão. Logo em seguida verifica-se se o valor da variável “valorCorrigido” é maior do que zero. Quando nesta variável existir o valor zero, significa que o Fototransistor esta conduzindo, consequentemente a linha preta não foi identificada. No momento em que o valor da variável passa a ser diferente de zero, ou seja, quando existe uma tensão positiva no “pinoSensor” (pino A0), o Fototransistor entrou em corte indicando a identificação da linha preta; neste momento a frase “Linha Detectada!!!” é impressa no monitor serial. Portanto, para testar o circuito, assim que o sketch for gravado no Arduino é preciso abrir o monitor serial para verificar o andamento da execução do programa. A última instrução do programa é apenas um “delay” de um segundo para que seja possível ler as mensagens no monitor serial pausadamente.
Depois que o sketch for gravado no Arduino é necessário colar uma tira de fita isolante em uma folha de papel sulfite. Ao passar essa folha sobre o sensor, no momento que a fita preta estiver sobre o mesmo a frase “Linha Detectada!!!” será exibida. Pode ser que a sensibilidade do circuito fique muito baixa fazendo com que a frase seja impressa mesmo com a linha preta sobre o sensor. Se isso ocorrer pode ser que aumentando um pouco o valor da comparação utilizada no “if(valorCorrigido >0)” resolva o problema. Isso ocorreu em nossos testes e mudando o valor da comparação para 2 surtiu efeito. Outro ajuste que pode ser feito é reposicionando o Fototransistor e o Led IR até que seja encontrada a posição ideal.
Veja a seguir um vídeo mostrando o funcionamento do sensor de linha.
Se você gostou deste artigo e deseja que o Laboratório de Eletrônica continue existindo, por favor compartilhe este post clicando no botão “Compartilhar” abaixo. Obrigado e até a próxima.
Comentários
Joao marcos Veronenzai
Ola me tirem uma duvida, oque devo fazer si no caso a linha a ser seguida for branca ? Des di ja obrigado…
CLAIDSON
OLÁ, DESCULPA O ATRASO PARA RESPONDER!. É SO INVERTER O SINAL RECEBIDO!.
BeatrizBGomes
Estou tentando fazer esse circuito com IR LED SFH409 e com o fototransistor SFH309 FA4/5, mas não funciona! Estou usando resistor de 220 ohms para o LED e um de 10K para o fototransitor. Poderia me ajudar?
fjfhjfhj
pare de minerar no pc dos outros
rvertulo
Se você tivesse lido a mensagem existente na barra lateral à direita do site não teria colocado esse comentário.
Matheus
Boa noite, tem como fazer um sensor de linha para identificar linhas finas, como a escrita de um lápis?
rvertulo
Em princípio sim. 😉