Wiki

Version 24 (Dmitry Belimov, 10/04/2011 06:52 am)

1 20 Dmitry Belimov
h1. Контроллер подогрева.
2 21 Dmitry Belimov
3 22 Dmitry Belimov
h3. Введение
4 1 Dmitry Belimov
5 1 Dmitry Belimov
Все началось с картошки, точнее с того, что она опять замерзла. Мой гараж находится последним в ряду и получается немного на бугре, хотя он и имеет три уровня, но в середине зимы мороз все же добирается до ценного злака и примораживает его. Такое случается обычно в феврале. После нескольких лет облома, чтобы этого больше не повторялось был разработан небольшой и несложный контроллер. При разработке было желание попробовать динамическую индикацию на 7-сегментных индикаторах, устройство должно быть простым и повторяемым, на распространенной элементной базе. И обязательно быть винтажным и теплым ламповым, т.е. опенсорсным и опенхардварным. 
6 1 Dmitry Belimov
7 22 Dmitry Belimov
h3. Описание работы
8 1 Dmitry Belimov
9 1 Dmitry Belimov
Главным действующим лицом является недорогой микроконтроллер ATMega48 от компании Atmel. К разъему XS1 подключается датчик температуры - DS18S20. Считывая с него показания контроллер их выводит в динамическом режиме на семисегментные индикаторы D9-D12. Ключи VT1-VT4 включают нужный индикатор, а микросхема DD2 декодер преобразовывает код от микроконтроллера в код индикаторов. Кнопки S1-S3 служат для оперативного управления работой контроллера. Сопротивления R3-R5 и диоды D3-D8 обеспечивают защиту выводов микроконтроллеров от статического электричества. Силовой транзистор VT5 управляемый с микроконтроллера включает/выключает реле контролирующее эл.питание нагревателя. Светодиод D13 сигнализирует о включенном нагревателе.
10 1 Dmitry Belimov
11 10 Dmitry Belimov
| Схема принципиальная контроллер | Схема принципиальная силовая часть |
12 23 Dmitry Belimov
|  !gheater_sch_main_small.png! attachment:gheater_sch_main.png |
13 23 Dmitry Belimov
!gheater_sch_pwr_small.png! attachment:gheater_sch_pwr.png |
14 1 Dmitry Belimov
15 1 Dmitry Belimov
Настольной системой вот уже много лет является Linux Debian и все действия производились под ним. Для рисования схемы и платы использовался открытый CAD gEDA. Часть символов и корпусов взята с http://www.gedasymbols.org. Как позже будет описано, зря я понадеялся на коллективное бессознательное... Это был мой первый опыт в использовании пакета gEDA, до этого пользовался PCAD4.5, OrCAD, Eagle, KiCAD. Все оказалось не так страшно, работать, рисовать схемы и платы вполне можно. После разводки платы, были сгенерированны итоговые картинки, как выглядит плата с одной и другой стороны. Плата получилась небольшая 80х60мм.
16 1 Dmitry Belimov
17 24 Dmitry Belimov
Файлы gEDA контроллера: attachment:gheater_Rev_A_gEDA.tar.gz
18 1 Dmitry Belimov
19 22 Dmitry Belimov
h3. Итоговый вид платы вид сверху
20 1 Dmitry Belimov
21 12 Dmitry Belimov
!gheater_pcbrndr_top_m.png!
22 1 Dmitry Belimov
23 22 Dmitry Belimov
h3. Итоговый вид платы вид снизу
24 1 Dmitry Belimov
25 13 Dmitry Belimov
!gheater_pcbrndr_bot_m.png!
26 1 Dmitry Belimov
27 1 Dmitry Belimov
После разводки платы и проверки. Были сгенерены файлы Gerber для производства и отправлены знакомому китайцу с вопросом о цене.
28 1 Dmitry Belimov
29 24 Dmitry Belimov
attachment:gheater.zip
30 1 Dmitry Belimov
31 1 Dmitry Belimov
Ответ не порадовал, чтобы снизить цену за плату пришлось заказать изготовление 30шт. Полторы недели длилось производство и две недели они ехали до меня.
32 1 Dmitry Belimov
33 22 Dmitry Belimov
h3. Печатные платы с завода вид сверху
34 1 Dmitry Belimov
35 15 Dmitry Belimov
!pcb_top_medium.jpg!
36 1 Dmitry Belimov
37 22 Dmitry Belimov
h3. Печатные платы с завода вид снизу
38 1 Dmitry Belimov
39 15 Dmitry Belimov
!pcb_bot_medium.jpg!
40 1 Dmitry Belimov
41 1 Dmitry Belimov
После начала монтажа выяснились небольшие технические проблемы. В нескольких корпусах которые были взяты с http://www.gedasymbols.org маленькие отверстия, у корпуса для кварца расстояние между ногами меньше чем нужно. Доверяй и проверяй, этот принцип нужно соблюдать с чужими библиотеками. Все решилось небольшим надфилем и аккуратной запайкой. Так же нашел одну ошибку, R18 должен быть подключен к D11, а не к D10. Режем, кидаем перемычку и все показывает как надо. Ввиду невозможности в нашей глуши достать аутентичные конденсаторы C3 и C4 пришлось ставить их бескорпусные аналоги, что несколько выбивается из винтажности. Фотографий платы в сборе к сожалению нет, пока собирал и отлаживал было не до того, как стало до того, плата уже стояла на своем месте прикрученная.
42 1 Dmitry Belimov
43 1 Dmitry Belimov
Однако мало собрать и запустить плату, ее еще надо установить в соответствующий корпус с нужными органами управления. Т.к. контроллер будет стоять в подвале, то условия эксплуатации выглядят следующим образом:
44 16 Dmitry Belimov
 
45 16 Dmitry Belimov
* температура окружающей среды -15...+10
46 16 Dmitry Belimov
* влажность воздуха до 100%
47 1 Dmitry Belimov
48 1 Dmitry Belimov
Есть большая вероятность попадания влаги и образования росы в любом месте устройства. Для защиты делаем корпус максимально герметичным, все щели заливаются пластиком из клеевого пистолета, или заливаются лаком. В нижней части коробки возможно появление воды, оставляем ее свободной, все находится чуть выше. Все соединения пропаиваются и закрываются термоусадочными трубками. Для оперативного управления ставятся герметичные кнопки.
49 1 Dmitry Belimov
50 1 Dmitry Belimov
Список используемых радиодеталей:
51 1 Dmitry Belimov
52 16 Dmitry Belimov
| Сопротивление | R1, R23 | 470 0.125Вт. | 2 | |
53 16 Dmitry Belimov
| Сопротивление | R2, R20 | 10К 0.125Вт. | 2 | | 
54 16 Dmitry Belimov
| Сопротивление | R3, R4, R5 | 51 0.125Вт. | 3 | |
55 16 Dmitry Belimov
| Сопротивление | R6 | 4.7к 0.125Вт. | 1 | |
56 16 Dmitry Belimov
| Сопротивление | R7, R8, R9, R10, R19 | 1К 0.125Вт. | 5 | |
57 16 Dmitry Belimov
| Сопротивление | R11, R12, R13, R14, R15, R16, R17, R18 | 220 0.125Вт. | 8 | |
58 16 Dmitry Belimov
| Сопротивление | R21 | 1k 0.250 Вт. | 1 | |
59 16 Dmitry Belimov
| Сопротивление | R22 | 220 5Вт. | 1 | не ставил |
60 16 Dmitry Belimov
| Конденсатор | C1, C2, C5 | 47нФ | 3 | |
61 16 Dmitry Belimov
| Конденсатор | C3, C4 | 12пФ | 2 | |
62 16 Dmitry Belimov
| Конденсатор | C6 | 220нФ | 1 | |
63 16 Dmitry Belimov
| Конденсатор | C7 | 0.47мкФ 630В | 1 | не ставил |
64 16 Dmitry Belimov
| Конденсатор | C8 | 220мкФ 25В | 1 | |
65 16 Dmitry Belimov
| Конденсатор | C9, C10 | 33нФ | 2 | |
66 16 Dmitry Belimov
| Конденсатор | C11 | 100мкФ 12В | 1 | |
67 16 Dmitry Belimov
| Диод | D1, D3, D4, D5, D6, D7, D8 | КД521 | 7 | |
68 16 Dmitry Belimov
| Диод | D2, D13, D16 | -- | 3 | мелкие, расстояние между ножками 3мм, взял из дохлого свича |
69 16 Dmitry Belimov
| Диод | D9, D10, D11, D12 | АЛС324Б1 | 4 | |
70 16 Dmitry Belimov
| Диод | D14 | 1N4001 | 1 | |
71 16 Dmitry Belimov
| Диод | D15 | DB107S | 1 | |
72 16 Dmitry Belimov
| Транзистор  | VT1, VT2, VT3, VT4 | КТ361 | 4 | |
73 16 Dmitry Belimov
| Транзистор  | VT5 | КТ819 | 1 | |
74 16 Dmitry Belimov
| Микросхема  | DA1 | 7805 | 1 | |
75 16 Dmitry Belimov
| Микросхема  | DD1 | ATMega48 | 1 | |
76 16 Dmitry Belimov
| Микросхема  | DD2 | КР533ИД18 | 1 | |
77 16 Dmitry Belimov
| Кварц | XTL1 | 16МГц | 1 | |
78 16 Dmitry Belimov
| Реле | RE1 | DC 12V, AC 220V 10A | 1 | |
79 16 Dmitry Belimov
| Трансформатор | T1 | 220V x 9V 0.25A | 1 | |
80 16 Dmitry Belimov
| Кнопка | S1, S2, S3 | герметичная | 3 | подарили, марка-модель не известна |
81 16 Dmitry Belimov
| Кнопка | S4 | -- | 1 | мелкая кнопка поверхностный монтаж, модель не известна |
82 16 Dmitry Belimov
| Кнопка | S5 | -- | 1 | решил не ставить, обойтись отдельным 4-х полюсным автоматом |
83 16 Dmitry Belimov
| Предохранитель | F1 | 5А | 1 | |
84 16 Dmitry Belimov
| Предохранитель | F2 | 0.5А | 1 | |
85 16 Dmitry Belimov
| Разъем | XS1 | -- | 1 | для пробы поставил стерео джек гнездо на корпус |
86 16 Dmitry Belimov
| Разъем | XS2 | 5x2 2.54 | 1 | |
87 16 Dmitry Belimov
| Разъем | XS3 | -- | 1 | для пробы поставил микрофонный 3-х штыревой |
88 16 Dmitry Belimov
| Разъем | XS4 | розетка влагозащищенная | 1 | |
89 1 Dmitry Belimov
90 1 Dmitry Belimov
91 22 Dmitry Belimov
h3. Общий вид в сборе
92 1 Dmitry Belimov
93 17 Dmitry Belimov
!photo-01m.jpg!
94 1 Dmitry Belimov
95 22 Dmitry Belimov
h3. Вид справа
96 1 Dmitry Belimov
97 1 Dmitry Belimov
Хорошо видна влагозащищенная розетка, все отверстия заклеены клеевым пистолетом.
98 1 Dmitry Belimov
99 17 Dmitry Belimov
!photo-02m.jpg !
100 1 Dmitry Belimov
101 22 Dmitry Belimov
h3. Вид слева
102 1 Dmitry Belimov
103 1 Dmitry Belimov
Сверху вниз: разъем термодатчика, предохранитель силовой части, предохранитель контроллерной части, входящий разъем питания 220В.
104 1 Dmitry Belimov
105 17 Dmitry Belimov
!photo-03m.jpg!
106 1 Dmitry Belimov
107 22 Dmitry Belimov
h3. Вид сверху
108 1 Dmitry Belimov
109 1 Dmitry Belimov
Видно 'уши' за которые контроллер будет вешаться на стену.
110 1 Dmitry Belimov
111 17 Dmitry Belimov
!photo-04m.jpg!
112 1 Dmitry Belimov
113 22 Dmitry Belimov
h3. Общий вид внутри
114 1 Dmitry Belimov
115 17 Dmitry Belimov
!photo-05m.jpg!
116 1 Dmitry Belimov
117 22 Dmitry Belimov
h3. Контроллер
118 1 Dmitry Belimov
119 17 Dmitry Belimov
!photo-06m.jpg!
120 1 Dmitry Belimov
121 22 Dmitry Belimov
h3. Силовая часть
122 1 Dmitry Belimov
123 17 Dmitry Belimov
!photo-07m.jpg!
124 1 Dmitry Belimov
125 22 Dmitry Belimov
h3. Возможные модернизации
126 1 Dmitry Belimov
127 1 Dmitry Belimov
 * Микросхема стабилизатор DA1 7805 может быть заменена на DC/DC преобразователь PSR-7805LF.
128 1 Dmitry Belimov
 * Декодер DD2 можно исключить, соединив проводками 7D1-R11, 7D2-R12, 7D3-R13, 7D4-R14, #LT-R15, #RBO-R16, #RBI-R17. Немного переделать программу, добавив таблицу знаков. При такой модификации на индикаторе можно получить любой знак который можно на нем построить, а не только тот который зашит в декодере. С декодером знак '-' приходится отображать как 'c', бо в нем нет знака минуса. Этот мод позволяет решить эту проблему и обойти другую - когда купить декодер негде.
129 1 Dmitry Belimov
 * Замена силового транзистора VT5 на любой биполярный n-p-n транзистор с запасом выдерживающий ток протекающий через реле. В моем случае ток реле около 80мА.
130 1 Dmitry Belimov
 * Замена силового реле на любое доступное. Реле работает от выпрямленного напряжения выдаваемого трансформатором. У меня было реле на 12В, подобрал и трансформатор на 12В. Если есть реле на меньшее напряжение 9...7В можно подобрать близкий трансформатор и запитать от него. При работе от большего напряжения придется увеличить радиатор линейного стабилизатора DA1.
131 1 Dmitry Belimov
 * Кнопка S4 сброс МК практически не нужны, можно не ставить, как и диод D1.
132 1 Dmitry Belimov
 * Если нагрузка чисто резистивная, можно не ставить C7, R22. Если их ставить, то они должны стоять как можно ближе к нагрузке, может даже в самой розетке.
133 1 Dmitry Belimov
134 22 Dmitry Belimov
h3. Программная часть
135 1 Dmitry Belimov
136 1 Dmitry Belimov
Для индикации работы устройство имеет три дополнительных светодиода, верхний показывает наличие питания +5В, средний монитор работы МК, нижний показывает что нагреватель включен. Т.к. контроллер работает в достаточно сложных условиях, в нем через бит конфигурации включен сторожевой таймер и он работает постоянно. Небольшой планировщик задач запускает задачи по расписанию. Одна из этих задач отвечает за сброс сторожевого таймера. В случае подвисания МК или возникновения ситуации когда какая-либо функция слишком долго (более 2 сек.) монопольно использует МК сторожевой таймер сбросит его. Светодиод монитор работы МК при старте показывает этапы начала работы, при выходе на рабочий режим моргает с частотой 1Гц. Показывая что с МК все в порядке и устройство работает штатно. Из-за высокой вероятности отключения эл.питания в любой момент времени, все данные хранящиеся в ЕЕПРОМ перед загрузкой проверяются на соответствие граничным условиям. В случае когда данные не соответствуют, они считаются испорченными и для них используются значения по умолчанию. Т.к. контроллер рассчитан на использование в подвальном помещении, то граничный диапазон сильно заужен и может быть пересмотрен под конкретные требования.
137 1 Dmitry Belimov
138 1 Dmitry Belimov
В контроллере задаются следующие величины:
139 18 Dmitry Belimov
* нижний порог температуры - если температура падает ниже этого порога, происходит включение нагревателя
140 18 Dmitry Belimov
* верхний порог температуры -  если температура поднимается выше этого порога, происходит выключение нагревателя
141 1 Dmitry Belimov
* защитное время - время в течении которого переключение в другое состояние запрещено. Служит для продления срока службы реле и устранения аварийной ситуации, когда из-за каких-либо проблем МК начинает считать, что надо включать-выключать нагреватель с большой частотой. После срабатывания реле, запускается таймер защитного времени и пока оно не кончилось переключения в другое состояние не произойдет.
142 1 Dmitry Belimov
143 18 Dmitry Belimov
Программа микроконтроллера с исходными текстами: attachment:gheater_2011_09_22.tar.gz
144 1 Dmitry Belimov
145 20 Dmitry Belimov
Конфигурационные байты контроллера программируем командой: 
146 20 Dmitry Belimov
147 20 Dmitry Belimov
avrdude -c stk200 -p m48 -P /dev/parport0 -U lfuse:w:0xE7:m
148 1 Dmitry Belimov
149 1 Dmitry Belimov
В данный момент в меню пока нет пунктов:
150 18 Dmitry Belimov
* 5 - показать количество включений
151 18 Dmitry Belimov
* 6 - сброс счетчика включений
152 1 Dmitry Belimov
153 1 Dmitry Belimov
Т.к. надо было быстрее заканчивать с корпусом, герметизировать его. Бумагу для меню сделал так сказать с небольшим запасом, бо ставить новую туда нет возможности.
154 1 Dmitry Belimov
155 22 Dmitry Belimov
h3. P.S.
156 1 Dmitry Belimov
157 1 Dmitry Belimov
Заранее отвечу на некоторые вопросы:
158 1 Dmitry Belimov
159 1 Dmitry Belimov
Да, я знаю что подобное устройство можно купить в магазине.
160 1 Dmitry Belimov
161 1 Dmitry Belimov
Да, я знаю что плату можно было сделать самому из клея, фольги и фанеры.
162 1 Dmitry Belimov
163 1 Dmitry Belimov
Да, я знаю что можно было использовать плату от Ардуино клонов.
164 1 Dmitry Belimov
165 1 Dmitry Belimov
Да, я знаю что программу можно было написать на ассемблере и тогда туда бы влез тетрис.