Witam
Mam za zadanie zrobić regulator temperatury wody, taki bojler. Z tym, że ciecz w zbiorniku (ok. 50l) ma stabilnie trzymać temperaturę, powiedzmy 60 stopni. Jak wiadomo grzałka jest obiektem inercyjnym z opóźnieniem, a woda ma dużą bezwładność. W związku z tym wybrałem algorytm PID do zaimplementowania w uC (ATmega16).
Sterowanie odbywa się triakiem. W tym bojlerze są trzy grzałki 3x1500W. Chcę zrobić tak, żeby do 2/3 temp. zadanej chodziły wszystkie trzy grzałki, po przekroczeniu 2/3 zadanej wyłączają się 2 grzałki i sterowanie przejmuje jedna, która ma utrzymywać temperaturę z histerezą 2stopnie.
Sterowanie oczywiście grupowe. Z tym, że zastanawiam się czy budować układ wykrywania zera dla uC. W sterowaniu fazowym jest to ważne, żeby uC wiedział kiedy wystąpi zero i ma włączyć triaka. Ale czy w przypadku sterowania grupowego jest to ważne? Wiadomo ile trwa sinus, więc jeśli nawet uC załączy triaka w czasie sinusoidy to i skończy w tym samym punkcie, tyle że na innej połówce.
Co o tym myślicie?
Ma ktoś jakieś gotowe projekty PID napisane w C dla WinAVR?
Mam za zadanie zrobić regulator temperatury wody, taki bojler. Z tym, że ciecz w zbiorniku (ok. 50l) ma stabilnie trzymać temperaturę, powiedzmy 60 stopni. Jak wiadomo grzałka jest obiektem inercyjnym z opóźnieniem, a woda ma dużą bezwładność. W związku z tym wybrałem algorytm PID do zaimplementowania w uC (ATmega16).
Sterowanie odbywa się triakiem. W tym bojlerze są trzy grzałki 3x1500W. Chcę zrobić tak, żeby do 2/3 temp. zadanej chodziły wszystkie trzy grzałki, po przekroczeniu 2/3 zadanej wyłączają się 2 grzałki i sterowanie przejmuje jedna, która ma utrzymywać temperaturę z histerezą 2stopnie.
Sterowanie oczywiście grupowe. Z tym, że zastanawiam się czy budować układ wykrywania zera dla uC. W sterowaniu fazowym jest to ważne, żeby uC wiedział kiedy wystąpi zero i ma włączyć triaka. Ale czy w przypadku sterowania grupowego jest to ważne? Wiadomo ile trwa sinus, więc jeśli nawet uC załączy triaka w czasie sinusoidy to i skończy w tym samym punkcie, tyle że na innej połówce.
Co o tym myślicie?
Ma ktoś jakieś gotowe projekty PID napisane w C dla WinAVR?