ПИД-регулятор температуры, Python - устранение шумов, STM32 - PullRequest
0 голосов
/ 03 апреля 2019

Я читаю значения термистора NTC через АЦП с разрешением 12 бит.10 образцов считываются в диапазоне 100 м / с при температуре окружающей среды (без нагрева или охлаждения), выглядит следующим образом

ADC(PA0)= 1 -> 3919
ADC(PA0)= 2 -> 3934
ADC(PA0)= 3 -> 3932
ADC(PA0)= 4 -> 3922
ADC(PA0)= 5 -> 3907
ADC(PA0)= 6 -> 3925
ADC(PA0)= 7 -> 3930
ADC(PA0)= 8 -> 3919
ADC(PA0)= 9 -> 3915
ADC(PA0)= 10 -> 3928
ADC(PA0)= 11 -> 3915
ADC(PA0)= 12 -> 3922
ADC(PA0)= 13 -> 3918
ADC(PA0)= 14 -> 3918

Какая будет соответствующая статистическая функция (режим, среднее значение, среднее и т. Д.) Для извлечения большинствасоответствующее значение из этого набора.Оглядываясь назад, также следует учитывать, что значения могут быть считаны во время включения нагревательного элемента, а также во время охлаждения (вентилятор включен).

1 Ответ

1 голос
/ 04 апреля 2019

Ваши значения выглядят как «нормальное» отклонение АЦП. В зависимости от того, какой у вас элемент регулирования температуры (TEC, PT, Fan, ...) и нагрузки, я бы предложил запускать алгоритм PID каждые 100 м (в качестве первой попытки). Если ваша система действительно медленная, вы можете использовать событие длиннее Kt.

Поскольку температуры (или изменения температуры) в основном линейные, вы можете использовать скользящее среднее, чтобы устранить некоторый шум на входе.

В хорошо спроектированном оборудовании обогреватель или вентилятор не должны влиять на ваши измерения. При плохой конструкции усреднение устранит большую часть шума из вашего сигнала (если он не слишком большой)

...