olá boa tarde,sou novo nessa áreas de programação,  eu fiz esse código junto com alguns colegas, to querendo melhora meu código colocar um controle PID pra deixar mais estável na pista, ele usa 6 sensores infravermelhos.. alguém pode me ajudar a melhora meu código ??  deixar em anexo ai em baixo

Exibições: 179

Anexos

Responder esta

Respostas a este tópico

Vou tentar te passar o conceito de forma simplista, me perdoem os fundamentalistas...

Segue um pseudo calculo de PID para fins didáticos, sujeito a erros:

Vc colocou 3 sensores para a direita e 3 para a esquerda ?

Suponho que o primeiro promove uma pequena correção, o segundo uma correção media e o terceiro uma grande correção.

Esse numero vc pode chamar de "Erro". Eh quanto seu carrinho está fora da posição desejada.

Coloque numeros, por ex 1, 2 e 3.

Ele estaria nos estados: -3,-2,-1,0,1,2 ou  3

Por tentativa vc deve usar esses numeros multiplicados por uma constante para acionar o motor que muda de direção.

Esse numero é a constate P, Proporcional.

A Saida fica

Saida=P*Gp 

Gp=ganho proporcional.

Se vc quiser que ele não se mova muito rápido, que não considere instantaneamente esse ganho vc pode adicionar um ajuste que dependa não diretamente do erro e sim da media do erro.

Vc escolheria um periodo ou um numero de amostras, vamos falar em 10 amostras, por ex.

Vc memoriza os 10 ultimos erros e faz a soma deles e divide por 10.

Assim vc tem o erro medio, que vamos chamar de I.

Ponha isso na sua conta como:

Atuação=P*Gp+I*Gi 

Gi=Ganho integral.

Se vc quiser que ele se antecipe aos acontecimentos, considerando a tendencia de aumento ou diminuição, que pode ser representada simploriamente pela ultima leitura - anterior. A ideia é que por ex ele está indo para a direita pela media (pq esteve por muito tempo para a direita), mas a tendencia da curva já é esquerda. O D representa a tendencia da curva.

D=leitura atual-anterior.

Atuação=P*Gd+I*Gi+D*Gd.

Mas adianto que a calibração desses fatores pode ser uma grande dor de cabeça. Vai te custar um tempo que poderia ser gasto com soluções mais simples. O PID é um sistema muito eficiente especialmente quando se procura manter a saída do sistema constante. Um sistema que muda a necessidade o tempo todo (aparecem curvas) com um numero de bits de resolução (apenas 6 leds) baixo pode ser de dificil a impossível de parametrizar.

Mas vale a experiência.

Para usar um verdadeiro (ou mais proximo de) PID existem bibliotecas prontas, pra variar...

https://playground.arduino.cc/Code/PIDLibrary

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço