PID z Noty Atmela

Jan 26, 2014 31 Replies

Witajcie,



Wziąłem sobie źródełka w C algorytmu PID z noty avr221 Atmela ale zamiast w procesorku to odpaliłem to testowo w C# w celu pobawienia się. Napisałem sobie programik, który mi wyświetla wszystkie zmienne i mogę sobie zadawać wszystko.



Niby działa ale mam lamerskie pytanie, nie śmiejcie się :-)



z głównej funkcji PID dostaję int16_t i faktycznie pojawiają się tam wartości od -32768 do +32767. Tylko co to do diabła oznacza? Jak T zadana zrówna się z Tzmierzoną to ta wartość się zatrzymuje i już dalej nie liczy :-( Pomińmy ustawianie Kp, Ki, Kd, bo na to przyjdzie czas później.



Jak mam teraz przejść na sterowanie grzałką w przedziale 0 do 100% np generując PWM czy załączając przekaźnik na ileś % czasu skoro mam dziwnie wyglądający int16_t?



Pozdrawiam, Lam3r


PID jest algorytmem ciaglym regulacji i nei nadaje sie do sterowania grrzalka. Do sterowania grzalka stosuje sie regulatowy dwupolozeniowe, ktore mozna usprawnic tak aby aproksymowaly regulator PI (nie pamietam czy moga PID)

Tutaj mozesz znalezc jak

formatting link
Z grubsza, wprowadza sie dodatkowa petle sprzezenai zwrotnego wokol przekaznika ktora to petla linearyzuje pzrekaznik

A.L.

Użytkownik "Lam3r" snipped-for-privacy@Lam3r.pl napisał :

. [...]

To są możliwości sprzętu/oprogramowania. Wartości nieskończone istnieją tylko w teorii. Tutaj, w świecie rzeczywistym napięcie, wielkość bufora, itd. - wszystko ma granice. No może wszystko poza ludzką głupotą. Liczba [16 bitowa ze znakiem], to zakres odpowiedzi Twojego algorytmu.

Bo nie masz dynamicznej odpowiedzi z obiektu regulacji. Wiesz wogóle jak działa Twój algorytm?

I tu jest pies pogrzebany. Zabawę z PIDem zawsze polecam rozpocząć od wyłączenia calkowania i rozniczkowania. Na poczatek jechac na samym czlonie proporcjonalnym, by zrozumieć jak to działa.

Przeskaluj go. Zaprzeganie PIDa do regulacji temperatury jest lekko na wyrost. Do takich spraw wystarcza regulator dwustanowy z odpowiednią histerezą. Jeżeli chodzi o cele edukacyjne, to nikt nikomu niczego nie broni. Jednak z Twoich eksperymentow wniosek może być taki, że do płynnego manipulowania mocą grzałki wystarczy sam człon P.

pzdr

Bo tak to ma dzialac - jak temperatura jest wlasciwa, to znaczy ze wartosc wyjsciowa jest dobra :-)

Eee tam nie nadaje. Nadaje, tylko trzeba miec mozliwosc sterowania moca w sposob ciagly. Czy to zasilacz/przelacznik PWM, czy tyrystorowy sterowany fazowo (w sumie tez PWM), czy silniczek krecacy autostransformatorem, czy jakis wzmacniacz magnetyczny - zalezy jaka grzalka :-)

Musisz to sprzac z ukladem wykonawczym, w taki sposob ze np wartosc 0 powoduje odlaczenie zasilania, 10000 zasilanie pelna moca, a 5000 zasilanie polowa mocy itp. Czy wartosci skrajne maja byc 0 i 10000, -32000 i +32000 czy np -200 i +200 - temat na dluzsza dyskusje.

Albo zrobic jak ponizej:

Na studiach jakos sprytnie zapetlalismy standardowy regulator PID i przekaznik, ze wychodzil z tego PWM.

Chcesz go dobic ? Kolega sie przyznaje ze Lamer, a Ty mu wyzsza automatyke serwujesz :-)

J.

Zgodnie z teorią -200 powinno chłodzić z mocą powiedzmy 200, 0 - nie robić nic, a +200 grzać z mocą 200. W praktyce pewnie i tak będzie można dobrać parametry PID żeby działąło dobrze.

Dlaczego? Odpowiednio nastrojony powinien dobrze reagować na zmiany temperatury zewnętrznej, na otwarcie okna - szybko wyrównuje do zadanej i nie przegrzewa.

Zawsze mozan wlozyc gacie przez glowe. tylko to nie najleo\pszy sposob

A.L.

W dniu 2014-01-26 22:41, ARO pisze:

pozdrawiam MD

Właśnie edukuję się z PID i chcę sobie coś zbudować na czym będę robił eksperymenty. Dalej nie rozumiem jak mam to przeliczyć na wypełnienie. Grzałeczkę chcę dla zabawy, bo szybko zestawiłem stanowisko. Mogę użyć lutownicy nawet. A jak często mam wykonywać taki algorytm? Dla grzania to ile razy na sekundę czy lepiej raz na sekundę czy jak ? Mogę zrobić nawet sterowanie fazowe ssr-em ale potrzebyję "wypełnienie" od 0 do 100 okresów. A może od zera do

50 okresów, a może do 1000 okresów ?

Czyli chwila...

Je¿eli mam int16_t -32k...+32k

Czy to co na minus to oznacza, ¿e mia³bym ch³odziæ? Ch³odzenia nie mam wiêc mogê jedynie doj¶æ od góry do zera i ujemne ignorowaæ. Jako wy³±czenie ? Pozostaje 0 .. +32767 ale to du¿o dzia³ek. Mam to przeskalowaæ np podzieliæ przez 128 czy co¶ w tym stylu ? On siê zachowuje dziwnie. Jak w³±czam program z Tzadan± = Tzmierzon± to zroi na zero. Jak lekko udajê, ¿e obiekt siê ch³odzi to wolno liczy w górê. Jak siê temperatury wyrównaj± to liczenie staje i zostaje na tylu ile naliczy³. Wcale do zera nie wraca. jak naliczy³ 5000 to tam siê zatrzyma. Mo¿e to problem braku odpowiedzi uk³adu. Ja krêcê ga³eczk± programow± suwakiem sobie zmieniam. Spróbujê dopisaæ jak±¶ "odpowied¿" programow± np 1 stoien C na 10-20 sekund pe³nej mocy i odpowiednio mniej przy PWM-ie ale nie wiem jak to przeliczyæ ten int16_t na pwm :-)

W dniu 26.01.2014 o 23:14 Lam3r snipped-for-privacy@lam3r.pl pisze:

Ale to masz zbyt małą bezwładność, grzałkę daj do garka z wodą i wsadź tam też czujnik temp np ds18s20 lub podobny, podłaczasz go pod rs-a są schematy w sieci i czytasz po 1-wire temp.

Jak grzałka to możesz zamiast pwm-a stosować półokresy do sterowania, czyli sterujesz najlepiej przez tranzystor tym ssr-em grzałką. Ustalasz okres pracy, liczba z pid-a wtedy będzie czasem właczenia a pozostały czas okresu jest wyłączona.

Dam sobie radę z tym. Sam układ ma małe znaczenie w tej chwili. Czy z NTC czy PTC czy DS18 to bez znaczenia teraz.Mnie o teorię chodzi :-)

Ale jaki czas ? Na wyjściu PID mam int16_t, która się zmienia dziwnie. Czasem doliczy do maximum, a czasem ledwo setkę i co z ujemnymi liczbami? Jak to przeskalować na 0..100% ?

U¿ytkownik "Lam3r" snipped-for-privacy@Lam3r.pl napisa³ :

Bingo!

...a jak temperatura wzrosnie, to wartosc ktora regulator do tej pory naliczyl, bedzie maleæ. Tak dzia³a ca³kowanie. Regulator "uzna³" ¿e sygna³ który podaje na wyj¶ciu jest odpowiedni by zachowaæ zerowy uchyb regulacji. St±d nie zmienia stanu.

Zasada dzia³ania takiego regulatora wygl±da ³opatologicznie tak: cz³on P: amplituda sygna³u steruj±cego (na wyjsciu z regulatora) bêdzie proporcjonalna do wielko¶ci uchybu; cz³on I: sumuje w czasie warto¶æ uchybu i da sygna³ tym wiêkszy im d³u¿ej ten uchyb bêdzie trwa³, a amplituda sygn. ster. naro¶nie tym szybciej im wiêksza bêdzie warto¶æ uchybu - to jest dok³adnie to co zaobserwowa³e¶; cz³on D: amplituda sygn. ster. jest proporcjonalna do prêdko¶ci zmian uchybu. Ró¿niczkowanie zapobiega powstawaniu oscylacji z dwóch pozosta³ych cz³onów.

pzdr

Zadna. Prop[onuje pzremyslec moja analogie ktora napisalem pare linijek wyzej: gacie TEZ mozna zalozyc pzrez glowe. Tylko trudniej.

Zeby zastosowac ciagly PID doregulacji gzralki nalezy sobie zbudowac urzadzenie ktore ozreksztalci sygnal cyfrowy na napiecie 0 - 220 V i tyle amper ile grzalka potzrebuje. Potem jeszcze drobiazg.

No i po co skoro mozan zastosowac pzrekaznik ktory bedzie grzalek wlaczal i wylaczal? A procesor bedzie to tak robil zeby miec prawo regulacji PID.

A,L,

nie widziales przypadkiem niestabilnego PIDa?...

A.L.

W dniu 2014-01-27 00:29, A.L. pisze:

Wystarczy sterowanie grupowe. Triaki nie są drogie. A co z ogrzewaniem gazowym? Modulacja płomienia to też zakładanie majtek przez głowę?

W dniu 2014-01-27 00:30, A.L. pisze:

Zakładam, że jak się uruchamia PIDa to dobiera się jego parametry. I pracuje stabilnie. Natomiast proporcjonalny nie ma szans pracować nie kolebiąc się wokół nastawionej wartości.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required