Olá Galera, somos a equipe –AutoBots Rio Branco– de Campinas-SP e estamos aqui para compartilhar com vocês um pouco sobre o mecanismo de Controle Proporcional. Já existe muita informação disponível sobre o assunto, porém nem sempre de maneira didática. Nosso intenção é apresentar o funcionamento do Controlador Proporcional da maneira mais clara o possível!   Vamos Lá!!!

Mecanismos de controle são necessários desde aplicações simples, como para controlar o nível de água em uma caixa d’água até aplicações mais elaboradas como o lançamento de foguetes e satélites. Além disso, estes mecanismos de controle podem ir desde simples estruturas como uma  chave “Liga/Desliga” até coisas complexas como o famoso Controlador P.I.D. (Proporcional Integral Derivativo).

Mas vamos com calma! 

Imagine que seu robô,utilizando um sensor de distância, esteja a 1 metro da parede e você deseja que ele ande para frente e pare quando estiver a 20 cm. Chamaremos a distância de 20 cm como “Distância Alvo”. Chamaremos de “Erro” a diferença entre a “Distância Atual” lida pelo sensor e a Distância Alvo (Erro=Distância Atual-Distância Alvo). A partir do momento que o robô anda em direção à distância de 20 cm, seu Erro vai diminuindo,certo?

Os mecanismos de controle têm por objetivo fazer
com que esse “Erro” se estabilize em “0”.

Existem várias manerias de fazer isso, mas hoje falaremos sobre o Controlador Proporcional (Controlador P) aplicado a um Seguidor de Linha. Observem a figura abaixo: 

A faixa preta representa a Linha a ser seguida. Suponhamos que em “A” ,”B” e “C” o valor detectado pelo sensor de luz foi de “100”, “50” e “0” respectivamente. Quando aplicamos um Controlador P para seguir linha, devemos ter em mente que o robô seguirá na verdade um “Valor de Linha” que poderá ser qualquer valor entre os valores lidos no Branco(“100”) e no Preto(“0”), no nosso exemplo o valor que escolhemos para o robô seguir é de “50”( Valor Alvo) que representa a borda esquerda da linha preta!

 Agora vamos entender o funcionamento do mecanismo:

Suponha que por algum motivo, ao seguir linha, seu sensor esteja lendo valores maiores que 50, ou seja, esteja à esquerda da borda esquerda da linha preta! O “Erro” calculado (Erro=Valor Atual lido pelo sensor – Valor Alvo) será dado por um valor positivo e será proporcional à distância que o sensor se encontra da Valor Alvo, ou seja, quanto mais afastado do Valor “50”, maior será o “Erro”. Já se o sensor estiver logo à direita da borda esquerda da linha preta, ele estará lendo valores menores que “50”, logo o Erro calculado será dado por uma valor negativo.

Nosso objetivo é relacionar o valor calculado do Erro com os motores do robô. Dessa maneira, se o “Erro” for um valor Positivo, o robô deverá virar para a direita a fim de se estabilizar no valor de “50”. Se for negativo, deverá virar para a esquerda, como é mostrado no gráfico abaixo:

Mas como faremos isso na prática?

 Link para baixar o código: https://drive.google.com/open?id=0Bz5-0PHn0Js1MTB6eU04RlpPcnc

Obs: Leia o post antes de baixar o programa para entender bem o conceito trabalhado!