Привет всем. Есть задача, управлять треходовым клапаном. Клапан приводиться в движение специальным сервоприводом. Упр. напряжение на котором от 2-х до 10В изменяю с помощью ШИМа. Температуру меряю с помощью
DS1820 с точностью до 1 градуса,. т.к. большая точность не требуеться.
Есть задача написать ПИД на Си. Для данной задачи достаточно только ПИ-закон. Т.е диф. составляющую не используем.
Вот кусок кода, нарыл в инете и немного доработал, выкинув лишнее. Может быть кто сталкивался с подобной задачей, будет ли такое работать.
Заранее благодарен.
/***************************************
Themp - текущая температура
Themp_Set - установленная температура
delta_Themp - ошибка регулятора задача регулятора держать ее как можно ближе
равной 0.
old_delta_Themp - старый отсчет ошибки регулятора.
S - полный сигнал
I - интегральная составляющая
Kp - зона пропорциональности
Ti - интегральная постоянная
*/
void PID()
{
delta_Themp = Themp_Set - Themp;
I += (delta_Themp + old_delta_Themp)/(2 * Ti);
if(I ‹ 0) I = 0;
else if (I › Kp) I = Kp;
S = (delta_Themp + I) / Kp;
if(S ‹ 0) S = 0;
else if(S › 1) S = 1;
old_delta_Themp = delta_Themp;
}
// Все величины нормированные к единице.
// Td как минимум в десять раз меньше Ti.