Arduino термосопротивление схема

Arduino термосопротивление схема
Arduino термосопротивление схема
Arduino термосопротивление схема

В данной статье мы рассмотрим:

PID регулятор Задачи, решаемые с помощью ПИД регулятора Описание библиотеки PID регулятора Создание климат контроля для автомобиля при помощи Ардуино

Что же такое PID регулятор?

WiKi Пропорционально-интегрально-дифференциальный (ПИД) регулятор — устройство в управляющем контуре с обратной связью. Используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса.

Не совсем понятная формулировка.

Возьмем некий объем, внутри которого будем изменять температуру воздуха, путем подачи воздуха разной температуры(управление при помощь сервы). Отрегулируем температуру воздуха в объеме до некого значения T и зафиксируем положение сервы — значение S. Теперь подадим в наш объем холодный воздух, в результате которого температура Т уменьшится на значение dT.

Получили исходные данные:

Температура Т Положение сервы S Изменение температуры dT

Задача: определить изменение положения сервы dS, для возврата исходной температуры T в объеме

Вот мы и подошли к задаче, которую решает ПИД-регулятор.

В виду того, что наша система инерционная, и возможны колебания температуры, то и положение сервы также должно быть колебательным, причем каждое новое колебание будет зависеть от dT.

ПИД-регулятор позволяет управлять нашей сервой в зависимости от текущей температуры и температуры, которую необходимо установить.

Помимо данной задачи ПИД-регулятор помогает решить такие задачи как:

балансировка квадрокоптера ускорение и торможение двух-колесного устройства

Все задачи разные, но решаются при помощи ПИД-регулятора.

Для использования ПИД-регулятора в Ардуино воспользуемся библиотекой PID_v1

Описание функций библиотеки:

PID()
Создает ПИД регулятор

Синтаксис:

1 PID(&Input, &Output, &Setpoint, Kp, Ki, Kd, Direction) PID(&Input, &Output, &Setpoint, Kp, Ki, Kd, Direction)

Параметры:
&Input(double) — Входящий сигнал, который мы контролируем
&Output(double) — Выходящий сигнал, которым мы управляем
&Setpoint(double) — Заданное значение контролируемого сигнала
Kp(double>=0) — пропорциональная составляющая пид-регулятора
Ki(double>=0) — интегральная составляющая пид-регулятора
Kd(double>=0) — дифференциальная составляющая пид-регулятора
Direction(DIRECT or REVERSE) направление изменения выходного сигнала

Compute()
Расчет выходного сигнала

Синтаксис:

1 Compute() Compute()

Возвращает функция:
True: когда выходной сигнал рассчитан(расчет ведется с периодичностью заданной SetSampleTime)
False: когда ничего не было сделано

SetMode()
Устанавливает, будет ли ПИД-регулятор включен во время создания.
AUTOMATIC — будет, MANUAL — нет
По умолчанию ПИД-регулятор выключен.

Синтаксис:

1 SetMode(mode) SetMode(mode)

Параметры:
mode(AUTOMATIC или MANUAL)

SetOutputLimits()
Устанавливает границы выходящего сигнала
по умолчанию это 0-255

Синтаксис:

1 SetOutputLimits(min, max) SetOutputLimits(min, max)

Параметры:
min — минимальное значение, должно быть меньше max
max — максимальное значение, должно быть больше mix

SetTunings()
позволяет настраивать ПИД-регулятор во время работы

Синтаксис:

1 SetTunings(Kp, Ki, Kd) SetTunings(Kp, Ki, Kd)

Параметры:
Kp(double>=0) — пропорциональная составляющая пид-регулятора
Ki(double>=0) — интегральная составляющая пид-регулятора
Kd(double>=0) — дифференциальная составляющая пид-регулятора

SetSampleTime()
задает частоту расчета выходного сигнала? по умолчанию 200 мили секунд

Синтаксис:

1 SetSampleTime(SampleTime) SetSampleTime(SampleTime)

Параметры:
SampleTime — мили секунды >0

SetControllerDirection()
направление изменения выходного сигнала, когда начальный входящий сигнал меньше заданного — DIRECT, когда больше REVERSE

Синтаксис:

1 SetControllerDirection(Direction); SetControllerDirection(Direction);

Параметры:
Direction(DIRECT или REVERSE)

Пример использования:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <PID_v1.h> double Setpoint, Input, Output; PID myPID(&Input, &Output, &Setpoint,1,4,3, DIRECT); void setup() { Input = analogRead(0); Setpoint = 27; myPID.SetMode(AUTOMATIC); } void loop() { Input = analogRead(0); myPID.Compute(); analogWrite(3,Output); } #include <PID_v1.h> double Setpoint, Input, Output; PID myPID(&Input, &Output, &Setpoint,1,4,3, DIRECT); void setup() { Input = analogRead(0); Setpoint = 27; myPID.SetMode(AUTOMATIC); } void loop() { Input = analogRead(0); myPID.Compute(); analogWrite(3,Output); }

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

Исходные данные Схема подключения Скетч Настройка ПИД-регулятора

Исходные данные для проектирования:

Автомобиль с кондиционером и тросиковым управлением заслонкой печки Сервопривод Ардуино Датчик температуры LM35

Схема подключения:
pid.png Сервопривод управляет заслонкой печки.

Скетч:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include <PID_v1.h>//библиотека ПИД-ругулятора #include //библиотека серво привода double Setpoint, Input, Output; Servo myservo;//серво привод PID myPID(&Input, &Output, &Setpoint,8.6,0.5,1, DIRECT);//создаем ПИД-регулятор boolean revers; void setup() { Setpoint = 20;//заданная температура в салоне автомобиля Input = analogRead(0)/9.31;//читаем показания с датчика температуры LM35 myPID.SetOutputLimits(0, 180);//устанавливаем границы выходного сигнала для ПИД-регулятора if (Setpoint<Input){//если начальная температура больше заданной revers=true; myPID.SetControllerDirection(REVERSE);//ПИД-регулятор используем обратный } myPID.SetMode(AUTOMATIC);//включаем ПИД-регулятор } void loop() { Input = analogRead(0)/9.31;//анализируем температуру салона myPID.Compute();//считаем выходной сигнал ПИД-регулятора myservo.attach(3,630,2540);//включаем серву на 3 цифровом пине, с длинной импульса от 630 до 2540(указываем границы поворота сервы) if (revers)//если пид регулятор обратный, то сервой управляем также относительно противоположной крайней точки myservo.write(180-Output); else myservo.write(Output); delay(1000);//ждем серву myservo.detach();//отключаемся от сервы } #include <PID_v1.h>//библиотека ПИД-ругулятора #include //библиотека серво привода double Setpoint, Input, Output; Servo myservo;//серво привод PID myPID(&Input, &Output, &Setpoint,8.6,0.5,1, DIRECT);//создаем ПИД-регулятор boolean revers; void setup() { Setpoint = 20;//заданная температура в салоне автомобиля Input = analogRead(0)/9.31;//читаем показания с датчика температуры LM35 myPID.SetOutputLimits(0, 180);//устанавливаем границы выходного сигнала для ПИД-регулятора if (Setpoint<Input){//если начальная температура больше заданной revers=true; myPID.SetControllerDirection(REVERSE);//ПИД-регулятор используем обратный } myPID.SetMode(AUTOMATIC);//включаем ПИД-регулятор } void loop() { Input = analogRead(0)/9.31;//анализируем температуру салона myPID.Compute();//считаем выходной сигнал ПИД-регулятора myservo.attach(3,630,2540);//включаем серву на 3 цифровом пине, с длинной импульса от 630 до 2540(указываем границы поворота сервы) if (revers)//если пид регулятор обратный, то сервой управляем также относительно противоположной крайней точки myservo.write(180-Output); else myservo.write(Output); delay(1000);//ждем серву myservo.detach();//отключаемся от сервы }

Настройка ПИД-регулятора:
Вот мы и подошли к последнему, самому сложному этапу проектирования — Настройка ПИД-регулятора.
Останавливаться на этой теме не будем, в сети есть множество способов. От себя скажу, что настраивал методом подбора и измерений, в результате чего подобрал оптимальные параметры ПИД-регулятора указанные в скетче.

Arduino термосопротивление схема Arduino термосопротивление схема Arduino термосопротивление схема Arduino термосопротивление схема Arduino термосопротивление схема Arduino термосопротивление схема Arduino термосопротивление схема

Лучшие статьи:



Вязаные игрушки и сувениры схемы

Вязаные шапки 2015 года схемы

Электрическая схема на ман f2000

Поздравление с днем науки проза

Поздравления на свадьбу репа