Вроде прошивка для климата и софт для калибровки сервомеханизмов, загрузки систем условий (куда, когда и как дуть) почти написаны.
Остался один вопрос, который я никак не могу решить: как определять положение заслонки смешения холодного и горячего воздуха? Ну и с какой силой этим воздухом дуть в автоматическом режиме...
Дальше очень, очень много буковок.
Есть различные варианты подхода:
Самый простой:
Этот вариант реализован manu_245: если температура слишком низкая - горячий на полную, если слишком высокая - холодный на полную.
Этот подход неплохо работает у manu_245 потому, что, насколько я понял, у него регулируется не температура воздуха, а поступление горячего антифриза. Система в результате из-за этого достаточно заторможена и через некоторое время подобная система скорее всего выйдет на какое-то более-менее стабильное состояние.
Плюсы:
1. очень простая
2. не требует каких-либо калибровок
3. в следствии пунктов 1 и 2, система крайне стабильна. Грубо говоря, она не будет долго дуть горячим воздухом в уже перегретую машину.
4. Система очень прилично реагирует на внешние раздражители. Грубо говоря, открываешь окно в мороз - начинает дуть горячим, мгновенно подстраиваясь к новым реалиям.
Минусы:
1. Очевидно, это неоптимальная работа. К примеру, климат может выдавать определенную температуру на выходе воздуховода (по датчику обратной связи). Однако, данный вариант системы ориентируется только на температуру салона, которая очень сильно задемфирована теплоемкостью салона и объемом воздуха. В результате температура на выходе воздуховода будет меняться даже при достижении нужной температуры, что будет банально неприятно.
2. Возможны колебания около заданной температуры с достаточно большой амплитудой - несколько градусов. Это связано с запаздыванием изменения температуры воздуха салона.
Вариант физический:
Для того, чтобы в машине зимой было тепло, нужно сделать две вещи: прогреть воздух в салоне (вспомнили понятие теплоемкости) и после этого продолжать дуть теплым, поскольку тепло уходит из салона (вспомнили про тепловодность стекол, дверей и прочего).
Соответственно, если мы знаем внешнюю, внутреннюю температуру нужную температуру салона, а также у нас есть константы теплопроводности и теплоемкости, то можно расчитать поток тепла, который необходимо гнать в машину.
Грубо говоря, поток тепла складывается из двух слагаемых
(InTemp-OutTemp)*KTermalConductivity
и
(DestTemp-InTemp)*KTermalCapacity
где:
InTemp - внутреняя температура
OutTemp - внешняя температура
DestTemp - заданная на климате температура
KTermalConductivity - константа теплопроводности
KTermalCapacity - константа теплоемкости
Дальше вроде как все просто - вычисляем необходимую скорость вентилятора, температуру на выходе воздуховода и вуаля...?
Плюс при правильных подборах параметров:
1. комфортный и быстрый набор нужной температуры
2. отсутствие скачков на выходе воздуховода в стабильных условиях
Минусы...:
1. Необходимость определить две константы. Ну, предположим, их можно высчитать, путем постановки эксперимента. И даже сам климат может справиться с этим заданием.
2. При неправильном определении констант, либо при изменении условий (открытое окно), климат начинает "дурить": - поддерживать не нужную температуру, а нечто другое.
Способ математический:
Возьмем заданную температуру и температуру салона. Предположим, что они различаются. Начинаем дуть воздухом с текущим положением заслонки. Смотрим за динамикой изменения салонной температуры и сверяем ее с некоторой желаемой. К примеру, мы можем задать что при 4>(DestTemp-InTemp)>2, считаем, что температура салона должна меняться со скоростью 3 градуса в минуту. Если температура салона меняется не туда или медленно/быстро - меняем положение заслонки. То есть мы ориентируемся на
DestTemp, InTemp и производную InTemp по времени.
Понятно, что подход можно улучшить, выставив какие-либо первоначальные условия и немного доделав, не допуская откровенных "косяков", типа потока холодного воздуха в и так холодную машину.
Плюсы:
1. Поддержка нужной температуры даже с учетом изменений условий
2. не нужно выполнять сложную калибровку
минусы:
1. Необходимо продумать механизмы недопущения косяков.
2. Система может выходить в нужный режим достаточно долго
3. Сложно вычислить изменение температуры в салоне за небольшое время. Это связано с тем, что воздух в салоне прогрет неравномерно и при движении машины (особенно - поворотах) перемещается по салону.
Совмещения подходов:
К примеру, можно как-то совместить физический и математический подходы. Физический даст более-менее правильное начало движения к заданной точке, а математический - на подходе к нужной температуре не даст сильно промахнуться.
Надо отметить, что, видимо, сама по себе задача не совсем простая, поскольку домашний инверторный кондиционер panasonic работает, прямо скажем, не идеально, явно предполагая какую-то теплоемкость помещения и прочее. А вот к тупому как пень кондиционеру LG в два раза более дешевому, и работующему по самому простому принципу, у меня, как ни странно, претензий никаких нет. Но одно дело - кондиционер, не дующий на человека практически никогда и другое дело - машина....
Другой пример работы климата из машины - штатный климат в фокусе, при долгой поездке он зачастую перегревает зимой салон (у многих так, не у меня одного). Что говорит о том, что их климат ориентируется не напрямую на заданную температуру и температуру салона, а на какие-то другие параметры.
Если у вас есть мысли на эту тему, отпишитесь, пожалуйста. Я уже себе мозг сломал на этой теме.