Разработка контроллера управляющего работой холодильника

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

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

За последние годы микроэлектроники бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров (ОМК), которые предназначены для «интеллектуализации» оборудования различного назначения. ОМК представляют собой приборы, конструктивно выполненные в виде БИС, и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программы, память данных, также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной базы для построения управляющих и регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно ОМК.

микроконтроллер алгоритм программа листинг

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

Микроконтроллер холодильника должен выполнять и поддерживать следующие функции:

  • Контроль температуры в двух зонах в соответствии с установленными границами.
  • Диапазон установок ограничен заданными уровнями темпер.

Каждые три дня для устранения инея предусматривается режим разморозки для первой камеры морозилки.

21 стр., 10449 слов

Бытовой холодильник

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

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

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

Вся схема должна быть реализована на контроллере 51-ой серии с использованием минимального кол-ва элементов и простейшим цифровыми устройствами индикации в виде семи сегментного четырехразрядного индикатора на котором отображается как текущая температура в камерах так и устанавливаемая. Для управления достаточно простейшей трех, четырехкнопочной клавиатуры (+, — , режим).

2. Выбор микроконтроллера и электронные компонент

В этом курсовом проекте использовался микроконтроллер ADuC812 — интегральная 12-разрядная система сбора информации, включающая в себя прецизионный многоканальный АЦП с самокалибровкой, два 12- разрядных ЦАП. Данный контроллер мне наиболее хорошо знаком по лабораторным работам и допускает написание программ на языке высокого уровня PLM. 8-битное микропроцессорное ядро(MCU) поддерживается внутренними 8К FLASH ПЗУ программ, 640 байт ПЗУ памяти данных и 256 байт статической памяти данных (ОЗУ) с произвольной выборкой (RAM).

Описание контактов

Мнемоника

Вывод

Тип

Функция

AGND

22

I

Аналоговая земля. Общая точка аналоговых цепей.

RESET

9

I

Цифровой вход.

P1.0,P1.1

10,11

I

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

P2.0-P2.7

28-31, 36-39

I/O

Двунаправленный Порт 0 с открытым истоком. Контакты порта с записанными в них 1 являются плавающими и могут быть высокоимпедансными входами. При обращении к внешней памяти программ или данных Порт0 мультиплексирован магистралями младшего байта адреса и данных. При такой операции порт подтянут внутренним образом при наличии в нем 1.

P3.0-P3.7

16-19, 22-25

I/O

Двунаправленный Порт3 с внутренними, подтягивающими к питанию резисторами. Контакты Порта3, с записанными в них 1 подтянуты вверх и могут использоваться как входы. При таком использовании, следует иметь в виду, что они дают ток во внешнюю цепь. Контакты Порта3 — мультиплексны.

XTAL1

19

I

Вход тактового генератора

XTAL2

18

O

Выход тактового генератора

 выбор микроконтроллера и электронные компонент 1

Технические характеристики:

ПАМЯТЬ: 8 Кбайт FLASH памяти программ, 640 байт FLASH памяти данных, внутренний генератор подкачки заряда, 256 байт внутренней памяти данных, 16 Мбайт пространства внешней памяти данных, 64 Кбайт пространства внешней памяти программ.

1. Блок АЦП.

АЦП представляет собой восьмиканальный пяти микросекундный А/Ц преобразователь с однополярным питанием. Пользователю предоставлены многоканальный мультиплексор, устройство выборки-хранения, встроенный ИОН, система калибровок и собственно АЦП. Все компоненты блока легко управляется через три интерфейсных регистра специального назначения. АЦП позволяет работать как в однократном режиме измерения, так и в циклическом.

А/Ц преобразователь состоит из стандартного конвертера последовательного приближения и емкостного ЦАП. Конвертер получает аналоговые входные сигналы в диапазоне 0 — Vref. На кристалле расположен ИОН — прецизионный блок с низким дрейфом, откалиброванный изготовителем до 2.5В. Однократный или повторяющийся режимы преобразования могут выполняться программно или подачей внешнего сигнала Запуска Преобразования на контакт 25(CONVST/).

Также для инициирования повторяющегося процесса преобразования можно использовать сигналы Таймера2. АЦП можно установить в режим передачи данных по каналу прямого доступа к памяти — ПДП( DMA), когда блок повторяет циклы преобразования и посылает выборки во внешнюю память данных (RAM), минуя процессор. Этот процесс может охватывать весь объем внешней памяти 16МБ. ADuC812 поставляется с заводскими калибровочными коэффициентами, которые загружаются автоматически по включению питания, обеспечивая тем самым оптимальную работу устройства. Ядро АЦП содержит внутренние регистры калибровок Смещения и Усиления, причем, обеспечено, чтобы программная процедура калибровки пользователя подавляла заводские установки, давая тем самым минимум ошибок в конечной системе. Если необходимо, то через АЦП можно так же преобразовать сигнал внутреннего температурного сенсора.

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

Для управления АЦП имеется 3 основных SFR-регистра: ADCCON1, ADCCON2, ADCCON3.

Регистр ADCCON1 управляет преобразованием, временем переключения, режимами преобразования и потреблением устройства.

№ бита

Мнемоника

Описание

0

EXС

Бит разрешения внешнего запуска. Если установлен, то контакт 23 (CONVST/) будет использоваться как сигнал запуска (активный низкий должен быть не менее 100 нс).

1

T2C

Бит запуска преобразования от Таймера2. Если бит установлен, то сигнал переполнения Таймера2 используется для запуска АЦП.

2

AQ0

Биты задержки переключения, выбирают время, необходимое для перезарядки УВХ при переключении мультиплексора: AQ1 AQ0 Число тактов задержки запуска АЦП 0 0 1 0 1 2 1 0 3 1 1 4

3

AQ1

4

Биты деления тактовой частоты, выбирают коэффициент деления основной частоты микропроцессора для получения тактовой частоты АЦП. Цикл преобразования АЦП занимает 16 тактов, в дополнении к числу тактов переключения. Коэффициент выбирается из: CK1 CK0 Делитель для MCLK 0 0 1 0 1 2 1 0 4 1 1 8

5

CK1

6

MD0

Биты режима выбирают режимы работы АЦП следующим образом: MD1 MD0 Режим АЦП 0 0 Дежурный 0 1 Нормальный 1 0 Дежурный, если не выполняется цикл преобразования 1 1 Холостой, если не выполняется цикл преобразования

7

MD1

Регистр ADCCON2 управляет выбором номера канала и режимами преобразования

№ бита

Мнемоника

Описание

0

CS0

Биты выбора входных каналов. Позволяют осуществлять выбор номера канала АЦП под управлением программы. Преобразование будет выполняться для канала, номер которого указан данными битами. В режиме ПДП выбор номера канала осуществляется из ID канала, записанного во внешней памяти. CS3 CS2 CS1 CS0 CH# 0 n2 n1 n0 Номер входного канала(n2n1n0) 1 0 0 0 Температурный сенсор 1 x x x Другие комбинации 1 1 1 1 Останов ПДП

1

CS1

2

CS2

3

CS3

4

SCONV

Бит запуска однократного преобразования. Устанавливается пользователем для однократного запуска АЦП. Бит сбрасывается автоматически по завершению преобразования.

5

CCONV

Бит циклического преобразования. Устанавливается пользователем для установки АЦП в режим непрерывного циклического преобразования. В этом режиме АЦП выполняет преобразование в соответствии с типом синхронизации и конфигурацией каналов, выбранными в других SFR.

6

DMA

Бит разрешения режима ПДП. Устанавливается пользователем для начала операции ПДП со стороны АЦП.

7

ADCI

Бит прерывания АЦП устанавливается аппаратно по окончанию однократного цикла преобразования АЦП или по окончанию передачи блока в режиме ПДП. ADCI очищает аппаратно при переходе по вектору на процедуру обслуживания прерывания.

Регистр ADCCON3 Дает индикацию занятости АЦП для прикладных программ.

Как только АЦП сконфигурирован с помощьюADCCON1- 3, он начнет преобразовывать аналоговые входные сигналы и давать12- разрядные выходные коды в регистрах ADCDATAH(L).

В четырех разрядах ADCDATAH хранится номер канала. Формат слова результата показан на Рис.1:

 выбор микроконтроллера и электронные компонент 2

2. Таймеры/ Счетчики.

Таймеры/ Счетчики могут работать в 3-х основных режимах:

Оставлен для совместимости с 48-й серией, на таймер поступает OSC/32, разрядность 13 бит.

Работает как 16-ти разрядный счетчик. При переполнении состояние изменяется с FFFFh на 0000h. При необходимости изменения коэффициента деления после переполнения в каждом такте необходимо записывать заданную константу.

Счетчик работает как 8-ми разрядный, причем используется младшая часть — TL. В старшей части (TH) находится делитель, который по переполнению TL автоматически перегружается из TH в TL.

Режимы работы таймеров Таймер0 и Таймер1 задают два регистра специальных функций (SFR — Special Function Register): регистр режима — TMOD, расположенный по адресу 89h в регистровой памяти и регистр управления таймерами и внешними прерываниями — TCON (88h).

Для управления работой таймера Таймер2 служит регистр T2CON.

Регистр TMOD условно разбит на две половины: первая его часть отвечает за Таймер0, а вторая — за Таймер1.

Распределение битов регистра TMOD следующее:

  • бит (М0) — Младший байт поля управления режимом;
  • бит (М1) — Старший байт поля управления режимом;
  • бит (С/Т0) — Выбор функции таймера или счетчика для Таймера0: 0-таймер ,1-счетчик;

бит (GATE0) — Флаг управления входом:

  • 0 — работа канала разрешается (INT0=1, TR=1).

  • 1 — работа счетчика зависит только от TR0.

Распределение битов регистра TCON следующее:

бит (IT0) — Управление типом входа INT0:

  • 0 — вход прогнозируется как динамически по заданному фронту импульса.
  • 1 — статическое состояние входа.

1бит (IE0) — Флаг запроса прерывания INT0 при динамическом входе. Сбрасывается, когда происходит режим подтверждения прерывания.;

  • и 3 биты (IT1/IE1) — Тоже, что и предыдущие биты, но для Таймера0;
  • бит (TR0) — Флаг программного запуска Таймера0;
  • бит (TF0) — Флаг переполнения Таймера0, который вызывает запрос прерывания. При подтверждении прерывания флаг сбрасывается;
  • и 7биты (TR1,TF1) — Для Таймера1;
  • Для работы с таймером используется механизм прерываний, работой которого можно управлять через регистр маски прерываний IE (Interrupt Enable).

    Назначение битов регистра IE следующее:

бит (EX0) — бит разрешения внешнего прерывания INT0.

бит (ET0) — бит разрешения прерывания по переполнению Таймера0.

бит (EX1) — бит разрешения внешнего прерывания INT1.

бит (ET1) — бит разрешения прерывания по переполнению Таймера1.

бит (ES) — бит разрешения прерывания от последовательного порта UART.

бит (ET2) — бит разрешения прерывания по переполнению Таймера2.

бит (EADC) — бит разрешения прерывания АЦП.

бит (EA) — бит разрешения глобального прерывания. Если EA=0, то все прерывания запрещены.

4.

 выбор микроконтроллера и электронные компонент 3

Блоки структурной схемы:

Состоит из следующих элементов:

а) С1, С2, ZQ1-схема тактового генератора. Осуществляет выработку внешнего сигнала тактирования микроконтроллера частотой 24МГц.

б)С3,R5-схема первоначального сброса микроконтроллера. Обеспечивает корректный запуск.

в) DD1-микроконтроллер.

2) Клавиатура.

Переключает температурные режимы холодильника. Состоит из трех клавиш: “+” — положительнoe, “-” — отрицательнoe приращение, “P” — выбор устанавливаемого режима (изменение температуры морозилки, 2и камеры, быстрая заморозка, разморозка).

3) Внешний светодиодный семисегментные индикаторы(АЛС) и дешифратор DD2.

При подаче кода цифры на младшие четыре бита порта P2(P2.0-P2.3) он дешифруется и выводиться на семисегментный светодиодный индикатор при этом отображение четырех разных цифр выполняется путем быстрого сканирования (поочередного отображения каждой цифры с большой частотой так, что глаз не успевает замечать мерцания) для дополнительного отображения минусовой температуры в морозильной камере используется дополнительный светодиод. Коммутация активного элемента индикатора выполняется с помощью транзисторных ключей подключенных к старшей части порта Р2.

4) Блоки управления Компрессорами.

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

При разработке устройства были использованы следующие электронные компоненты:

1. Микроконтроллер ADuC 812. Был рассмотрен в курсе лабораторных работ и имеет подходящие характеристики для применения на практике.

2. Микросхема КР514ИД2 которая является дешифратором 10-7сегм.

  • Транзисторы серии КТ315 для коммутации индицирования индикатора.
  • Светодиод HL1 AL307B для отображение “-”.
  • Стабилизатор DA1 K145КРЕН5 для получения 5В питания.
  • Семисегментный индикатор HG1 АЛС333Г зеленого свечения.

Программа состоит из следующих основных блоков или подпрограмм.

Инициализация устанавливает 1 режим 0-го Таймера, настраивается режим AЦП, порты на ввод и вывод а также устанавливаются значения используемых переменных и флагов (например температура морозилки -6 второй камеры +6).

Обработка прерывания 0-го Таймера в ней выполняются следующие функции :

а) сканирование клавиатуры и выполнение функций изменения установленных параметров.

б) сканирование семисегментного индикатора для поочередного отображения цифр температуры.

в) подсчет времени для выполнения операции быстрой заморозки и отсчет 3-х суток для операции авторазморозки. (при t = +1).

3) Основная программа(бесконечный цикл).

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

6.1 Описание алгоритма работы устройства

При включении питания начинает выполнение основной программы. В начале нее вызывается процедура инициализации контроллера. Установка битов управления и направления передачи данных в портах ввода-вывода, инициализация АЦП и включение семисегментных индикаторов.

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

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

Зажигается знак минус на индикаторе температуры морозилки по сигналу на 0-й бит порта P3.

В процедуре инициализации устанавливается 1-й режим работы таймера обнуляются счетчики и pазpешается pабота 0-го Таймеpa. Разpешаются все прерывания и пpеpывания Таймера=0.

В инициализации блока АЦП выполняется настройка режима АЦП. Обнуление значения переменных и флагов определяющих положение клавиш и температурных режимов. Выставление установленных температур при допустимом изменении от -6 до +6. Линии 4-6 на ввод и включаются компрессоры на холод.

В основной части программы реализуется бесконечный цикл. В цикле измеряется температура , по реакциям нажатия клавиши изменяется и проверяется диапазон температур в которых должны находиться компрессоры. Подаются сигналы управляющие компрессорами через транзисторные ключи маломощными реле включения компрессоров. Управляя компрессорами можно устанавливать температуры для морозилки от 0 до -22 для второй камеры от +1 до +10. Выполняются четыре основных режима устанавливаемых клавиатурой: “-”, “+”, быстрая заморозка, разморозка. Переход между режимами осуществляется по кругу.

6.2 Листинг программы

/*программа управления холодильником */

start: do;

  • $include(reg812.dcl)

/* объявление основных переменных и флагов */

(t_1,t_2) word, /*температура в камерах установленная*/

(tr_1,tr_2) word, /* измеряемая температура */

ind(4) byte,

(i,j,nreg) byte, /* переменные для работы */

(flag, fl_razm,fl_moroz) byte, /*флаги определения режима работы */

ok byte, /*номера нажатой и пред клавиш */

adc_H,adc_L byte,_p word,

nind byte, /*номер отображаемого индикатора*/

per_t0 word; /*число циклов переполнения таймера0*/

adc:procedure interrupt 6; /*считываем данные с АЦП*/

adccon2=0;

  • adc_h=adcdatah;
  • adc_l=adcdatal;=1;eadc=1;
  • adc;

/*____Обработчик прерывания таймера____*/

timer_int: procedure interrupt 1; /* прерывание t0 */

/*установка сканируемого столбца*/nind=0 then P2=00010000b or ind(nind);nind=1 then P2=00100000b or ind(nind);nind=2 then P2=01000000b or ind(nind);nind=3 then P2=10000000b or ind(nind);=nind+1; if nind=4 then nind=0;

/*определение нажатых клавиш и реакции по ним*/

if (p3.4=0b) and (ok<>1) then /*приращение установленной температуры*/

do;ok=1;nreg=0 then do;_1=t_1-1;if t_10<0 then t_1=0;(0)=t_1/10;ind(1)=t_1 mod 10;;nreg=1 then do;_2=t_2+1;if t_2>10 then t_2=10;(2)=t_2/10;ind(3)=t_2 mod 10;;

  • end;
  • if (p3.5=0b) and (ok<>2) then /*уменьшение установленной температуры*/

do;ok=2;nreg=0 then do;_1=t_1+1;if t_1>22 then t_1=22;(0)=t_1/10;ind(1)=t_1 mod 10;;nreg=1 then do;_2=t_2-1;if t_2<3 then t_2=3;(2)=t_2/10;ind(3)=t_2 mod 10;;

  • end;
  • if (p3.6=0b) and (ok<>3) then/*переключение режимов по кругу */

do; ok=3; nreg=nreg+1;if nreg>=4 then nreg=0;;

  • if (P3 and 01110000b)=70h then ok=0; /*проверка на отпускание клавиш */

if per_t0>960 then do; /*если прошла мин увеличен счетчик*/

per_t0=0;tim_ptim_p+1; nreg<2 then do;/*включение периодической разморозки*/

if (fl_razm=0)and(tim_p>4320) then do;fl_razm=1;tim_p=0;end; /*24ч*/(fl_razm=1)and(tim_p>180) then do;fl_razm=0; tim_p=0;end; /*2ч*/;nreg=2 then do;(fl_moroz=1)and(tim_p>240) then do;fl_moroz=0;tim_p=0;nreg=0;end; /*3ч*/;

do; /*ежеминутное обновление показаний температуры*/

ind(0)=tr_1/10;ind(1)=tr_1 mod 10;(2)=tr_2/10;ind(3)=tr_2 mod 10; tr_1<>0 then P3.0=0;/*зажигаем минус на индикаторе температуры морозилки*/

end;

  • end;_t0=per_t0+1;
  • /* увеличиваем счетчик переполнений */

tf0=0; /* сброс флага переполнения */

init: procedure; /******пpоцедуpа инициализации******/

tmod=00000001b;/*пеpвый pежим для таймеpа */=1;/*пpеpывание по фpонту сигнала пеpеполнения*/,tl0=0;tr0=1; /*обнул счетчики и pазpешаем pаботу 0-го Таймеpa*/=1;/*запускаем таймеp 0 */=1; /*pазpешаем пpеpывания Таймера=0 */

ea=1;/*pазpешаем все пpеpывания*/

/*Инициализация АЦП*/

ADCCON1=60h;/*настраиваем режим AЦП*/

ADCCON2=0h;/*настраиваем канал 0*/

nreg=0;fl_moroz=0;fl_razm=0;ok=0;

/*устаналиваем значения по умолчанию*/

t_1=6;t_2=6;

  • p3=01111011;/*линии 4-6 на ввод и включаем компрессоры на холод*/

end init;

  • /*____основнaя программа _____*/init;

/******Исполнительный блок программы******/

do while 1; /*основной цикл работы холодильника*/

chan=0; sconv=1; flag=0;while flag=0; end;/*измеряем температуру t1*/_1=22-(adc_h*255+adc_l)*50/4096;/* перевод результатов АЦП в температуру*/

chan=1; sconv=1; flag=0;while flag=0; end;/*измеряем температуру t2*/_2=((adc_h and 0fh)*255+adc_l)*50/4096;/*перевод результатов АЦП в температуру*/

if nreg=2 then do; fl_moroz=1;time_p=0;end;(nreg<2)and(tr_1>t_1+1) THEN p3.1=1;(nreg<2)and(tr_2>t_2+1) THEN p3.3=1;(nreg<2)and(tr_1<t_1-2) THEN p3.1=0;(nreg<2)and(tr_2<t_2-2) THEN p3.3=0;(fl_razm=1)and(tr_1>-1) then p3.1=0;nreg=3 then do p3.1=0;p3.3=0;end;/*полная разморозка*/(nreg=2)and(tr_1<22) THEN p3.1=1;/*быстрая заморозка*/(nreg=2)and(tr_1=22) THEN p3.1=0;/*;

  • end start;
  • В данной курсовой работе был изучен микроконтроллер ADuC 812 при разработке холодильной установки. Были получены навыки программирования микропроцессорных систем и построения на их основе устройств управления и сбора информации.

Приложение (Спецификация)

 листинг программы 1

Приложение (Схема устройства)

 листинг программы 2