[lang_de]Die Übersetzung kommt demnächst[/lang_de]
Приветствую своих дорогих читателей.
В этот раз речь пойдет о переделке контроллера вентиляторов от Thermaltake HARDCANO-12.
Случилось так, что этот контроллер работал -работал, да приказал нам долго жить, а сам отправился в мир иной.
Вот так выглядит коробочка от него, на которой хорошо видать дисплей.
Разборки с устройством показали, что процессор не реагирует на кнопки управления. Выкидывать было жалко такую игрушку, тем более что внутренностей там всего ничего:
Всего одна платка поперек корпуса шириной около 5 см. Один контроллер от фирмы Holtek HT46R64, 4 мосфета, инвертор для EL-пленки, пищалка, микросхема логического инвертора, ну и коннектор питания. Вот собственно и все. Зато корпус красивый, с хорошей «мордой». А у меня была идея, как раз, сделать себе собственный контроллер вентиляторов, что бы компьютер не сильно шумел. Вот и подвернулся случай. Недого думая, нарисовал я схемку с использованием почти всех деталей со старой платы, протравил платку и спаял вот такое чудо:
Верхняя сторона:
Нижняя сторона:
И с подключенным дисплеем:
Контроллер взял свой любимый — AVR ATMega 128. Почему любимый, потому что их у меня просто много есть, но об этом как нибудь в другой раз.
Основная трудность в изготовлении именно этого проекта была в управлении дисплеем. Сам дисплей не имел своего контроллера на борту. Просто выводы сегментов шли напрямую к старому микроконтроллеру. Порыскав по интернету нашел его описание в pdf формате, из которого вычитал, что он на своем борту имеет управление LCD дисплеями. А так же то, что тот чип на плате изготовлен маской. Т.е. попросту — не перепрограммируемый. Одноразовый, так сказать.
Тогда передо мной встала задача узнать, как же управляются дисплеи, у которых нету своего контроллера. В принципе, ничего сложного не оказалось. Нужно просто менять довольно часто минус и плюс на выводах Commons и Segments, которые в данный момент включить надо. Вот и все, собственно. Но большинство из наших читателей в курсе, что у нас-то только 5 вольт имеется в наличии, если внимательно посмотреть на плату. Есть еще и 12 вольт, но это будет уже очень много. Порыскав в интернете, наткнулся на интересное решение этой проблемы. Так как для дисплея достаточно разницы между Commons и Segments в 2.5 — 3 вольта, можно применить следующую схему:
Проводники CommDrv0 и CommDrv1 подключаются к ножкам микроконтроллера. Средняя точка между сопротивлениями идет на вход Common дисплея. В итоге у нас получился этакий делитель напряжения. А входы дисплея Segments подключаются напрямую к ножкам микроконтроллера. Теперь, когда нам надо на Common входе получить «+» а на Segment входе — «-», мы ставим выход микроконтроллера CommDrv1 в логический «0», а CommDrv0 — в логическую «1», и Segment ставим в «0». Для смены полюсов меняем все местами: Segment — «1», CommDrv1 — «1», CommDrv0 — «0». Вот и все. И между Segments и Commons у нас будут наши искомые 2.5 вольта, поскольку у нас делитель с равными плечами.
Датчики температуры я взял тоже от оригинального изделия. Выглядят они вот так:
Прозвонив их Ом-метром выяснил, что это сопротивление на макисмум 10кОм, меняющееся в сависимости от температуры окружающей среды. Чем меньше температура, тем больше сопротивление, в нашем случае — 10 кОм. И чем больше температура — тем сопротивление меньше. Встает вопрос — как подключать к контроллеру. А все так же, по схеме делителя:
Как видно из схемы — на 5 вольт мы поставили обычное сопротивление в 10 кОм, а на землю у нас ведет наш датчик температуры. Теперь осталось в микроконтроллере преобразовать напряжение в средней точке в цифры, и можно принимать решение о том, надо ли включить вентилятор или выключить.
Включение вентилятора в схеме довольно простое:
Сигнал с микроконтроллера приходит на буфер U2B и включает мосфет Q2 (APM9410) . Обратите внимание на Pull-Up резистор R6. Он нужен для того, чтобы, когда процессор находится в ресете или же когда он еще не запрограммирован, вентилятор работал! Мы же не хотим, что бы наша система перегрелась, пока мы перепрограммируем контроллер? Так же стоит посмотреть на 3-й контакт штекера JP6, к которому подключается вентилятор. Это контакт скорости вращения вентилятора. На вентиляторе это выход с открытого коллектора, поэтому надо испольховать подтягивающее сопростивление. На схеме его не видать, так как используется внутреннее сопротивление в микроконтроллере.
Ну и осталось дело за малым — написать программу!
В тексте программы вы найдете процедуру таймера, во время прерывания которого происходит определение частоты вращения вентилятора. При подсчете оборотов вращения надо обратить внимание на один интересный момент. 3-й контакт вентилятора работает только тогда, когда на вентилятор подается напряжение! А так как для изменения скорости мы используем ШИМ — регулятор, то напряжение на вентиляторе присутствует не всегда! И этот момент надо отслеживать в программе!
А вот так выглядит девайс в работе:
Если сравнивать с функциональностью оригинального контроллера — то у моего теперь нету возможности переключения между градусами по Цельсию и Фаренгейту.
Зато появилась возможность калибровки датчиков температуры. Для этого надо запастись небольшим количеством льда и кипятка, и замерить напряжение на датчиках, когда они опущены в таящий лед, и когда они опущены в кипящую воду. Так мы получим напряжение при 0 градусов и при 100 градусах Цельсия. Приблизительно, конечно, но нам и не нужна особая точность.
Так же появилась возможность калибровки вентиляторов. Тут я подразумеваю процесс определения минимального напряжения для каждого вентилятора, когда он начинает крутиться, и максимально возможное количество оборотов.
А так же появилась возможность, чего не было у оригинального устройства, добавления новых свойств и фичей! И это, на мой взгляд, самое интересное свойство всех устройств и поделок, которые сделаны собственноручно!
Ну и на последок список всех файлов для данного проекта:
- Схема — funcontrolshematic.pdf
- Исходный код программы для контроллера ATMega 128 — temperaturecontrol_v_1_0.rar
- Описание старого контроллера Holtek HT46R64 — ht46x64v140.pdf
- Описание мосфета APM910 — apm9410.pdf
- Описание контроллера AVR ATMega 128 от Atmel — atmega128-fullerrata.pdf
13 комментариев to “Переделка контроллера вентиляторов от Thermaltake|Umbau einen Ventilator-Kontroller von Thermaltake”
Leave a Reply
You must be logged in to post a comment.
May 15th, 2010 at 10:48
Еше бы создателям Термалтейка сказать об этом 😉 Схема подключения была один в один слизана с их платы.
Поглядел сейчас даташитку на APM9410. В таблице стоит Gate Threshold Voltage Vgs — Min 1, Typ 1.5, max 2 V.
И наш мосфет стоит снизу нагрузки, т.е. между Source и Gate надо максимум 2 вольта иметь, чтобы он полностью открылся, что мы и имеем.
Вот если бы мы его поставили сверху нагрузки по схеме, тогда да, надо было бы подавать 12+Vgs. Или же, вы скорее всего подумали по P-мосфет. Там так же надо было бы подавать напряжение побольше.
May 16th, 2010 at 1:47
Да, Вы правы, Vgs не большой и в принципе наверное разница для кулера не велика(будет там честных 12V или около 10V) однако всё же ваши дальнейшие рассуждения не верны. Ещё хочу сказать, что в таком включении транзистор не работает в ключевом режиме и при более-менее серьёзных токах обязательно будет дико греться.
Дело в том, что для того чтобы перевести его в режим насыщения — на затворе должно быть ~15V.
>И наш мосфет стоит снизу нагрузки
Как же снизу то, та? В схеме чётко видно, что он «сверху».
Он именно напряжение питания коммутирует у Вас.
>Или же, вы скорее всего подумали по P-мосфет. Там так же надо >было бы подавать напряжение побольше.
Вот на P-мосфет как раз таки не нужно подавать ничего выше 12V.
Только НИЖЕ. при 12 он будет закрыт, а всё что ниже 12 — будет его открывать. А вообще то отталкиваться нужно от потенциала Source и эти 12 будут для транзистора 0V, а понижение напряжения будет для него -1, -2, -3, -5 и тут то большинство из них уже и откроется ))) А относительно общего провода устройства там будет 12 — 5 = 7V
Вы, простите, как-то не очень хорошо видимо поняли работу полевого транзистора.
Чтобы долго не разглагольствовать, я лучше попрошу Вас провести небольшой эксперимент — выставьте скважность вашего ШИМ на максимум(100%) и измерьте напряжение на выходе.
Если оно будет равно VCC12 (по схеме) — с меня пиво 😉
И второй эксперимент: уберите R7 и вместо него сделайте подтяжку ~1K на +5V, имитируя тем самым высокий уровень контроллера(~5V) — это позволит вам убедиться в том, что при такой схеме подключить контроллеры напрямую тоже нельзя.
Пожалуйста также ознакомьтесь с веткой форума
electronix.ru/forum/index...amp;#entry193793
Схему посмотрите, ссылка как раз ведет на сообщение со схемой.
А потом комментарии почитайте )
>Еше бы создателям Термалтейка сказать об этом
Создатели Термалтейка просто экономили и ставили более дешевые N-Channel мосфеты. Кстати, старались минимизировать негативный эффект и выбрали с минимальным Vgs!
Их я прекрасно понимаю, не понимаю я почему Вы меня не понимаете 🙂
И всё же непорядок! На кулере не будет положенных ему 12V. Это хоть и не смертельно, но ИМХО неправильно.
May 16th, 2010 at 11:18
Вас то я понял 🙂
Первый ваш коммент, в принципе, как и этот, я писал после «веселой» ночки борьбы со своим RAID массивом, который не хотел нормально увеличиваться после замены дисков и без потерь данных. Сейчас вроде все работает как надо.
А эту схему я делал довольно давно, и еще до того, как прочитал все статейки на тему мосфетов, и естественно забыл, чего там и как, и отвечая на ваш коммент, думал, что тут сделал все правильно, как и в другой своей поделке, не поглядев схему внимательно (я обычно не помню всех подробностей всех своих поделок, которые делал полгода-год назад). Поэтому и думал, что поставил тут мосфеты снизу нагрузки.
Если же я все таки правильно помню, то при 100% ШИМа — на вентиляторах было что-то около 10-10.5 вольт. Сейчас мерять — это разбирать половину компьютера, что совсем не входит в мои ближайшие планы.
И кулеры даже с 10тью вольтами воют довольно громко и охлаждают, как им и положенно, а борьба была именно с тем, чтобы они не выли, как голодные волки, чего, собственно, мы и добились.
Странно, почему же Термалтейковцы поставили эти мосфеты таким образом? Или я плату неправильно прочитал и схему неправильно срисовал?
В принципе — это одна из моих первых таких поделок и я тогда был молодой и зеленый. Теперь то я уже кое чему научился ;-). Вам спасибо.
Кстати — в своей машинке я поставил мосфеты правильно 😉 в H-мосте. Даже DC-DC StepUp конвертер поставил для них. Ездит. Правда незнаю, когда до ума доведу ее.