Índice:

Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC: 6 etapas (com imagens)
Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC: 6 etapas (com imagens)

Vídeo: Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC: 6 etapas (com imagens)

Vídeo: Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC: 6 etapas (com imagens)
Vídeo: Sensor de obstáculo e sensor de linha no arduino - aplicação e programação 2024, Novembro
Anonim
Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC
Robô de seguimento de linha baseado em PID com matriz de sensor POLOLU QTR 8RC

Olá!

este é o meu primeiro artigo sobre instructables, e hoje vou levá-lo ao longo da estrada e explicar como construir uma linha baseada em PID seguindo o robô usando a matriz de sensores QTR-8RC.

Antes de prosseguir com a construção do robô, precisamos entender o que é chamado de PID,

Etapa 1: Princípio de funcionamento

O que é PID ??

O termo PID significa proporcional, integral, derivativo. Então, simplesmente, o que estamos fazendo com o envolvimento de PID com o seguimento de linha é, estamos dando um comando para o robô seguir a linha e detectar as curvas calculando o erro, considerando como agora saiu da linha.

termos-chave mencionados nos documentos polalu

O valor proporcional é aproximadamente proporcional à posição do seu robô em relação à linha. Ou seja, se o seu robô estiver precisamente centralizado na linha, esperamos um valor proporcional de exatamente 0

O valor integral registra o histórico do movimento do seu robô: é uma soma de todos os valores do termo proporcional que foram registrados desde que o robô começou a funcionar

A derivada é a taxa de variação do valor proporcional

Neste tutorial, falaremos apenas sobre os termos Kp e Kd, no entanto, os resultados podem ser obtidos usando o termo Ki também. As leituras que estamos obtendo do sensor não são apenas leituras analógicas, mas também leituras de posição do robô.so, basicamente, o sensor fornece valores de 0 a 2500 variando de refletância máxima a refletância mínima, mas, ao mesmo tempo, também fornece informações sobre a distância que o robô se afastou da linha.)

Agora precisamos considerar o termo de erro, esta é a diferença entre o valor do ponto de ajuste de dois valores e o valor atual. (O valor do ponto de ajuste é a leitura que corresponde à colocação "perfeita" dos sensores no topo das linhas. E A corrente valor são as leituras instantâneas do sensor. Por exemplo: Se você estiver usando este sensor de matriz e estiver usando 8 sensores, você receberá uma leitura posicional de 3500 se estiver no local, em torno de 0 se estiver muito à esquerda de a linha e cerca de 7000 se você estiver muito certo.). Nosso objetivo é fazer com que o erro seja zero. Só então o robô pode seguir a linha suavemente.

Em seguida, vem a parte do cálculo,.

1) calcule o erro.

Erro = Valor do ponto de ajuste - Valor atual = 3500 - posição

Como estou usando 8 sensores. o sensor fornece uma leitura posicional de 3500 quando o robô está perfeitamente posicionado. Agora que calculamos nosso erro, a margem pela qual nosso robô se desloca na pista, é hora de examinarmos o erro e ajustar as velocidades do motor de acordo

2) determinar as velocidades ajustadas dos motores.

MotorSpeed = Kp * Erro + Kd * (Erro - LastError);

LastError = Erro;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Logicamente falando, um erro de 0 significa que nosso robô está à esquerda, o que significa que nosso robô precisa ir um pouco para a direita, o que significa que o motor direito precisa desacelerar e o motor esquerdo precisa acelerar. ISTO É PID!

O valor MotorSpeed é determinado pela própria equação. RightBaseSpeed e LeftBaseSpeed são as velocidades (qualquer valor de PWM 0-255) nas quais o robô é executado quando o erro é zero.

O código que anexei também inclui como verificar os valores posicionais do sensor, para que você possa abrir o monitor serial e fazer o upload do código e ver por si mesmo com uma linha como os motores giram quando a posição varia.

Se você tiver problemas ao implementar seu robô, basta verificar se e ver alterando os sinais das equações !!!

E agora a parte mais complicada ENCONTRANDO Kp E Kd, tive que gastar mais de 1 hora para ajustar perfeitamente meu robô. Em vez de colocar valores aleatórios, encontrei um método mais fácil de determinar isso.

  1. Comece com kp e Kd igual a 0, e comece com Kp, primeiro tente definir Kp para 1 e observe o robô, nosso objetivo é seguir a linha mesmo que seja instável, se o robô ultrapassar e perder a linha reduza o valor de kp.se o robô não consegue navegar em uma curva e sendo lento, aumente o valor de Kp.
  2. Uma vez que o robô parece seguir um pouco a linha, ajuste o valor Kd (valor Kd> valor Kp), comece em 1 e aumente o valor até ver uma movimentação suave com menos oscilação.
  3. Assim que o robô começar a seguir a linha, aumente a velocidade e veja se consegue reter e seguir a linha.

Lembre-se de que a velocidade tem um impacto direto no ajuste do PID e às vezes você pode precisar reajustar para corresponder à velocidade do seu robô.

Agora podemos começar a construir nosso robô.

Etapa 2: a construção

The Build
The Build
The Build
The Build
The Build
The Build

Arduino atmega 2560 com cabo USB - este é o principal microcontrolador usado.

Chassis- para o chassi do robô, usei 2 placas circulares de acrílico que são usadas em outro projeto que é perfeito para isso. Usando porcas e parafusos, construí um chassi de 2 andares, para poder anexar outros módulos à placa superior. Ou você pode usar chassis prontos disponíveis.

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

Motores de engrenagens micrometais - o robô precisava de motores de rotação rápida para lidar com a rotina PID, para isso usei motores classificados em 6 V 400 rpm e rodas de aderência adequadas.

www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

Matriz de sensores QTR 8Rc - isso pode ser usado para o rastreamento de linha, como mencionado anteriormente, acho que agora você tem uma compreensão clara de como operar a matriz de sensores com PID. O código é muito simples e usando as bibliotecas arduino existentes, você será capaz para construir um seguidor de linha rápido.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

TB6612FNG Motor driver-I queria usar um driver de motor que pode controlar curvas e mudar de direção em um piscar de olhos, que é capaz de frear os motores de forma eficaz quando o sinal PWM fica baixo.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…

Bateria lipo - bateria lipo de 11,1 V é usada para fornecer energia ao robô. Embora eu tenha usado uma bateria lipo de 11,1 V, esta capacidade é mais do que o necessário para o arduino e os motores. Se você encontrar um leve 7,4 V bateria lipo ou bateria 6V Ni-MH será perfeita. por isso tenho que usar um conversor de buck para converter a tensão para 6V.

11.1V-

7.4 V-

Módulo conversor Buck-

Além disso, você precisa de fios de jumper, porcas e parafusos, chaves de fenda e fitas elétricas e também laços de zíper para se certificar de que tudo está no lugar.

Etapa 3: montagem

Montagem
Montagem
Montagem
Montagem
Montagem
Montagem
Montagem
Montagem

prenda os motores e um pequeno rodízio em uma placa usando porcas e parafusos e, em seguida, monte o sensor QTR, o driver do motor, a placa Arduino e, finalmente, a bateria no chassi.

Aqui está um diagrama perfeito que encontrei na internet, que mostra como as conexões devem ser feitas.

Etapa 4: Projete a trilha de sua linha

Projete sua linha de trilhos
Projete sua linha de trilhos

Agora seu projeto parece estar quase terminado. Como no último estágio, você precisa ter uma pequena arena para testar seu robô. Usei uma linha aleatória de largura de 3 cm branca em um fundo preto. Certifique-se de colar tudo bem.e por enquanto evite cruzamentos e cortes transversais em ângulos de 90 graus, porque é um caso complicado no ponto de codificação.

Etapa 5: programe seu código

1. Baixe e instale o Arduino

IDE desktop

· Windows -

· Mac OS X -

· Linux -

2. Baixe e cole o arquivo de matriz de sensor QTR 8 RC na pasta de bibliotecas do Arduino.

·

· Cole os arquivos no caminho - C: / Arduino / libraries

3. Baixe e abraLINEFOLLOWING.ino

4. Faça o upload do código para a placa arduino por meio de um cabo USB

Etapa 6: FEITO

Image
Image

agora você tem uma linha seguindo o robô feito por você.

Espero que este tutorial tenha sido útil. Não hesite em me contatar via [email protected] se você tiver qualquer problema.

vejo você em breve com outro novo projeto.

Aproveite a construção !!

Recomendado: