Двухконтурный микропроцессорный регулятор температуры
Рефераты >> Радиоэлектроника >> Двухконтурный микропроцессорный регулятор температуры

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

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

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

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

Установка нулевого адреса для программы, директива компилятору

 

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

 


Страница: