Проектирование микроконтроллерных устройств



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное  учреждение высшего

Профессионального образования

 

САМАРСКИЙ ГОСУДАРСТВЕННЫЙ  АЭРОКОСМИЧЕСКИЙ

УНИВЕРСИТЕТ имени академика  С.П.КОРОЛЁВА

 

 

Кафедра РТУ

 

 

Дисциплина «Цифровые устройства»

 

 

Проектирование микроконтроллерных устройств

 

Пояснительная записка  к курсовому проекту

 

 

 

 

 

 

 

 

Выполнил:          Карюхин Д. А.

Группа:             5402

Руководитель проекта:        Кудрявцев И. А.

Дата сдачи на проверку:

 

 

Оценка и дата защиты:

 

 

 

 

 

 

 

 

 

Самара

 

2006

 

 

 

ЗАДАНИЕ №23

 

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

Амплитуда напряжения – (1 - 10)В;

Частота сигнала – 50Гц±1%;

Максимальная погрешность задания напряжения – 1%;

Задание напряжения - потенциометром;

Минимальное сопротивление  нагрузки – 10 Ом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PЕФЕРАТ

 

 

 

Курсовой проект.

 

Пояснительная записка:  18с.,  5 рис.,  0 табл.,  6 источников.

 

Графическая документация:   1л. А3,   1л. А4

 

 

 

 

 

 

 

 

ИНВЕРТОР, МИКРОКОНТРОЛЛЕР, БЛОК ПИТАНИЯ, АЛГОРИТМ, ПРОГРАММА

 

 

 

 

 

Произведены выбор функциональной и принципиальной схем инвертора; выбор микроконтроллера и вспомогательных элементов. Произведён необходимый расчёт токов и напряжений. Разработан необходимый источник питания. Составлен алгоритм и написана программа для микроконтроллера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СОДЕРЖАНИЕ

 

Введение…………………………………………………………………………....4

1. Анализ задания, составление описания и блок-схемы устройства…………..5

 

2. Выбор компонентов схемы и их описание…………………………………….6

2.1 Выбор микроконтроллера…...…………………………….……………..6

2.2 Выбор вспомогательных элементов конструкции..…………………….8

2.2.1 Входная цепь…………………………………………………………..8

2.2.2 Потенциометр..………………………………………………………..8

2.2.3 Блок питания…………………………………………………………..8

2.2.5 Прочие элементы схемы…….. ………………………………………8

3. Алгоритм………………………………………….……………………….…….9

4 Программа на ассемблере……………………………………………………….11

Заключение……...………………………………………………………………….17

Список использованных источников……………………………………………..18

Приложение А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

В современной технике  постепенно становится незаменимым  использование цифровых устройств. При нынешнем развитии цифровых технологий, позволяется уменьшать размеры  оборудования при решении огромного числа задач, в том числе автоматизации, контроля и управления производством, приёма, обработки и хранения различных сигналов, различные типы измерительных приборов и пр.

Одним важным классом цифровых устройств является микроконтроллеры, устройства управления объектами, который представляет собой стандартный массовый (относительно недорогой) логический блок, конкретное назначение которого определяет сам пользователь с помощью программного обеспечения.

В данном курсовом проекте  будет рассмотрены и рассмотрены принципы работы инвертора, спроектирована принципиальная схема, написана управляющая программа на языке Assembler.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Анализ задания, составление описания и блок-схемы устройства

 

Рисунок 1 – Структурная схема инвертора.

 

Блок-схема устройства, приведённая  на рисунке 1, состоит из :

- Микроконтроллер – PIC16F873, выбран в виду наличия АЦП, модулей ШИМ, достаточное количество выводов

- Блок питания – цепь формирующая необходимые напряжения для нормального и стабильного функционирования устройства

- цепи тактирования  и сброса – предназначены для  нормального функционирования микроконтроллера

- Потенциометр – задает амплитуду напряжения, требуемую на выходе инвертора

- 3-хфазный инвертор – необходим для формирования гармонических колебаний на выходе устройства

 

Принцип действия устройства :

- потенциометром задается амплитуда выходного напряжения, которая фиксируется встроенным модулем АЦП

- с использованием двух встроенных модулей ШИМ и таймеров на транзисторах с плавающей точкой реализуются три синусоидальных сигнала с разностью фаз 120º  требуемой амплитуды

- другие три транзистора необходимы для задания положительной и отрицательной полуволн

 

 

 

 

 

 

 

 

 

2 Выбор компонентов схемы и их описание

 

2.1 Выбор микроконтроллера

 

Главным компонентом  данного цифрового устройства является микроконтроллер. И от того, что входит в его состав, его характеристик будет зависеть работа всей схемы, скорость и качество обработки данных. Для реализации заданного устройства, нам необходимы : аналогово-цифровой преобразователь, возможность реализации широтно-импульсной модуляции, простая и доступная система команд. Под такие параметры хорошо подходит PIC16F873. Документация и основные принципы работы широко распространены и легко доступны.

  • Емкость перепрограммируемой Flash памяти: 4К 14-тиразрядных слов;
  • Напряжение питания (2-5,5)В;
  • Программируемая защита памяти программ;
  • Внутреннее ОЗУ ёмкостью 256х8 бит;
  • 22 программируемые линии ввода/вывода;
  • Два 8-разрядных и 16-разрядный таймеры/счетчики событий;
  • 10-разрядный модуль АЦП;
  • Два модуля захвата/сравнения/ШИМ;
  • Тактовая частота 32 кГц - 20 МГц.

 

Микроконтроллеры PIC16F873 выпускаются в корпусах типа PDIP и SOIC.

Вид и цоколёвка микроконтроллера представлены на рисунке 2.

Структурная схема микроконтроллера представлена на рисунке 3.

Рисунок 2 – Типы корпусов и цоколёвка микроконтроллера

 

 

 

 

 

 

 

 

Рисунок 3 – Структурная схема микроконтроллера

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Выбор вспомогательных элементов конструкции

 

2.2.1 Потенциометр

 

Через делитель, состоящий из потенциометра 1кОм и постоянного резистора сопротивлением на 3кОм, задается опорное напряжение для модуля АЦП. С третьего вывода потенциометра будет сниматься требуемое напряжение. Сопротивления делителя будет достаточно для компенсаций тока утечки на выводах. Зависимость сопротивления от угла поворота следует выбрать линейную. Этим параметрам удовлетворяют: потенциометр СПЗ-37-1кОм; резистор С-23-3кОм.

 

2.2.2 Блок питания

На вход БП подаётся переменное напряжение 220В. С помощью трансформатора оно понижается до 24В во вторичной обмотке и подаётся на диодный мост VD11-VD14, где оно выпрямляется. На выходах диодного моста включён стабилизатор фиксированного напряжения на +20В, на базе микросхемы 142ЕН9А. С середины вторичной обмотки трансформатора напряжение 12В подаётся на диодный мост VD7-VD10, напряжение с выхода которого подается на питание микросхемы КР142ЕН5А, которая также является стабилизатором фиксированного напряжения, но на +5В. В схеме также установлены фильтрующие конденсаторы, которые стабилизируют питание, увеличивая помехоустойчивость.

 

2.2.3 Инвертор

Основными элементами инвертора являются транзисторы, работающие в ключевом режиме. Поскольку управляющие токи велики, следует выбирать  
МДП-транзисторы. Исходя из условия, что допустимое напряжение сток-исток не должен быть менее 20В, а напряжение затвор-исток не менее 24В, выбираем транзисторы VT2,VT3,VT5,VT6,VT8,VT9. Таким требованиям удовлетворяют транзисторы КП902А. Также выбираем транзисторы VT1,VT4,VT7 по допустимому напряжению сток-исток не менее 24В(КП301В). Управление с микроконтроллера осуществляется через резисторы 100Ом. Диоды выбираются по допустимому прямому току не менее 2А(BYW95).

 

2.2.4 Прочие элементы схемы

Цепь тактирования используется стандартная для подключения кварцевого резонатора. В данном устройстве используем резонатор на 20МГц, при этом на выполнение одной операции будет тратиться 0,2мкс. Конденсаторы используются танталовые 33пФ.

 

 

 

 

 

 

3 Алгоритм

Рисунок 4 – Алгоритм основной программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 5 – Алгоритм подпрограммы прерывания

4 Программа на ассемблере

4.1 Файл const.h

 

#define _C   STATUS,C

#define _Z   STATUS,Z

#define _RP0  STATUS,RP0

#define _RP1  STATUS,RP1

#define T1          T1CON,TMR1ON

#define T2          T2CON,TMR2ON

#define AL   PORTB,1

#define BL   PORTB,2

#define CH   PORTB,0

#define CL   PORTB,3

;**********************************************************************************;КОНСТАНТЫ

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

KORR equ 0x28

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

;РЕГИСТРЫ

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

    CBLOCK 0x20

A_PH:          1   ; Счетчик фазы A

B_PH:          1   ; Счетчик фазы B

C_PH:          1   ; Счетчик фазы C

K:             1   ; Коэфициент деления.

DELIM:     1   ; Делимое

DELIT:     1   ; Делитель

RH:            1   ; Частное деления

 

      ENDC

      CBLOCK 0x70

W_COPY:      1 ; Копия регистра W

STATUS_COPY: 1 ; Копия регистра STATUS

      ENDC

 

4.2 Файл interrupt.inc

 

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

;  INTERRUPT VECTOR

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

org 0x04   ;Вектор прерывания    

movwf  W_COPY  ;Сохранение стека- W сохранить в регистре W_COPY

swapf STATUS,W ;Обменять полубайты в регистре status и записать в W

movwf STATUS_COPY ;W сохранить в регистре STATUS_COPY

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

banc0

btfsc PIR1,0 ; Прерывание таймера 1?

goto TMR1INT ; Да

btfsc PIR1,6 ; Нет. Прерывание АЦП?

goto ADCINT  ; Да

btfsc PIR1,1 ; Нет. Прерывание таймера 2?

goto TMR2INT ; Да

goto END_PRER   ; Нет, выйти из прерывания.

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

END_PRER   ;восстановление стека

swapf STATUS_COPY,W ;Обменять полубайты STATUS и записать в W

movwf  STATUS  ;w-заносим в STATUS

swapf W_COPY,F ;обменять полубайты в регистре W_COPY и сохранить в W_COPY

swapf W_COPY,W ;обменять полубайты в регистре W_COPY и востановить регистр W без воздействия на STATUS

retfie

;======================================================================== 

TMR1INT

bcf CH   ; Выключить ключ фазы С

bcf T1   ; Выключить таймер 1

bcf PIR1,0  ; Сбросить флаг прерывания

goto END_PRER

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

ADCINT

bcf PIR1,6      ; Сброс флага прерывания

movf ADRESH,w ; Считывание результата преобразования

sublw 0x1A

btfsc _C  ; Напряжение меньше 1В?

goto BOL  ; Нет

movf 0x0A,w   ; Да, коефициент деления 10

movwf K

goto END_PRER

BOL

movf ADRESH,w

movwf DELIT  ; результат = делитель

movf 0xFF,w

movwf DELIM  ; загружаем делимое

call DIV

movf RH,w

movwf K   ; результат = коэфициент деления

goto END_PRER

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

TMR2INT

bsf CH   ; включаем фазу С

bcf PIR1,1  ; Сброс флага прерывания

movf A_PH,w

call sinus  ; предварительная выборка фазы А

clrf PCLATH

movwf DELIM

movf K,w

movwf DELIT

call DIV  ; делим на К

movf RH,w

btfsc AL  ; положительная полуволна?

sublw 0xFF  ; Нет, вычитаем W из FF

movwf CCPR1L ; Загружаем значение скважности Фазы А

movf B_PH,w

call sinus  ; предварительная выборка фазы В

clrf PCLATH

movwf DELIM

movf K,w

movwf DELIT

call DIV  ; делим на К

movf RH,w

btfsc BL  ; положительная полуволна?

sublw 0xFF  ; Нет, вычитаем W из FF

movwf CCPR2L ; Загружаем значение скважности фазы В

movf C_PH,w

call sinus  ; предварительная выборка фазы С

clrf PCLATH

movwf DELIM

movf K,w

movwf DELIT

call DIV  ; делим на К

movf KORR,w

subwf RH,0  ; Поправка на выполнение программы

btfsc _C  ; Был заем?

goto COFF  ; Да, сброс фазы С

btfss CL        ; Положительная полуволна?

sublw 0xFF  ; Да, вычитаем W из FF

movwf TMR1H  ; загружаем длительность фазы С

call CSET

movf 0x21,w

movwf T1CON  ; Включаем таймер 1

bsf ADCON0,2 ; Запуск преобразования АЦП

goto END_PRER

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

COFF

bcf CH   ; сбрасываем фазу С

call CSET

bsf ADCON0,2 ; Запуск преобразования АЦП

goto END_PRER

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

CSET

movf 0x31,w

incf A_PH,1  ; инкрементируем счетчик фазы А

subwf A_PH,0

btfsc _Z  ; Счетчик переполнен?

call TRIGA  ; Да, переключаем полуволны

incf B_PH,1  ; инкрементируем счетчик фазы B

subwf B_PH,0

btfsc _Z  ; Счетчик переполнен?

call TRIGB  ; Да, переключаем полуволны

incf C_PH,1  ; инкрементируем счетчик фазы C

subwf C_PH,0

btfsc _Z  ; Счетчик переполнен?

call TRIGC  ; Да, переключаем полуволны

return

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

TRIGA

clrf A_PH  ; Сбросить счетчик

btfsc AL  ; Положительная полуволна?

bcf AL   ; Нет, закрыть нижний ключ

bsf AL   ; Да, открыть нижний ключ

return

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

TRIGB

btfsc BL  ; Положительная полуволна?

bcf BL   ; Нет, закрыть нижний ключ

bsf BL   ; Да, открыть нижний ключ

return

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

TRIGC

btfsc CL  ; Положительная полуволна?

bcf CL   ; Нет, закрыть нижний ключ

bsf CL   ; Да, открыть нижний ключ

return

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

DIV

clrf RH   ; Сброс старого результата

movf DELIT,w  ; загружаем делитель в аккумулятор

REPEAT

subwf DELIM,1 ; вычитаем делитель из делимого

btfsc _C  ; Был заем?

goto ENDDIV  ; Да, выходим из подпрограммы

incf RH,1  ; Нет, инкрементируем частное

goto REPEAT

ENDDIV

return

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

;============================================================================================== 

; Таблица Синусов

org H'400'

sinus  

bsf    PCLATH,2 

  addwf  PCL,1

dt 0x00, 0x10, 0x21, 0x31, 0x41, 0x50, 0x60, 0x6f, 0x7D, 0x8B, 0x99, 0xA5, 0xB1

dt 0xBD, 0xC7, 0xD1, 0xDA, 0xE2, 0xE9, 0xEF, 0xF4, 0xF9, 0xFC, 0xFE, 0xFF, 0xFF

dt 0xFE, 0xFC, 0xF9, 0xF4, 0xEF, 0xE9, 0xE2, 0xDA, 0xD1, 0xC7, 0xBD, 0xB1, 0xA5 dt 0x99, 0x8B, 0x7D, 0x6F, 0x60, 0x50, 0x41, 0x31, 0x21, 0x10

return

;=============================================================

 

4.3 Файл gen.asm

 

LIST P=16f873

TITLE master program

include p16f873.inc

include "const.h"

banc0 macro

bcf  _RP0

bcf  _RP1

endm

banc1 macro

bsf  _RP0

bcf  _RP1

endm

 

 

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

; RESET VECTOR

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

org 0x00

goto INI

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

;  INTERRUPT VECTOR

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

include "interrupt.inc"

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

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

;CONFIGURATION

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

INI

    banc1

    movf 0x09,w

    movwf TRISA     ; AN0, AN3 - входы

    movf 0x05,w

    movwf ADCON1    ; AN0 - аналоговый канал, источники опорного напряжения - AN3, Vss

    banc0

    movf 0x81,w

    movwf ADCON0    ; Включение АЦП, тактовая частота Fosc/32, аналоговый канал AN0

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

movf 0x20,w

    movwf T1CON     ; Коэфициент деления 1/4, тактируется внутренним источником

    movf 0xFF,w

    movwf TMR1L     ; Использую только 8-бит

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

movf 0x01,w

    movwf T2CON     ; Предделитель: 1/4, выходной: 1/1

banc1

movf 0xFF,w

    movwf PR2       ; Частота ШИМ 4,88кГц

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

clrf TRISC      ; Порт С - выходной

clrf TRISB      ; Порт B - выходной

banc0

movf 0x0F,w

    movwf CCP1CON

    movwf CCP2CON   ; Настройка модулей ССР в режим ШИМ

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

    movf 0xC0,w

    movwf INTCON    ; Глобальное разрешение прерываний, разрешение прерываний от переферийных модулей

banc1

movf 0x43,w

    movwf PIE1      ; Разрешение прерывания АЦП, таймеров 1 и 2

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

banc0

bsf CL          ; Фаза С - отрицательная полуволна

    movf 0x01,w

    movwf A_PH

    movf 0x21,w

    movwf B_PH

    movf 0x11,w

    movwf C_PH       ; Настройка начального состояния счётчиков фаз

movf 0x01,w

movwf K          ; Начальное значение коэфициента деления

;============================================================================================

FIRSTSTART

movwf CCPR1L

movf 0xE9,w

movwf CCPR2L

movf 0x2E,w

movwf TMR1H

bsf T1

bsf CH

bsf T2

LOOP

nop

goto LOOP

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

 

В курсовой работе было разработан 3-фазный инвертор с регулируемой амплитудой напряжения. Управление устройством выполняется с помощью микроконтроллера PIC16F873 фирмы Microchip, для которого была написана программа на языке Assembler, модифицированного под данное семейство, и в частности под данный МК.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованных источников

 

    1. Предко М.: Справочник по PIC – микроконтроллерам, пер с англ – М ДМК Пресс, 2002, ООО «Издательский дом «Додека-XXI»» - 2002. – 512 стр. с ил.
    2. Ульрих В. А.: Микроконтроллеры PIC16X7XX. Изд. 2-е – СПб: Наука и техника, 2002, - 320 стр. с ил.
    3. Тавернье К.: PIC – микроконтроллеры. Практика пременения: Пер. с фр. – М.: ДМК Пресс, 2004. – 272с.: ил.
    4. Полупроводниковые приборы: тразисторы. Справочник/ под ред. 
      Горюнова Н. Н. –М. Энергоатомиздат, 1985. -897 с.:ил..
    5. Всё о резисторах. Справочное издание/ Массовая радиобиблиотека. 1239 Выпуск. Сост.  Г. С. Гендин – 200с.-ил.
    6. Справочник по электрическим конденсаторам / Под общ. Ред.  
      И. И. Четверткова и В. Ф. Смирнова. – М.:- Радио и связь 1983.–576с.–ил.

Проектирование микроконтроллерных устройств