Projetos de circuito eletrônicoProjetos de engenharia do ArduinoFaça este robô seguidor de linha para o projeto Science Fair

Faça este robô seguidor de linha para o projeto Science Fair

Relacionados

Neste post, aprendemos a construir um circuito de robô seguidor de linha usando o Arduino, que será executado em um layout de linha especificamente desenhado 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 controlado manualmente por um ser humano em tempo real.

Os seguidores de linha (LFRs) também são carros robóticos 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 autônomos modernos.

Como todo robô autônomo, os seguidores de linha possuem uma unidade de processamento de sinal e tomada de decisão, sensores e atuadores. Se você é iniciante em robótica e quer levar a sério, é aqui que você deve começar. Vamos começar a fazer.

Eu 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 (bo) e pneus compatíveis

Castor bola

Dois sensores infravermelhos

Módulo de acionamento do motor

Fonte de energia

Software Arduino IDE

Agora, vamos dar uma olhada em nossos componentes:

ARDUINO UNO: Imagine isso como a sala de controle do nosso robô. Agora, existem muitas placas de desenvolvimento que foram consideradas para este projeto, mas o Arduino UNO simplesmente não foi 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 teriam acertado entre os olhos. Os argumentos mais contundentes que levaram à escolha do Arduino UNO foram formados pela combinação de características, preço, tamanho e exigência para o projeto.

Alguns motivos relevantes foram:

TAMANHO : É bem pequeno comparado às 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. Confie em mim, você odiaria andar por aí com aquele bot grande e feio, mudando de local o dia todo.

Menor o tamanho, mais rápido o robô e mais eficientes as curvas.

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 no lugar e seu projeto funciona perfeitamente, você pode substituí-lo por algo menor e mais barato, como Arduino Nano e Attiny85 ic.

Para aqueles que fazem seguidor de linha para projetos universitários, sugiro substituir UNO por Nano no final.

CHASSIS: É a estrutura 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 se você comprar um no mercado. Mas se você está se preparando para a competição, sugiro fortemente que você personalize o seu, tendo em mente as dimensões e os requisitos da competição.

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

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

MOTORES: Use motores CC leves operados por bateria (BO).

IMG 624641B73F192

ESFERA DE RODÍZIO: As rodas normais fornecem movimento de translação ao longo de um único eixo, mas uma esfera de rodízio é projetada para se mover ao longo de qualquer direção na superfície. Dá-nos 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 giro comparativamente mais rápida. Você deve ter notado os riquixás de bicicleta atravessando o tráfego como répteis. O mesmo é o caso do nosso robô.

IMG 624641B796686

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 altamente 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 o(s) led(s) fique(m) voltado(s) para o solo.

Deve ser colocado no front-end do seu bot.

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

PLACA DE MOTORIZAÇÃO : Motor-drivers são circuitos de buffer que recebem sinais de baixa tensão para alimentar os motores que requerem tensão mais alta.

No nosso caso, o Arduino pode fornecer tensão suficiente para acionar os motores, mas não pode fornecer corrente suficiente. Os pinos de 5v e GND do Arduino UNO têm classificação de corrente de 200mA, enquanto qualquer pino GPIO tem classificação de 40mA. Isso é muito menor do que os motores de partida e correntes de estol 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.

No entanto, o L293D é comparativamente mais barato, mas tem uma classificação de corrente baixa. Suas conexões são quase as mesmas. Desde que dei as conexões para ambos, depende totalmente de você como você cria seu bot.

IMG 624641B7BDBA1
IMG 624641B7EC2D4

FONTE DE ENERGIA:

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

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

Sensores na cabeça do seu bot.

Rodízio no meio.

Motores e pneus em uma linha na parte de trás.

Conexões:

SENSORES para ARDUINO:

Conecte o pino do sensor ao pino do arduino como mostrado,

IMG 624641B82C7C1
IMG 624641B86303A
Pino do sensor pino do Arduino
VCC(5v) 5V
GND(G) GND
SENSOR ESQUERDO PARA FORA (DO) pino 6
SENSOR DIREITO OUT (DO) pino 7

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

MOTOR PARA MOTORIZADOR:

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

IMG 624641B894CE1
IMG 624641B8C2507
MOTOR L298N L293D
MOTOR ESQUERDO PIN 1 E 2 PIN 7 E 8
MOTOR DIREITO PIN 13 E 14 PIN 9 E 10

MOTOR DRIVER para ARDUINO UNO:

IMG 624641B8F103B
IMG 624641B894CE1
MOTORISTA (L298N) ARDUINO UNO
PIN 4 VIN
PIN 5 GND
PIN 6 5V
PIN 8 e PIN 9 PIN 3 e PIN 9
PIN 10 e PIN 11 PIN 5 e PIN 10
PIN 7 e PIN 12 5V
IMG 624641B8C2507
MOTORISTA (L293D) ARDUINO UNO
PIN 3 VIN
PIN 2 GND
PIN 1 5V
PIN 5 E PIN 6 PIN 3 e PIN 9
PIN 11 E PIN 12 PIN 5 e PIN 10
PIN 4 E PIN 5 5V

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, motor de controle 12 e 11 conectado aos pinos 9 e 10.

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

Como funciona um sensor infravermelho:

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

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

Isso gera um sinal digital que pode ser alimentado a 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 DO SEGUIDOR DE LINHA

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 está programado para girar os dois motores de modo que o bot se mova na direção para frente.

Muito naturalmente, à medida que o tempo passa, um dos dois sensores passa pela linha preta.

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

Da mesma forma, quando o sensor direito passa pela linha preta, os motores direitos são parados e, consequentemente, o bot agora vira para a direita, a menos que o sensor volte sobre a superfície branca. Este mecanismo de giro é conhecido como mecanismo de acionamento diferencial.

DIAGRAMA DE CIRCUITO:

IMG 624641B95221C

DETALHES DA FIAÇÃO:

IMG 624641B989943

PROGRAMAÇÃO E CONCEITOS:

Terminada a parte do circuito, vamos agora passar para a parte da programação. Nesta seção, vamos entender o programa que controla nosso robô. Segue 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("\t");
Serial.print(left);
Serial.print("rightsensor");
Serial.print("\t");
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(): Pega 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 para frente.

turn_left(): Motor esquerdo para. Bot vira à esquerda.

turn_right(): Motor direito para. Bot vira à direita.

halt():Bot pára.

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

LEITURAS DO SENSOR:

SENSOR SOBRE LINHA LEITURAS DO SENSOR
DEIXOU CERTO
SENSOR ESQUERDO 0 1
SENSOR DIREITO 1 0
NENHUM 1 1
AMBAS 0 0

CONTROLE DE VELOCIDADE:

Às vezes a velocidade dos motores é tão alta que antes do arduino interpretar 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 existe uma variável chamada value.

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

analogWrite(pino, valor)

0 < = valor <= 255

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

Hashtags: #Faça #este #robô #seguidor #linha #para #projeto #Science #Fair
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados