codigo de seguindo de linha - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T07:36:46Zhttps://labdegaragem.com/forum/topics/codigo-de-seguindo-de-linha?xg_source=activity&feed=yes&xn_auth=noVou tentar te passar o concei…tag:labdegaragem.com,2018-07-09:6223006:Comment:6781082018-07-09T13:44:18.888ZEduardohttps://labdegaragem.com/profile/EduardoHenriqueMarcondes
<p>Vou tentar te passar o conceito de forma simplista, me perdoem os fundamentalistas...</p>
<p>Segue um pseudo calculo de PID para fins didáticos, sujeito a erros:</p>
<p>Vc colocou 3 sensores para a direita e 3 para a esquerda ?</p>
<p>Suponho que o primeiro promove uma pequena correção, o segundo uma correção media e o terceiro uma grande correção.</p>
<p>Esse numero vc pode chamar de "Erro". Eh quanto seu carrinho está fora da posição desejada.</p>
<p>Coloque numeros, por ex 1, 2 e…</p>
<p>Vou tentar te passar o conceito de forma simplista, me perdoem os fundamentalistas...</p>
<p>Segue um pseudo calculo de PID para fins didáticos, sujeito a erros:</p>
<p>Vc colocou 3 sensores para a direita e 3 para a esquerda ?</p>
<p>Suponho que o primeiro promove uma pequena correção, o segundo uma correção media e o terceiro uma grande correção.</p>
<p>Esse numero vc pode chamar de "Erro". Eh quanto seu carrinho está fora da posição desejada.</p>
<p>Coloque numeros, por ex 1, 2 e 3.</p>
<p>Ele estaria nos estados: -3,-2,-1,0,1,2 ou 3</p>
<p>Por tentativa vc deve usar esses numeros multiplicados por uma constante para acionar o motor que muda de direção.</p>
<p>Esse numero é a constate P, Proporcional.</p>
<p>A Saida fica</p>
<p>Saida=P*Gp </p>
<p>Gp=ganho proporcional.</p>
<p>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.</p>
<p>Vc escolheria um periodo ou um numero de amostras, vamos falar em 10 amostras, por ex.</p>
<p>Vc memoriza os 10 ultimos erros e faz a soma deles e divide por 10.</p>
<p>Assim vc tem o erro medio, que vamos chamar de I.</p>
<p>Ponha isso na sua conta como:</p>
<p>Atuação=P*Gp+I*Gi </p>
<p>Gi=Ganho integral.</p>
<p>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.</p>
<p>D=leitura atual-anterior.</p>
<p>Atuação=P*Gd+I*Gi+D*Gd.</p>
<p>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.</p>
<p>Mas vale a experiência.</p>
<p>Para usar um verdadeiro (ou mais proximo de) PID existem bibliotecas prontas, pra variar...</p>
<p><a href="https://playground.arduino.cc/Code/PIDLibrary" target="_blank">https://playground.arduino.cc/Code/PIDLibrary</a></p>