Контроллер управления системой кондиционирования

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Задание

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

Так как прибор должен обеспечивать определенный интерфейс с пользователем, предусматривается 8 клавиш управления, которые позволяют включить и выключить прибор, выбрать ночной режим работы системы, а также регулировать скорость подачи воздуха, требуемую температуру и установить время.

Для отображения информации используется LCD 16×2.

В качестве исполнительных устройств в данной курсовой работе используются ключи: для управления электрическим обогревателем, и вентилятором подачи воздуха.

После ввода устройству ключевой температуры, на которой он будет включать нагревательный элемент (по умолчанию она уже должна быть задана и равна 25 градусам Цельсия), система переходит в режим отображения и контроля, как только температура опускается до+20 градусов, включается нагрузка. После того как температура достигнет +25 градусов, нагрузка автоматически отключится и возможно включение электрического вентилятора в целях удержания последующего роста температуры, так как будет достигнут порог, заданный при программировании устройства. При необходимости понижения температуры в помещении система обнаружив что внешний воздух ниже по температуре будет автоматически организовывать его подачу. Также должно быть предусмотрено регулирование скорости подачи воздуха.

Введение

В данной курсовой работе выполняется разработка системы управления кондиционированием. Современные системы управления почти все без исключения используют различные микропроцессорные комплекты, это значительно расширяет их функциональность, при этом не требуют значительного усложнения аппаратной части и соответственно не удорожает устройство, обеспечивая необходимый уровень функций. Также сейчас перспективна к разработке тема интеграции бытовых устройств в систему умного дома, когда устройство может информировать центральный управляющий компьютер о своем состоянии и, принимая определенные команды, может выполнять более сложные программы управления с привязкой ко времени и т. п.

В целом, применение и разработка микроконтроллерных систем управления является уже насущной необходимостью для обеспечения управления даже сложной бытовой техникой: кондиционеры, котлы отопления и даже такие казалось простые устройства как электропечь.

1. Описание функциональной схемы

1.1 Описание элементов схемы

Приведённая выше функциональная схема представляет структуру контроллера, управляющего системой нагрева и охлаждения воздуха в помещении. Её можно представить в виде следующих блоков:

ПИ — преобразователь электронного интерфейса RS232 + - 12 В, который создаёт требуемые +/ - 12 В за счёт встроенного внутреннего генератора и конденсаторов обвязки, подключённых к данному чипу.

МК — управляющий микроконтроллер. Он считывает информацию датчиков температуры, а также введённые пользователем при помощи клавиатуры параметры: скорость подачи воздуха, необходимый уровень температуры и установленное время. В зависимости от считанной информации микроконтроллер посылает сигналы в блок управления тэном и блок управления вентилятором. А также посылает сигналы в ЖКИ.

ЖКИ — специализированный жидкокристаллический дисплей, необходимый для отображения параметров работы системы, введённых пользователем.

БУТ — блок управления тэном, в котором осуществляется управление нагревательным элементом после приёма сигналов, посланных микроконтроллером.

БУВ — блок управления вентилятором, управление осуществляется также после приёма сигналов от микроконтроллера.

Д1 — датчик температуры уличный, который необходим для измерения температуры воздуха на улице.

Д2 — датчик температуры канальный, который измеряет температуру воздуха внутри системы, т. е. после его нагрева.

Д3 — датчик температуры комнатный, который измеряет температуру воздуха в комнате после закачивания туда воздуха.

БК — блок клавиатуры. Клавиатура содержит восемь кнопок. Это позволяет упростить логику и обеспечивает большое удобство работы с системой. Итак, на клавиатуре находятся следующие клавиши управления:

1. Включение / Выключение.

2. Ночной режим.

3. Регулировка скорости подачи воздуха.

4, 5. (+/-) Регулировка температуры воздуха.

6. Регулировка таймера, увеличение времени по минутам.

7. Регулировка таймера, увеличение времени по часам.

Данная функциональная схема отражает основные элементы необходимые для построения системы управления вентиляцией. Для определения температуры воздуха в трех наиболее важных точках выполняется измерение с помощью трех термометров установленных на улице, в канале воздуховода и в комнате.

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

Или наоборот, когда требуется охладить воздух в комнате, то следует подавать прохладный воздух без подогрева.

Также важно учитывать скорость движения воздуха и соответственно необходимо выполнять регулировку скорости вращения вентилятора. Поэтому необходимо выбирать управляющий элемент соответствующего типа.

2. Разработка принципиальной схемы

2.1 Выбор контроллера

В начале работы я проанализировала нескольких различных серий контроллеров: AVR, PIC и МК-51. При этом я учитывала, что контроллер должен удовлетворять требованиям к разрабатываемому устройству по следующим параметрам:

· количество портов 15,

· объем памяти 2−4 кб,

· число таймеров 2,

· реализуемые функции,

· желательно знакомая архитектура.

· Соотношение цены и качества.

Вначале рассмотрим серию AVR — ядро базируется на RISC архитектуре. Имеется регистровый файл быстрого доступа, который содержит 32 регистра общего назначения. Они непосредственно связанны с арифметико-логическим устройством (ALU), и мощной системой команд. При совершении одного тактового цикла из регистрового файла извлекаются два операнда. При этом выполняется команда, и результат записывается в регистр назначения. Производительность такой высокоэффективной архитектуры во много раз больше, чем стандартные CISC микроконтроллеры, например 51 серия.

AVR работают в широком диапазоне питающих напряжений от 2,7 В до 6,0 В. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц, 5…6 мА для 5 МГц и 8…9 мА для частоты 12 МГц. AVR также могут быть переведены программным путем в один из двух режимов пониженного энергопотребления. Температурные диапазоны работы микроконтроллеров AVR — коммерческий (0… 70 С) и индустриальный (-40…+85С).

Рис. 1. Структурная схема AVR

Структурная схема микроконтроллера приведённая на рис. 2.1. содержит порты ввода / вывода и интерфейсные схемы.

Гарвардская архитектура AVR реализует полное логическое и физическое разделение не только адресных пространств, но и информационных шин для обращения к памяти программ и к памяти данных. Способы адресации и доступа к ним также различны. Такое построение обеспечивает существенное повышение производительности за счет:

а) одновременной работы центрального процессора как с памятью программ, так и с памятью данных;

б) расширения до 16 бит разрядной сетки шины данных памяти программ.

Следующим шагом на пути увеличения быстродействия AVR является использование технологии конвейеризации, у микроконтроллеров семейства MCS51 короткая команда выполняется за 12 тактов генератора (1 машинный цикл), в течение которого процессор последовательно считывает код операции и исполняет ее.

Каждый из 32-х регистров общего назначения длиной 1 байт непосредственно соединен с арифметико-логическим устройством (ALU) процессора. Это означает, что в AVR существует 32 регистра-аккумулятора (сравните с MCS51). Это позволяет в сочетании с конвейерной обработкой выполнять одну операцию в ALU за один машинный цикл.

В целом архитектура AVR в сочетании с регистровым файлом и расширенной системой команд позволяет в короткие сроки создавать программы с очень эффективным кодом как по скорости его выполнения, так и по компактности.

Для решения поставленной задачи из серии AVR, был выбран наиболее подходящий контроллер AT90S2313, его основные технические характеристики:

2 Кбайт Flash — памяти с поддержкой внутрисистемного программирования SPI — последовательный интерфейс для загрузки программного кода Ресурс: 1000 циклов записи/ стирания

128 байта EEPROM: Ресурс: 100 000 циклов запись/ стирание

15 программируемых линий I/O

Питание VCC: от 2.7 В до 6.0 В

Полностью статический режим работы:

От 0 до 10 МГц, при питании от 4.0 В до 6.0 В.

От 0 до 4 МГц, при питании от 2.7 В до 6.0 В.

Производительность, вплоть до 10 MIPS при 10 МГц.

Один 8-ми разрядный таймер/ счетчик с отдельным предварительным делителем частоты.

Один 16-ти разрядный таймер/ счетчик с отдельным предварительным делителем частоты с режимами сравнения и захвата.

Полнодуплексный UART.

Выбираемые 8, 9, или 10-ти разрядные режимы широтно- импульсной модуляции (ШИМ).

Внешние и внутренние источники прерывания.

Программируемый следящий таймер с встроенным тактовым генератором.

Встроенный аналоговый компаратор.

Экономичные режимы ожидания и пониженного энергопотребления.

Программируемая блокировка для безопасности программного обеспечения.

20 выводов.

Рис. 2. Расположение выводов контроллера

Данный контроллер по ножкам и функциям полностью совместим с контроллером 51 серии AT89C4051, что позволяет использовать одну отладочную плату для обоих контроллеров.

Другой рассмотренный мной контроллер PIC16F626 наиболее распространенный и используемый контроллер серии PIC. Он обеспечивает необходимые параметры для реализации проекта по числу портов и внутренним ресурсам: таймеру памяти и частоте работы.

Контроллер относится к семейству КМОП микроконтроллеров с RISC архитектурой. Имеет внутреннее 2K x 14 бит EEPROM для программ, 8-битовые данные и 64 байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью.

Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16F628 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер / счетчик с 8-битным программируемым делителем (фактически 16 — битный таймер) и 13 линий двунаправленного ввода / вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода / вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16F628 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором и программатором.

Рис. 3. Расположение выводов PIC

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

При создании микроконтроллеров семейства МК-51 используется гарвардская архитектура, при которой память программ (ПЗУ) и память данных (ОЗУ) имеют раздельное адресное пространство. При использовании такой архитектуры для обращения к ячейкам памяти разного типа используются разные типы команд. Объём максимального размера адресного пространства для каждого типа памяти составляет 64 Кбайта. Но только 4 Кбайта ПЗУ и 128 байт ОЗУ располагаются непосредственно на кристалле МК 8051 АН. Существует возможность подключения внешней памяти МК семейства MCS-51 (т.е. архитектура является открытой). Следовательно, память программ и память данных могут быть увеличены посредством подключения дополнительных микросхем памяти, если это необходимо. МК-51 имеет четыре 8-разрядных параллельных порта ввода / вывода и два 16-разрядных программируемых таймера. В отличии от 51 контроллеры 52 серии имеет больший объем ОЗУ, 3 таймера, возможность работы по шине I2C. Это позволяет подключить внешнее ПЗУ и достаточное количество портов (4?8). В моем случае выбранный контроллер обеспечивает избыточное количество портов 4×8 что упрощает схемотехническое проектирование. Схема разводки ножек не выноситься так как представлена на принципиальной схеме.

Внимательно изучив свойства приведённых выше микроконтроллеров, а также сравнивая их с перечисленными требованиями (которые вытекают из совокупности необходимых параметров для разрабатываемого устройства), я сделала вывод, что наилучшим выбором будет использование МК-51, так как у него наиболее доступная цена, при этом достаточное количество портов, памяти и функций. Также его архитектура знакома мне из курса лабораторных работ. Следовательно, с ней мне будет наиболее удобно выполнять курсовую работу. А также важно то, что у него имеются необходимые мне команды деления и умножения, которые в RISC архитектуре реализуются достаточно большими подпрограммами и тем самым требуется больше памяти для управляющей программы.

2.2 Выбор элементов схемы

1) Сначала рассмотрим выбор датчиков температуры.

Выбирая датчик температуры, я проанализировала существующие аналоговые и цифровые датчики я пришла к выводу, что использование аналогового датчика требует дополнительных элементов: усилителя и АЦП, что заметно усложняет схему, поэтому я предпочла цифровой вариант, в виде чипа DS18B20. Для выполнения моего курсового задания необходима точность +/-1, а эти датчики сертифицированы как измерительные приборы и обеспечивают точность до 0.1. Соответственно, возможно их использование в качестве надёжного средства измерения. При этом не требуется АЦП, так как выполнение операции преобразования полученных данных в цифровой вид ими обеспечивается самостоятельно. Второй важный момент, то что данный датчик может быть подключен по однопроводной сигнальной линии и передает данные по протоколу IWare. Благодаря обеспечению возможности адресного обращения возможно использование одной линии связи для всех датчиков.

Датчик DS18B20 имеет следующие отличительные особенности:

1. Точность ±0. 5 °C от -10°C до +85°C,

2. Разрешение от 9 до 12 бит, которое настраивается пользователем,

3. Передача данных посредством 1-проводного последовательного интерфейса,

4. 64-битный уникальный и неизменяемый серийный номер,

5. Многоточечное считывание,

6. Рабочее напряжение от 3. 0 В до 5. 5 В,

7. Вариант датчика с запиткой с линии данных (DS18B20-PAR),

8. O-92, 150mil 8-контактный SOIC, или 1. 98 мм x 1. 37 мм корпус с шариковыми выводами (±2. 0°C).

Данные в микросхеме DS18B20 считываются через 1-проводную последовательную шину в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0. 5 °C до 0. 0625 °C. Она является термометром с цифровым вводом / выводом, работающим с точностью ±0. 5 °C.

У каждой микросхемы DS18B20 имеется уникальный и неизменяемый 64-битный серийный номер, используемый как узловой адрес датчика. При этом появляется возможность сосуществовать множеству микросхем DS18B20 на одной 1 проводной шине. Микросхема DS18B20 может быть локально запитана от 3. 0 В до 5. 5 В или она может быть сконфигурирована таким образом, чтобы быть запитанной посредством 1-проводной линии данных.

Осуществление передачи команды начала преобразования и других команд, а также считывания значения измеренной температуры производится с помощью 1-проводного интерфейса (1-WireTM).

Используемый 1-проводным интерфейсом протокол не сложен. В любой момент времени на 1-проводной шине можно выделить устройство-мастер, которым может быть микропроцессор или компьютер, и подчиненное устройство, в нашем случае это микросхема система нагрева и охлаждения.

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

1. Формируется импульс сброса не менее 480 мкс.

2. Далее линия отпускается и через некоторое время не более 60 мкс она закорачивается самим датчиком это как сигнал готовности к обмену.

3. Далее следует выполнить передачу команды и адреса конкретного датчика установленного на шине.

После того, как мастер обнаружил ответ, он может передать датчику одну из команд. Передача ведётся путём формирования мастером специальных временных интервалов (time slots). Каждый временной интервал служит для передачи одного бита. Первым передаётся младший бит. Интервал начинается импульсом низкого уровня, длительность которого лежит в пределах 1 — 15 мкс.

/

Рис. 4. Временная диаграмма инициализации

Поскольку переход из единицы в ноль менее чувствителен к ёмкости шины (он формируется открытым транзистором, в то время как переход из ноля в единицу формируется подтягивающим резистором), именно этот переход используют 1-проводные устройства для синхронизации с мастером. В подчиненном устройстве запускается схема временной задержки, которая определяет момент считывания данных. Номинальное значение задержки равно 30 мкс, однако, оно может колебаться в пределах 15−60 мкс. За импульсом низкого уровня следует передаваемый бит. Он должен удерживаться мастером на шине в течение 60 — 120 мкс от начала интервала. Временной интервал завершается переводом шины в состояние высокого уровня на время не менее 1 мкс. Длительность интервала зависит от собственной емкости линии определяемой длинной. Так как в моем устройстве датчики находятся на большом расстоянии от контроллера, то рекомендуется не мене 15 мкс.

Первой командой, которую должен передать мастер для DS18S20 после инициализации, является одна из команд реализуемых устройством функций.

/

Рис. 5. Временная диаграмма передачи 0-го бита

/

Рис. 6. Пример передачи 1 бита

При приеме данных от подчиненного устройства временные интервалы для принимаемых битов тоже формирует мастер. Интервал начинается импульсом низкого уровня длительностью 15 мкс. Затем контроллер отпускает шину и если через 30 мкс он считывает 0, то этот бит удерживает термометр, иначе считывается 1. Таким способом, последовательно тактируя каждый бит, контроллер считывает все требуемые ему данные. Прием байта начинается с младшего бита.

Рассмотрим особенности протокола обмена. Вначале после проведения процедуры инициализации передается команда на выполнение определенных функций. Так как на линии подключено три термометра, то можно выполнить запуск измерения температуры сразу для всех термометров и чтобы исключить обмен номерами передаем команду пропустить передачу номера 0xCC. Далее посылаем команду Convert T — 0×44. Это сразу в трех микросхемах термометров запускает измерение и преобразование в цифровой вид температуры. Далее необходимо сформировать задержку от 500 до 750 мкс (зависит от конкретного типа микросхемы, поэтому выбираем наибольший интервал). Далее процедура сброса повторяется и теперь для выборки измеренной температуры необходимо передать команду 0xCD после чего передается номер конкретного термометра, а далее посылаем команду Read Scratchpad — BEh. Первый байт содержит знак, если температура «+», то он заполнен 0-ми, если «- «, то 11 111 111-ми. Если температура отрицательна, то значение температуры передается в инверсном дополнительном коде, что требует преобразования температуры.

Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде. Поскольку это значение занимает 2 байта, все разряды старшего байта равны знаковому разряду. Дискретность представления температуры составляет 0. 5 °C.

контроллер кондиционирование индикатор температура

Таблица 2.1. Зависимость выходного кода от температуры

Температура

Выходной код (Binary)

Выходной код (Hex)

Ст. байт

Мл. байт

+125°C

0000 0000

1111 1010

00FAh

+25°C

0000 0000

0011 0010

0032h

+0. 5°C

0000 0000

0000 0001

0001h

0°C

0000 0000

0000 0000

0000h

-0. 5°C

1111 1111

1111 1111

FFFFh

-25°C

1111 1111

1100 1110

FFCEh

-55°C

1111 1111

1001 0010

FF92h

2. 3 Описание принципиальной схемы

Принципиальная схема состоит из следующих узлов:

1) Входные датчики (выбор датчиков был обоснован ранее). Данные датчиков: измеренное значение температуры считывается и по последовательному каналу загружается в контроллер, откуда определяем температуру воздуха как снаружи, так и внутри канала, то есть после подогрева, насколько тёплый воздух мы подаём и, наконец, непосредственно в комнате. Для этого нам и необходимы три датчика, которые обеспечивают три точки контроля. Число датчиков может быть при необходимости расширено.

2) Для подключению к компьютеру используется стандартный компорт, обеспечивающий интерфейс +/ - 12 В RS232. Так как нужно подключить контроллер, имеющий аналогичный интерфейс, но с потенциалом +/ - 5 В, требуется преобразователь интерфейса, в качестве которого выбрана типовая микросхема МАХ232. Она формирует требуемые +/ - 12 В за счёт встроенного внутреннего генератора и конденсаторов обвязки, подключённых к данному чипу.

3) Схемы сброса и подключения кварцевого резонатора стандартные, рекомендуемые производителем, поэтому не требуют никакого изменения.

4) Для управления всей системой решено использовать восьмиклавишную клавиатуру, которая реализована с помощью специальной микросхемы — шифратора К155ИВ1, которая определяет, какая из клавиш нажата и передает код клавиши всего по трём проводам, что сокращает число необходимых для использования портов.

5) Для отображения нужной пользователю информации о состоянии системы в целом используется двустрочный ЖКИ — индикатор, который обеспечивает возможность отображения как символьных элементов, так и цифровых, что позволяет вводить нужный объём информации с необходимыми комментариями. Такое решение наиболее оптимальное в данном случае для реализации интерфейса с пользователем.

6) Для управления исполнительной частью, то есть вентилятором подачи воздуха и нагревательным элементом — тэном, используется два ключевых элемента: 1) мощное реле, которое коммутируется транзисторным ключом и включает тэн на нагрев, 2) ключ оптосиммисторный, использует оптосиммистор МОС306, но так как он образует ток до 1А, то он управляет более мощным ВТ139. Это позволяет подключать мотор вентиляции до 2 — 3 кВт. Такое управление через электронный ключ позволяет обеспечить необходимые коммутационные параметры и регулировать скорость вращения и соответственно скорость движения воздуха. Регулировка скорости производится с помощью импульсной модуляции.

3. Разработка программы управления

3.1 Общий алгоритм работы

При старте система по умолчанию выключена и на индикаторе ничего не отображается. После нажатия клавиши «1» система включается в работу, на индикатор выводятся установленные по умолчанию параметры (начально все установлено в 0). Далее пользователь настраивает необходимые параметры, нажимая на клавиши, устанавливает требуемые значения. При нажатии на клавишу «2», система переходит в ночной режим с пониженным уровнем шума, при нажатии на клавишу «3» регулируется скорость поддачи воздуха, при нажатии на клавишу «4» и «5» регулируется температура, при нажатии на клавиши «6», «7» регулируется время.

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

Программа функционирует в циклическом режиме с периодичностью 1 цикл/с. Происходит сканирование датчиков температуры и в зависимости от того, сколько установлено градусов, контроллер принимает решение о том, что он будет делать, и выполняется включение нужной скорости вентилятора или выключение подогрева воздуха, и тем самым обеспечиваются нужные параметры заданные пользователем.

Также система предусматривает работу под управлением компьютера, выполняя передаваемые им команды, система настраивает параметры и даже производит выключение или включение.

Пример надписи на ЖКИ

Т

у

л

-

0

5

Т

к

о

м

+

2

3

С

к

о

р

0

5

0

В

р

2

ч

5

0

м

3.2 Описание работы программы

При включении в розетку контроллер производит начальную инициализацию основных переменных и массивов, прерываний и необходимых флагов. Например, флаг on/off установлен в 0 (т.е. контроллер не отображает ничего и находиться в ждущем режиме. Программа состоит из основной части, разделённой на два логических блока. 1-й блок — инициализация параметров контроллера (обработка прерываний от последовательного порта и таймера).

Мы используем библиотеку 51-го контроллера. Вначале идёт объявление переменных, стандартные счётчики. Для измерения температуры мы выделили байтовые переменные Тул, Ткан, Тком. Сначала контроллер посылает сигналы датчикам и получает ответы о том, что датчики готовы к работе с ним. Затем контроллер посылает сигнал конкретному датчику и получает от него измеренное значение температуры. После получения результатов от всех трёх датчиков контроллер сравнивает полученные результаты с параметрами температуры, введёнными пользователем, либо с параметрами, установленными по умолчанию. Если температура в комнате оказывается ниже установленной температуры, то микроконтроллер включает нагревательный элемент. Если температура оказалась выше установленной, то, напротив, посылается сигнал об отключении тэна, а вентилятор продолжает работать, втягивая прохладный воздух до тех пор, пока температура не будет равна установленным параметрам, в этом случае система отключается. Для того чтобы была возможность ввести параметры температуры и времени используются соответствующие клавиши которые отслеживаются по моментам нажатия. Для отработки нажатия клавиатура сканируется много раз в секунду и контролируется изменение кода клавиши. При старте системы первым возможным установленным уровнем является 0о С, после каждого последующего нажатия кнопки «4» (+) температура на дисплее увеличивается на 1о, соответственно после каждого нажатия кнопки «5» (-) температура уменьшается на 1 и как только достигает 0, приращение останавливается.

Так как предусмотрен счетчик времени необходимо установить время, совпадающее с действующим. При введении времени сначала высвечиваются минуты, начиная с 1 мин., затем, при нажатии на кнопку «6» параметр увеличивается на 1 мин., как только параметр становится равен 60с, то время автоматически переводится в часы и, при нажатии на кнопку «7» время увеличивается на 1 час, после того как параметр становится равен 24 ч., он переводится в 0, после этого отсчёт начинается заново.

Вначале программы находится блок объявления переменных. В этом блоке регистрам и специальным битам системных регистров присваиваются символьные значения для более удобного обращения к ним. Также описываются и инициализируются вспомогательные управляющие флаги и переменные.

Затем идёт блок инициализации программы. В этом блоке осуществляется первоначальная настройка микроконтроллера.

После сброса происходит инициализация контроллера. Назначается предделитель таймера 1. При этом таймер 1 устанавливается в TH1=0xFD. Эта константа посчитана для режима SCON=0×50 при частоте кварца 11 000,0952 МГц. Этот предделитель даёт скорость на последовательном порту близкую к стандартной скорости 9600. Также для таймера1 устанавливается второй режим работы, обеспечивающий автоматическую нагрузку предделителя из TH вTL. Таким образом, решается вопрос автоматического задания частоты.

Таймер 0 устанавливается в первый режим 16-битного счётчика и в дальнейшем будет использоваться для подсчёта времени. Таймер 0 использует обработчик прерывания 1 и для его разрешения необходимо установить флаг ET0 в единичное состояние (ET0=1). Для запуска таймера 0 TR0 устанавливаем в единицу (TR0=1), одновременно запускаем и таймер 1 (TR1=1).

Для обработки прерываний от клавиатуры устанавливаем флаг EX1 в единичное состояние (ЕХ1=1) и разрешаем все прерывания флагом ЕА (ЕА=1).

Для обработки прерываний от последовательного порта устанавливаем ES в единицу (ES=1).

Затем устанавливаем порт Р1 в нулевое состояние (Р1=0, т. е. всё выключено по умолчанию).

Флаг включения on/off устанавливаем в нулевое состояние (flag on/off=0, т. е. он выключен).

Идёт инициализация переменных часов, минут, секунд. Шаг приёма в нулевом состоянии (step=0), команда в нулевом состоянии (komanda=0). Также сбрасываются флаги onoff и flag (flagonoff=0, flag=0).

Устанавливаем порты Р3.2 и Р3.3 в единицу на ввод, как только эти линии будут отпущены в ноль, это сигнализирует о нажатии клавиши.

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

Рассмотрим обработчики прерываний:

1) Обработчик прерывания клавиатуры interrupt2 (обслуживает внешнее прерывание int1, возникает, когда int1 переходит из 1 в о). В данном обработчике с порта Р3. 4, Р3. 5, Р3.7 считывается код клавиши и выполняется его преобразование. Таким образом, определяется, какая клавиша нажата и соответственно, какое действие стоит предпринять, для того чтобы выполнить установку заданных параметров. В обработчике прерываний проверяем, если предыдущее состояние (предыдущая нажатая клавиша) не равно текущему (текущей клавише), то мы обслуживаем момент нажатия. При нажатии нулевой клавиши (клавши включения / выключения) изменяется состояние флага onoff, при нажатии первой клавиши система переходит в ночной режим (минимальная скорость подачи воздуха для наименьшего возникновения шума). Вторая и третья клавиши для регулировки скорости подачи воздуха (+/ - соответственно), четвёртая и пятая клавиши для регулировки температуры (+/ - соответственно), шестая и седьмая клавиши для регулировки таймера (+/ - соответственно). Проверяем соответствующие условия.

2) Обработчик прерывания таймера 0 interrupt1. В данном обработчике мы вначале производим перезагрузку таймера / счётчика. Предделитель, загружая константу d8, ef соответственно в старшую и младшую часть TH, TL (TH0=0xd8, TL0=0xef). Что обеспечивает частоту переполнений 100 раз в секунду.

Запускается вывод информации на индикатор. При этом переменная flag будет указывать, что будет выводиться на семисегментные индикаторы. Температура для вывода рассчитывается делением на 10 (десятки) или получением остатка от деления на 10 единицы градусов.

Таким образом, в каждом такте обработчика прерывания выводим ранее заполненный массив отображаемых данных, тактируя сигналом l, переводя его в 0, потом в 1.

Далее идёт подсчёт времени. Он ведётся переменной sec100 (она отсчитывает сотые доли секунд), инкрементируя её в каждом прерывании таймера, мы получаем при sec100=1 отсчёт первой секунды. Здесь же мы инкрементируем переменную секунды и проверяем, не равна ли она 60, если да, то обнуляем её, а увеличиваем минуты. Аналогично проверяются и минуты. Также контролируются и часы, но до 24.

Процедура обмена с термометром. В первом такте выполняется сброс линии связи с датчиком температуры в 0 (Р3. 2=0), и удерживается линия связи в нулевом состоянии до следующего переполнения таймера. В следующем такте линия переводится в единичное состояние (Р3. 2=1) и выдерживается пауза в 45 мкс. Затем проверяем линию, что она находится в нулевом состоянии. Это говорит о том, что термометр ответил. Если термометр ответил, выдерживаем паузу в 250 мкс (50 раз повторяя цикл for) и проверяем, что линия сохранила своё состояние в 1 (не закорочена). Это говорит о том, что датчики готовы к обмену.

Далее передаётся команда 0хСС согласно стандарту шины IWare. После чего посылается команда 0×44, запуская конвертирование (измерение температуры цифровым датчиком). Контролируя переменную sec100, когда она равна 77 (т.е. прошло 750 мкс, нужных для измерения температуры), мы выполняем повтор инициализации сбросом и контролем линии и передаём команду 0хb8 (считать данные о температуре). Передав перед этим команду 0хbe и номер конвертированного датчика. Такое действие выполняется 3 раза, считывая температуру с трёх датчиков. Далее принимаем 2 байта: 1й — байт знака температуры, 2й — непосредственно измеренная температура. Таким образом, получаем требуемые значения с температурных датчиков. И, в зависимости от того, меньше ли установленная температура по сравнению с измеренной, включается или выключается тэн.

После инициализации программы следует основной цикл программы. При этом осуществляется проверка управляющих флагов и на основе этой проверки вызываются соответствующие процедуры.

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

Заключение

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

Вторым этапом реализации проекта стало написание программной части, которая обеспечивает управление оборудованием по заданному алгоритму. Для реализации функций обмена с температурными датчиками был изучен протокол IWare, который и был далее реализован в виде части программного кода. Также было выполнено описание программы и представлен её код.

Результат проекта представлен в виде отчета имеющего два приложения: листинг программы и принципиальная схема.

ПоказатьСвернуть
Заполнить форму текущей работой