Каталог :: Радиоэлектроника

Курсовая: Двухконтурный микропроцессорный регулятор температуры

                       Московский Институт Стали и Сплавов                       
                          (технологический университет)                          
     

Курсовая работа

Двухконтурный микропроцессорный регулятор температуры. Студента факультета ПМП Гр. ТЭМ-99-1 Преподаватель: Проф.Краснопольский А.Е. Москва 2002 г. Задание. 1. Разработать принципиальную схему микроконтроллера для регулирования температуры технологического процесса. -микроконтроллер: ATmega603 -использовать вход АЦП: DF4 -использовать выход: DA0 -величина опорного напряжения: 5.82 В -вариант кривой регулирования: 7 -длительность процесса: 3180 сек. -максимальная температура: 1085 0С. 2. Выбрать термопару, рассчитать усилитель и нарисовать принципиальную схему регулятора температуры. 3. Написать программу для микроконтроллера регулятора температуры. 4. Дать описание блок-схемы регулятора, описание принципиальной схемы, применяемых микросхем. Дать подробное описание структурной схемы программы и текста программы. Принципиальная схема процесса регулирования.

Процесс регулирования является циклическим и выглядит следующим образом: Температура в объекте регулирования (печи) измеряется с помощью термопары. Термопара преобразует температуру в напряжение, которое подается на усилитель. Выходной сигнал с усилителя подается на АЦП. Микроконтроллер Atmel ATmega 603 имеет встроенный АЦП. Процессор согласно программе, написанной для реализации данной кривой урегулирования, выдает или не выдает сигнал, который поступает на усилитель, который, питаясь от сети 380В, нагревает резистор печи. Модель, рассматриваемая нами, является упрощенной за счет того, что печь нагревается не мгновенно. По большому счету нагреватель следовало бы включать раньше, чем температура печи упадет ниже нужной нам. Но и в таком виде она достаточно продуктивна. Важнейшим достоинством системы является то, что вмешательства человека не требуется. Электронная схема регулятора.

U1
380B
48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33
49 32 Внешний вид контроллера.
AT mega 603
Atmel corporation
64 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Описание выводов контроллера.

Краткое описание

1REN
2-9port E
10-17port B
18-19TOSC1,2 - выход на внешний генератор частоты
20RESET
21VCC
22GND
23-24XTAL1,2 - выход на кварц 4 МГц
25-32port D
33WR – запись
34RD –чтение
35-42port C - работает только на вывод данных
43ALE
44-51port A
52VCC
53GND
54-61port F – вход АЦП, работает только на прием данных
62AREF
63AGND
64AVCC
Используется архитектура с закрытой шиной (гарвардская архитектура). Блок-схема микроконтроллера ATmega603 Блок-схема программы.

Инициализация включает в себя инициализацию порта F, подключение его к АЦП, выбор режима работы АЦП, инициализацию порта A, инициализацию двух таймеров. Работа на участке включает в себя запуск таймеров и проверку на окончание интервалов. В зависимости от результата осуществляется переход на подпрограмму регулирования либо переход на следующий участок. Подпрограмма регулирования включает в себя запуск и проверку АЦП, его опрос, сравнение полученного результата с уставкой и в зависимости от результата сравнения производит либо запуск нагревателя, либо его остановку. Масштабирование кривой регулирования, выбор термопары и расчет входного усилителя.

427D 1ABH

853D 355H

640D 280H

Масштабирование проводим с учетом запаса (во избежание выхода из строя АЦП). С учетом максимальной температуры выбираем термопару ТПП ПП68 Рабочий интервал 0-1200 0С, максимальная температура 1600 0С. График зависимости ТЭДС от температуры выглядит следующим образом. Ктерм=0.0098 Усилитель сигнала с термопары: 140УД17А, Uсм<0.1 мВ Dt1уставки = 454/(1085-543)=0,8 c или 8 импульсов таймера.(8H) Dt2уставки = (3180-1362)/(814-543) = 6.7 с или 67 импульсов таймера.(43H) Dt1интервал=454 с или 4540 импульсов таймера (11BCH) Dt2интервал=908 с или 9080 импульсов таймера (2378H) Dt3интервал=1818 с или 18180 импульсов таймера (4704H) Uвх.макс=Ктерм∙Кз∙Тмах= 12.8 мВ Кус = Uоп/(Ктерм∙Кз∙Тмах) =455 R2=1 кОм, R1=R2*(Кус-1) =454 кОм С1=0.1 мкФ подбор конденсатора производился с помощью Electronics Workbench 512 Подбор мощности печи и периода АЦП. Мощность печи: 20 кВт Период АЦП: 0.09 Предварительные установки. Вход АЦП – DF4 Выход на усилитель – DA0 Прерывания таймера каждые 0,1 с. Назначение регистров: -R16, R17 – хранение уставки. -R18, R19 – счетчик окончания интервала. -R20 – счетчик интервала изменения уставки. -R15 - счетчик для хранения 0 (флаг переполнения). -R5, R22 – рабочие регистры. -R23,R24 – регистры для хранения числа, прочитанного с АЦП. Текст программы.
ORG$0000Установка нулевого адреса для программы, директива компилятору
JMPNACHПереход к метке NACH
ORG$0018Установка адреса 0018H для программы
DECR20R20 = R20 – 1 – декремент
DECR18Уменьшение на единицу R18
SBCR19,R15

R19 <- R19 – R15 – C

В итоге – уменьшение на единицу счетчика на регистрах R19, R18 («длинного счетчика»)

RETI
ORG$0050

Установка начального адреса для программы

=== начало работы программы ===

NACH:BCLR7Запрещение всех прерываний (уст. 0 в 7 разряд регистра статуса SREG -- $3F)
LDIR22,$7F

Установка адреса стека $7FFF.

SPH – регистр старшего байта адреса ($3E)

SPL – регистр младшего байта адреса ($3D)

Далее в программе работа со стеком идет автоматически

OUTSPH,R22
LDIR22,$FF
OUTSPL,R22
LDIR22,0b00000000Обнуление регистра управления MCUCR - $35. Обнуление бита 7 этого регистра устанавливает основной режим работы порта А.
OUTMCUCR,R22
LDIR22,0b00000001Программирование: DA0 – выход, остальные – входы. (DDA - $1A)
OUTDDA,R22
LDIR22,$00Отключение нагрузочных резисторов от входов и обнуление выхода (PORTA - $1B)
OUTPORTA,R22
LDIR22,0b00000100Установка входа DF4 для работы АЦП. (ADMUX - $07)
OUTADMUX,R22
LDIR22,0b10000101

Установка АЦП: разрешение работы, незапуск, однократный режим, обнуление флага, прерывание запрещено, коэффициент деления частоты 32. Частота АЦП fацп = fo/32 = 4000000/32 = 125000 Гц. Время преобразования tпр = 14/125000 = 112*10-6 c = 112 мкс. (ADCSR - $06)

OUTADCSR,R22
LDIR22,0b00010000Разрешение прерывания по режиму А таймера 1, и запрещение остальных прерываний.
OUTTIMSK,R22
CLRR22Очистка R22
OUTTIFR,R22Обнуление всех флагов и всех таймеров. (TIFR - $36)
OUTTCCR1A,R22Блокировка режима ШИМ. (TCCR1A - $2F)
LDIR22,0b00001101Установка циклического режима и деления частоты на 1024. fтайм = 4000000/1024 = 3906 Гц. (TCCR1B - $2E)
OUTTCCR1B,R22
LDIR22,$87Запись числа k = $0187 в регистры сравнения OCR1AH, OCR1AL ($2B, $2A). K = 3906/10 ~ 391 = $0187. Здесь частота прерываний таймера fпр. тайм = 10. Dtпр. тайм = 0,1 секунды.
OUTOCR1AL,R22
LDIR22,$01
OUTOCR1AH,R22
CLRR15Очистка регистра
NOPРезервные ячейки памяти
NOP
NOP
INT1:LDIR20,$55;Занесение начального значения уставки в регистры R17 (старший) , R16 (младший).
LDIR17,$03;
LDIR18,$BC;

Занесение длительности 1го интервала t1 (числа 11BCH) в регистры R19, R18 (Интервал 454 с).

LDIR19,$11;
M0:LDIR20,$8;

Интервал Dtуставки1=0,8с (8H)

BSET7;Разрешение глобального прерывания (запуск счета импульсов установки длительности интервалов).
M1:CALLREG;Вызов подпрограммы REG
ORR20,R20;Проверка R20 на нуль
BRNEM1;Если не нуль, то переход на метку М1
DECR16,$01;Уменьшение уставки на 1
ADCR17,R15;
CLRR5;Очистка регистра
ORR5,R18;Проверка на нуль регистров R18, R19 (счетчик окончания интервала).
ORR5,R19;
BRNEM0;Если не нуль, переход на метку М10
JMPINT2;Переход на метку INT2 – к работе на втором интервале
NOP
NOP
NOP
INT2:BCLR7;Запрещение всех прерываний (остановка работы счетчиков).
LDIR16,$AB;Занесение уставки 0280H в регистры (температура постоянного участка)
LDIR17,$01;
LDIR18,$78;Занесение длительности 2го интервала (числа 2378Н) в регистры счетчика окончания интервала (интервал 908 с)
LDIR19,$23;
BSET7;Разрешение прерываний. Запуск счетчика.
M2:CALLREG;Вызов подпрограммы
CLRR5;Проверка на нуль
ORR5,R18;
ORR5,R19;
BRNEM2;Если не нуль, переход к метке М2
JMPINT3;Переход на метку INT3 – к работе на третьем интервале
NOP
NOP
NOP
INT3:LDIR16,$AB;Занесение начального значения уставки в регистры R17 (старший) , R16 (младший).
LDIR17,$01;
LDIR18,$04;

Занесение длительности 3го интервала t3 (числа 4704Н) в регистры R19, R18 (Интервал 1818 с).

LDIR19,$47;
M3:LDIR20,$43;

Интервал Dtуставки2=6.7с (43H)

BSET7;Разрешение глобального прерывания (запуск счета импульсов установки длительности интервалов).
M4:CALLREG;Вызов подпрограммы REG
ORR20,R20;Проверка R20 на нуль
BRNEM4;Если не нуль, то переход на метку М4
INCR16,$01;Увеличение уставки на 1
ADCR17,R15;
CLRR5;Очистка регистра
ORR5,R18;Проверка на нуль регистров R18, R19 (счетчик окончания интервала).
ORR5,R19;
BRNEM3;Если не нуль, переход на метку М3
NOP
NOP
INR22,PINA;Чтение порта А (PINA -$19)
ANIR22,0b11111110;Вывод нуля по выходу DA0 (PORTA - $18)
OUTPORTA,R22;
BCLR7;Запрещение прерываний.
SLEEPВыключение до сброса
NOP
NOP

;Подпрограмма

REG:INR22,ADCSRЧтение регистра управления и состояния АЦП
ORIR22,0b01000000Запуск АЦП
OUTADCSR,R22
NGOT:INR22,ADCSR

Чтение регистра управления и состояния АЦП

Маскирование (выделение флага готовности)

ANIR22,0b00001000
BREQNGOTЕсли нет готовности – переход к метке NGOT
INR23,ADCLЧтение АЦП (ADCH - $05, ADCL - $04)
INR24,ADCH
ANIR24,0b00000011

Маскирование неиспользуемых разрядов

Сравнение старших битов

CRR17,R24
BRNQRM0Если равны
BRCSRM1Если измеренная температура больше уставки
RJMPRM2Если измеренная температура меньше уставки
RM0:CRR16,R23Сравнение младших байтов
BRCSRM1Если измеренная температура больше уставки
RM2:INR22,PINAВключение нагревателя
ORIR22,0b00000001
OUTPORTA,R22

Возврат из подпрограммы

Выключение нагревателя

RET
RM1:INR22,PINA
ANIR22,0b11111110
OUTPORTA,R22

Возврат из подпрограммы

RET
Использованная литература и программное обеспечение:
  • «Курс лекций по электронике за 6 семестр» Краснопольский А.Е.
  • Electronics Workbench 512
  • Math Lab 6.0