collapse

* Links de Robótica

* Posts Recentes

Compra colectiva seeedstudio por beirao
[15 de Dezembro de 2017, 23:06]


Robot Wars International Special por beirao
[12 de Dezembro de 2017, 22:52]


Docker por nnr
[12 de Dezembro de 2017, 13:41]


Comprar transformador de +/-12Volts por jm_araujo
[12 de Dezembro de 2017, 10:16]


Embedded World 2018 por KammutierSpule
[12 de Dezembro de 2017, 09:05]


Esquema Fonte Bancada por almamater
[12 de Dezembro de 2017, 08:13]


Meu projecto - Arm Robot com arduino por Diogo Bento
[11 de Dezembro de 2017, 23:18]


Ajuda Projecto IR / RF por dio123
[09 de Dezembro de 2017, 10:53]


Drivers Arduino UNO! por dio123
[09 de Dezembro de 2017, 10:46]


Problema em converter codigo C arduino para C + Pigpio na raspberry por vasco
[08 de Dezembro de 2017, 19:22]

Autor Tópico: PID utilizando IR  (Lida 1897 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
PID utilizando IR
« em: 09 de Junho de 2010, 00:15 »
Bom não sei se será aqui o melhor sitio para colocar isto, mas aqui vai.
Já à algum tempo que ando intrigado com o PID, depois de ler este topico:
http://lusorobotica.com/index.php?topic=1870.30
e este:
http://lusorobotica.com/index.php?topic=993.msg23608#msg23608

e parece-me que os dois estão relacionados. Ora depois de ir ao nosso amigo google e pesquisar o que era isso do PID (e ainda não entender o dito sistema) deparei-me com este robo:
http://www.societyofrobots.com/member_tutorials/node/350
 Pelo vistos utiliza o tal de PID. Então resolvi colocar aqui, pois de todos o que vi é que me parece mais simples. E para saber a vossa opinião, não sobre o robo mas sim sobre o programa que o sujeito disponibiliza. Está feito para um atmega16 por isso não percebo grande parte do programa.
Para quem não tem paciencia de ver aquilo tudo deixo aqui os ficheiros para voces darem uma vista de olhos
Visitem os Açores vale a pena.

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: PID utilizando IR
« Responder #1 em: 09 de Junho de 2010, 01:01 »
Tambem tenho andado a investigar esse topico.

Pelo que consegui perceber ate agora PID Control é um metodo utilizado, entre outras coisas, para calcular a velocidade a que cada motor deve operar de forma a suavizar, optimizar os movimentos, no caso de um robot que segue linhas a vantagem na utilização deste metodo é que teoricamente podemos colocar o robot a andar bem mais rapido  ;D

A formula em si não e muito complicada de implementar encontrei varias exemplos deste algoritmo em varias linguagens. O manual do robot 3pi foi o artigo mais elucidativo porque podemos ver um exemplo de codigo simples (sem PID) http://www.pololu.com/docs/0J21/7.b e o upgrade para PID http://www.pololu.com/docs/0J21/7.c

Vai ser por aqui que me vou guiar para implementar isto no arduino.
Abraço.




« Última modificação: 09 de Junho de 2010, 01:02 por preytender »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.728
Re: PID utilizando IR
« Responder #2 em: 09 de Junho de 2010, 16:09 »
Um controlador PID serve para o que o nome diz, controlar. O controlo é feito através da aplicação ao erro de um ganho Kp(Proporcional), Ki(Integrador) e Kd(Derivada).



   Vamos considerar o nosso processo(o que aparece na imagem a verde) o accionamento de um motor. Como saída do processo temos a velocidade do motor, vamos supor que é 70rpm. O setpoint é o nosso valor referencia, isto é, a velocidade à qual queremos que o nosso motor funcione. Supondo que queremos que nosso motor roda a uma velocidade de 100rpm então é este o nosso Setpoint ou referencia.
   Neste momento temos a velocidade actual e a referencia, o nosso erro vai ser a diferença entre estes logo o nosso erro=100-70=30rpm.
   Este erro agora vai ser multiplicado pelo Kp, integrado e multiplicado pelo Ki, derivado e multiplicado por Kd. No final estes sinais são todos somados e este valor vai gerar a tensão que devemos aplicar no motor.

   Se não usarem um controlador deste tipo não é possível saber como reage o motor, como este evolui para a velocidade pretendido. Assim ao usarem o controlador conseguem definir como varia a velocidade do motor, qual o overshoot motor, podem definir se atinge mais rápido ou mais lento a velocidade pretendida entre outras coisas.

   Nesse caso dos segue-linhas ele usam o pid para fazer o controlo da possição do robot face à linha. O pensamento é o mesmo do que falei antes. No caso do link que indicas-te ele usa um vector com 8 leds IR. A nossa referencia é que a linha esteja sempre o no meio do vector dos leds IR por isso vamos considerar que se a linha estiver na ponta esquerda o valor é 4, se estiver no meio é 0 e na ponta direita é -4, isto é varia entre -4 a 4, a nossa referencia será 0. imaginem que a linha está na ponta esquerda o valor da posição da linha vai ser 4, logo vamos ter um erro=4. Este erro passa pelo PID e é gerado um valor para controlar a direcção para a qual o motor deve ir para ficando no meio da linha.
« Última modificação: 09 de Junho de 2010, 16:16 por metRo_ »

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: PID utilizando IR
« Responder #3 em: 09 de Junho de 2010, 16:33 »

Muito boa explicação, no caso dos segue linhas podemos ainda utilizar duas constantes vel_max e vel_min para evitar que saia disparado  ;D ou seja para restringir o output do processo.

Obrigado.