Проектирование микроконтроллерных устройств
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего
Профессионального образования
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ
УНИВЕРСИТЕТ имени академика С.П.КОРОЛЁВА
Кафедра РТУ
Дисциплина «Цифровые устройства»
Проектирование микроконтроллер
Пояснительная записка к курсовому проекту
Выполнил: Карюхин Д. А.
Группа: 5402
Руководитель проекта: Кудрявцев И. А.
Дата сдачи на проверку:
Оценка и дата защиты:
Самара
2006
ЗАДАНИЕ №23
Разработать формирователь трехфазного гармонического напряжения со следующим параметрами:
Амплитуда напряжения – (1 - 10)В;
Частота сигнала – 50Гц±1%;
Максимальная погрешность задания напряжения – 1%;
Задание напряжения - потенциометром;
Минимальное сопротивление нагрузки – 10 Ом.
PЕФЕРАТ
Курсовой проект.
Пояснительная записка: 18с., 5 рис., 0 табл., 6 источников.
Графическая документация: 1л. А3, 1л. А4
ИНВЕРТОР, МИКРОКОНТРОЛЛЕР, БЛОК ПИТАНИЯ, АЛГОРИТМ, ПРОГРАММА
Произведены выбор функциональной и принципиальной схем инвертора; выбор микроконтроллера и вспомогательных элементов. Произведён необходимый расчёт токов и напряжений. Разработан необходимый источник питания. Составлен алгоритм и написана программа для микроконтроллера.
СОДЕРЖАНИЕ
Введение…………………………………………………………
1. Анализ задания, составление описания и блок-схемы устройства…………..5
2. Выбор компонентов схемы и их описание…………………………………….6
2.1 Выбор микроконтроллера…...…………………………
2.2 Выбор вспомогательных элементов конструкции..…………………….8
2.2.1 Входная цепь…………………………………………………………..8
2.2.2 Потенциометр..…………………………………………
2.2.3 Блок питания………………………………………………………….
2.2.5 Прочие элементы схемы…….. ………………………………………8
3. Алгоритм………………………………………….……………
4 Программа на ассемблере…………………
Заключение……...………………………………………
Список использованных
источников……………………………………………..
Приложение А
Введение
В современной технике постепенно становится незаменимым использование цифровых устройств. При нынешнем развитии цифровых технологий, позволяется уменьшать размеры оборудования при решении огромного числа задач, в том числе автоматизации, контроля и управления производством, приёма, обработки и хранения различных сигналов, различные типы измерительных приборов и пр.
Одним важным классом цифровых устройств является микроконтроллеры, устройства управления объектами, который представляет собой стандартный массовый (относительно недорогой) логический блок, конкретное назначение которого определяет сам пользователь с помощью программного обеспечения.
В данном курсовом проекте будет рассмотрены и рассмотрены принципы работы инвертора, спроектирована принципиальная схема, написана управляющая программа на языке 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, модифицированного под данное семейство, и в частности под данный МК.
Список использованных источников
- Предко М.: Справочник по PIC – микроконтроллерам, пер с англ – М ДМК Пресс, 2002, ООО «Издательский дом «Додека-XXI»» - 2002. – 512 стр. с ил.
- Ульрих В. А.: Микроконтроллеры PIC16X7XX. Изд. 2-е – СПб: Наука и техника, 2002, - 320 стр. с ил.
- Тавернье К.: PIC – микроконтроллеры. Практика пременения: Пер. с фр. – М.: ДМК Пресс, 2004. – 272с.: ил.
- Полупроводниковые приборы: тразисторы. Справочник/ под ред.
Горюнова Н. Н. –М. Энергоатомиздат, 1985. -897 с.:ил.. - Всё о резисторах. Справочное издание/ Массовая радиобиблиотека. 1239 Выпуск. Сост. Г. С. Гендин – 200с.-ил.
- Справочник по электрическим конденсаторам / Под общ. Ред.
И. И. Четверткова и В. Ф. Смирнова. – М.:- Радио и связь 1983.–576с.–ил.