Практикум по микроконтроллерам Atmel AVR. CodeVision AVR, проект N2 или движемся дальше

Intro

В предыдущей части я рассказал про среду разработки CodeVision AVR на примере простенького, но не совсем бестолкового проекта.
В этой заметке я продолжу рассказ про CodeVision. На выходе получится несложный одноканальный термостат. Заодно попробуем подключить ЖКИ индикатор.

Схемотехника

Итак, техзадание, как уже говорил, простое, термостат. С помощью такого устройства можно управлять подогревателем и поддерживать температуру в каком-то заданном интервале, скажем от +1C до +50C.. Нужно предусмотреть возможность изменения настроек температуры и какой-то простенький индикатор. Датчиками температуры воспользуемся такими же, то есть поставим Dallas DS1820/DS18B20 с интерфейсом 1 Wire.

Индикатор. На мой взгляд довольно удобно использовать алфавитно-цифровые ЖКИ со встроенным контроллером. У них небольшое энергопотребление, маленькие габариты. ЖКИ индикаторы бывают от 1x8 (одна строка восемь символов) до 4x40. В настоящее время система команд контроллера стандартизирована и практически все выпускаемые модели имеют HD44780 совместимый контроллер (в четырехстрочных моделях устанавливаются две HD44780). Распиновка тоже стандартизована - 14 контактов питание/управление полюс два контакта для питания подсветки (backloght, если она есть). Обмен с ЖКИ контроллером производится по параллельной шине. Возможен обмен полубайтами (nibbles) что позволяет сэкономить четыре проводника и соответственно линии порта микроконтроллера.

В CodeVision AVR есть поддержка такого рода ЖКИ как на уровне Code Wizard'а, так и на уровне библиотек что сильно упрощает жизнь.

Рисуем вот такую схему с учетом вышеописенных требований. Для изменения температур пусть будут три кнопки - "Set", "+" и "-".

ЖКИ я подключил несколько забежав вперед. Резистором R3 можно регулировать контраст изображения.

схема принципиальная

Разъем для ISP программирования и подключение DS1820 точно такие же, как и в предыдущем проекте.
Добавилась силовая часть на опторазвязке VD9 и симисторе VD8. В сети можно еще встретить электромагнитные реле для коммутации силовых цепей такого, не знаю, к какому году отнести такую схемотехнику, в любом случае не советую такое решение.
ЖКИ подключен на PORTC.

Программная часть

Опять же запускаем Code Vision AVR. Жимкаем 'Create New...' Я не стал ставить кварц, поэтому выбираем тактовую равную внутреннему RC генератору и никаких делителей тактовой.

Все манипуляции с ЖКИ тоже делаем в Wizard'е. Достаточно указать порт для подключения индикатора (PORTC) и количество символов в строке. Внизу появится информация для принципиальной схемы. Свободный bit 3 как раз задействуем под DS1820.

Я опускаю настройку портов (DDR), таймеры и все прочее, потому как ничего принципиально нового тут нет.

В программе предусмотрена обработка трех кнопок в обработчике прерывания таймера. Первая кнопка "Set", алгоритм предполагает задержку в несколько секунд для активации. Это сделано просто для удобства, чтобы при случайном кратковременном нажатии не попадать в меню настрек.

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

Fuse'ы прошиваются вот так

AVR, fuse bits

Результат

Макетка плюс готовый корпус. Дополнительно собран блок питания на маленьком трансформаторе, диодном мостике с фильтром на электролите. Стабилизатор на 5V - 7805. Ток потребления очень маленький, порядка 10-18mA, так что никакой радиатор не нужен. Симистор в силовой части нужно поставить на радиатор при нагрузках свыше 300W.

Передняя панель. ЖКИ, светодиоды включения питания и нагрузки. Три кнопки.

Смотрим как все работает.

Заставка после включения

AVR термостат, ЖКИ

Если не подключен или неисправен DS1820

AVR термостат, ЖКИ

Если все хорошо, пишем текущую температуру, крутим палочку в правом верхнем углу и пишем состояние подогревателя - On/Off

AVR термостат, ЖКИ

При нажатии на кнопку "+" или "-" можно посмотреть настройки температуры. В данном случае подогреватель включается при +2C и отключается при +6C

AVR термостат, ЖКИ

Если удерживать кнопку "Set" в течение нескольких секунд, попадаем в меню установки температуры, сначала кнопками "+" и "-" устанавливается нижний предел

AVR термостат, ЖКИ

Потом нажимаем "Set" и выставляем верхний предел температуры

AVR термостат, ЖКИ


Вот вкратце и вся рассказка.

Приложения


Tags: avr microcontrollers electronic


Назад



[Home] [TTL] [Unix] [Sdictionary] [ROW Programmer] [Symbian] [Misc] [News] [Search] [Contacts] [Guestbook]


Copyright (c) 1999-2017 Alexey Semenoff