Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:projects:3pi:pid [2015/09/15 12:36] raivo.sellet:projects:3pi:pid [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== PID regulaator ====== ====== PID regulaator ======
  
-3pi roboti lihtsa joonejärgimise algoritmi kasutamisel on näha, et robot sõidab mööda joont kergelt sikk-sakk meetodil. Lisaks võib suurematel kiirustel robot kergelt joone pealt välja sõita. Sujuvamaks liikumiseks on võimalik lisada juurde andureid, et joonel olekut paremini kontrollida, kuid see lisab juurde riistvara ja võib tekitada uusi probleeme. Parem lahendus on täiendada roboti tarkvara PID regulaatoriga. Nii saab olemasolevate anduritega roboti väga sujuvalt joont järgima panna. PID regulaatori kasutamisel on põhiline keerukus regulaatori komponentide mõju seadistamine. PID regulaatori puhul on 3 komponenti+3pi roboti lihtsa joonejärgimise algoritmi kasutamisel on näha, et robot sõidab mööda joont kergelt sikk-sakk meetodil. Lisaks võib suurematel kiirustel robot kergesti joone pealt välja sõita. Sujuvamaks liikumiseks on võimalik lisada juurde andureid, et joonel olekut paremini kontrollida, kuid see lisab juurde riistvara ja võib tekitada uusi probleeme. Parem lahendus on täiendada roboti tarkvara PID regulaatoriga. Nii saab olemasolevate anduritega roboti väga sujuvalt joont järgima panna. PID regulaatori kasutamisel on põhiline keerukus regulaatori komponentide mõju seadistamine. PID regulaatori puhul on 3 komponenti
   * proportsionaalne (P) - otsene viga seadesuurusest    * proportsionaalne (P) - otsene viga seadesuurusest 
   * integraalne (I) - aja jooksul summeeruv viga   * integraalne (I) - aja jooksul summeeruv viga
Line 15: Line 15:
  
 ====Integraalne komponent==== ====Integraalne komponent====
-Veale liidetakse enne PID arvutamise tsüklit juurde uus viga ehk kokkuvõttes võib integraalne komponent kasvada väga kiirelt väga suureks (olenevalt kui kaua võtab üks PID tsükkel aega). Integraalset komponenti kasutatakse staatilise vea vähendamiseks ehk kui robot ei suuda piisavalt kiirelt joonele tagasi jõuda, siis integraalne osa aitab seda kiirendada. Üldiselt integraalne osa on üsna väike suurus võrreldes teiste komponentidega, sest võib kiirelt liiga äärmustesse kasvada. Vahest on vajalik integraalse komponendi muutuja suurust ka piirata, et ei tekiks muutuja ületäituvust (//overflow//).+Veale liidetakse enne PID arvutamise tsüklit juurde uus viga ehk kokkuvõttes võib integraalne komponent kasvada väga kiirelt väga suureks (olenevalt kui kaua võtab üks PID tsükkel aega). Integraalset komponenti kasutatakse staatilise vea vähendamiseks ehk kui robot ei suuda piisavalt kiirelt joonele tagasi jõuda, siis integraalne osa aitab seda kiirendada. Üldiselt integraalne osa on üsna väike suurus võrreldes teiste komponentidega, sest võib kiirelt äärmustesse kasvada. Mõnikord on vaja integraalse komponendi muutuja suurust piirata, et ei tekiks muutuja ületäituvust (//overflow//).
  
 ====Diferentseeriv komponent==== ====Diferentseeriv komponent====
Line 25: Line 25:
 Seadesuurus (//Setpoint//) on joonejärgija roboti puhul positsioon, kus joone kulgemise telg ühtib roboti keskteljega. Selle suuruse järgi leiab vea ehk nihke soovitud positsioonist:  Seadesuurus (//Setpoint//) on joonejärgija roboti puhul positsioon, kus joone kulgemise telg ühtib roboti keskteljega. Selle suuruse järgi leiab vea ehk nihke soovitud positsioonist: 
 <code>viga = hetke_positsioon - seadesuurus;</code>  <code>viga = hetke_positsioon - seadesuurus;</code> 
-3pi roboti andurite summa on vahemikus 0 kuni 4000. Keskoht ehk soovitud seadesuurus on seega 2000. Andurite summa muutub antud valemi järgi vahemikus -2000 kuni 2000.+3pi roboti andurite summa on vahemikus 0 kuni 4000. Keskkoht ehk soovitud seadesuurus on seega 2000. Andurite summa muutub antud valemi järgi vahemikus -2000 kuni 2000.
  
 ====PID komponendid==== ====PID komponendid====
Line 32: Line 32:
 Derivatiivne komponent eeldab eelmise PID regulaatori tsüklist otsese vea meelde jätmist. Selleks tuleb pärast derivatiivse komponendi arvutamist lisada koodirida eelmise vea meelde jätmiseks. Derivatiivse komponendi arvutamine ise on järgmine: Derivatiivne komponent eeldab eelmise PID regulaatori tsüklist otsese vea meelde jätmist. Selleks tuleb pärast derivatiivse komponendi arvutamist lisada koodirida eelmise vea meelde jätmiseks. Derivatiivse komponendi arvutamine ise on järgmine:
 <code> <code>
-derivatiivne = eelmine_derivatiivne derivatiivne+derivatiivne = eelmine_viga viga 
-eelmine_viga = viga;+ 
 +eelmine_viga = viga; // programmis lisada pärast output arvutamist
 </code> </code>
  
 ====Võimendustegurid==== ====Võimendustegurid====
-PID regulaatori komponentide mõju kiireks ja lihtsamaks seadistamiseks on kõige parem kasutada võimendustegureid, mis suurendavad või vähendavad komponendi mõju. ATmega328p on võimeline arvutama ujukomaarve, aga on selle tegemise juures palju aeglasem, kui täisarvude puhul. Seega on efektiivsem teostada arvutused täisarvudega korrutamise ja jagamise tehetega. Selle tõttu on iga komponendi kohta 2 võimendustegurit.+PID regulaatori komponentide mõju kiiremaks ja lihtsamaks seadistamiseks on kõige parem kasutada võimendustegureid, mis suurendavad või vähendavad komponendi mõju. ATmega328p on võimeline arvutama ujukomaarve, aga on selle tegemise juures palju aeglasem, kui täisarvude puhul. Seega on efektiivsem teostada arvutused täisarvudega korrutamise ja jagamise tehetega. Selle tõttu on iga komponendi kohta 2 võimendustegurit.
 <code c> <code c>
 #define KP 1 #define KP 1
et/projects/3pi/pid.1442320567.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0