Sari la conținut
ELFORUM - Forumul electronistilor

algoritm PID ?


Postări Recomandate

  • Răspunsuri 10
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

M-ar interesa si pe mine niste surse in fixed point, si chiar un tutorial ceva mai bun. Stiu ca exista o groaza pe net si fara indoiala o sa gasesc daca o sa caut, intreb insa daca stiti unul care vi s-a parut voua bun si aveti link-ul la indemana. Daca nu, ma apuc sa caut. Nu e ceva de care sa am nevoie chiar acum, dar sunt sigur ca la un moment dat voi implementa asa ceva, si e bine sa fiu pregatit :d

Link spre comentariu

si pe mine :)eu de exemplu vreau sa controlez temperatura din acvariu si vreau sa varieze cat mai putin in jurul setpointului.algoritmul l-ai implementat in C sau ASM sau ... ?

Eu nu. Adevaru e ca mi-e somn si mi-e prea lene sa caut :) I-am dat totusi un search dupa "PID" pe avrfreaks, si am gasit o groaza de chestii interesante:http://www.embedded.com/2000/0010/0010feat3.htm - teoriehttp://www.barello.net/Papers/Motion%5FControl/ - teorie + implementarehttp://www.avrfreaks.net/index.php?name ... pid#130757 - implementarehttp://www.jashaw.com/pid/code.htm - implementarihttp://www.avrfreaks.net/index.php?name ... hlight=pid - implementarehttp://www.avrfreaks.net/index.php?name ... hlight=pid - implementarehttp://hubbard.engr.scu.edu/embedded/av ... index.html - o gramada de cod, are si PIDhttp://www.jashaw.com/pid/code2.html - "improved PID"http://www.mcselec.com/an_109.htm - cod in BASICGata, m-am oprit :) Mai mult ca sigur poti sa compilezi ceva din toata povestea asta.EDIT: uite si o aplicatie simpatica rau a unui controller PID, pe una din paginile mele favorite de pe net:http://elm-chan.org/works/ltc/report.html
Link spre comentariu

Nu se poate vorbi de un algoritm PID universal ! La actionari motoare elecrice si alte chestii similare trebuie un regulator PID cu timp de raspuns foarte rapid ! La reglaje de temperatura este suficient un regulator PID cu timp de raspuns lent ! Deci conteaza foarte mult aplicatia la care vrei sa folosesti regulatorul !Don Mario

Link spre comentariu

PID cu timp de raspuns foarte rapid

Timpul de raspuns este dat de alegerea constantelor regulatorului: Kp, Ki si Kd. Daca integratorul are contributie majora (Ki e mare), reglajul este lent si introduce intarziere. Daca derivatorul are snaga (Kd e mare), reglarea se va face cu avans de faza, adica reactia va fi mai rapida. Cred ca teoria generala a PID-ului e aceeasi. Acordul regulatorului este, pe de alta parte, o arta in sine. Am citit brosurele care trateaza numai tehnici de acord.Cat despre ceea ce am facut eu, eu am implementat pur si simplu ecuatia cu diferente finite care rezulta din teoria PID-ului. Concret, am luat forma Laplace si i-am aplicat transformarea biliniara ca sa obtin transformata Z, apoi din transf Z am trecut in timp (esantioane). Suna pompos, dar e mai simplu decat pare. Daca vreti postez direct formula finala. Am lucrat cu intregi cu semn pe 16 biti si mi-a fost suficient; nu am simtit nevoia sa ma complic cu virgula fixa sau mobila. Singura problemutza mai stufoasa a fost multiplicatorul de 16X16->32 cu semn, soft. Ala mi-a mancat o parte din zilisoare, dar pana la urma l-am scos. Este insa destul de lent. Are nevoie de cateva ms ca sa faca o inmultire, dar cum eu esantionez la 1 secunda, nu e mare scofala.Ca in orica caz de desepeala, simularea a avut un rol important. Eu am simulat in Matlab, dar se poate face f usor si in excel.Sa ma iertati daca ptr unii e chineza ce am scris mai sus, dar sunt convins ca exista forumisti care au inteles exact ce am spus. Oricum, softul unui PID digital nu e un proiect de incepator. :) Softanul a fost scris in asamblare (MPLAB) pentru F876.Bafta!CiripEDIT: Uite c-am gasit si formula finala.y(n)=y(n-1)+(Kp+Ki)*x(n)+(Kd-Kp)*x(n-1)-Kd*x(n-2)in care:y(n)=esantionul curent al iesirii regulatoruluiy(n-1)=esantionul anterior al iesirii regulatorluix(n)=esantionul curent al intrarii in regulatorx(n-1),x(n-2)= esantioanele anterioare introduse cu 1 respectiv doua perioade de esantionare in urma.x-ii, adica esantioanele de intrare, sunt de fapt diferenta dintre valoarea masurata si cea de referinta adica cea setata. Se observa din formula ca daca val masurata este egala cu cea prescrisa, diferenta (x) devine zero si ecuatia mentine iesirea constanta, adica y(n)=y(n-1).Bagati formula asta recursiva in excel si o sa-l vedeti cum "se regleaza" :). Va pot ajuta la chestia asta cu excelul, dar in masura in care exista interes si in masura timpului meu disponibil.A! Si la excel e f misto ca poti sa vezi cum se schimba regimul tranzitoriu in fct de constantele regulatorului sau te trezesti ca incepe sa oscileze... Circ! :)
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări