bobtech Posted March 30, 2005 Share Posted March 30, 2005 a implementat cineva un algoritm de control in bucla (PID) pt PIC ? Link to comment
cirip Posted March 31, 2005 Share Posted March 31, 2005 Si eu, si eu, si eu..... :lol: Cirip Link to comment
bogdanm Posted March 31, 2005 Share Posted March 31, 2005 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 Link to comment
bobtech Posted March 31, 2005 Author Share Posted March 31, 2005 M-ar interesa si pe mine niste surse in fixed point, si chiar un tutorial ceva mai bunsi 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 ... ? Link to comment
bogdanm Posted March 31, 2005 Share Posted March 31, 2005 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 to comment
sifor Posted March 31, 2005 Share Posted March 31, 2005 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 to comment
Cristiano Posted March 31, 2005 Share Posted March 31, 2005 Microchip Application Note AN937 si AN964. Link to comment
cirip Posted March 31, 2005 Share Posted March 31, 2005 PID cu timp de raspuns foarte rapidTimpul 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 to comment
bobtech Posted April 3, 2005 Author Share Posted April 3, 2005 @CiripMultumesc de informatii.Sper sa am timp sa ma ocup cat mai curand de proiectu' asta si atunci poate te mai deranjez cu intrebari Link to comment
cirip Posted April 4, 2005 Share Posted April 4, 2005 Pentru putin. Nici un deranj. Spor!Cirip Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now