Перед вами проект двухканального термометра. Он может измерять температуру в диапазоне от -50.0 до +99.9 градусов. Устройство было разработано для измерения температуры в доме и на улице, но ему также можно найти и множество других применений. При небольшом изменении программы устройство также можно использовать в качестве термостата. Термометр построен на популярном и очень широко распространенном датчике DS18B20 и микроконтроллере ATtiny2313, что значительно упростило разработку и позволило значительно уменьшить размеры. Термометр удалось сжать так, что почти все элементы расположены под трехразрядным дисплеем 15 мм. Практически все элементы SMD. Конечно, можно было бы применить TH компоненты, но в эпоху миниатюризации лучше сделать еще один шаг вперед по созданию системы с наименьшими размерами. Термометр может измерять температуру в двух местах, с помощью двух датчиков, подключенных на независимых шинах. Изменение отображаемой температуры осуществляется с помощью двух кнопок.
Проект был опубликован в журнале Электроника для всех, 08/2011 и выпускается в виде комплекта AVT2985
Принцип работы
Принципиальная схема:
Сердцем устройства является микроконтроллер U1 (ATTINY2313), который тактируется от внутреннего генератора 8MHz, без делителя частоты. Отсутствие кварца позволило уменьшить размеры устройства, а также освободило две ножки МК, к одной из них сейчас подключена кнопка S2. Микроконтроллер получает показания температуры с двух датчиков, преобразовывает данные в форму, пригодную для отображения на дисплее и обрабатывает нажатия кнопок S1 и S2. Конденсатор С1 (100nF), расположенный рядом с микроконтроллером - фильтрующий. Конденсаторы С2 (10 мкФ) и С3 (10 мкФ) необходимы для правильной работы U3 (78L05).Простота схемы обусловлена используемым датчиком температуры. Это 12-битный цифровой термометр, который может работать в диапазоне от -55 до +125 градусов. Время обработки (преобразования) температуры длится не дольше, чем 750 мс. Связь с микроконтроллером осуществляется по интерфейсу 1-Wire. В качестве индикатора температуры используется трехзначный светодиодный дисплей (AT5636BMR-В) с внутренними соединениями сегментов, адаптированный для динамической индикации. Резисторы R4-R11 ограничивают ток на светодиодном дисплее до 10-12 мА (на сегмент). Тем не менее, средний ток меньше из-за использования динамической индикации. Управление анодами осуществляется тремя популярными транзисторами Т1 - Т3 (BC857). Токи базы ограничены резисторами R1-R3 (3,3 кОм). Важным компонентом является разъем GP1, через который подключаются датчики и управляющий выход (в случае термостата).
Изготовление
Устройство изготовлено на основе печатной платы. Плата односторонняя, и почти все элементы SMD. Исключением является дисплей, кнопки управления и разъемы. Сборка не сложная, но требует большого мастерства при пайке SMD. Недостатком платы является отсутствие разъема для программирования, так что если придется вносить изменения в программу вам необходимо будет припаять провода программатора к плате напрямую. Но можно установить на плате миниатюрный разъем.
Распиновка разъема
Выводы 1 и 2 этого разъема это питание и заземление. Вывод 3 предназначен для подключения индикации отрицательных температур (Катодом на разъем, анодом на +5В через резистор 200 - 300 Ом). Датчики подключаются через трехжильный провод. Первый датчик подключается к выводу 5, а второй датчик к выводу 6. Устройство питается от 7-12В через стабилизатор 78L05.
Программирование
Программа написана в известной среде программирования BASCOM AVR. Она занимает около 70% памяти микроконтроллера и может быть успешно скомпилирована в демо версии BASCOM'a. Программа не сложная. Далее представлены некоторые элементы кода
Обработчик прерывания Timer0:
Przerwanie0: Timer0 = 131 Set F4ms Incr Dziel(1) If Dziel(1) = 25 Then Dziel(1) = 0 Set F100ms Incr Dziel(2) If Dziel(2) = 10 Then Dziel(2) = 0 Set F1s End If End If Return
Основной цикл:
Do If F4ms = 1 Then Reset F4ms 'co 4ms Wysw = T Gosub Wyswietl_zmierz End If If F100ms = 1 Then Reset F100ms 'co 100ms If Pind.2 = 0 Then Kanal = 1 If Pina.0 = 0 Then Kanal = 0 End If Loop End
Процедура управления дисплеем:
Wyswietl_zmierz: Incr Mux If Mux = 5 Then Mux = 0 Portd.3 = Not Minus For I = 1 To 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I If W(3) = 40 Then W(3) = 255 'wygaszenie zera wiodącego Select Case Mux Case 0: Portb = W(3) Reset Portd.6 Case 1: Set Portd.6 Portb = W(2) And &B11011111 Reset Portd.5 Case 2: Set Portd.5 Portb = W(1) Reset Portd.4 Case 3: Set Portd.4 Portb = 255 Gosub Temp 'Case 4: End Select Return Tabela: Data 40 , 235 , 50 , 162 , 225 , 164 , 36 , 234 , 32 , 160
Процедура измерения температуры:
Temp: If F1s = 1 Then Reset F1s 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &HBE , 1 , Pind , Kanal T = 1wread(2 , Pind , Kanal): Minus = T.15 T = Abs(t) T = T * 10 T = T / 16 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &H44 , 1 , Pind , Kanal End If Return
Fusebits микроконтроллера должны быть установлены для работы с внутренним RC-генератором с частотой 8 МГц
Фотографии
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATtiny2313 | 1 | SO20 | Поиск в магазине Отрон | |
U3 | Линейный регулятор | L78L05 | 1 | SOT89 | Поиск в магазине Отрон | |
T1-T3 | Биполярный транзистор | BC857 | 3 | Поиск в магазине Отрон | ||
C1 | Конденсатор | 100 нФ | 1 | Поиск в магазине Отрон | ||
C2, C3 | Электролитический конденсатор | 10 мкФ | 2 | Танталовый SMD 3216A | Поиск в магазине Отрон | |
R1-R3 | Резистор | 3.3 кОм | 3 | SMD 0805 | Поиск в магазине Отрон | |
R4-R11 | Резистор | 330 Ом | 8 | SMD 0805 | Поиск в магазине Отрон | |
R12, R13 | Резистор | 4.7 кОм | 2 | SMD 0805 | Поиск в магазине Отрон | |
W1 | Семисегментный индикатор | AT5636BMR | 1 | Поиск в магазине Отрон | ||
S1, S2 | Кнопка тактовая | Без фиксации | 2 | Поиск в магазине Отрон | ||
GP1 | Вилка штыревая | 1 | 6 пинов | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- Файлы к статье.rar (490 Кб)
Комментарии (8) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
7-я ножка это соответственно минус, а на плюс через резистор. Странно, почему это не указано в статье.
И кто сможет реализовать перевод контроллера в сон в программе?
Подцепить на 4 ножку еще одну кнопку, по нажатию контроллер засыпает, по повторному нажатию просыпается?