Перейти к содержанию

Изменение заданной температуры в ПИД-регуляторе


karomag

Рекомендуемые сообщения

Помогите, пжл. Сделал простенькую паяльную станцию на stm32f103c8t6. Регулировка сделана ПИД-регулятором. Все работает для заданной программно температуры. Добавил две кнопки + и -.

//Опрос кнопок
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_9) == 0) {
  setTemp -= 5;
}
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_10) == 0) {
  setTemp += 5;
}

//ПИД регулятор
if (setTemp >= 0) {
  regTmpErr = setTemp - measureT; // вычисление ошибки рассогласования

  regTmpInt = regTmpInt + regTmpErr * koeffRegTmpInt; // интегральная часть
  if (regTmpInt < 0)
    regTmpInt = 0; // ограничение снизу
  if (regTmpInt > MAX_PWM)
    regTmpInt = MAX_PWM; // ограничение сверху

  regTmpPr = regTmpErr * koeffRegTmpPr; // пропорциональная часть

  regTmpDif = (regTmpErr - regTmpErrPrev) * koeffRegTmpDif; // дифференцирующая часть

  regTmpErrPrev = regTmpErr; // перегрузка предыдущей ошибки

  pwmVal = (u16) regTmpInt + regTmpPr + regTmpDif; // сумма составляющих
  if (pwmVal < DEAD_TIME)
    pwmVal = 0; //мертвое время ШИМ
  if (pwmVal > (MAX_PWM - DEAD_TIME))
    pwmVal = MAX_PWM;
  TIM_PWMOutput(pwmVal);
} else {
  pwmVal = 0;
  TIM_PWMOutput(pwmVal);
}

Но при нажатии, происходит, что-то для меня непонятное: нажал + температура начинает расти без остановки, - соответственно вниз температура.

Что я не правильно делаю?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Нужно переменные флаги добавить в опрос кнопок . У Вас за одно нажатие темп может до 500 установиться.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

19 минут назад, artos5 сказал:

Нужно переменные флаги добавить в опрос кнопок . У Вас за одно нажатие темп может до 500 установиться.

Ну у меня этот алгоритм выполняется в цикле 10мс.

//timer 3 interrupt
void TIM3_IRQHandler(void) {

	//if interrupt happens the do this
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
		//clear interrupt and start counting again to get precise freq
		TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

		interruptCount++; // счетчик циклов прерываний

		sumU += get_adc_value(); // суммирование выборок АЦП
		// проверка числа выборок усреднения
		if (interruptCount >= MEASURE_PERIOD) {
			interruptCount = 0;
			averageU = sumU; // перегрузка среднего значения
			sumU = 0;
			flagReady = 1; // признак результат измерений готов
		}
	}
}

int main(void) {
...
  
 if (flagReady == 1) {
  flagReady = 0;
  adcVal = averageU / MEASURE_PERIOD;
  measureU = powerU / 4095 * adcVal;
  measureT = 99.893 * measureU + 25.012;

  //Опрос кнопок
  if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_9) == 0) {
    setTemp -= 5;
  }
  if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_10) == 0) {
    setTemp += 5;
  }
  
  //ПИД регулятор
			if (setTemp >= 0) {
...

Разве этого не достаточно?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

дело не в этом. Достаточно или нет. Дело в том, что проблема не в регуляторе

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...