Теперь осталось все таки определиться с конкретным алгоритмом управление. Как и любому ленивому программисту мне не хочется долго переделывать программу в поисках оптимального решения. Хочу все и сразу!
Аппаратное обеспечение для управления ВЗ обсуждается тут viewtopic.php?f=70&t=965
В прошивке появился модуль smcontrol который отвечает за управления ШД. Если кратко, то есть 2 функции:
Code: Select all
void stpmot_dir(uint8_t dir);
void stpmot_run(uint16_t steps);
Обратной связи для оперделения крайних положений заслонки пока нет, но в будущем при желании можно будет ее сделать. Пока выдаем большее число шагов для инициализации и принимаем за крайнее положение.
Для меня очевидно что нужно делать открытие ВЗ не только от температуры но и следить за оборотами. По таблице зависимости положения ВЗ от температуры выставляется положение ВЗ. В менеджере есть параметр, назовем его WRMRPM (обороты прогрева). Система старается поддерживать заданные обороты прогрева дополнительно меняя положение ВЗ. Положение ВЗ = Положение из таблицы + корректировка по оборотам.
Выход из режима прогрева будет осуществляться по следующим условиям:
- Температура охлаждающей жидкости выше 70°
- Обороты кратковременно превысили значение, назовем его WLRPM (задается из менеджера, например 2500мин-1)
- Вход ручника (можно переназначить). На первое время обойдемся без этого.
- Вход датчика скорости (можно переназначить). На первое время обойдемся без этого.
Алгоритм предложенный dimonfish:
download/file.php?id=1188
viewtopic.php?f=70&t=965&start=220
[Добавлено 31.01.2012]
Видео уже работающей системы. download/file.php?id=1254