ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
961319 Топик полностью
Nikolay801_ (28.11.2019 11:22, просмотров: 232) ответил 3m на Порекомендуйте алгоритм управления охлаждающим вентилятором.
полностью поддерживаю предыдущего оратора про дуть всегда. если хочется интима, то говнокод
int tPrediction; int tTarget = TARGET_TEMP; void heat(int8_t tExt){ static int dtHist[HIST_LEN] = {0}; static int8_t tPrev; static bool frst = true; static bool scnd = true; int dtSumm; if(frst){ frst = false; return; } if(scnd){ scnd = false; tPrev = tExt; } for(int i = 0; i < (HIST_LEN - 1); i++ ){ dtHist[i] = dtHist[i + 1]; } dtHist[HIST_LEN - 1] = tExt - tPrev ; tPrev = tExt; dtSumm = dtHist[0]; for(int i = 1; i < (HIST_LEN); i++ ){ dtSumm += dtHist[i]; } tPrediction = tExt; tPrediction += dtSumm; { static int pwmLong = 0; pwmLong += tTarget - tPrediction; if(pwmLong < 0) pwmLong = 0; if(pwmLong > (100 * 10)) pwmLong = 100 * 10; setpwm(pwmLong / 10); } }
ежели по науке, то это ПД в не каноническом виде.
Будь ты проклят, Перри-Утконос!