Witam wszystkich na forum chciałbym zrobić regulator do sterowania wilgotnością. Silnik który otwiera klapę przez co spada wilgotność, jest to silnik krokowy sterowany sygnałem 0-10 V. Chciałbym zapytać jak zrealizować takie regulator w sieci znalazłem taki fragment kodu, chciałbym zapytać czy jest on poprawny oczywiście Kp Ti i Td dobiorę sobie sam. Wartość wo oraz w mam obliczone. Posiadam arduino Uno i żeby sygnał sterujący pojawił się na pinie analogowym. Wiem że arduino ma wyjście 0-5 V ale sprawę załatwią wzmacniacze operacyjne
Kod:
int dt = 20; //co ile pobiera się próbkę
int ep; //uchyb poprzedni
int en; //uchyb następny
int U; //sygnał sterujący
int C; //część całkująca
int Kp; //wzmocnienie
int Ti; //stała całkowania
int Td; //stała różniczkowania
...
void loop()
{
en = wo-w; // wartość uchybu poznajemy za pomocą równania wo-wartość zadana, w-wartość danej chwili
C += ((ep + en)/2)*dt;
U = Kp*(en + (1/Ti)*C/1000 + Td*(en - ep)*1000/dt)
ep = en;
}