Решил написать статью об очень простом устройстве, сделанным за два вечера. Решило оно давнюю проблему, чему я сильно рад и использую его по сей день. Отработало исправно оно около 3 месяцев. Собственно вот что получилось в итоге. Кого заинтересовало, прошу под кат.
Итак результат вы видели. Начнем рассказ издалека.
Есть у меня подставка для ноутбука(у меня он выполняет функции основного компа, и включен он поэтому постоянно). А подставка не простая, для охлаждения вниз можно прикрепить 3 кулера, подставку воткнуть в USB, и кулеры закрутятся. Если кулеры поставить удачно, то градусов 7 с процессора она скидывает. В общем вещь нужная. Все бы хорошо, но кулеры в подставке, откровенно говоря так себе, и крутятся всегда на полную мощь — из чего следует что в тишине постоянный монотонный шелест. Как будто в подставке кто-то завел маленькую бензопилу. Вот собственно виновница статьи:
В один прекрасный вечер, пока с aliexpres шли посылки, я в тишине «наслаждался» пением подставки. И твердо решил — с меня хватит. Решено было управлять подставкой по usb. Рука уже потянулась влепить какой нибудь stm32f1 с аппаратным usb. А потом меня озарило — есть же digispark(та же attiny85, только на плате) Дешевый, уже с обвязкой для программного usb, идеальный для данной задачи — щелкать транзистором. Развел для него по-быстрому небольшую платку с mosfet'ом управляемым одним из пинов, и местом для RGB светодиода.
Вышло вот так:
Под спойлером есть пояснение по деталям на плате и картинка для печати если кто то соберется повторить:
Распечатал на прозрачной бумаге для лазерных принтеров в 2-ух экземплярах, склеил в один, совершенно непрозрачный фотошаблон. Это такая хитрость для тех, у кого с фоторезистом проблемы. Вырезал кусок стеклотекстолита, наклеил фоторезист в воде, разгладил пластиковой карточкой, прогладил утюгом на 60 градусах. Фото:
Дальше предстояла засветка и травление в лимонке и перекиси, а после снятие фоторезиста и наконец сверление и лужение. Итоговый результат до запайки компонентов:
Компоненты были запаяны(да что там паять — usb разъем, пара smd, да сам digispark) Без косяков в разводке не обошлось — я разметил usb маму не на том слое, из за чего она стала перевернута. И вообще я бы лучше сделал плату подключаемой к компу на тонком шнуре, но это так, к слову. Результат вы видели на первом фото.
Оставалось написать код. Вначале я хотел использовать makefile и чистый C, но решил что arduino ide быстрее. Так и поступил. Единственное что китайский digispark не хотел шиться по usb пока я не зашил официальный загрузчик hex своим программатором. После этого я хотел написать код с пид регуляцией и шимом вентилятора но передумал. В итоге на digispark'е код который просто слушает виртуальный serial порт, и если там появляется единица, то включает вентиляторы, если ноль выключает.
Теперь предстояла часть для компа. Ноут у меня на linux, поэтому я написал bash скрипт и запихнул его в автозагрузку, все что он делает это ищет в списке устройств наш digispark, раз в N минут парсит вывод команды sensors и если температура > 80 шлет 1, если < 60 шлет 0.
Устройство стабильно проработало 3 месяца. Жить стало приятнее. Ниже — код скрипта на bash.
Итак результат вы видели. Начнем рассказ издалека.
Есть у меня подставка для ноутбука(у меня он выполняет функции основного компа, и включен он поэтому постоянно). А подставка не простая, для охлаждения вниз можно прикрепить 3 кулера, подставку воткнуть в USB, и кулеры закрутятся. Если кулеры поставить удачно, то градусов 7 с процессора она скидывает. В общем вещь нужная. Все бы хорошо, но кулеры в подставке, откровенно говоря так себе, и крутятся всегда на полную мощь — из чего следует что в тишине постоянный монотонный шелест. Как будто в подставке кто-то завел маленькую бензопилу. Вот собственно виновница статьи:
В один прекрасный вечер, пока с aliexpres шли посылки, я в тишине «наслаждался» пением подставки. И твердо решил — с меня хватит. Решено было управлять подставкой по usb. Рука уже потянулась влепить какой нибудь stm32f1 с аппаратным usb. А потом меня озарило — есть же digispark(та же attiny85, только на плате) Дешевый, уже с обвязкой для программного usb, идеальный для данной задачи — щелкать транзистором. Развел для него по-быстрому небольшую платку с mosfet'ом управляемым одним из пинов, и местом для RGB светодиода.
Вышло вот так:
Под спойлером есть пояснение по деталям на плате и картинка для печати если кто то соберется повторить:
Список деталей и картинка платы для печати
U2 — irlml6244trbpf — мосфет
R3 — 0603 10 ком резистор
R1, R2 — 0603 220 ом резистор
R4 — 0.25 Вт 220 ом резистор
U6 — rgb светодиод, но он не впаивался. На мой взгляд он лишний.
Учтите, что usb мама на этой плате разведена не на том слое!
Ниже изображение для печати — ширина при печати 0.93 дюйма.
U2 — irlml6244trbpf — мосфет
R3 — 0603 10 ком резистор
R1, R2 — 0603 220 ом резистор
R4 — 0.25 Вт 220 ом резистор
U6 — rgb светодиод, но он не впаивался. На мой взгляд он лишний.
Учтите, что usb мама на этой плате разведена не на том слое!
Ниже изображение для печати — ширина при печати 0.93 дюйма.
Распечатал на прозрачной бумаге для лазерных принтеров в 2-ух экземплярах, склеил в один, совершенно непрозрачный фотошаблон. Это такая хитрость для тех, у кого с фоторезистом проблемы. Вырезал кусок стеклотекстолита, наклеил фоторезист в воде, разгладил пластиковой карточкой, прогладил утюгом на 60 градусах. Фото:
Дальше предстояла засветка и травление в лимонке и перекиси, а после снятие фоторезиста и наконец сверление и лужение. Итоговый результат до запайки компонентов:
Компоненты были запаяны(да что там паять — usb разъем, пара smd, да сам digispark) Без косяков в разводке не обошлось — я разметил usb маму не на том слое, из за чего она стала перевернута. И вообще я бы лучше сделал плату подключаемой к компу на тонком шнуре, но это так, к слову. Результат вы видели на первом фото.
Оставалось написать код. Вначале я хотел использовать makefile и чистый C, но решил что arduino ide быстрее. Так и поступил. Единственное что китайский digispark не хотел шиться по usb пока я не зашил официальный загрузчик hex своим программатором. После этого я хотел написать код с пид регуляцией и шимом вентилятора но передумал. В итоге на digispark'е код который просто слушает виртуальный serial порт, и если там появляется единица, то включает вентиляторы, если ноль выключает.
Теперь предстояла часть для компа. Ноут у меня на linux, поэтому я написал bash скрипт и запихнул его в автозагрузку, все что он делает это ищет в списке устройств наш digispark, раз в N минут парсит вывод команды sensors и если температура > 80 шлет 1, если < 60 шлет 0.
Устройство стабильно проработало 3 месяца. Жить стало приятнее. Ниже — код скрипта на bash.
#!/bin/bash
FLAG=1
while [ true ]
do
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && continue
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && continue
if [ $ID_SERIAL = "digistump.com_Digispark_Serial" ]
then
#echo "/dev/$devname - $ID_SERIAL"
#echo "$FLAG" >> /dev/$devname
CORE_0=$(sensors | grep 'Core 0' | awk '{print int($3)}')
CORE_1=$(sensors | grep 'Core 1' | awk '{print int($3)}')
#Phys_1=$(sensors | grep 'Physical id 0' | awk '{print int($3)}')
#TEMP1=$(sensors | grep 'temp1' | awk '{print int($3)}')
#TEMP2=$(sensors | grep 'temp2' | awk '{print int($3)}')
#echo "$CORE_0"
#echo "$CORE_1"
let "TEMP = (CORE_0 + CORE_1) / 2 "
#echo "$TEMP"
if [ $TEMP -gt 80 ]
then
#echo HIGH
#notify-send "HIGH TEMP, fan on, T="$TEMP
echo "1" >> /dev/$devname
echo "1" >> /dev/$devname
fi
if [ $TEMP -lt 60 ]
then
#echo LOW
echo "0" >> /dev/$devname
echo "0" >> /dev/$devname
fi
sleep 1
fi
)
done
sleep 4
done
Комментарии (12)
c_kotik
02.08.2019 13:02с пид регуляцией и шимом
Можно было просто составить массив диапазонов температур и соответствующих им уровней ШИМ.vasiaplaton Автор
02.08.2019 13:35Спасибо за совет. Я сознательно не стал так делать. Подставка включается только при разогреве до 80 градусах, и шим там уже не нужен, нужно жарить на полную. Порог срабатывания ниже я устанавливать не хочу, так как цель была избвиться от лишнего шума.
Zlovavan
02.08.2019 14:31+1Рука уже потянулась влепить какой нибудь stm32f1 с аппаратным usb.
STM32F042 — маленький недорогой проц заточный под USB-решения. Даже внутренний RC на 48 МГц есть. Как раз недавно делал на нем мелкую приблуду с аппаратным USB.
safari2012
02.08.2019 15:21+1Иногда помогает замена термопкасты и чистка от пыли штатного кулера ноутбука.
Pihail
02.08.2019 15:44А иногда нет, когда сам ноутбук имеет не сильно удачную систему охлаждения и не справляется со штатной нагрузкой. Вот тогда такие решения хоть как-то да помогают
Superl3n1n
Если Вы сделали схему, то укажите также номиналы элементов, чтобы даже совсем начинающие могли повторить.
vasiaplaton Автор
U2 — irlml6244, резистор рядом с ним 0603 — 10 ком; r1 — 0.25 вт 220 ом; u6 и два 0603 рядом с ним это rgb светодиод и два резистора для него по 220 ом. Как смогу поправить картинку в статье, сразу добавлю номиналы.
vasiaplaton Автор
Засунул в статью под спойлер «Список деталей и картинка платы для печати» все что нужно, что бы повторить проект.