Faça este robô seguidor de linha para o projeto da feira de ciências

Experimente Nosso Instrumento Para Eliminar Problemas





Neste post, aprendemos como construir um circuito de robô seguidor de linha usando o Arduino, que será executado em um layout de linha desenhado especificamente e o seguirá fielmente enquanto estiver disponível e rastreável por seus sensores.

Por navneet sajwan



O que é um robô seguidor de linha

Um robô autônomo é uma máquina que pode realizar uma série de ações conforme instruído pelo programador, sem ser manualmente controlado por um ser humano em tempo real.

Seguidores de linha (LFRs) também são carros-robôs autônomos que são guiados por um ou mais sensores e um caminho de linha preta ou branca. Eles formam a base dos carros modernos de direção automática



Como todo robô autônomo, os seguidores de linha têm uma unidade de processamento de sinal e de tomada de decisão, sensores e atuadores. Se você é um iniciante em robótica e deseja levá-la a sério, é aqui que você deve começar. Vamos começar a fazer isso.

Usei dois sensores infravermelhos e tração nas três rodas para fazer este projeto. O número mínimo de sensores que podem ser usados ​​é um e no máximo oito são suficientes para o seguimento de linha baseado em PID.

Componentes necessários:

Arduino uno

Chassis

Dois motores operados por bateria (b.o.) E pneus compatíveis

Bola de rícino

Dois sensores infravermelhos

Módulo de driver de motor

Fonte de energia

Software Arduino IDE

Agora, vamos dar uma olhada em nossos componentes:

ARDUINO ONE : Imagine-a como a sala de controle do nosso robô. Agora, há muitas placas de desenvolvimento que foram consideradas para este projeto, mas o Arduino UNO simplesmente não era páreo para os outros. Não é que nosso protagonista fosse superior em termos de suas características multidimensionais.

Se fosse esse o caso, Raspberry Pi e Intel Edison o teriam acertado entre os olhos. Os argumentos mais convincentes que levaram à escolha do Arduino UNO foram formados pela combinação de recursos, preço, tamanho e requisitos para o projeto.

Alguns motivos relevantes foram:

TAMANHO : É bem pequeno em comparação com placas de desenvolvimento baseadas em Atmega16 ou Atmega8, consome um pouco de espaço no chassi, então você obtém um bot compacto e prático.

Isso realmente importa em competições de robótica. Acredite em mim, você odiaria andar por aí com aquele robô grande e feio, mudando de local o dia todo.

Quanto menor o tamanho, mais rápido o robô e mais eficiente as voltas.

MELHOR PLACA DE PROTOTIPAGEM : Sem dúvida, o Arduino UNO tem a melhor combinação de recursos para prototipagem . Uma vez que seus circuitos estão instalados e seu projeto funciona perfeitamente, você pode substituí-lo por algo menor e mais barato como Arduino Nano e Attiny85 ic.

Para aqueles, fazendo seguidor de linha para projetos de faculdade, sugiro substituir UNO por Nano no final.

CHASSIS : É a moldura que mantém todos os componentes em posição. Existem alguns pontos a serem considerados ao comprar um novo chassi,

Deve ser leve e forte.

Para projetos, é melhor comprar um no mercado. Mas se você está se preparando para a competição, eu sugiro fortemente que você personalize o seu próprio, tendo em mente as dimensões e os requisitos da competição.

Escolha um chassi de plástico ou madeira. Quando estruturas metálicas entram em contato com o Arduino, vários pinos entram em curto. Este é um grande fator para se focar enquanto olhamos para o chassi.

Mantenha seu chassi o mais baixo possível - isso dá estabilidade ao bot.

MOTORES : Use bateria leve operada (B.O.) d.c. motores.

BOLA DE RODÍZIO : As rodas normais fornecem movimento de translação ao longo de um único eixo, mas uma bola de rodízio é projetada para se mover ao longo de qualquer direção na superfície. Isso nos dá tração nas três rodas.

A razão para preferir a tração nas três rodas em vez das 4 rodas é por causa de sua ação de viragem comparativamente mais rápida. Você deve ter notado os riquixás de bicicleta perfurando o tráfego como répteis. Mesmo é o caso do nosso robô.

SENSORES : É um dispositivo que detecta ou mede qualquer parâmetro físico do nosso ambiente e o converte em sinais elétricos. Neste caso, o parâmetro detectado são os raios infravermelhos.

Os sensores são fundamentais para qualquer robô. Bem, se o Arduino é o cérebro do nosso bot, os sensores também podem desempenhar o papel dos olhos. Aqui estão algumas coisas sobre sensores:

Os sensores devem ser orientados de forma que os led (s) fiquem voltados para o solo.

Deve ser colocado na extremidade frontal do seu bot.

O espaçamento mínimo entre eles deve ser maior que a largura da linha preta.

PLACA DE CONDUÇÃO DO MOTOR : Drivers de motor são circuitos de buffer que pegam sinais de baixa tensão para ligar os motores que requerem tensão mais alta.

Em nosso caso, o Arduino pode fornecer tensão suficiente para acionar os motores, mas não pode fornecer corrente suficiente. Os pinos de 5 V e GND do Arduino UNO têm classificação atual de 200 mA, enquanto qualquer pino GPIO tem classificação de 40 mA. Isso é muito mais baixo do que os motores de corrente de partida e perda de que precisamos.

Existem dois drivers de motor que eu prefiro para este projeto: L298N e L293D. Ambos são igualmente adequados para fazer este projeto.

Apesar, L293D é comparativamente mais barato mas tem uma classificação atual baixa. Suas conexões são quase as mesmas. Desde então, eu dei as conexões para ambos, é totalmente com você como fazer seu bot.

FONTE DE ENERGIA :

Use um adaptador de 12 V ou bateria (não mais de 12 V).

Colocação de componentes (da frente para trás):

Sensores na cabeça do seu bot.

Roda giratória no meio.

Motores e pneus em uma linha na parte traseira.

Conexões:

SENSORES para ARDUINO :

Conecte o pino do sensor ao pino do Arduino, conforme mostrado,

Pino do sensorPin Arduino
VCC (5v)5V
GND (G)GND
SENSOR ESQUERDO PARA FORA (DO)pino 6
SENSOR DIREITO PARA FORA (DO)pino 7

Observação: para verificar se os sensores estão ligados, aponte a câmera do celular para o led do transmissor IV. Você verá um led brilhando na tela, que não pode ser visto a olho nu. Algumas câmeras de telefones celulares modernos possuem filtro infravermelho. Então, por favor, leve isso em consideração.

MOTOR para DRIVER DO MOTOR:

Cada motor possui dois terminais que precisam ser conectados ao driver do motor. Nunca tente conectá-los diretamente ao Arduino. Olhando da parte de trás do seu bot, com os motores próximos a você e os sensores distantes, conecte-os da seguinte maneira:

MOTORL298NL293D
MOTOR ESQUERDOPIN 1 E 2PINOS 7 E 8
MOTOR DIREITOPINOS 13 E 14PINOS 9 E 10

MOTOR DE MOTOR para ARDUINO UNO:

CONDUTOR DE MOTOR (L298N)ARDUINO ONE
PIN 4VINHO
PIN 5GND
PIN 65V
PIN 8 e PIN 9PIN 3 e PIN 9
PIN 10 e PIN 11PIN 5 e PIN 10
PIN 7 e PIN 125V
CONDUTOR DE MOTOR (L293D)ARDUINO ONE
PIN 3VINHO
PIN 2GND
PIN 15V
PINO 5 E PINO 6PIN 3 e PIN 9
PINO 11 E PINO 12PIN 5 e PIN 10
PINO 4 E PINO 55V

NOTA: Os pinos 8 e 9 de l298n são usados ​​para controlar o motor conectado a 1 e 2. E, 10 e 11 controlam o motor conectado aos pinos 13 e 14. Da mesma forma, os pinos 5 e 6 de l293d são usados ​​para controlar o motor conectado a 7 e 8. E, 12 e 11 controlam o motor conectado aos pinos 9 e 10.

Aqui estamos nós, até o fim da parte do design. Ainda temos a codificação a fazer, mas antes disso vamos passar pelos princípios que permitem o seguimento de linha.

Como funciona um sensor infravermelho:

Sensores infravermelhos (sensores infravermelhos) podem ser usados ​​para detectar o contraste nas cores e a proximidade dos objetos. O princípio que está por trás do funcionamento do sensor IR é bastante básico.

Como podemos ver, possui dois leds - led emissor de IV e um fotodiodo. Eles atuam como um par transmissor-receptor. Quando um obstáculo surge na frente dos raios emissores, eles são refletidos de volta e interceptados pelo receptor.

Isso gera um sinal digital que pode ser alimentado para microcontroladores e atuadores para tomar as medidas necessárias ao encontrar obstáculos.

A física básica nos diz que um corpo negro absorve toda a radiação eletromagnética incidente sobre ele, enquanto um corpo branco a reflete. Este princípio é explorado por um seguidor de linha para diferenciar entre a superfície branca e preta.

Como funciona um robô seguidor de linha:

LAYOUT DE LINHA SEGUIDOR

Em condições normais, o robô se move de forma que ambos os sensores fiquem sobre o branco e a linha preta entre os dois sensores.

Ele é programado para girar ambos os motores de forma que o robô se mova na direção para frente.

Muito naturalmente, conforme o tempo passa, um dos dois sensores ultrapassa a linha preta.

Se o sensor esquerdo ultrapassar a linha, os motores esquerdos são colocados em repouso e, como resultado, o robô começa a girar para a esquerda, a menos que o sensor esquerdo volte na superfície branca e a condição normal seja alcançada.

Da mesma forma, quando o sensor direito passa pela linha preta, os motores certos são parados e, conseqüentemente, o bot agora gira para a direita, a menos que o sensor volte sobre a superfície branca. Este mecanismo de rotação é conhecido como mecanismo de acionamento diferencial.

DIAGRAMA DE CIRCUITO:

DETALHES DA FIAÇÃO:

PROGRAMAÇÃO E CONCEITOS:

Terminada a parte do circuito, passaremos agora à parte da programação. Nesta seção, entenderemos o programa que controla nosso robô. Aqui está o código: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Descrição das funções utilizadas:

read_sensors (): Faz as leituras de ambos os sensores e as armazena nas variáveis ​​esquerda e direita.

move_forward (): Quando o arduino executa esta função, ambos os motores se movem na direção para frente.

turn_left (): O motor esquerdo para. Bot vira à esquerda.

turn_right (): O motor direito para. Bot vira à direita.

halt (): O bot para.

print_readings (): Exibe leituras dos sensores no monitor serial. Para isso, você deve descomentar “Serial.begin (9600)” na configuração de void.

LEITURAS DO SENSOR:

SENSOR OVER LINELEITURAS DO SENSOR
DEIXOUDIREITA
SENSOR ESQUERDO01
SENSOR DIREITO10
NENHUM11
AMBAS00

CONTROLE DE VELOCIDADE:

Às vezes, a velocidade dos motores é tão alta que antes que o Arduino interprete os sinais do sensor, o robô perde a linha. Resumindo, o bot não segue a linha devido à alta velocidade e continua perdendo a linha mesmo que o algoritmo esteja correto.

Para evitar tais circunstâncias, diminuímos a velocidade do bot usando a técnica PWM. No código acima, há uma variável chamada valor.

Basta diminuir o valor numérico da função para diminuir a velocidade. No Arduino UNO, você pode ter valores de pwm entre 0 e 255 apenas.

analogWrite (pino, valor)

0<= value <=255

Este é o fim do meu post sobre o seguidor online. Espero que seja detalhado o suficiente para responder a todas as suas dúvidas urgentes e se na mais rara realidade não for, então sempre temos a seção de comentários disponível para você. Comente suas dúvidas. Tenha um feliz conserto!




Anterior: Carro-robô controlado por telefone celular usando módulo DTMF Próximo: Chave liga / desliga principal AC controlada por senha