Автор работы: Пользователь скрыл имя, 06 Ноября 2013 в 20:33, курсовая работа
Температура в объекте регулирования (печи) измеряется с помощью термопары. Термопара преобразует температуру в напряжение, которое подается на усилитель. Выходной сигнал с усилителя подается на АЦП. Микроконтроллер Atmel ATmega 603 имеет встроенный АЦП. Процессор согласно программе, написанной для реализации данной кривой урегулирования, выдает или не выдает сигнал, который поступает на усилитель, который, питаясь от сети 380В, нагревает резистор печи. Модель, рассматриваемая нами, является упрощенной за счет того, что печь нагревается не мгновенно. По большому счету нагреватель следовало бы включать раньше, чем температура печи упадет ниже нужной нам. Но и в таком виде она достаточно продуктивна.
Московский Институт Стали и Сплавов
(технологический университет)
Двухконтурный микропроцессорный регулятор температуры.
Студента факультета ПМП
Гр. ТЭМ-99-1
Преподаватель:
Проф.Краснопольский А.Е.
Москва 2002 г.
Задание.
-микроконтроллер:
-использовать вход АЦП:
-использовать выход:
-величина опорного напряжения:
-вариант кривой регулирования:
-длительность процесса:
-максимальная температура: 1085 0С.
Принципиальная схема процесса регулирования.
Процесс регулирования является циклическим и выглядит следующим образом:
Температура в объекте регулирования (печи) измеряется с помощью термопары. Термопара преобразует температуру в напряжение, которое подается на усилитель. Выходной сигнал с усилителя подается на АЦП. Микроконтроллер Atmel ATmega 603
имеет встроенный АЦП. Процессор согласно программе, написанной для реализации данной кривой урегулирования, выдает или не выдает сигнал, который поступает на усилитель, который, питаясь от сети 380В, нагревает резистор печи. Модель, рассматриваемая нами, является упрощенной за счет того, что печь нагревается не мгновенно. По большому счету нагреватель следовало бы включать раньше, чем температура печи упадет ниже нужной нам. Но и в таком виде она достаточно продуктивна.
Важнейшим достоинством системы является то, что вмешательства человека не требуется.
Электронная схема регулятора.
380B
48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33
49
AT mega 603
Atmel corporation
64
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Описание выводов контроллера.
№ |
Краткое описание |
1 |
REN |
2-9 |
port E |
10-17 |
port B |
18-19 |
TOSC1,2 - выход на внешний генератор частоты |
20 |
RESET |
21 |
VCC |
22 |
GND |
23-24 |
XTAL1,2 - выход на кварц 4 МГц |
25-32 |
port D |
33 |
WR – запись |
34 |
RD –чтение |
35-42 |
port C - работает только на вывод данных |
43 |
ALE |
44-51 |
port A |
52 |
VCC |
53 |
GND |
54-61 |
port F – вход АЦП, работает только на прием данных |
62 |
AREF |
63 |
AGND |
64 |
AVCC |
Используется архитектура с закрытой шиной (гарвардская архитектура).
Блок-схема микроконтроллера ATmega603
Блок-схема программы.
Работа на участке включает в себя запуск таймеров и проверку на окончание интервалов. В зависимости от результата осуществляется переход на подпрограмму регулирования либо переход на следующий участок.
Подпрограмма регулирования включает в себя запуск и проверку АЦП, его опрос, сравнение полученного результата с уставкой и в зависимости от результата сравнения производит либо запуск нагревателя, либо его остановку.
Масштабирование кривой регулирования, выбор термопары и расчет входного усилителя.
Масштабирование проводим с учетом запаса (во избежание выхода из строя АЦП).
С учетом максимальной температуры выбираем термопару ТПП ПП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 |
Установка нулевого адреса для программы, директива компилятору | |
JMP |
NACH |
Переход к метке NACH | |
ORG |
$0018 |
Установка адреса 0018H для программы | |
DEC |
R20 |
R20 = R20 – 1 – декремент | |
DEC |
R18 |
Уменьшение на единицу R18 | |
SBC |
R19,R15 |
R19 <- R19 – R15 – C В итоге – уменьшение на единицу счетчика на регистрах R19, R18 («длинного счетчика») | |
RETI |
|||
ORG |
$0050 |
Установка начального адреса для программы === начало работы программы === | |
NACH: |
BCLR |
7 |
Запрещение всех прерываний (уст. 0 в 7 разряд регистра статуса SREG -- $3F) |
LDI |
R22,$7F |
Установка адреса стека $7FFF. SPH – регистр старшего байта адреса ($3E) SPL – регистр младшего байта адреса ($3D) Далее в программе работа со стеком идет автоматически | |
OUT |
SPH,R22 | ||
LDI |
R22,$FF | ||
OUT |
SPL,R22 | ||
LDI |
R22,0b00000000 |
Обнуление регистра управления MCUCR - $35. Обнуление бита 7 этого регистра устанавливает основной режим работы порта А. | |
OUT |
MCUCR,R22 | ||
LDI |
R22,0b00000001 |
Программирование: DA0 – выход, остальные – входы. (DDA - $1A) | |
OUT |
DDA,R22 | ||
LDI |
R22,$00 |
Отключение нагрузочных резисторов от входов и обнуление выхода (PORTA - $1B) | |
OUT |
PORTA,R22 | ||
LDI |
R22,0b00000100 |
Установка входа DF4 для работы АЦП. (ADMUX - $07) | |
OUT |
ADMUX,R22 | ||
LDI |
R22,0b10000101 |
Установка АЦП: разрешение работы, незапуск, однократный режим, обнуление флага, прерывание запрещено, коэффициент деления частоты 32. Частота АЦП fацп = fo/32 = 4000000/32 = 125000 Гц. Время преобразования tпр = 14/125000 = 112*10-6 c = 112 мкс. (ADCSR - $06) | |
OUT |
ADCSR,R22 | ||
LDI |
R22,0b00010000 |
Разрешение прерывания по режиму А таймера 1, и запрещение остальных прерываний. | |
OUT |
TIMSK,R22 | ||
CLR |
R22 |
Очистка R22 | |
OUT |
TIFR,R22 |
Обнуление всех флагов и всех таймеров. (TIFR - $36) | |
OUT |
TCCR1A,R22 |
Блокировка режима ШИМ. (TCCR1A - $2F) | |
LDI |
R22,0b00001101 |
Установка циклического режима и деления частоты на 1024. fтайм = 4000000/1024 = 3906 Гц. (TCCR1B - $2E) | |
OUT |
TCCR1B,R22 | ||
LDI |
R22,$87 |
Запись числа k = $0187 в регистры сравнения OCR1AH, OCR1AL ($2B, $2A). K = 3906/10 ~ 391 = $0187. Здесь частота прерываний таймера fпр. тайм = 10. Dtпр. тайм = 0,1 секунды. | |
OUT |
OCR1AL,R22 | ||
LDI |
R22,$01 | ||
OUT |
OCR1AH,R22 | ||
CLR |
R15 |
Очистка регистра | |
NOP |
Резервные ячейки памяти | ||
NOP |
|||
NOP |
|||
INT1: |
LDI |
R20,$55; |
Занесение начального значения уставки в регистры R17 (старший) , R16 (младший). |
LDI |
R17,$03; | ||
LDI |
R18,$BC; |
Занесение длительности 1го интервала t1 (числа 11BCH) в регистры R19, R18 (Интервал 454 с). | |
LDI |
R19,$11; | ||
M0: |
LDI |
R20,$8; |
Интервал Dtуставки1=0,8с (8H) |
BSET |
7; |
Разрешение глобального прерывания (запуск счета импульсов установки длительности интервалов). | |
M1: |
CALL |
REG; |
Вызов подпрограммы REG |
OR |
R20,R20; |
Проверка R20 на нуль | |
BRNE |
M1; |
Если не нуль, то переход на метку М1 | |
DEC |
R16,$01; |
Уменьшение уставки на 1 | |
ADC |
R17,R15; | ||
CLR |
R5; |
Очистка регистра | |
OR |
R5,R18; |
Проверка на нуль регистров R18, R19 (счетчик окончания интервала). | |
OR |
R5,R19; | ||
BRNE |
M0; |
Если не нуль, переход на метку М10 | |
JMP |
INT2; |
Переход на метку INT2 – к работе на втором интервале | |
NOP |
|||
NOP |
|||
NOP |
|||
INT2: |
BCLR |
7; |
Запрещение всех прерываний (остановка работы счетчиков). |
LDI |
R16,$AB; |
Занесение уставки 0280H в регистры (температура постоянного участка) | |
LDI |
R17,$01; | ||
LDI |
R18,$78; |
Занесение длительности 2го интервала (числа 2378Н) в регистры счетчика окончания интервала (интервал 908 с) | |
LDI |
R19,$23; | ||
BSET |
7; |
Разрешение прерываний. Запуск счетчика. | |
M2: |
CALL |
REG; |
Вызов подпрограммы |
CLR |
R5; |
Проверка на нуль | |
OR |
R5,R18; | ||
OR |
R5,R19; | ||
BRNE |
M2; |
Если не нуль, переход к метке М2 | |
JMP |
INT3; |
Переход на метку INT3 – к работе на третьем интервале | |
NOP |
|||
NOP |
|||
NOP |
|||
INT3: |
LDI |
R16,$AB; |
Занесение начального значения уставки в регистры R17 (старший) , R16 (младший). |
LDI |
R17,$01; | ||
LDI |
R18,$04; |
Занесение длительности 3го интервала t3 (числа 4704Н) в регистры R19, R18 (Интервал 1818 с). | |
LDI |
R19,$47; | ||
M3: |
LDI |
R20,$43; |
Интервал Dtуставки2=6.7с (43H) |
BSET |
7; |
Разрешение глобального прерывания (запуск счета импульсов установки длительности интервалов). | |
M4: |
CALL |
REG; |
Вызов подпрограммы REG |
OR |
R20,R20; |
Проверка R20 на нуль | |
BRNE |
M4; |
Если не нуль, то переход на метку М4 | |
INC |
R16,$01; |
Увеличение уставки на 1 | |
ADC |
R17,R15; | ||
CLR |
R5; |
Очистка регистра | |
OR |
R5,R18; |
Проверка на нуль регистров R18, R19 (счетчик окончания интервала). | |
OR |
R5,R19; | ||
BRNE |
M3; |
Если не нуль, переход на метку М3 | |
NOP |
|||
NOP |
|||
IN |
R22,PINA; |
Чтение порта А (PINA -$19) | |
ANI |
R22,0b11111110; |
Вывод нуля по выходу DA0 (PORTA - $18) | |
OUT |
PORTA,R22; | ||
BCLR |
7; |
Запрещение прерываний. | |
SLEEP |
Выключение до сброса | ||
NOP |
|||
NOP |
|||
;Подпрограмма | |||
REG: |
IN |
R22,ADCSR |
Чтение регистра управления и состояния АЦП |
ORI |
R22,0b01000000 |
Запуск АЦП | |
OUT |
ADCSR,R22 |
||
NGOT: |
IN |
R22,ADCSR |
Чтение регистра управления и состояния АЦП Маскирование (выделение флага готовности) |
ANI |
R22,0b00001000 | ||
BREQ |
NGOT |
Если нет готовности – переход к метке NGOT | |
IN |
R23,ADCL |
Чтение АЦП (ADCH - $05, ADCL - $04) | |
IN |
R24,ADCH |
||
ANI |
R24,0b00000011 |
Маскирование неиспользуемых разрядов Сравнение старших битов | |
CR |
R17,R24 | ||
BRNQ |
RM0 |
Если равны | |
BRCS |
RM1 |
Если измеренная температура больше уставки | |
RJMP |
RM2 |
Если измеренная температура меньше уставки | |
RM0: |
CR |
R16,R23 |
Сравнение младших байтов |
BRCS |
RM1 |
Если измеренная температура больше уставки | |
RM2: |
IN |
R22,PINA |
Включение нагревателя |
ORI |
R22,0b00000001 |
||
OUT |
PORTA,R22 |
Возврат из подпрограммы Выключение нагревателя | |
RET |
|||
RM1: |
IN |
R22,PINA | |
ANI |
R22,0b11111110 |
||
OUT |
PORTA,R22 |
Возврат из подпрограммы | |
RET |
Использованная литература и программное обеспечение:
Информация о работе Двухконтурный микропроцессорный регулятор температуры