RSS
people

Переделка контроллера вентиляторов от Thermaltake

Приветствую своих дорогих читателей.

В этот раз речь пойдет о переделке контроллера вентиляторов от Thermaltake HARDCANO-12.

Случилось так, что этот контроллер работал -работал, да приказал нам долго жить, а сам отправился в мир иной.

Вот так выглядит коробочка от него, на которой хорошо видать дисплей.

Коробка из под Thermaltake HARDCANO 12

Разборки с устройством показали, что процессор не реагирует на кнопки управления. Выкидывать было жалко такую игрушку, тем более что внутренностей там всего ничего:

Внутренности контроллера

Всего одна платка поперек корпуса шириной около 5 см. Один контроллер от фирмы Holtek HT46R64, 4 мосфета, инвертор для EL-пленки, пищалка, микросхема логического инвертора, ну и коннектор питания. Вот собственно и все. Зато корпус красивый, с хорошей «мордой». А у меня была идея, как раз, сделать себе собственный контроллер вентиляторов, что бы компьютер не сильно шумел. Вот и подвернулся случай. Недого думая, нарисовал я схемку с использованием почти всех деталей со старой платы, протравил платку и спаял вот такое чудо:

Верхняя сторона:

Новый котроллер вентиляторов, верхняя сторона

Нижняя сторона:

Новый котроллер вентиляторов, нижняя сторона

И с подключенным дисплеем:

Новый котроллер вентиляторов с подключенным дисплеем

Контроллер взял свой любимый — AVR ATMega 128. Почему любимый, потому что их у меня просто много есть, но об этом как нибудь в другой раз.

Основная трудность в изготовлении именно этого проекта была в управлении дисплеем. Сам дисплей не имел своего контроллера на борту. Просто выводы сегментов шли напрямую к старому микроконтроллеру. Порыскав по интернету нашел его описание в pdf формате,  из которого вычитал, что он на своем борту имеет управление LCD дисплеями. А так же то, что тот чип на плате изготовлен маской. Т.е. попросту — не перепрограммируемый. Одноразовый, так сказать.

Тогда передо мной  встала задача узнать, как же управляются дисплеи, у которых нету своего контроллера. В принципе, ничего сложного не оказалось. Нужно просто менять довольно часто минус и плюс на выводах Commons и Segments, которые в данный момент включить надо. Вот и все, собственно. Но большинство из наших читателей в курсе, что у нас-то только 5 вольт имеется в наличии, если внимательно посмотреть на плату. Есть еще и 12 вольт, но это будет уже очень много. Порыскав в интернете, наткнулся на интересное решение этой проблемы.  Так как для дисплея достаточно разницы между Commons и Segments в 2.5 — 3 вольта, можно применить следующую схему:

Управление входом Сommon

Проводники CommDrv0 и CommDrv1 подключаются к ножкам микроконтроллера. Средняя точка между сопротивлениями идет на вход Common дисплея. В итоге у нас получился этакий делитель напряжения. А входы дисплея Segments подключаются напрямую к ножкам микроконтроллера. Теперь, когда нам надо на Common входе получить «+» а на Segment входе — «-», мы ставим выход микроконтроллера CommDrv1 в логический «0», а CommDrv0 — в логическую «1», и Segment ставим в «0».  Для смены полюсов меняем все местами: Segment — «1», CommDrv1 — «1», CommDrv0 — «0». Вот и все. И между Segments и Commons у нас будут наши искомые 2.5 вольта, поскольку у нас делитель с равными плечами.

Датчики температуры я взял тоже от оригинального изделия. Выглядят они вот так:

Датчик температуры

Прозвонив их Ом-метром выяснил, что это сопротивление на макисмум 10кОм, меняющееся в сависимости от температуры окружающей среды. Чем меньше температура, тем больше сопротивление, в нашем случае — 10 кОм. И чем больше температура — тем сопротивление меньше. Встает вопрос — как подключать к контроллеру. А все так же, по схеме делителя:

ADC вход

Как видно из схемы — на 5 вольт мы поставили обычное сопротивление в 10 кОм, а на землю у нас ведет наш датчик температуры. Теперь осталось в микроконтроллере преобразовать напряжение в средней точке в цифры, и можно принимать решение о том, надо ли включить вентилятор или выключить.

Включение вентилятора в схеме довольно простое:

Motor Driver

Сигнал с микроконтроллера приходит на буфер U2B  и включает мосфет Q2 (APM9410) . Обратите внимание на Pull-Up резистор R6. Он нужен для того, чтобы, когда процессор находится в ресете или же когда он еще не запрограммирован, вентилятор работал! Мы же не хотим, что бы наша система перегрелась, пока мы перепрограммируем контроллер? Так же стоит посмотреть на 3-й контакт штекера JP6, к которому подключается вентилятор. Это контакт скорости вращения вентилятора. На вентиляторе это выход с открытого коллектора, поэтому надо испольховать подтягивающее сопростивление. На схеме его не видать, так как используется внутреннее сопротивление в микроконтроллере.

Ну и осталось дело за малым — написать программу!

В тексте программы вы найдете процедуру таймера, во время прерывания которого происходит определение частоты вращения вентилятора. При подсчете оборотов вращения надо обратить внимание на один интересный момент. 3-й контакт вентилятора работает только тогда, когда на вентилятор подается напряжение! А так как для изменения скорости мы используем ШИМ — регулятор, то напряжение на вентиляторе присутствует не всегда! И этот момент надо отслеживать в программе!

А вот так выглядит девайс в работе:

Fun Controler в работе

Если сравнивать с функциональностью оригинального контроллера — то у моего теперь нету возможности переключения между градусами по Цельсию и Фаренгейту.

Зато  появилась возможность калибровки датчиков температуры. Для этого надо запастись небольшим количеством льда и кипятка, и замерить напряжение на датчиках, когда они опущены в таящий лед, и когда они опущены в кипящую воду. Так мы получим напряжение при 0 градусов и при 100 градусах Цельсия. Приблизительно, конечно, но нам и не нужна особая точность.

Так же появилась возможность калибровки вентиляторов. Тут я подразумеваю процесс определения минимального напряжения для каждого вентилятора, когда он начинает крутиться, и максимально возможное количество оборотов.

А так же появилась возможность, чего не было у оригинального устройства, добавления новых свойств и фичей! И это, на мой взгляд, самое интересное свойство всех устройств и поделок, которые сделаны собственноручно!

Ну и на последок список всех файлов для данного проекта:

13 комментариев к “Переделка контроллера вентиляторов от Thermaltake”

  1. Onemon пишет:

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

  2. MasterAlexei пишет:

    Буфер U2 (ABCD, их там 4е штуки, по одному на мосфет) использовался в оригинальной схеме, так как тот микроконтроллер, что был в оригинальной схеме, не мог управлять мосфетом напрямую, слабые ножки у него были. В принципе, в этой схеме с использованием ATMega128 этот буфер можно опустить, но тогда надо в программе полярность включения мосфетов поменять. Я его оставил только для чистоты дизайна, так сказать.

  3. Onemon пишет:

    сразу ещё вопросик.как вы определяли контакты сегментов на индикаторе, так же использовали переполюсовку?

  4. MasterAlexei пишет:

    Контакты определял методом «научного тыка», если не сильно долго подавать напряжение на дисплей (не больше секунды и не больше 2.5 вольт), то особо ничего с ним не случится. Ну а за секнду можно уже заметить, какой сегмент включился.

  5. Onemon пишет:

    раз уж начал, то продолжу...я новичок(в микроконтроллерах), пока до уровня написания программ не дошел, но уж больно понравилась схема, к тому же как раз давно валяется похожий экран, только с какого то Ph метра и захотелось немного больше возможностей от китайского девайса(у меня СВО стоит,вот как раз только помпа и система контроля китайская стоит).на схеме у вас не замечено конкретно какой вывод на какой сегмент...если не сложно, хотя бы изначальный рукописный вариант выдать...

    P.S.у выводов сегмента нет разницы где Commons и Segments? и ещё просветите человека — я видел на большом разъеме пайку двухстороннюю, которую визуально не видно — это просто практика или хитрый подход? ещё раз спасибо

  6. MasterAlexei пишет:

    Изначальный рукописный вариант чего? Все дисплеи разные, одно только одинаковое — все сегментные дисплеи выполнены по схеме матрицы.

    Обычно производители дисплеев группируют контакты таким образом, чтобы сначала шли столбцы, а за ними уже строки (или наоборот), но очень редко (я такой один только видел) они делают все в перемешку. Основная задача — это найти именно общий провод для нескольких сегментов, т.е. определить, где столбцы, а где строки, и в соответстии с этим уже строить программу — алгоритм, по которому будет производиться управление дисплеем. И для каждого отдельного дисплея надо начинать все с нуля. Обычно я рисую сегменты, какие есть на дисплее, если их мало, и потом подписываю, какие выводы включают каждый сегмент, а потом просто ищу закономерности. Я так уже завел три дисплея, причем один из них был VFD (Vacuum Fluorecent Display). Кстати — этот же метод годится для определения матрицы клавиатур ;-) . Но это не в тему уже.

    С точки зрения подключения питания, разницы, где commons а где Segments, нет. Так как все равно там «переменное» напряжение. Но нам надо знать, где там строки, а где столбцы, ну об этом я уже писал выше.

    Про двухстороннюю пайку — это интересный но довольно трудоемкий метод, подсмотренный мной на форуме ixbt.com. Там кто-то рассказывал, как делать: перед установкой разъема, сначала тоненькие проводки (я распускаю многожильный провод для этого) просовываем через отверстия, и, пригнув их, припаиваем к дорожке на верхней стороне, а на обратной стороне оставляем около 4х мм, и откусываем остальное. Так проделываем со всеми контактами, которвые надо пропаять с верхней стороны. Затем ставим разъем, и пропаиваем с нижней стороны, но уже с проводками вместе, лишнее отрезаем. Вот и все. Само собой диаметр отверстия должен быть достаточным, чтобы там одновременно и штыри разъема поместились и проводки. Но штыри обычно квадратные, так что места хватает для проводка.

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

  7. Onemon пишет:

    эх,придется отложить и дальше копать контроллеры...и последнее — столько по этому поводу информации в сети, аж глаза разбегаются.Вы говорили чё сами познали чудеса контроллеров — не подскажите литературу, для освоения с нуля, написанная на понятном языке.

    Чуть не забыл. я тут как то увидал где то на форуме упоминание про LDmicro для микроконтроллеров, вам не знакомо(я просто раньше сталкивался с промышленными контроллерами)?

  8. MasterAlexei пишет:

    Про LDMicro слышу впервые, так что тут ничем не помогу. Сам я уже программил на С/С++ под винды, поэтому не стал изгаляться, и продолжил в том же духе и на микроконтроллерах.

    Что касается литературы — я начинал с описаний микроконтроллеров и примеров программ. Да и давно это уже все было, я даже и не скажу теперь сейчас, было ли что то конкретное у меня из литератруры (в бумажном виде точно ничего нету).

    Но вот есть очень хороший ресурс, где человек целый курс для начинающих написал easyelectronics.ru Там справа в рубрике «начинающим» почитайте, там именно на примере AVR микроконтроллеров с самого нуля и до довольно таки сложных проектов все описывается. Ну и форумы, коих много, очень помогают.

  9. Модель авто - Пульт управления | Fun Electronic пишет:

    [...] было бы сообразить что нибудь типа матрицы, благо опыт есть уже такого управления дислпеем. Но раз такое дело, то надо же как-то заполнить [...]

  10. _dx пишет:

    Всё хорошо, но только мосфеты до конца открываться не будут. На выходе вместо 12V вы получите около 9.5 Чтобы в вашем случае полевик полностью открылся на затвор нужно подать 12+gate threshold вольт.

    А ещё подключить эти же мосфеты напрямую к контроллеру едва-ли получилось бы. И дело тут не в «слабости» выходов, а в «пятивольтовости» :)

    Чтобы управлять с контроллера — их нужно ставить «об землю» а не в питание.

  11. MasterAlexei пишет:

    Еше бы создателям Термалтейка сказать об этом ;-) Схема подключения была один в один слизана с их платы.

    Поглядел сейчас даташитку на APM9410. В таблице стоит Gate Threshold Voltage Vgs — Min 1, Typ 1.5, max 2 V.

    И наш мосфет стоит снизу нагрузки, т.е. между Source и Gate надо максимум 2 вольта иметь, чтобы он полностью открылся, что мы и имеем.

    Вот если бы мы его поставили сверху нагрузки по схеме, тогда да, надо было бы подавать 12+Vgs. Или же, вы скорее всего подумали по P-мосфет. Там так же надо было бы подавать напряжение побольше.

  12. _dx пишет:

    Да, Вы правы, 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. Это хоть и не смертельно, но ИМХО неправильно.

  13. MasterAlexei пишет:

    Вас то я понял :)

    Первый ваш коммент, в принципе, как и этот, я писал после «веселой» ночки борьбы со своим RAID массивом, который не хотел нормально увеличиваться после замены дисков и без потерь данных. Сейчас вроде все работает как надо.

    А эту схему я делал довольно давно, и еще до того, как прочитал все статейки на тему мосфетов, и естественно забыл, чего там и как, и отвечая на ваш коммент, думал, что тут сделал все правильно, как и в другой своей поделке, не поглядев схему внимательно (я обычно не помню всех подробностей всех своих поделок, которые делал полгода-год назад). Поэтому и думал, что поставил тут мосфеты снизу нагрузки.

    Если же я все таки правильно помню, то при 100% ШИМа — на вентиляторах было что-то около 10-10.5 вольт. Сейчас мерять — это разбирать половину компьютера, что совсем не входит в мои ближайшие планы.

    И кулеры даже с 10тью вольтами воют довольно громко и охлаждают, как им и положенно, а борьба была именно с тем, чтобы они не выли, как голодные волки, чего, собственно, мы и добились.

    Странно, почему же Термалтейковцы поставили эти мосфеты таким образом? Или я плату неправильно прочитал и схему неправильно срисовал?

    В принципе — это одна из моих первых таких поделок и я тогда был молодой и зеленый. Теперь то я уже кое чему научился ;-) . Вам спасибо.

    Кстати — в своей машинке я поставил мосфеты правильно ;-) в H-мосте. Даже DC-DC StepUp конвертер поставил для них. Ездит. Правда незнаю, когда до ума доведу ее.

Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.