ШИМ-контроллер вентилятора охлаждения двигателя ВАЗ(прототип)
Эта статья — 2 часть и логическое продолжение опыта разработки доступного адаптивного контроллера для охлаждения электровентилятора ВАЗ. (1 часть читаем по ссылке здесь)
Первый опыт был направлен, прежде всего, на то, что бы понять и оценить собственные возможности в разработке микроконтроллерного устройства для решения наболевшей у всех темы перегрева либо же надоедливого щелканья и гула под капотом.
Почти 10 месячный период эксплуатации самодельного контроллера на моей «десятке» показал просто отличные результаты: стрелка показателя ОЖ при любой температуре и дорожной обстановке (пробки, жара, дальняки в 600 и более км и т.д.), практически никогда не отклонялась от отметки в 90 градусов, что способствовало постоянной ровной работе двигателя и бортовой сети. После этого было решено продолжить разработку уже более качественного и функционального прототипа устройства, которое можно было бы адаптировать под другие авто, а так же вручную настраивать поддерживаемую температуру ОЖ.
В алгоритм работы нового контроллера лег всё тот же принцип, как и в первой версии: с помощью дополнительного датчика ОЖ читались пороговые значение температуры, при которых вентилятор плавно стартовал, разгоняясь при повышении и замедляясь при понижении температуры, и по достижении максимального порога температуры раскручивался на полную мощность (как при штатной сработке реле). Но теперь значения датчика температуры не «жестко» вписывались в прошивку, а появилась возможность множество раз программировать эти значения «на ходу» с помощью внешней кнопки, и светодиода, отображающего процессы настройки и режимы работы контроллера. При первом нажатии на кнопку, действующие температурные показания датчика записываются как пороговое значение запуска вентилятора, а по нажатию во второй раз – записывается порог максимальных оборотов. Значения остаются в энергонезависимой памяти микроконтроллера и при отключении питания данные сохраняются. Теперь можно калибровать любые значения температуры, даже обратные(для датчиков с положительным/отрицательным температурным коэффициентом), и использовать почти любые резистивные датчики. Такой подход поможет более четко регулировать температуру ОЖ как в теплый, так и в холодный сезоны.
Подключение к бортовой сети осталось прежним: контроллер с дополнительным датчиком включается параллельно штатной схеме, и никак не влияет на срабатывание реле электровентилятора ОЖ. («подключил и забыл»). Но нужно учитывать, что данный девайс будет работать только на авто, где вентилятор коммутируется «массой» а не «плюсом»! (тоесть подключен постоянный +12В по штатной схеме, а реле подключет массу). ВАЗ2110 в нашем случае – идеальный кандидат. Ну а так – вольтметр в помощь))
Теперь схему можно запитать от любых +12В «зажигания», например от «+12В форсунок», так как в прошивке реализована задержка включения в 4 секунды, для того, что бы успеть завести горячий двигатель, не давая сразу запуститься вентилятору и нагрузить бортсеть при включении зажигания.
Схему и готовую печатную плату я решил разработать и оставить в общем доступе на облачном сервисе для проектировки электронных схем (ссылка на проект)
Сначала плата была изготовлена «по-старинке» вручную, но после успешного запуска и отладки прототипа, решил заказать в Китае пробную партию фабричных плат, в результате получилось очень даже неплохо!
Контроллер включения вентилятора охлаждения радиатора на ARDUINO. Часть 1.
Во время эксплуатации не сильно нравиться включение «карлсона» почти в красной зоне. в пробках то и дело норовит закипеть))) решил параллельно ЭБУ установить контроль за работой вентилятора, а именно включение последнего на пару-тройку градусов ниже чем заложено в прошивке. В дальнейшем планируется создание блока с автономным и ступенчатым включением вентилятора (аки аналог блока «Борей», от компании «СилычЪ»)
Гаджет будет на базе Arduino Nano. Температуру планирую брать от термопары (датчика температуры двигателя) для сигнализации (стояла на машине, была не подключена. После подключения оказалось что по характеристикам не подходит. А сюда в самый раз)
Проект на стадии завершения разработки. нарисована схема от руки и приблизительный алгоритм работы микроконтроллера.
И вот наконец-то выбрал свободный денек и все сделал и протестировал.
Вот что получилось:
дальше шла много часовая пайка/перепайка.
(на схеме изображен полный вариант приборчика, с плавным повышением оборотов в зависимости от нагрева двигателя. Но пока нет времени доделать по конца. На данном этапе задействована только опция регулирования температуры включения вентилятора)
на удивление все вышло компактно и поместилось в пачке от «Тик-Так». запитал Ардуино через понижающий модуль c 7-28 В до 5В. основное питание +12В взял от провода, который идет на переключатель скоростей вентилятора отопителя (и предохранитель лишний ставить не надо, и провод под рукой т. к. от него еще и магнитола запитана). Минус нашел там же рядом.
В качестве измерителя температуры пришлось отказаться от термопары. Очень уж геморное подключение (в плане преобразования сигнала). На счастье завалялся датчик температуры ds18b20 (в герметичном корпусе)
который прекрасно работает с Ардуино. Датчик решил закрепить в чугунном тройнике. Сам датчик идеально входит в штуцер под шланг 10мм. Тройник врезал в шланг обогрева дроссельной заслонки
настроил как моей душе угодно, и получил вот такой результат:
Алгоритм работы:
1) при включении зажигания Ардуина проверяет есть ли в памяти значения включения и выключения вентилятора, если есть — переходит в режим работы, если нет — в режим настройки (загорается светодиод на 10сек).
2) Если включить зажигание с нажатой кнопкой — сброс настроек и переход в режим настройки.
3) Настройка: заводим авто, греем до необходимой температуры (я смотрел что бы термостат открылся и нижний патрубок стал горячим) нажимаем на кнопку. после загорания светодиода отпускаем кнопку. Вентилятор должен включиться. Ждем скок считаем нужным и снова нажимаем кнопку. Светодиод должен погаснуть и вентилятор отключиться. Ардуина автоматически перейдет в режим работы.
4) Режим работы: Ардуина отслеживает температуру каждую секунду. при превышении заданного значения включает вентилятор, при снижении ниже — выключает.
Управление производиться через мосфет-транзистор, который соединяет массу и выход реле вентилятора.
В итоге имеем систему параллельную штатной.
Компоненты куплены на Али и Джуме:
1) Arduino NANO — 140 р.
2) Понижающий модуль — 100 р.
3) Датчик температуры — 80 р.
4) Мосфет — 100 р. за 10 шт
5) Тройник и 3 штуцера — около 150 р
6) Провода и прочая мелочёвка — около 100 р.
Форум arduino.ua
#1 2017-05-04 23:33:10
Управление вентилятором радиатора автомобиля, разработка.
Дано мерс w124;
У него два эл. вентилятора с потреблением 30А;
Ардуино Леонардо;
16х2 + I2C;
Датчик температуры штатный в автомобиле, резистивный.
При температуре 20 градусов напряжение 4,5в, при 90 2в. (Более детальная таблица в разработке);
Необходимо:
— Считывание температуры с датчика согласно таблице, вывод на ЛСД
— ШИМ управление вентилятором согласно заданным параметром (Например: Запуск на 30% при т 80градусов и плавный набор оборотов до 100% при 110 градусов и выше)
— Включение для работы с кондиционером при внешнем управлении, 2 входа 50 и 100%
— Аварийный запуск при обрыве цепи датчика температуры
Силовая часть будет выглядеть, как мощный полевик либо будет использован блок управления вентилятором от серийных авто, например такой, ему нужен шим частотой от 100 до 200гц и скважностью от 10 до 90% (как я понял частоту от 100 до 200 сложно реализовать на ардуино).
Пока удалось лишь слепить набросок из чужих кодов
и вот код, который пока не понятен и не интегрирован. В нем используется таблица.
Не понятно, что за числа в таблице.
На данном этапе код не работает, так как:
1. Не интегрирована таблица
2. Если запустить схему с температурой 100 градусов вентилятор не запускается (Нужно попасть в диапазон от 30 до70)
3. Нужно инвертировать зависимость температуры от напряжения при повышении напряжения растет и температура, нужно наоборот.
Буду благодарен любым подсказкам, очень хочу научится программировать ардуинки.
#2 2017-05-04 23:52:10
Re: Управление вентилятором радиатора автомобиля, разработка.
«Не понятно, что за числа в таблице. «
похоже на linear interpolation
#3 2017-05-05 07:11:39
Re: Управление вентилятором радиатора автомобиля, разработка.
вы только начинаете, поэтому вам понятнее и проще делать по этапам
запустите дисплей
запустите вент, научитесь им управлять
потом температурой займитесь
ну а дальше всё в кучу
#4 2017-05-05 19:14:27
Re: Управление вентилятором радиатора автомобиля, разработка.
вы только начинаете, поэтому вам понятнее и проще делать по этапам
запустите дисплей
запустите вент, научитесь им управлять
потом температурой займитесь
ну а дальше всё в кучу
#5 2017-05-05 19:16:13
Re: Управление вентилятором радиатора автомобиля, разработка.
«Не понятно, что за числа в таблице. «
похоже на linear interpolation
Я где-то «чувствую», что леонардо не для автомобиля, хотя и веских аргументов не вижу.
Может вы что то предложите более подходящие?
#6 2017-05-06 07:28:40
Re: Управление вентилятором радиатора автомобиля, разработка.
сначала нужно выяснить что за датчик температуры, потом посмотреть его даташит, нафига таблицы строить))))
Остання редакція vvr (2017-05-06 07:29:01)
#7 2017-05-06 07:58:02
Re: Управление вентилятором радиатора автомобиля, разработка.
yarikne для температуры возьмите медь 100. PT1000 не берите, не его задача )
это удорожание проекта, но выхода у вас особо нет.
#8 2017-05-06 13:47:22
Re: Управление вентилятором радиатора автомобиля, разработка.
сначала нужно выяснить что за датчик температуры, потом посмотреть его даташит, нафига таблицы строить))))
#9 2017-05-06 13:56:17
Re: Управление вентилятором радиатора автомобиля, разработка.
yarikne для температуры возьмите медь 100. PT1000 не берите, не его задача )
это удорожание проекта, но выхода у вас особо нет.
Вентилятор на Arduino Uno, управляемый с помощью температуры
В этом проекте на Arduino мы будем управлять скоростью вращения вентилятора постоянного тока в соответствии с температурой в комнате и показывать изменения этих параметров (температуры и скорости вращения вентилятора) на жидкокристаллическом (ЖК) дисплее 16×2. В проекте будет происходить обмен данными между Arduino, ЖК дисплеем и датчиком температуры DHT11. Управлять скоростью вращения вентилятора постоянного тока мы будем с помощью широтно-импульсной (ШИМ) модуляции, с помощью которой можно управлять средним значением напряжения, подаваемого на вентилятор.
Необходимые компоненты
Принципы ШИМ модуляции
Наша конструкция будет состоять из трех частей. В первой части будет измеряться температура с помощью датчика температуры и влажности DHT11. Вторая часть будет считывать значение температуры с выходного контакта DHT11, преобразовывать ее в температуру по шкале Цельсия и управлять скоростью вращения вентилятора постоянного тока с помощью ШИМ. А третья часть проекта будет показывать значение температуры и скорости вращения вентилятора на ЖК дисплее.
В этом проекте мы использовали датчик DHT11, который подробно описан в статье про измерение температуры и влажности с помощью Arduino. Но в этом проекте мы этот датчик будем использовать только для измерения температуры.
Принцип функционирования проекта достаточно прост. Мы будем создавать сигнал ШИМ модуляции на соответствующем контакте ШИМ платы Arduino, который будем подавать на базу транзистора. В соответствии с этим управляющим напряжением транзистор будет изменять значение напряжения на своем выходе, с которого и подается управляющее напряжение на вентилятор.
Пример ШИМ модуляции на цифровом осциллографе представлен на следующем рисунке.
Скорость вращения вентилятора и соответствующие ей значения ШИМ и ее коэффициента заполнения представлены в следующей таблице.
| Температура | Цикл занятости ШИМ | Значение, передаваемое в функцию управления ШИМ в Arduino | Скорость вращения вентилятора |
| менее 26 | 0% | 0 | выключен |
| 26 | 20% | 51 | 20% |
| 27 | 40% | 102 | 40% |
| 28 | 60% | 153 | 60% |
| 29 | 80% | 204 | 80% |
| больше 29 | 100% | 255 | 100% |
Что такое ШИМ? Простыми словами это такая технология, с помощью которой мы можем управлять напряжением или мощностью. К примеру, мы подаем на электродвигатель напряжение 5 Вольт, которое будет заставлять его вращаться с некоторой скоростью. Если после этого мы снизим подаваемое напряжение на 2 Вольта (т. е. до 3 Вольт), то скорость вращения электродвигателя также уменьшится. Более подробно об использовании ШИМ можно прочитать в следующей статье: управлению яркостью свечения светодиода с помощью ШИМ.
Основная идея ШИМ состоит в использовании цифровых импульсов с определенным коэффициентом заполнения (циклом занятости), который и будет отвечать за скорость вращения вентилятора.
Формула для расчета коэффициента заполнения будет выглядеть следующим образом:
где T – общее время импульса Ton+Toff (сумма его активного и пассивного состояния)
Ton – время активного состояния импульса (означает 1 )
Toff – время пассивного состояния импульса (означает 0)
Более наглядно это представлено на следующих рисунках.
Работа схемы
Схема устройства представлена на следующем рисунке.

Исходный код программы
Сначала мы произведем подключение библиотек для работы с ЖК дисплеем и датчиком температуры (dht), а затем инициализируем контакты для подключения ЖК дисплея, датчика температуры и вентилятора.
Затем инициализируем все остальные нужные нам вещи в секции setup. А затем в секции loop мы будем использовать dht-функции для считывания значений с датчика температуры, извлекать из этих значений температуру, переводить ее в температуру по шкале Цельсия и отображать ее значение на ЖК дисплее.
После этого мы будем сравнивать значение температуры с заранее установленными нами температурными порогами (выше приведенная в тексте статьи таблица) и исходя из результатов сравнения будем генерировать соответствующее значение ШИМ на выходном контакте, к которому подключен транзистор, управляющий скоростью вращения вентилятора.
Для генерации ШИМ мы будем использовать функцию analogWrite(pin, PWM value). Мы будем использовать все 8 бит. Значение ШИМ будет эквивалентно аналоговому значения напряжения. То есть, к примеру, если мы хотим сгенерировать ШИМ с коэффициентом заполнения 20%, то мы в эту функцию (analogWrite) должны передать значение 255/5.
Универсальный блок управления электровентилятором системы охлаждения автомобиля. ШИМ-контроллер 3.0
По многочисленным просьбам читателей и единомышленников представляю разработку и реализацию универсальной адаптивной системы управления охлаждением двигателя автомобиля.
Предистория.
В этой статье речь пойдет о последнем устройстве, разработанном, на основе идей описанных в моих прошлых материалах:
Часть 1
Часть 2
Концепция та же: адаптивное ШИМ-управление скоростью вращения вентилятора ОЖ на основе показаний температуры двигателя.
Поставленные задачи.
За несколько лет эксплуатации подобных, разработанных мною устройств, и благодаря обратной связи с людьми, кто был заинтересован проектом и теми, кто повторил устройства, были собраны отзывы с пожеланиями улучшить, доработать и расширить функциональные возможности, из которых:
— увеличение мощности подключаемой нагрузки;
— реализация более плавных пусковых моментов вентилятора;
— доработка алгоритма работы контроллера при пусках двигателя «на горячую», для более тихой и эффективной работы вентилятора;
— возможность подключения сигнала от климата/кондиционера, для более быстрого охлаждения;
— принудительный пуск вентилятора от кнопки;
— универсальность подключения к любому датчику температуры, как штатному, так и отдельному, а так же чтение любого аналогового сигнала температуры (например от ЭБУ к стрелке температуры на приборке).
Разработка и реализация.
Сама электронная схема и архитектура контроллера практически не отличается от предыдущих вариантов из прошлых статей, за тем лишь исключением, что были увеличены в количестве силовые элементы (ключи VT1, VT2), добавлен вход для сигнала кондиционера (a/c.4 на разъеме P1) и стабилизирован вход для чтения показаний датчика/сигнала температуры.


























