Wiki

Version 26 (Dmitry Belimov, 08/05/2012 09:19 am)

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