ThermalTake Logo Fan – ума палата, да ключ потерян

для раздела Блоги
Это копипаст моей статьи, вышедшей год назад на другом ресурсе. К сожалению, ресурс закрыли, а старые ссылки не работают...
Переношу сюда, может, кому-то пригодится.


Часть1.
Довольно давно мне подарили это чудо, но я, не будучи фанатом подобных девайсов, положил его в дальний угол, где он благополучно и пролежал до вчерашнего дня.
Вот его официальное видео, возможно, года три назад оно кого-то впечатляло…


Теперь о главном :)
ThermalTake обманывает вас !!!!!!!!!!!!!!!!!
Обещанные измерения шума и температуры - либо изначально развод лохов любителей моддинга по полной, либо недобросовестность китайских товарищей, на чьих фабриках собирается этот кулер. Ни крики и оры ему в лицо, ни включение термофена - ничто не смогло поколебать заветные 20(+/-2)dB и 20(+/-2)*C. Иногда, правда, кулер ни с того, ни с сего завышал температуру сразу градусов на 6, но тут же исправно возвращался к “норме” -

Убедившись в полной бесполезности такой индикации, я полез внутрь.
Под крышкой оказался чип и несколько SMD-элементов. Какой из них отвечал за измерение уровня шума - даже боюсь предположить

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

К счастью, это удалось, "мозги" снова заработали, но больше экспериментировать в этом направлении желание пропало.
Справедливости ради надо сказать, что на обратной стороне платы было посадочное место под терморезистор NTC. Но реально там был запаян обычный SMD-резистор на 10кОм. Локально грея его термофеном, я так и не мог добиться какого-либо существенного изменения его сопротивления.

Микроконтроллер, сосавший все показания из пальца и отправлявший их на светодиоды, оказался без маркировки. Вообще.
Т.е. она не была сошлифована, как это часто приходится наблюдать на “особо секретных” чипах, а просто отсутствовала изначально. Но характерное число выводов (18) и не совсем обычное расположение пинов, отвечающих за питание (5 и 14) выдали в нем представителя многочисленного семейства контроллеров Microchip.
На пины, через которые производится прошивка этого контроллера (4,12,13), был подкинут программатор. Однако, ни он, ни пара его коллег так и не смогли опознать чип

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

Затем я "сдул" термофеном виновника торжества и ближайшее к нему окружение

...и запаял на его место обычный микроконтроллер с FLASH-памятью PIC16F819. В SMD-корпусе из тех, что были у меня в наличии, оказался только он, но, в принципе, вместо него можно поставить "всенародно любимого старца" PIC16F84 или более современный и доступный PIC16F628. Затем снова подпаял интерфейс для программирования и залил тестовую прошивку. Немного повозился с таймингами… В общем, пропеллер заработал


PS.
Зачем все это делалось ? (при том, что в сети просто уйма подобных проектов)
Во-первых, изображение, создаваемое вращающимся вентилятором, действительно, эффектно выглядит. Другое дело, что использовать это надо с умом. Даже простые часы – и те несут гораздо больше информации, нежели эфемерный уровень шума и температура воздуха в комнате (да-да, ведь кулер работает на вдув).
Во-вторых, определенные затруднения при изготовлении “с нуля” подобных устройств вызывает подвод напряжения к электронике. А тут вращающийся трансформатор с достаточно высоким КПД уже сделан для вас и готов к использованию. Плюс готовая плата с распаянными светодиодами.
Ну и, в-третьих, я в который раз убедился, что некоторые производители моддингового железа рассматривают своих потенциальных клиентов, как овец. Как аудиофилам иногда впаривают куски кабеля ценою в сотни долларов, так и поклонникам всего, что “свистит и мигает” присовывают абсолютно никчемные девайсы. Ладно хоть, цена на них не так кусается ;).

В следующей части разберем схему подключения и составим тестовую прошивку для микроконтроллера.

Часть 2.
Теперь по схеме включения.
Не совсем понятна логика китайских инженеров, разрабатывавших эту схему, но их много, значит им виднее…
Первоначально напряжение, вырабатываемое вращающимся трансформатором, не было ограничено ничем. Это дает гипотетическую опасность убить микроконтроллер, если напряжение на нем вдруг превысит максимально допустимое. На практике, конечно, бывает, что PIC-и “держат” и 7, и даже 9 вольт, но надеяться на это при их-то массовом производстве… Либо применяется т.н. «высоковольтная» версия (PIC16HVxx). Поскольку у нас используется обычный 5-вольтовый контроллер, в схему запаян стабилитрон на 5,1в.
Заменой R1 ограничен ток через синий светодиод (изначально он был ок. 50мА),
Напряжение с катушки, используемое также и для синхронизации работы, снова подается на контроллер напрямую. Здесь перерезана дорожка и добавлен резистор R2.
Нижний (по схеме) вывод R3 “отрезан” от земли и сверху накинута перемычка. На время программирования перемычка отпаивается. Такие сложности связаны с тем, что на 12 и 13 пинах, которые подключаются к программатору, висят еще и светодиоды.
Сам программатор подключается к четырем точкам – общему минусу, 4-му выводу контроллера, и к двум крайним светодиодам, которые электрически соединены с выводами 12 и 13.
Также на плате разведено место для установки восьмого светодиода, но сам он не запаян. Сэкономили.

На рисунке показан окончательный вариант схемы, который использовался при экспериментах -

Подключение терморезистора я не рисовал, поскольку в “наших” программах он не поддерживается.

Теперь разберем тестовую программу.
Изначально микроконтроллер поставляется с чистой памятью, в которую уже сам пользователь должен залить необходимую ему прошивку. Для написания и отладки кода существуют целые программные комплексы с симуляторами и дебаггерами (MPLab), но в данном случае можно воспользоваться обычным «блокнотом».
Открываем в нем файл test.asm :

LIST      P=16f819, F=INHX8M; задаем тип применяемого контроллера

include "P16f819.inc"; и файл с описанием его регистров

__CONFIG 0x2F10; задаем конфигурацию контроллера, определяющую тип его
; генератора, защиту от чтения, методы сброса и пр.
;__CONFIG _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _WDT_OFF & _CP_ON & _BOD_OFF & _PWRTE_ON & _IESO_OFF & _FCMEN_OFF

#defineINPUTPORTA,7; назначаем PORTA,7 как вход сигнала с датчика вращения
;=======================================
ORG0x00; задаем адрес начала программы
INIT; инициализация внутренних регистров микроконтроллера
bsfSTATUS,RP0; выбираем первый банк регистров
movlwb'10000000'; 7-й пин PORTA определяем как вход
movwfTRISA
movlwb'00000000'; все пины PORTB определяем как выходы
movwfTRISB
clrfADCON1; отключаем встроенный АЦП (в нашей программе он не нужен)
clrfOPTION_REG
movlwb'01100000'; устанавливаем частоту встроенного генератора 4MHz
movwfOSCCON
bcfSTATUS,RP0; возвращаемся к нулевому банку регистров
clrfSSPCON; отключаем встроенный UART
clrfCCP1CON; отключаем встроенный ШИМ
clrfADCON0; второй регистр, отвечающий за АЦП (также отключаем)
clrfINTCON; запрещаем прерывания (в нашей программе они не используются)
clrfPORTB; обнуляем PORTB (поскольку в начале своей работы микроконтроллер
; может установить на этом порту произвольные значения)
;=======================================
;основной цикл программы
;=======================================
START
clrw; обнуляем регистр общего назначения
btfscINPUT; но если на входе появился высокий уровень от датчика,
movlw.255; то присваиваем ему другое значение, равное 255,
movwfPORTB; и выводим его в PORTB
; т.о. при отсутствии сигнала на входе все светодиоды будут
; погашены, а при его появлении - зажигаться.
gotoSTART; после чего идем в начало цикла (и так по кругу)
;=======================================
END; конец программы



Это исходник, написанный на ассемблере. Для того, чтобы преобразовать его в прошивку, запускаем MPASMWIN.exe, выбираем в нем наш test.asm (кнопка “Browse”), затем жмем “Assemble”


Если все нормально и ошибок при компиляции не возникло, в папке с нашим исходником появляется файл test.hex. Это и есть прошивка.
Для программирования микроконтроллеров можно использовать любой из доступных программаторов. Описывать их здесь нет смысла, наиболее популярные из них:
IcProg (http://www.ic-prog.com )
WinPic800 (http://www.winpic800.com ),
а также PonyProg (http://www.lancos.com/prog.html ) - правда, этот хоть и привлекает новичков своей простотой и “всеядностью”, но при этом глюкав безмерно и вызывает наиболее сильные приступы батхерта.
Для наиболее комфортной работы можно воспользоваться программатором, выпускаемым самим Microchip-ом - PICkit2 (http://www.microchip.com.ru/Support/PICkit2_art.html )

Результатом тестовой прошивки будет следующее – TEST.MPG

В следующей части напишем полноценную программу, выполняющую более осмысленные действия.


Часть 3. Самая короткая.
Пробуем выводить свой текст на вращающийся “экран”.
1. Качаем (ну, или пишем самостоятельно) исходник и две таблицы символов - table1.inc и table2.inc
2. Компилируем его, на выходе получаем прошивку.
3. Программируем микроконтроллер.
4. ???????
5. PROFIT

Разумеется, пределов совершенству нет.
В сети есть куда более масштабные проекты, напр. http://www.youtube.com/watch?v=l4F8UbM-1t4
Дерзайте !



обсуждение
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают