Seguidor de Linha com controle PID: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 79: Linha 79:
Dependendo da posição do vetor sobre a linha, '''apenas um''' ou '''dois sensores''' podem reconhecer a linha ao mesmo tempo, como mostra as figuras abaixo <ref NAME=LabGaragem>http://labdegaragem.com/profiles/blogs/tutorial-rob-seguidor-de-linha-com-controle-pid-e-ajustes-por</ref>:
Dependendo da posição do vetor sobre a linha, '''apenas um''' ou '''dois sensores''' podem reconhecer a linha ao mesmo tempo, como mostra as figuras abaixo <ref NAME=LabGaragem>http://labdegaragem.com/profiles/blogs/tutorial-rob-seguidor-de-linha-com-controle-pid-e-ajustes-por</ref>:


[[Arquivo:VetorSensores1.png|400px]]
[[Arquivo:VetorSensores1.png|300px]]
:Apenas sensor central (s3) reconhece a linha.
:Apenas sensor central (s3) reconhece a linha.


[[Arquivo:VetorSensores2.png|400px]]
[[Arquivo:VetorSensores2.png|300px]]
:Sensor central (s3) e sensor (s4) reconhecem a linha.
:Sensor central (s3) e sensor (s4) reconhecem a linha.



Edição das 14h08min de 6 de junho de 2019

Seguidor de Linha com controle PID

Teoria sobre Sistemas de Controle PID

Sistemas de Controle
Um resumo da teoria sobre Sistemas de Controle em Malha Fechada e do Controle Proporcional Integral Derivativo.

Ações de Controle PID sobre o Seguidor de Linha

Ações de Controle PID sobre o Seguidor de Linha
Descrição das ações de Controle PID sobre o Seguidor de Linha, hipóteses e problemas a serem experimentados.

Controle de velocidade de robô Seguidor de Linha

Um robô Seguidor de Linha equipado com dois motores de corrente contínua, os quais tem seu controle de velocidade e sentido de rotação a partir de tensão elétrica variável aplicada em seus terminais:

  • Sentido de rotação: Tensão positiva gira em um sentido e tensão negativa em outro sentido;
  • Velocidade: Controlada pela amplitude da tensão aplicada.
Arduíno e Ponte H
O Arduíno equipado com um módulo Ponte H permite o controle de motores de corrente contínua através de saídas digitais e analógicas:
  1. O sentido de rotação dos motores é realizado a partir de saídas digitais, com LOW para um sentido e HIGH para o outro.
  2. O controle da velocidade dos motores é realizado a partir de "saídas analógicas", com modulação PWM de 8 bits, correspondendo a valores decimais entre O e 255. Estes valores correspondem a faixa entre 0 V e 5 V em caso de tensão nominal de 5 V.
Entretanto, dependendo dos motores, a faixa de ajuste da velocidades geralmente varia de valorMínimo a 255, onde o valorMínimo é a modulação PWM mínima para romper a inércia dos motores (algo entre 60 e 80, dependendo do tipo de motores e do peso do robô).
Funcionamento do Seguidor de Linha e a ação do Controle
  1. Suponha que um Seguidor de Linha seja programado para percorrer a pista com uma velocidade normal estabelecida com a modulação PWM velNormal = 120 e que tenhamos somente o controle proporcional ativo, com Kp = 20.
  2. Suponha que em dado momento tenhamos erro = 1, com o robô derivando para esquerda.
Neste caso, a ação do controle proporcional modificará a trajetória do robô aumentando a velocidade do motor esquerdo e diminuindo a velocidade do motor direito:
velMotorEsq = velNormal + Kp * erro = 120 + 20 * 1 = 140
velMotorDir = velNormal - Kp * erro = 120 - 20 * 1 = 100
Ajuste dos parâmetros PID
O projeto apresentado em [1] utiliza motores de passo também controlados por modulação PWM. O autor sugere iniciar com Kp = 25, com Ki = 0 e Kd = 0.
  • Experimentalmente foi aumentando o valor de Kp de forma que o robô continuasse a seguir linha de forma estável. O autor chegou a um valor de Kp = 50 após testes.
  • Posteriormente, ajustou novo valor para Kp e Kd para 1/2 Kp utilizado com o controle proporcional único e prosseguiu com novos testes.
  • O autor não implementou o controle Ki.

Hardware do Robô Seguidor de Linha

O hardware do Robô Seguidor de Linha com Controle PID possui como módulos principais um Arduíno Micro, um vetor de sensores de reflectância QTR-8, um drive para motores DC L9110 e um regulador de tensão.

Arduíno Micro

Vetor de sensores QTR-8

O vetor de sensores de reflectância QTR-8 possui 8 leds IR/fototransistores (emissores infravermelho/receptores) montados em uma única placa, projetado para ser utilizado em seguidores de linha.

Há dois tipos de sensores QTR-8:

  • QTR-8A: Utiliza leitura analógica dos sensores
  • QTR-8RC: Utiliza portas digitais para fazer leitura dos sensores
Biblioteca para Arduíno
Arduino Library for the Pololu QTR Reflectance Sensors
Leitura dos sensores
O programa utiliza uma função disponível na biblioteca QTR-8 que fornece a posição do vetor em relação a linha, variando de 0 a 7000 (sensor 1 até sensor 8). Com o vetor no centro da linha retorna o valor 3500.

Drive para Motor DC L9110

Driver L9110

Exemplo de uso:

Outros protótipos de hardware testados

Ajuste de parâmetros via Bluetooth

Para facilitar o ajuste dos parâmetros, foi introduzido um módulo bluetooth no robô para que os parâmetros sejam transferidos via Bluetooth de um aplicativo em um celular Android.

O aplicativo foi desenvolvido com o App Inventor.

A comunicação usando Bluetooth foi construída baseado nos exemplos apresentados em:

Vetor de Sensores e Determinação do Erro

A primeira versão do Seguidor de Linha utilizava um vetor com sete sensores para seguir a linha e determinar o erro do robô em relação a linha.

Dependendo da posição do vetor sobre a linha, apenas um ou dois sensores podem reconhecer a linha ao mesmo tempo, como mostra as figuras abaixo [1]:

Apenas sensor central (s3) reconhece a linha.

Sensor central (s3) e sensor (s4) reconhecem a linha.
Possibilidades para o vetor de sensores
Quando o sensor central está sobre a linha o erro é zero.
Quando o carrinho deriva para esquerda, sensibilizando os sensores a direita do ponto central, o erro é positivo. Quando deriva para direita, sensibilizando os sensores a esquerda do ponto central, o erro é negativo.
  Sensores
0 1 2 3 4 5 6  
-------------
1 0 0 0 0 0 0  --> Erro -6
1 1 0 0 0 0 0  --> Erro -5
0 1 0 0 0 0 0  --> Erro -4
0 1 1 0 0 0 0  --> Erro -3
0 0 1 0 0 0 0  --> Erro -2
0 0 1 1 0 0 0  --> Erro -1
0 0 0 1 0 0 0  --> Erro  0
0 0 0 1 1 0 0  --> Erro  1
0 0 0 0 1 0 0  --> Erro  2
0 0 0 0 1 1 0  --> Erro  3
0 0 0 0 0 1 0  --> Erro  4
0 0 0 0 0 1 1  --> Erro  5
0 0 0 0 0 0 1  --> Erro  6

Materiais sobre Seguidor de Linha com controle PID

Projetos
Artigos e TCCs

Referências


--Evandro.cantu (discussão) 08h58min de 16 de maio de 2018 (BRT)