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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

Технічні  характеристики приладу, отримані з  розрахунків, відповідають завданню на курсовий проект.

 

 

Література

 

  1. Гуржій А.М., Поворознюк Н.І., Електричні і радіотехнічні вимірювання. –К: Навч.книга, 2002.
  2. Борноволоков Э. П. Радиолюбительские схемы. – 2-е издание, перераб. и доп. – К.: Техніка, 1982. 383 с.
  3. Цвиренко П. Термостабілізатор для аквариума. – Радио, 1996, №2, 
    с. 56.
  4. Нечаев И. Термостабілізатор. – Радио, 2004, №6, с. 43.
  5. Баранов Н. Простой термостабилизатор. – Радио, 1988, №8, с. 29,30.
  6. Цибин В. Цифровой термометр. – Радио, 1996, №10, с. 43.
  7. Киселев А. Термостабилизатор с цифровой индикацией. – Радио, 1994, №9, с. 26-28.
  8. Трошков В. Термометр на DS1821 и PIC-микроконтроллере. – Радио, 2002, №5, с. 20,21.
  9. Технічна документація. DS18B20 Programmable Resolution 1-Wire Digital Thermometer. – Dallas Semiconductor, 2001.
  10. Долгий А. Разработка и отладка устройств на МК. – Радио, 2001, №5–№12.
  11. Технічна документація. PIC16F84A Data Sheet. 18-pin Enhanced FLASH/EEPROM 8-bit Microcontroller. – Microchip Technology Inc, 2001.
  12. Справочный листок. Микросхемные стабилизаторы серий 142, К142, КР142. – Радио, 1990, №8, с. 89,90.
  13. Терещук Р.М. Полупроводниковые приемно-усилительные устройства: Справ. радиолюбителя. – 3-е изд., пере раб. и доп. – К.: Наук. думка, 1987, 800 с.
  14. Долгий А. Програматоры и программирование микроконтроллеров. – Радио, 2004, №1–№5.
  15. Фрумкін Г.Д. – Расчёт и конструирование радиоаппаратуры: Учебник для радиотехнич. спец. техникумов. – 5-е изд., перераб. и доп. – М.: Высш. шк., 1989.
  16. Партала О.Н. Радиокомпоненты и материалы. Справочник. – К.: Радиоаматор, 1998.
  17. Фергусон Дж., Макари Л., Уилльямз П. Обслуживание микропроцессорных систем. Пер. с англ. – М.: Мир, 1989, 336 с.
  18. Тули М. Справочное пособие по цифровой электронике: Пер с англ.– М.: Энергоатомиздат, 1990, 176 с.

 

 

 

                                                       Додаток А

(обов¢язковий)

 

Текст програми для мікроконтролера.

 

;Програма  для термостабілізатора на PIC16F84 4МГц с датчиком температури DS18B20

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

LIST P=16F84

;Опис вбудованих в контролер  ресурсів

#include <P16F84.INC>

__config  _XT_OSC & _WDT_OFF & _PWRTE_ON

F0           EQU        0

RTIF         equ        2

;Опис змінних і констант

NumL         EQU       0x0C

NumH         EQU       0x0D

Thou         EQU       0x0E

Hund         EQU       0x0F

Tens         EQU       0x10

Ones         EQU       0x11

I            EQU       0x13

A            EQU       0x14

BACKUPW      EQU       0x15

BACKUPS      EQU       0x16

RAZR0        EQU       0x17         ;Три комірки, містять семисегментний код

RAZR1        EQU       0x18         ;для виводу на індикатор

RAZR2        EQU       0x19

 

;В змінній FLAGS кожен біт сигналізує про:

;0 – натиснкта кнопка 1

;1 - натиснкта кнопка 2

;2 – необхідність оновлення  екранного буфера

;5 - раз в секунду сигналізує  про необхідність зчитування  паказників DS1820

;6 - необхідність виводу десяткової  крапки

 

FLAGS        EQU       0x1A

J            EQU       0x1B

K            EQU       0x1C

TIME0        EQU       0x1D

TIME1        EQU       0x1E

PA           EQU       0x1F

T7SEG0       EQU       0x20

T7SEG1       EQU       0x21

T7SEG2       EQU       0x22

T_IND        EQU       0x23

TEMP_READH   EQU       0x24

TEMP_READL   EQU       0x25

TL           EQU       0x26

TH           EQU       0x27

TIME2        EQU       0x28

I_BYTE       EQU       0x29

_N           EQU       0x2A

TEMP         EQU       0x2B

O_BYTE       EQU       0x2C

LOOP1        EQU       0x2D

LOOP2        EQU       0x2E

T_ALARM      EQU       0x2F

DT_ALARM     EQU       0x30

 

CONSTANT         DATA_PIN=7

;************ Початкова ініціалізація  контролера и програмы ************

 

      BSF      STATUS, RP0      ;Встановлюємо сторінку  пам’яті 1

      CLRF     TRISA            ;Налаштовуємо усі лінії порту А і В на вивід

      CLRF     TRISB

      GOTO     BEGIN_PROG       

       

;************ Точка входу в процедуру  обробки переривань від таймера  ************

 

      BCF      INTCON, GIE      ;Забороняєм переривання

      MOVWF    BACKUPW          ;Зберігаєм вміст акумулятора

      MOVF     STATUS, 0        ;і регістра STATUS

      MOVWF    BACKUPS

 

;Програмні таймери

 

      INCF     TIME0, 1

      MOVF     TIME0, 0

      SUBLW    .81              ;122

      BTFSC    STATUS, C       

      GOTO     L22       

      CLRF     TIME0

      INCF     TIME2, 1

L18   MOVF     TIME2, 0

      SUBLW    .2               ;Встановлюєм період вимірювання температури рівним 1 сек.

      BTFSC    STATUS, C       

      GOTO     L26

      CLRF     TIME2

      BSF      FLAGS, 5

L26   BTFSS    FLAGS, 0         ;Зміна заданої температури можлива  тільки після

      GOTO     L22              ;натиснення кнопки 1

      BTFSS    FLAGS, 1         ;Якщо натисната кнопка 1

      GOTO     L22

      BCF      FLAGS, 2

      BSF      FLAGS, 7

      INCF     T_ALARM, 1

      MOVF     T_ALARM, 0

      SUBLW    0x7D             ;Якщо досяг 125 градусів, скидаємо до -55 градусів

      BTFSS    STATUS, Z       

      GOTO     L22

      MOVLW    0xC9

      MOVWF    T_ALARM

               

;Опитування стану кнопок управління

 

L22   BCF      PA, 0            ;Прапорці, які показують 

      BCF      FLAGS, 1         ;стан кнопок.

      BCF      PA, 1            ;Вмикаєм індикатори

      BCF      PA, 2

      BSF      PA, 4

      MOVF     PA, 0

      MOVWF    PORTA

      BSF      STATUS, RP0      ;Встановлюємо сторінку  пам’яті 1

      BSF      TRISB, 5         ;Розряди порту В, подключені до кнопок налаштовуєм

                                ;на ввід

      BSF      TRISB, 6               

      BCF      STATUS, RP0      ;Встановлюємо сторінку пам’яті 0

      BTFSC    PORTB, 6         ;Встановлюємо прапорці в залежності від стану кнопок

      GOTO     L23

      BSF      FLAGS, 0

      MOVLW    .255

      MOVWF    T_IND

L23   DECFSZ   T_IND

      GOTO     L24

      BCF      FLAGS, 0

      BTFSC    FLAGS, 7

      CALL     SEEPROM

      BCF      FLAGS, 7

L24   BTFSS    PORTB, 5

      BSF      FLAGS, 1

      BSF      STATUS, RP0      ;Встановлюємо сторінку  пам’яті 1

      BCF      TRISB, 5         ;Розряди порту В, подключені до кнопок налаштовуєм

                                ;на вивід

      BCF      TRISB, 6               

      BCF      STATUS, RP0      ;Встановлюємо сторінку пам’яті 1

               

;Динамічна індикація вмісту  RAZR0, RAZR1, RAZR2

 

      MOVLW    .0               ;Показуємо розряд 0

      SUBWF    I, 0

      BTFSS    STATUS, Z

      GOTO     L2       

      MOVLW    B'10000000'

      ANDWF    PORTB, 1         ;Очищуєм розряди порту, подключені до індикатора

      MOVF     RAZR0, 0

      IORWF    PORTB, 1         ;Виводимо цифру

      BSF      PA, 0            ;Включаємо відповідний розряд індикатора

      MOVF     PA, 0

      MOVWF    PORTA       

      GOTO     L4

L2    MOVLW    .1               ;Показуємо розряд 1

      SUBWF    I, 0

      BTFSS    STATUS, Z

      GOTO     L3       

      MOVLW    B'10000000'

      ANDWF    PORTB, 1         ;Очищуєм розряди порту, подключені до індикатора

      MOVF     RAZR1, 0

      IORWF    PORTB, 1         ;Виводимо цифру

      BSF      PA, 1

      BTFSC    FLAGS, 6

      BCF      PA, 4

      BTFSS    FLAGS, 6

      BSF      PA, 4

      MOVF     PA, 0

      MOVWF    PORTA

      GOTO     L4

L3    MOVLW    B'10000000'

      ANDWF    PORTB, 1         ;Очищуєм розряди порту, подключені до індикатора

      MOVF     RAZR2, 0

      IORWF    PORTB, 1         ;Виводимо цифру

      BSF      PA, 2

      MOVF     PA, 0

      MOVWF    PORTA       

L4    INCF     I, 1

      MOVLW    .3               ;Обнулення лічильника розрядів, коли досяг 3

      SUBWF    I, 0

      BTFSC    STATUS, Z

      CLRF     I

 

;Завершення обробки переривання  від таймера

 

IRET  BCF      INTCON, RTIF     ;Скидання прапорця переривання  від таймера

      MOVF     BACKUPS, 0

      MOVWF    STATUS

      MOVF     BACKUPW, 0       ;Відновлення вмісту  акумулятора

      BSF      INTCON, GIE      ;Дозвіл переривань

      RETFIE                    ;Повернення з обробки переривання

 

;************ Продовження початкової  ініціалізації ************

 

BEGIN_PROG       

      MOVLW    B'01000011'      ;Підключаемо попередній дільник  до таймера і встановлюєм

      MOVWF    OPTION_REG       ;коеффициєнт ділення 1:16, сигнал  на таймер від

                                ;внутрішнього генератора

      BCF      STATUS, RP0      ;Встановлюємо сторінку пам’яті 0

      CLRF     PORTB

      MOVLW    B'00000111'

      MOVWF    PA

      MOVF     PA, 0

      MOVWF    PORTA       

      CLRF     I                ;Ініціалізуємо змінні

      CLRF     FLAGS           

      CALL     START_DS

      CLRF     TMR0

      CLRF     TEMP_READL

      CLRF     TEMP_READH

      CALL     LEEPROM

      MOVLW    0x02

      MOVWF    DT_ALARM

      CLRF     TIME0

      CLRF     TIME2

      CLRF     TMR0

      MOVLW    B'10100000'      ;Дозволяєм переривання від переповнення таймера

      MOVWF    INTCON

      BCF      FLAGS, 5

      BCF      FLAGS, 3

      MOVLW    B'10111111'      ;(три риски при включенні)

      MOVWF    RAZR0

      MOVWF    RAZR1

      MOVWF    RAZR2

      CALL     START_DS

 

;Пауза до отримання першого  достовірного результату вимірювання  температури

 

L0    BTFSS    FLAGS, 5

      GOTO     L0

      CALL     START_DS

      BCF      FLAGS, 5

L00   BTFSS    FLAGS, 5

      GOTO     L00

 

;************ Основний цикл програми ************

 

L10   CLRWDT

L25   BTFSS    FLAGS, 0

      GOTO     L12              ;Необхідний вивід температури

      BTFSC    FLAGS, 2

      GOTO     L10

      BSF      FLAGS, 2

      BCF      FLAGS, 6         ;Відключення  коми

      BTFSC    T_ALARM, 7       ;Обчислювання цілої частини

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

      MOVF     T_ALARM, 0

      MOVWF    NumL

      GOTO     L71               

L70   MOVLW    0xFF

      MOVWF    NumL

      MOVF     T_ALARM, 0

      SUBWF    NumL, 1

L71   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

      BTFSC    T_ALARM, 7

      BCF      RAZR2, 6         ;Включення  знаку мінус при відємній температурі

      GOTO     L10

L12   BCF      FLAGS, 2         ;Вивід температуры

      BTFSC    FLAGS, 3

      CALL     CONV_T

      BCF      FLAGS, 3

      BTFSS    FLAGS, 5

      GOTO     L10

 

;Передається керування кожну  секунду

 

      BCF      FLAGS, 5

      BSF      FLAGS, 3

      CALL     READ_T

      CALL     START_DS

      ANDLW    0xFF

      BTFSS    STATUS, Z

      GOTO     L10

      MOVLW    B'00000001'

      MOVWF    RAZR0

      MOVWF    RAZR1

      MOVWF    RAZR2

      BCF      FLAGS, 3

      GOTO     L10              ;Повертаємось на початок циклу

 

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

 

;Процедура перетворення десяткової  цифри з WREG в код 7-ми сегментного індикатора

 

DS7SEG     

      ADDWF    PCL, 1

      RETLW    B'01000000'      ;0

      RETLW    B'01111001'      ;1

      RETLW    B'00100100'      ;2

      RETLW    B'00110000'      ;3

      RETLW    B'00011001'      ;4

      RETLW    B'00010010'      ;5

      RETLW    B'00000010'      ;6

      RETLW    B'01111000'      ;7

      RETLW    B'00000000'      ;8

      RETLW    B'00010000'      ;9

      RETLW    B'01111111'      ;Пробіл

      RETLW    B'00111111'      ;Мінус

 

 

 

 

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

 

;Процедура переводу числа формата  HEX16 (змінні NumL, NumH) в формат BSD

;(змінні Thou, Hund, Tens, Ones)

 

Convert

      swapf    NumH,w                       

      IORLW    B'11110000'               

      movwf    Thou

      addwf    Thou, 1

      addlw    0xE2

      movwf    Hund

      addlw    0x32

      movwf    Ones

      movf     NumH, 0

      andlw    0x0F

      addwf    Hund, 1

      addwf    Hund, 1

      addwf    Ones, 1

      addlw    0xE9

      movwf    Tens

      addwf    Tens, 1

      addwf    Tens, 1

      swapf    NumL, 0

      andlw    0x0F

      addwf    Tens, 1

      addwf    Ones, 1

      rlf      Tens, 1

      rlf      Ones, 1

      comf     Ones, 1

      rlf      Ones, 1

      movf     NumL, 0

      andlw    0x0F

      addwf    Ones, 1

      rlf      Thou, 1

      movlw    0x0A

Lb1:  addwf    Ones, 1

      decf     Tens, 1

      btfss    3, 0

      goto     Lb1

Lb2:  addwf    Tens, 1

      decf     Hund, 1

      btfss    3, 0

      goto     Lb2

Lb3:  addwf    Hund, 1

      decf     Thou, 1

      btfss    3, 0

      goto     Lb3

Lb4:  addwf    Thou, 1

      btfss    3, 0

      goto     Lb4

      MOVLW    Thou             ;Видалення незначачих нулей

      MOVWF    FSR

      MOVLW    3

      MOVWF    I

L54   MOVF     F0, 0

      ANDLW    0x0F

      BTFSS    STATUS, Z

      RETURN                    ;Розряд не дорівнює 0

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