Розробка мікроконтролерного термостабілізатора

Автор работы: Пользователь скрыл имя, 06 Декабря 2013 в 21:22, курсовая работа

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

Не для кого не секрет, що в наш час техніка набрала шаленої швидкості розвитку і є підстави стверджувати, що ця швидкість і далі буде зростати. Технологія нашої цивілізаціїї досягла грандіозного рівня. Зараз людство може керувати астрономічними за величиною енергіями, починаючи від потужності ядерної енергетики, закінчуючи можливістю впливати на проходження процесів в середині власної планети і навіть інших космічних тіл.

Содержание

Вступ 3
1 Аналітичний огляд існуючих рішень термостабілізаторів 5
2 Аналіз вихідних даних та розробка структурної схеми термостабілізатора 13
3 Розробка функціональної схеми термостабілізатора 15
4 Вибір елементної бази термостабілізатора 17
5 Розробка, розрахунок та опис принципової схеми термостабілізатора 21
6 Розробка програмного забезпечення термостабілізатора 27
7 Розрахунок потужності споживання термостабілізатора 32
8 Розрахунок надійності термостабілізатора 34
9 Інструкція з експлуатації термостабілізатора 37
Висновки 38
Література

Вложенные файлы: 1 файл

Розробка мікроконтролерного термостабілізатора.docx

— 247.91 Кб (Скачать файл)

      MOVLW    0x0A

      MOVWF    F0

      INCF     FSR       

      DECFSZ   I

      GOTO     L54

      RETURN

 

;Процедура розрахунку температури  з точністю до 0.1 по даним, отриманим  від DS18В20

;Вхідні параметри: TEMP_READH, TEMP_READL, результат поміщається в буфер індикації

 

CONV_T

      MOVF     TEMP_READL, 0

      MOVWF    NumL

      MOVF     TEMP_READH, 0

      MOVWF    NumH

      BTFSC    TEMP_READH, 7    ;Обчислення цілої частини

      GOTO     L30              ;Температура нижче нуля

      MOVLW    .4               ;Виділяємо цілу частину значення температури

                                ;деленням на .16d

      MOVWF    A

L61   BCF      STATUS, C

      RRF      NumH, 1

      RRF      NumL, 1

      DECFSZ   A, 1

      GOTO     L61

      MOVF     NumL, 0

      MOVWF    TH

      MOVF     TEMP_READL, 0    ;Обчислюємо десяткову  частину

      ANDLW    B'00001111'

      GOTO     L50

L30   MOVLW    .4               ;Виділяємо цілу частину значення  температури

                                ;деленням на .16d

      MOVWF    A

L62   BCF      STATUS, C

      RRF      NumH, 1

      RRF      NumL, 1

      DECFSZ   A, 1

      GOTO     L62

      MOVLW    0xFF

      MOVWF    TH

      MOVF     NumL, 0

      SUBWF    TH, 1

      movlw    0xFF

      movwf    NumH

      MOVF     TEMP_READL, 0    ;Обчислюємо десяткову  частину

      ANDLW    B'00001111'

      SUBWF    NumH, 0

      ANDLW    B'00001111'

L50   MOVWF    NumL

      CLRF     NumH

      MOVLW    .6

      MOVWF    A

L63   MOVF     NumL, 0

      ADDWF    NumH, 1

      DECFSZ   A, 1

      GOTO     L63

      MOVF     NumH, 0

      MOVWF    NumL

      CLRF     NumH

      CALL     Convert

      MOVLW    0x0A

      SUBWF    Tens, 0

      BTFSC    STATUS, Z

      CLRF     Tens

      MOVLW    .5               ;Округлення 

      SUBWF    Ones, 0

      BTFSC    STATUS, C

      INCF     Tens, 1

      MOVF     Tens, 0

      MOVWF    TL

 

;Порівняння температур 

 

      BTFSC    T_ALARM, 7       ;Перевіряємю установку

      GOTO     L72              ;Установка нижче нуля, значить перехід

      MOVF     T_ALARM, 0       ;Установка вище нуля

      MOVWF    NumL             ;Додамо до NumL значення установки і

      MOVLW    .54              ;додамо 54, щоби полегшити порівняння

      ADDWF    NumL, 1          ;додатньої установки і відємної темперетури (або навпаки)

      GOTO     L73              ;Перехід        

L72   MOVLW    0xFF             ;Зявляємось тут при умові відємної уставноки

      MOVWF    NumL

      MOVF     T_ALARM, 0

      SUBWF    NumL, 1

L73   BTFSC    TEMP_READH, 7    ;Перевіряємо зчитаний код з  датчика температури 

      GOTO     L74              ;Температура нижче нуля

      MOVF     TH, 0            ;Температура вище нуля і знов додамо 54,але

      MOVWF    NumH             ;не до зчитаних з датчика даних,

      MOVLW    .54              ;а до цілої частини вирахованої температури

      ADDWF    NumH, 1

      GOTO     L76              ;Перехід

L74   MOVF     TH ,0            ;Зявляємось тут при умові

                                ;відємної температури

      MOVWF    NumH

      BTFSC    PA, 3            ;Перевірим, чи включений нагрівач!

      CALL     L2E              ;включений, значить стрибнемо, додамо

                                ;гістерезис і повернемося

      MOVF     NumH, 0          ;Не включений – зничить порівнюєм,

      DECF     NumL, 1

      SUBWF    NumL, 0          ;віднімаючи з установки температуру       

      BTFSC    STATUS, C                       

      GOTO     L2A              ;Перехід 

L2B   BSF      PA, 3            ;якщо виміряна температура нижче –

                                ;ввімкнення нагрівача

      MOVF     PA, 0

      MOVWF    PORTA       

      GOTO     L31              ;Вихід з підпрограми

L2A   BTFSC    T_ALARM, 7       ;Перевіряємо ще раз установку, на випадок

                                ;додатньої температури, але

      GOTO     L2C              ;відємної установки, щоб не було проблем

                                ;при переході через 0

      GOTO     L2B              ;відповідно вмикаємо або вимикаємо нагрівач

L2C   BCF      PA, 3            ;якщо виміряная температура више –

                                ;вимкнення нагрівача

      MOVF     PA, 0

      MOVWF    PORTA

      GOTO     L31              ;Вихід з подпрограми

L76   BTFSC    PA, 3            ;Зявляємось тут при умові

                                ;додатньої температури

      CALL     L2D              ;Перевірим, чи включений нагрівач?

                                ;так – стрибнем та додамо  гістерезис

      MOVF     NumH, 0          ;ні - порівнюємо,

      DECF     NumL, 1       

      SUBWF    NumL, 0               

      BTFSC    STATUS, C        ;віднімаючи з установки температуру       

      GOTO     L88

      BCF      PA, 3                               

      MOVF     PA, 0

      MOVWF    PORTA       

      GOTO     L31

L2D   MOVF     DT_ALARM, 0      ;Додамо 2 град. гістерезиса, щоб

                                ;вимкнути нагрівач

      ADDWF    NumL, 1          ;на 2 град. вище

      RETURN

L2E   MOVF     DT_ALARM, 0      ;Віднімаємо 2 град. гістерезиса, щоб

                                ;вимкнути нагрівач

      SUBWF    NumL, 1          ;на 2 град. вище, при відємній температурі.

      RETURN

L88   BSF      PA, 3

      MOVF     PA, 0

      MOVWF    PORTA

 

;Запис отриманого значення температури  в буфер індикатора

 

L31   BTFSS    TEMP_READH, 7

      GOTO     L36                                                       

 

;Температура вище нуля

 

      MOVF     TH, 0

      SUBLW    .19

      BTFSC    STATUS, C       

      GOTO     L36

                                  

;Температура вище мінус 19 градусів

       

;при температурі меньше -19.9

 

      MOVF     TH, 0            ;Занесення значення температури в буфер індикатора

      MOVWF    NumL                               

      CLRF     NumH

      CALL     Convert

      MOVF     Ones, 0

      CALL     DS7SEG

      MOVWF    RAZR0

;Температура вище плюс 99 градусів

 

      MOVF     TH, 0            ;Занесення значення температури в буфер індикатора

      MOVWF    NumL                               

      CLRF     NumH

      CALL     Convert

      MOVF     Ones, 0

      CALL     DS7SEG

      MOVWF    RAZR0

      MOVF     Tens, 0

      CALL     DS7SEG

      MOVWF    RAZR1

      MOVF     Hund, 0

      CALL     DS7SEG

      MOVWF    RAZR2

      BCF      FLAGS, 6         ;Відключити виведення десяткової крапки

      RETURN

 

;при температурі від -19.9 до 99.9

 

L37   MOVF     TL, 0            ;Занесення значення температури в буфер індикатора

      MOVWF    NumL                               

      CLRF     NumH

      CALL     Convert

      MOVF     Ones, 0

      CALL     DS7SEG

      MOVWF    RAZR0

      MOVF     TH, 0            ;Занесення значення температури в буфер індикатора

      MOVWF    NumL                               

      CLRF     NumH

      CALL     Convert

      MOVF     Ones, 0

      CALL     DS7SEG

      MOVWF    RAZR1

      MOVF     Tens, 0

      CALL     DS7SEG

      MOVWF    RAZR2

      BTFSC    TEMP_READH, 7    ;Ввімкнення знаку мінус  при відємній температурі

      BCF      RAZR2, 6

      BSF      FLAGS, 6         ;Відключити  виведення десяткової крапки

      RETURN

 

;*****************************************************************************

 

 


Информация о работе Розробка мікроконтролерного термостабілізатора