Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [114]
Наш опрос
Оцените мой сайт
Всего ответов: 1176
Главная » Статьи » Мои статьи

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




Температура корпуса винчестера на датчик микросхемы передается непосредственным контактом через пасту КПТ-8. Для этого в плате сделаны прямоугольный вырез и отверстие под крепежный винт. Толшина платы 1мм. 



Температура считывается программой и усредняется по 16 замерам.  В зависимости от нее устанавливается значение ШИМ для питания двигателя кулера. При 25 градусах - 30% (около 3,6V), при 45 градусах - 100%. Для исключения рывков скорости из-за ступенчатой характеристики датчика применена плавная автоподстройка ШИМ. Ее значение не устанавливается после замера температуры, а само пытается ее "догнать" с шагом в единицу за каждый цикл программы (около 100мс). 

Показания датчика могут иметь сдвиг относительно реальной температуры на плюс-минус 10 градусов, это связано с конструктивными особенностями микросхемы, поэтому перед использованием прибор необходимо настроить. Сделать это можно двумя способами:
1. К выводам 3 и 4 подпаять подстроечный резистор 15-22кОм и при температуре 45 градусов с его помощью выставить уровень ШИМ на максимум. Затем замерить его сопротивление и впаять в плату равный ему резистор. На плате для него предусмотрено место.
2. Найти в программе строчку "Offset = 292". Изменением этой переменной добиться аналогичного результата. Изменение этого числа на единицу приводит к сдвигу характеристики примерно на один градус.
Программа занимает менее 2 кбайт в памяти контроллера, поэтому можно применить Attiny25 или Attiny45. В образце на фото Attiny85 - просто другой под руками не было. 

Контроль вращения лопастей осуществляется с датчика кулера. При его остановке (или пропадании линии 12V) раздастся тревожный сигнал.
При температуре в 50 градусов сработает вторая сирена - двухтональная.
Для повышения надежности в программе предусмотрена работа сторожевого пса. Если программа зависнет, он через 1 секунду ее перезапустит.




Схема ШИМ достаточно сложная, однако позволяет работать с любым кулером без "свиста" и перегрева. Дроссель L1 изготовлен из ферритовой гантельки высотой 8 и диаметром 5мм. Намотка 200 витков ПЭВ-0,1.
Если Ваш кулер двухпроводный - его нужно доработать. Иногда бывает, что для этого достаточно просто припаять третий провод - все детали на его плате распаяны. Чаще плата разведена, но деталей не хватает. Собственно их всего две: транзистор n-p-n (например BC847) и резистор к его базе, сопротивлением 1...1,5кОм. Эммитер транзистора на землю, открытый коллектор к третьему проводу. Даже если плата не разведена, эти детали можно приклеить к ней и подключиться проводничками. Резистор от базы транзистора подключается к любой из катушек.
Из фьюзов программы потребуется только снять деление на 8 тактовой частоты (изначально включено в чистой микросхеме).





Автор - Mrshilov.
Категория: Мои статьи | Добавил: bascom (08.04.2011)
Просмотров: 9392 | Комментарии: 4
Всего комментариев: 4
4  
Кто и где сказал что нужно именно "среднее арифметическое"? Свою задачу - сглаживание случайных выбросов код

Temp1 = Getadc(15) 'замер температуры с усреднением
For N = 1 To 16
Temp = Getadc(15)
Temp1 = Temp1 + Temp
Temp1 = Temp1 \ 2
Next N

выполняет на отлично.
И действительно "беда", это полином, а его в школе не преподают.

2  
В прошивке можно заменить усреднение суммированием 16 значений с делением на 16 на 16 суммирований с целочисленным делением на 2
Примерно так:

Temp1 = Getadc(15) 'замер температуры с усреднением
For N = 1 To 16
Temp = Getadc(15)
Temp1 = Temp1 + Temp
Temp1 = Temp1 \ 2
Next N

Temperature = Temp1

Тогда не будет переполнения в типе Word и переменную Temp1 можно смело объявлять как Dim Temp1 As Word.
Это уменьшит размер кода примерно в два раза и он в 25 тини будет занимать примерно 60%
Да, еще можно (нужно) уменьшить размеры стеков

$hwstack = 32
$swstack = 16
$framesize = 24

тогда и RAM хватит с запасом и для Attiny25

3  
Что-то у вас с математикой беда. Это получается совсем не среднее арифметическое, а какое-то сложение с весовыми коэффициентами. Причем у последнего коэффициент 1/2, а у первого 1/65536.

1  
Quote (Mrshilov)
Программа занимает менее 2 кбайт в памяти контроллера, поэтому можно применить Attiny25 или Attiny45.

Это касается только старой прошивки. Новая для Attiny45 или Attiny85, так как занимает 26% памяти 85.
Quote (Mrshilov)
При его остановке (или пропадании линии 12V) раздастся тревожный сигнал.
При температуре в 50 градусов сработает вторая сирена - двухтональная.

Как то тихо "пищят" сирены. Буззер применил HCM1206X. Это только у меня или так должно быть?
Ввиду отсутствия некоторый деталей у меня в городе и "того, что было под рукой" схема получилась такая: http://s008.radikal.ru/i305/1105/23/70b1b4c8bd05.jpg.
Это плата http://i039.radikal.ru/1105/ec/b779ee08ebda.jpg. Готовое устройство http://i043.radikal.ru/1105/c4/c89243229eb6.jpg и http://s008.radikal.ru/i304/1105/5c/486bebd17856.jpg. Текстолит 1,5мм, поэтому МК пришлось"вогнуть" в плату. Осталось подобрать резистор и с сиреной разобраться.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
Copyright Radan Studio © 2017