Устройство (реобас) управления вентиляторами ПК.

Обсуждаем контроллеры компании Atmel.
Ответить
Самсусамыч

Сообщение Самсусамыч »

Сделал себе устройство (реобас) контроллер управления вентиляторами своего старого стационарного ПК. Данное устройство не имеет уникального алгоритма и отражает лишь мои возможности и познания. Так что в нём нет ничего уникального. Делюсь им лишь по причине – а вдруг кому понадобится. :)
Краткое описание:
Устройство имеет микроконтроллер ATmega168P (тактируется от внутреннего генератора 8 МГц) (можно перекомпилировать для меги8, 88, 368), датчики температуры LM35, ОУ 3шт. (LM2904D), мультиплексор (SN74HC4051), дисплей двухстрочный WH0802 на базе HD44780, транзисторы NPN КТ3102 и BD139. И две кнопки управления.
Реобас рассчитан на управление шестью вентиляторами. Имеет два режима работы: ручное и автоматическое управление скоростью вращения вентиляторов. Управление скоростью вращения производится изменением питающего напряжения вентиляторов, тем самым можно регулировать скорость у любого типа вентиляторов. В основном реобас предназначен для подключения 3_х пиновых вентиляторов. Но как говорилось выше, можно подключить любой тип (двухпиновых, четырёхпиновых) вентилятор.
Ручной режим обеспечивает возможность выбора скорости вращения от 50% до 100% (точнее до 97%, с учётом падения напряжения на регулируемом транзисторе). С дискретностью изменения в 5 %.
Автоматический режим устанавливает скорость вращения с учётом температуры датчика соответствующего канала. Регулировка изменения вращения производится как и в ручном режиме производится с дискретностью 5%. В диапазоне от 55% до 100%. При температуре ниже 30*С - скорость равна 55%; от 31*С до 35*С - 60%; от 36*С до 40*С – 65%; от 41*С до 45*С – 70%; от 46*С до 50*С – 75%; от 51*С до 55*С – 80%; от 55*С до 60*С – 85%; от 61*С до 65*С – 90%; выше 65*С – 100%.
СпойлерИзображение
Изображение
Схема есть и в архиве, в формате sPlan7.
Исходник на Algorithm Builder в архиве.
Regulate FAN rotateon.zip
Информация на дисплее:
ЖКИ.png
Если возникнут вопросы, спрашивайте – обязательно отвечу. :write:
Последний раз редактировалось Самсусамыч Чт окт 31, 2019 18:08:09, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Самсусамыч писал(а):Если возникнут вопросы, спрашивайте – обязательно отвечу.
Частота PWM какая? Стандартные для 4-х выводных вентиляторов 22...25кГц.? А то можно было бы управлять и 4-х выводными вентиляторами по стандарту. :roll: :)
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Самсусамыч

Сообщение Самсусамыч »

[uquote="korob",url="/forum/viewtopic.php?p=3728198#p3728198"]Частота PWM какая?[/uquote]
В районе 5 кГц (используется программный ШИМ). Нет вру… :oops: забыл уже… всё же должно быть в районе 31 кГц. Надо посмотреть... :)

Добавлено after 12 minutes 36 seconds:
Да, так и есть – 31,250 кГц.

Добавлено after 12 minutes 11 seconds:
[uquote="korob",url="/forum/viewtopic.php?p=3728198#p3728198"]А то можно было бы управлять и 4-х выводными вентиляторами по стандарту.[/uquote]
У меня древний комп (ещё пень 4)… на мамке нет 4_х пиновых разъёмов… потому делал под свой вариант. :)
Самсусамыч

Сообщение Самсусамыч »

Дополню описание:
При подаче напряжения на реобас во время включения ПК, на все вентиляторы в течение 5 секунд подаётся максимальное напряжение (скорость вращения 100%). Затем каждый вентилятор будет вращаться с той скоростью, которая выбрана индивидуально для каждого канала. Если канал находится в автоматическом режиме, то скорость вращения будет зависеть от температуры датчика. Если датчик не подключен, то вращение будет равно 55% согласно уставке (температуре ниже 30*С - скорость равна 55%). Если канал находится в ручном режиме, то скорость вращения будет зависеть от ранее выбранной скорости для этого канала.
При первой подаче напряжения на устройство все каналы будут работать в автоматическом режиме.
Кнопки управления:
Нажатием на кнопку «Up» происходит переключение вывода значений на индикатор следующего канала. Переключение между каналами производится только в одном направлении с 1_го по 6_й. С 6_го на 1_й.
Кнопка «Sel», при длительном нажатии (более 5 сек.) производит переключения режимов руч./авто. После переключения с режима на режим символ режима на дисплее начнёт мигать. Короткое нажатие на кнопку «Sel» записывает выбранный статус для этого канала в энергонезависимую память МК (EEPROM).
Так же короткое нажатие на эту кнопку при ручном режиме переводит устройство в режим выбора необходимой скорости вращения вентилятора. Выбор необходимой скорости производится короткими нажатиями на кнопку «Up». Сохранение выбранного значения производится коротким нажатием на кнопку «Sel». Выбранные значения для каждого канала записываются в энергонезависимую память МК. И при следующем включении устройства не изменяются.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Самсусамыч, ручную установку оборотов сложно будет реализовать? Очень полезная функция для предотвращения биений (когда в системе более двух однотипных вентиляторов).
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Самсусамыч

Сообщение Самсусамыч »

О какой ручной установке идёт речь? Ведь ручная установка оборотов для каждого канала реализована.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Например выставил 1500об./мин., и на всех вентиляторах посредством ООС с таходатчиков, стабилизируется скорость вращения. Т.е. не просто регулируется, а ещё и стабилизируется. :roll:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Самсусамыч

Сообщение Самсусамыч »

Может и можно такое организовать, я пока над этим не думал… но вот какая штука… у разного размера вентилятора разная частота оборотов… в существующем варианте, задаётся не частота вращения, а проценты от всего диапазона, а об/мин просто показываются измеренные по факту… вот к примеру у меня на видеокарте стоит вентилятор 20х20 его обороты при 60% = 1890. На блоке питания стоит вентилятор 80х80 обороты при 90% = 1740. На каждом винчестере (их два) стоит 90х90 от разных производителей у одного при 55% = 720 об/мин, у другого 55% = 900 об/мин.
Спрашивается как быть при таком раскладе?
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Самсусамыч писал(а):в существующем варианте, задаётся не частота вращения
Это понятно. :)
Самсусамыч писал(а):Спрашивается как быть при таком раскладе?
Речь про однотипные:
korob писал(а):когда в системе более двух однотипных вентиляторов
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Самсусамыч

Сообщение Самсусамыч »

[uquote="korob",url="/forum/viewtopic.php?p=3729361#p3729361"]Речь про однотипные:
korob писал(а):когда в системе более двух однотипных вентиляторов
[/uquote]
Как определять однотипность? :dont_know:

Ещё один момент… частота оборотов измеряется за одну секунду и по полученному подсчёту выводится как за минуту… то есть разница в один оборот за секунду вносит изменения на 30 оборотов… иными словами у меня погрешность составляет в районе 30 оборотов.

Давайте поступим так… если Вам действительно такое нужно, подумайте как это реализовать, а я постараюсь для Вас это прописать в коде… :)
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Самсусамыч писал(а):Как определять однотипность?
Можно не определять, просто задать вручную например по 1500об./мин. и всё. :)
Самсусамыч писал(а):подумайте как это реализовать
Я делал на логике десяток лет тому назад с помощью ФАПЧ. Импульсы с таходатчиков сравнивал с опорными с помощью частотно-фазового детектора, и соответствующим образом формировалось управляющее напряжение. Я думаю 168-я мега осилит программную ФАПЧ на 6 каналов. :roll:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Самсусамыч

Сообщение Самсусамыч »

Хорошо подумаю как это реализовать…

Добавлено after 5 hours 48 minutes 10 seconds:
[uquote="korob",url="/forum/viewtopic.php?p=3729374#p3729374"]Я думаю 168-я мега осилит программную ФАПЧ на 6 каналов. :roll:[/uquote]
Вот прикидываю, прикидываю и не лезет в голову от чего начать отталкиваться… :dont_know: есть конкретно ШИМ (байтовое значение 255) и как это значение привязать к неизвестному диапазону частоты вращения? Давайте «Сусанин показывайте путь». :) А то мои мозги что-то в ступоре… :))
Самсусамыч

Сообщение Самсусамыч »

[uquote="korob",url="/forum/viewtopic.php?p=3729374#p3729374"]Импульсы с таходатчиков сравнивал с опорными с помощью частотно-фазового детектора, и соответствующим образом формировалось управляющее напряжение.[/uquote]
Как Вы определяли диапазон установки опорного значения не зная характеристик вентилятора?
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Очень просто, у 97,28% компьютерных вентиляторов на выходе таходатчика 2 импульса на оборот. :) Т.е. для установки например 1500об./мин. опорное значение значение должно быть 50Гц.
Или имеется ввиду что то другое, полоса захвата ФАПЧ например? :roll:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Самсусамыч

Сообщение Самсусамыч »

По просьбе Simidko прошивка перекомпилирована под МК ATmega8.
Regulate fan_ATmega8.hex
Напоминаю МК тактируется от внутреннего генератора 8 МГц.

Добавлено after 9 minutes 24 seconds:
[uquote="korob",url="/forum/viewtopic.php?p=3729753#p3729753"]Очень просто, у 97,28% компьютерных вентиляторов на выходе таходатчика 2 импульса на оборот. :)[/uquote]
Я не о том… как читать обороты с вентилятора я знаю… у меня же это реализовано.


Я не пойму как допустим подстроится к характеристикам вентилятора… как пример: вот задал я например диапазон регулировки оборотов в устройстве до 2000, а подключенный вентилятор имеет возможность только максимум 1500. Вот в чём непонятки… :dont_know:
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

Разве это непонятки? :))) Если оператор выставил недостижимое значение, то причём здесь работа ФАПЧ? ФАПЧ в этом случае должна штатно отрабатывать свою задачу, т.е. разгонять вентилятор на сколько это возможно, до самых максимальных оборотов конкретного вентилятора.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Самсусамыч

Сообщение Самсусамыч »

[uquote="korob",url="/forum/viewtopic.php?p=3729771#p3729771"]ФАПЧ в этом случае должна штатно отрабатывать свою задачу, т.е. разгонять вентилятор на сколько это возможно, до самых максимальных оборотов конкретного вентилятора.[/uquote]
Вот теперь конкретно и понятно. :beer:
Самсусамыч

Сообщение Самсусамыч »

[uquote="korob",url="/forum/viewtopic.php?p=3729753#p3729753"]Т.е. для установки например 1500об./мин. опорное значение значение должно быть 50Гц.[/uquote]
Дело в том, что в моём варианте обороты регулируются не изменением частоты, а изменением скважности (ШИМ)… к чему это я? Да к тому, что не могу привязать обороты к скважности для регулировки… :oops: может из программистов кто-то подскажет на словах как это можно реализовать?
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

я открыл код... не могу в нем найти измерение частоты и обратной связи по оборотам... только по температуре...

Добавлено after 4 minutes 18 seconds:
по идее вся "верхняя" часть (пользовательские запросы и датчики температуры) должна задавать не % мощности мотора, а желаемые обороты...
а "нижняя" (являясь многоканальным ПИД регулятором) должна их поддерживать, выставляя заполнение PWM.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Самсусамыч

Сообщение Самсусамыч »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3731597#p3731597"]я открыл код... не могу в нем найти измерение частоты и обратной связи по оборотам... только по температуре...[/uquote]
Обратной связи нет… измерение оборотов производится таймером0… полученные импульсы за 1 сек. умножаются на 30 – это есть значение оборотов от вентилятора. Они показываются на дисплее просто по факту и не на что не влияют. :roll:
Изображение

А вот как реализовать регулирование, я ещё не «придумал» - знаний не хватает. :(
по идее вся "верхняя" часть (пользовательские запросы и датчики температуры) должна задавать не % мощности мотора, а желаемые обороты...
У меня нет никакого ПИД… регулирование производится дискретно по уставкам описанным в первом посте… :roll:
Вот этот макрос реализует вышеописанное…
Изображение
Ответить

Вернуться в «AVR»