Терморегулятор для холодильного шкафа

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Аватара пользователя
LeonTaradajko
Родился
Сообщения: 7
Зарегистрирован: Вт авг 07, 2018 14:38:23
Откуда: г.Могилев-Подольский

Терморегулятор для холодильного шкафа

Сообщение LeonTaradajko »

Жил-был дед и было у него два холодильных девайса.Один - простой холодильник он подарил племянику-студенту,а себе оставил холодильный шкаф.Поскольку оный вещь специфиццкая,в нем все замерзает в дубъ,а не стоило бы... И решил дед поскору-потихоньку смастерить себе под ентот-с шкаф внешний терморегулятор дабы продукты в нем в лед не мерзли.И смастерил...
За основу взял контроллер ATtiny2313,термодатчик DS18B20,нашел в шифонере три кнопки,зуммер и нехитрую схемку опто-тиристора,кою прикупил некогда на Скайлоте.Блок питания 12в взял от польского антенного усилителя,вмонтировал туда с минимумом обвязки стабилизатор 7805СV и +5вольт получил дед без особого труда.На отдельном куске печатной платы закрепил панельку для контроллера,сделал обвязку.Корпусом послужила коробочка от жвачки.В нее вмонтировал двузнаковый LED индикатор для контроля температуры и для настроек,приклеил три кнопки и еще 2 светодиода: Красный,если температура + и синий,если -.Силовой блок соорудил вне в термоусадочной трубке и разместил в отдельной розетке под 220 вольт куда подключается холодильный шкаф.
Все получилось немного грубовато,но вполне работоспособно.Сейчас соберу материал и вечером все выложу здесь с подробными описаниями.

Добавлено after 3 hours 5 minutes 25 seconds:
Итак с чего же мы начнем? Наверное с принципиальной схемы.Я по ходу буду объяснять что и к чему.Для опытных эти трюки суть -альные излишества,а новичкам не помешает.
Изображение
Итак выводы 20 и 1 соединены резистором 10Ком.Это подтяжка пина RESET,чтобы микруха 2313 не сбрасывалась от всякого случайного чиха какого-либо процесса или контакта.Еще одна подтяжка 5Ком идет к выводу 19.Туда подцеплен вывод Dat от датчика DS18B20 и ему положена подтяжка по даташиту.Еще термодатчик получает +5в для запитки и масса естесственно. Выводы 12-18 это пины порта В0-В6 через ограничительные резисторы 150 ом обеспечивают сегменты LED индикатора.Без них индикатор светит слишком ярко аж не надо.В стиле хороших традиций стОяло бы сегмент А индикатора запитывать от пина0,сегментБ -пин1 и т.д.У меня увы вышло наоборот.Так было удобнее вести распайку.Поэтому и программа синтеза цифр написана с учетом этого "наоборот".
Индикатор у меня двухразрядный,индикация динамическая,так что еще два пина ПортД5 и ПортД6 обеспечивают эти разряды.
ПортД.4 через резистор выведен на красный светодиод.Если он светится,значит в холодильном шкафу температура плюсовая.И рядом с ним ПортД.3 обеспечивает синий светодиод - признак холода.
ПортД.2 выведен на тиристорную оптопару.О ней поговорим малость позже.
ПортА.1 выведен на зуммер.Он должен начать пищать,когда забарахлит термодатчик.Его можно заменить светодиодом.
ПортыА.0,ПортД0 и ПортД1 служат для настройки желательной температуры в холодильном шкафу.Все,что выше ее,выставляет лог.1 на пинД.2 и включает мотор холодильника.
Вот и все мудрости.
Всю онную братию я загнал в коробку из-под жвачки "ТИк-так".Вверху LEDиндикатор,слева два светодиодика,под ними три кнопки: старт настроек,наращивание температуры,уменшение температуры.Повторное нажатие на старт настроек записывает значение в ЕПРОМ и входит в обычный рабочий режим.Зуммер прицепил сбоку,хотя он здесь нужен пуще для красы.
Фотки онного творения решил не выкладывать.Все и так понятно,а оформить каждый может на свой вкус и цвет.
Теперь силовая часть.На Скайлоте когда-то нашел вот такую вещицу
Изображение
Она идет в разобраном виде и все надо паять вручную.По входу IN между выходом портаД.2 и входом оптопары я поставил резистор 510 ом вместо рекомендованых на схеме 300ом.Но ничче.Работает четко.Далее будем внимательны и аккуратны.На провод HOT по схеме подключаем фазу 220 вольт.NEUTRAL -это ноль,земля.Розетка для подключения холодильника включается там,где написано LOAD (нагрузка).Симистор паяется без теплоотвода.Греться он впечатлительно не будет из-за малой мощности холодильника.Ну и не забудьте спрятать это добро куда-нибудь от случайного прикосновения.Если розетка вместительная,можно попробовать спрятать прямо в ней.Я разместил рядом,но сунул все в термоусадочную трубку.
Вся схема питается напряжением +5 вольт и можно придумать что угодно,чтобы его обеспечить.Я,например.воспользовался готовым блочком от польской антенны,о чем написал постом выше.
Итак техническая часть у нас,предположим,готова.Осталось прошить контроллер,сунуть его в панельку и запускать прибор в работу.

Добавлено after 34 minutes 45 seconds:
Да,чуть было не забыл.LED индикатор я использовал с общис анодом.Вот такой.
Изображение
Внизу красными линиями указано как надо запараллелить сегменты для динамической индикации.
Итак программа.Написана она в Баскоме АВР.Пробовал Микропаскаль,но он крэкнутый и выдает глюки.
Кому любо,можете переписать в Си или Ассемблер.В нем я пока увы не силен.
Кстати,перед прошивкой программы советую в микрухе выставить фюзы.Вот скриншоты как это делал я в программе Синапрог.
Изображение

:kill:

'Терморегулятор для холодильного шкафа
$regfile = "attiny2313.dat"
$crystal = 4000000
$hwstack = 12
$swstack = 8
$framesize = 16

'все на ввод
Ddra = &B00000010
'pA0- настройка вкл-выкл
'pA1- Ошибка работы термометра.Вывод на звук
Porta = 0

'все ноги на вывод кроме 7-й (включена на термометр)
'Ноги 0-6 идут на сегменты индикатора
Ddrb = &B01111111
Config 1wire = Portb.7
Portb = 0

'6-5 управление разрядами индикатора
'4 знак + температуры (красны светодиод)
'3 знак минус температуры (синий светодиод)
'2- управление реле холодильника
'1 Увеличение
'0 Уменшение
Ddrd = &B01111100
'исходно все погашено
Portd = 0

'Переменные Для Термометра
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim Sign As String * 1
Dim T1 As Byte
Dim T2 As Byte
Dim Limit As Byte 'Лимит температуры в холодильной камере
Dim Cycl As Word 'вывод на табло


'данные в ЕПРОМе записаны в формате Нуль градусов -100,выше 100+Т,ниже 100-Т
Readeeprom Limit , &H10
'Размах регулировки +-20 град (!)
If Limit > 120 Or Limit < 80 Then
Limit = 100
End If

'ОБЩИЙ АНОД (напрямую на LED)
'Вывод инвертирован pB6=сегмА,pB5=сегм В и т.д.
'Прописи вида цифр на индикаторе
Const Nol = &B00000001
Const Odin = &B01001111
Const Dva = &B00010010
Const Tri = &B00000110
Const Cetyr = &B01001100
Const Pjat = &B00100100
Const Sist = &B00100000
Const Sim = &B00001111
Const Visim = &B00000000
Const Dev = &B00000100

'================== Основной блок ===============
Do
'Включение настроки PA0
'Сигнал ошибки термодатчика pA1
'Увеличение pD1
'Уменшение pD0
'пауза 1 сек ждет нажатия кнопки настроек.Зажать кнопку до тех пор,пока не начнет мигать индикатор - признак входа в режим настройки
Wait 1
If Pina.0 = 0 Then 'если кнопка нажата
Gosub Nastroika
Else
Gosub Termometr
End If
Loop

Nastroika:

Gosub Uslov 'Преобразование Limit в T1 для индикатора
Gosub Indikator 'Цифры темпратуры
Gosub Znak 'Светодиоды + и -

Wait 1 'успеть отпустить кнопку.Повторное нажатие выведет из режима настроек
While Pina.0 = 1
'========== НАРАЩИВАНИЕ
If Pind.1 = 0 Then
Incr Limit 'уменшаем отрицательную температуру
Waitms 300
If Limit > 120 Then
Limit = 120 'Верхний предел регулятора +20 градусов
End If
End If

Gosub Uslov 'Преобразование Limit в T1 для индикатора
Gosub Znak 'Светодиоды + и -
Gosub Indikator 'Цифры темпратуры
'========== УМЕНШЕНИЕ
If Pind.0 = 0 Then
Decr Limit 'уменшаем отрицательную температуру
Waitms 300
If Limit < 80 Then
Limit = 80 'Верхний предел регулятора +20 градусов
End If
End If

Gosub Uslov 'Преобразование Limit в T1 для индикатора
Gosub Znak 'Светодиоды + и -
Gosub Indikator 'Цифры темпратуры
'для мигания
Waitms 300
Portb = 0
PortD=0
Waitms 300
Wend
'Выход из настройки.Коррекция бата и запись в ЕПРОМ
Writeeeprom Limit , &H10
Return

Termometr:
Porta.1 = 0 'выключение сигнала
1wreset Pinb , 7

1wwrite &HCC ' Выдаем команду чтения ПЗУ
1wwrite &H44 ' Запуск измерения

Wait 1 ' Ждем окончания преобразования

1wreset
'Ошибка чтения термометра
If Err = 1 Then 'если при опросе небыло ответа загорается значек градуса
Porta.1 = 1 'сигнал ошибки
Return
End If

1wwrite &HCC
1wwrite &HBE ' Команда чтения ОЗУ датчика

Byte0 = 1wread() ' Читаем нулевой байт
Byte1 = 1wread() ' Читаем первый байт

If Byte1 > 248 Then ' Проверка на отрицательность температуры
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Sign = "-"
Else
Sign = "+"
End If

T1 = Byte0 / 16 ' Сдвигаем нулевой байт вправо на 4 бита (2*2*2*2=16)
T2 = Byte1 * 16 ' Сдвигаем первый байт влево на 4 бита (2*2*2*2=16)
T1 = T1 + T2 ' Формируем результат для вывода на дисплей


' *** Коррекция полученных значений

If Sign = "-" Then ' для корректного вывода отрицательных температур
T1 = T1 + 1
End If

If Sign = "+" And T1 = 0 Then ' убираем знак "+" с нулевой температуры
Sign = " "
End If

Gosub Znak
'============ Вывод на табло.Динамическая засветка ======
For Cycl = 1 To 500
Gosub Indikator
Next Cycl

'====МОТОР=========
If Limit < 100 Then 'установлена минусовая температура
T2 = 100 - Limit
If T1 > T2 And Sign = "-" Then 'холод больший чем нужно
Portd.2 = 0 'мотор холодильника выключить,мороз больший чем надо
Else
Portd.2 = 1
End If
End If

If Limit > 100 Then 'установлена минусовая температура
T2 = Limit - 100
If T1 > T2 Then
Portd.2 = 1 'включить мотор
Else
Portd.2 = 0
End If
End If

If Limit = 100 Then 'установлена минусовая температура
If T1 > 0 And Sign = "+" Then 'жара больший чем нужно
Portd.2 = 1 'мотор холодильника включить
End If
If T1 > 0 And Sign = "-" Then 'мороза больше чем нужно
Portd.2 = 0 'мотор холодильника выключить
End If
If T1 = 0 Then
Portd.2 = 0
End If
End If

Return

'pD6-5 управление разрядами индикатора
Indikator:
T2 = T1 \ 10
Gosub Cas
'Зажигаем первую цифру на табло
Portd.5 = 1
Waitms 10
Portd.5 = 0
Portb = 0

T2 = T1 Mod 10
Gosub Cas
Portd.6 = 1
Waitms 10
Portd.6 = 0
Portb = 0
Return

Cas:
Select Case T2

Case 0 : Portb = Nol
Case 1 : Portb = Odin
Case 2 : Portb = Dva
Case 3 : Portb = Tri
Case 4 : Portb = Cetyr
Case 5 : Portb = Pjat
Case 6 : Portb = Sist
Case 7 : Portb = Sim
Case 8 : Portb = Visim
Case 9 : Portb = Dev

End Select

Return

Znak:
If Sign = "+" Then
'Засветим красный диод
Portd.4 = 1
Portd.3 = 0
End If
If Sign = " " Then
'Погасим диоды
Portd.4 = 0
Portd.3 = 0
End If
If Sign = "-" Then
'Засветим синий диод
Portd.4 = 0
Portd.3 = 1
End If
Return

Uslov:

If Limit < 100 Then
T1 = 100 - Limit
Sign = "-"
End If
If Limit = 100 Then
T1 = 0
Sign = " "
End If
If Limit > 100 Then
T1 = Limit - 100
Sign = "+"
End If

Return


==============
Ну вот и все.

Кому разбирать все и компилировать будет в лом,я прилагаю здесь готовый HEX файл.Загоняйте его в кристалл и пользуйтесь на здоровье.
Вложения
termoregulator.hex
Прошивка для ATtiny2313
(4.65 КБ) 158 скачиваний
Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Терморегулятор для холодильного шкафа

Сообщение Ivanoff-iv »

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

Добавлено after 1 minute 24 seconds:
ПС: я тоже люблю делать поделки на тини2313, хорошая микруха для радиолюбителей
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Аватара пользователя
6ф1
Друг Кота
Сообщения: 3060
Зарегистрирован: Ср ноя 20, 2013 22:57:36
Откуда: Краснодар

Re: Терморегулятор для холодильного шкафа

Сообщение 6ф1 »

А зачем сюда , а не в "статьи"?
Тема 'опустится' - фиг кто её найдёт, даже если очень надо.
Прости нам, господи, благодеяния наши.
Пренебрежение правилами ТБ улучшает генофонд человечества.
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Терморегулятор для холодильного шкафа

Сообщение musor »

по програме молчу не вникал -ибо не силен а вот по схемотехнике есть замечания
прямое управление дисполеем не есть правилно для нагрузки мк...нормално работают тока яркие красные индюки на разряды неплохоб буферит транзюлем
и для комутации мотора ставте не триак а реле с контактами не хуже 16A 250VАC
так сделано во всех пром девайсах и не зря..
Последний раз редактировалось musor Вт авг 21, 2018 17:35:27, всего редактировалось 1 раз.
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Терморегулятор для холодильного шкафа

Сообщение BOB51 »

Для терморегуляторов на профоснове можно и светодиоды...
Однако гораздо эфективнее ЖКИ индикатор.
И диапазон питания получше и жреть не в пример к светодиодам.
Да и МК соответственно - ПИКушку простейшую.
Как добавка - алгоритм "реле тепловой защиты перезапуска компрессора".
8)
Ну а для начала - вполне терпимое устройство.
:beer:
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Терморегулятор для холодильного шкафа

Сообщение otest »

Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Терморегулятор для холодильного шкафа

Сообщение Ivanoff-iv »

так можно всё у китайцев покупать или заказывать, а самому вообще ничего не делать...
большое начинается с малого... :beer: "+" за хорошее начало :beer: да и написано прикольно
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ответить

Вернуться в «Практика»