Автор работы: Пользователь скрыл имя, 19 Декабря 2013 в 02:55, курсовая работа
В курсовом проекте решается задача построения импульсного преобразователя напряжения постоянного тока. Импульсы управления полевым транзистором формируются микроконтроллером на основе информации, получаемой по цепи обратной связи. При этом микроконтроллер должен решать две основные задачи: обеспечивать стабилизацию выходного напряжения на заданном уровне и одновременно поддерживать обмен данными с компьютером. В курсовом проекте используется преобразователь постоянного напряжения инвертирующего типа согласно варианту 3.4.
1. Постановка задачи. 3
2. Принципиальная схема понижающего преобразователя напряжения. 4
3. Блок-схема алгоритма работы основных функций программы. 5
4. Результаты, полученные в ходе проведения эксперимента. 7
5. Код программы. 10
6. Список литературы……...…………………………………………………….13
Министерство образования РФ
РГРТУ
Кафедра тоР
Курсовой проект по дисциплине
«Микропроцессорная техника в системах электрооборудования».
Тема:
«Преобразователь постоянного напряжения инвертирующего типа с цифровым управлением».
Вариант 3.1.
Выполнил: студент группы 9111:
Трепалин Е.С.
Проверил: доцент кафедры ТОР
Линович А. Ю.
Рязань 2013
Оглавление
1. Постановка задачи. 3
2. Принципиальная
схема понижающего
3. Блок-схема алгоритма работы основных функций программы. 5
4. Результаты, полученные в ходе проведения эксперимента. 7
5. Код программы. 10
6. Список литературы……...………………………………………
1. Постановка задачи.
В курсовом проекте решается задача построения импульсного преобразователя напряжения постоянного тока. Импульсы управления полевым транзистором формируются микроконтроллером на основе информации, получаемой по цепи обратной связи. При этом микроконтроллер должен решать две основные задачи: обеспечивать стабилизацию выходного напряжения на заданном уровне и одновременно поддерживать обмен данными с компьютером. В курсовом проекте используется преобразователь постоянного напряжения инвертирующего типа согласно варианту 3.4.
Таблица 1. Исходные данные.
№ |
Uвх , |
Uвых , |
Rн , |
L , |
FШИМ , |
3.1 |
12,0 |
-4.5 |
200 |
10 |
25 |
Ёмкость конденсатора в силовой части схемы одинакова для всех вариантов: C = 100 мкФ.
2. Принципиальная схема понижающего преобразователя напряжения.
3. Блок-схема алгоритма работы основных функций программы.
4. Результаты, полученные в ходе проведения эксперимента.
Рисунок 3. Напряжение на нагрузке для схемы без обратной связи.
Канал 1 – импульсы, подаваемые с отладочной платы «eZdspTMS320F2808».
Канал 2 – напряжение на нагрузке.
Отклонение напряжения = 0,8В.
Рисунок 4. Напряжение на нагрузке для схемы с обратной связью.
Канал 1 – импульсы, подаваемые с отладочной платы «eZdspTMS320F2808».
Канал 2 – напряжение на нагрузке.
Рисунок
5. Пульсации выходного
Канал 1 – импульсы, подаваемые с отладочной платы «eZdspTMS320F2808».
Канал 2 – напряжение на нагрузке.
Пульсации напряжения примерно равны 100мВ.
5. Код программы.
//############################
#include "DSP280x_PieVect.h" // Стандартная таблица
// векторов PIE
#include "DSP280x_Device.h" // Основной заголовоч-
// ный файл DSP280x
#include "DSP280x_Examples.h" // Файл стандартных оп-
// ределений и настроек
#include <math.h> // Файл математических функций
// Константы для начальной
#define EPWM1_TIMER_TBPRD 3999 // Период следования
// импульсов = 3999 + 1
#define EPWM1_MIN_CMPA 1079 // MIN_CMPA (основной
// уровень)
// Прототипы (объявления) функций и процедур обработки
// прерываний.
void InitEPwm1Example(void);
interrupt void timer0_isr(void);
// Глобальные переменные.
Uint16 Voltage1[1000]; // Отсчёты, поступившие с АЦП.
int E;
float x=1079;
void main(void)
{
int i;
InitSysCtrl(); // Настройка основных параметров
// управления системой: PLL, стороже-
// вого таймера и тактовой синхрони-
// зации периферийных устройств.
// Перенастройка HISPCP на режим SYSCLKOUT / 8.
// То есть тактовая частота периферийных устройств
// равна 12.5МГц (100/8).
EALLOW;
SysCtrlRegs.HISPCP.all = 0x0004;
EDIS;
//////////////////////////////
// Настройка системы прерываний и таблицы PIE-векторов /
DINT; // Запрещение прерываний
// (Disable INTerrupts)
InitPieCtrl(); // Инициализация регистров
//управления PIE (PieCtrlRegs)
IER = 0x0000; // Interrupt Enable Register
IFR = 0x0000; // Interrupt Flag Register
InitPieVectTable(); // Инициализация и разрешение
// таблицы векторов PIE
// Внесение своих изменений в таблицу векторов PIE
EALLOW;
PieVectTable.TINT0 = &timer0_isr;
EDIS;
// Разрешение прерывания от
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
//////////////////////////////
/// Настройка таймера CPU-Timer 0 (DSP280x_CpuTimers.c)
InitCpuTimers(); // Настройка вспомогательных
// параметров
ConfigCpuTimer(&CpuTimer0, 100, 40); // Настройка
// основных параметров:
// тактовая частота = 100 МГц,
// период = 40 мкс (25 кГц).
//////////////////////////////
/// Настройка АЦП (DSP280x_Adc.c)
InitAdc(); // Настройка вспомогательных
// параметров
AdcRegs.ADCMAXCONV.all = 0x0001; // Разрешение
// двух каналов конвейера SEQ1
AdcRegs.ADCTRL2.bit.EPWM_SOCA_
// запуска SEQ1 по импульсу
// SOCA от блока ШИМ
//////////////////////////////
/// Настройка GPIO на передачу сигнала от блока ШИМ-1 /// (DSP280x_EPwm.c)
InitEPwm1Gpio();
//////////////////////////////
/// Настройка параметров блока ШИМ-1
InitEPwm1Example();
EINT; // Разрешение глобального прерывания INTM
// (для отладки программы)
IER |= M_INT1; // Разрешение прерываний группы 1 (в
// том числе от таймера CPU-Timer 0)
StartCpuTimer0(); // Запуск таймера
}
// Процедура обслуживания
interrupt void timer0_isr(void)
{
static int t = 0;
t ++;
if(t >= 256) t = 0;
// Подтверждение прерывания группы 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
// Измерение напряжения на входе АЦП
// АЦП 12-разрядный, поэтому младшие 4 разряда пустые
Voltage1[t] = AdcRegs.ADCRESULT0 >> 4;
E = 1000 - Voltage1[t];
x = x + E*0.001;
if (x>2000) x=2000;
EPwm1Regs.CMPA.half.CMPA=x;
return;
}
// Функция установки
void InitEPwm1Example()
{
// Настройка тактовой
// Отмеряемый период:
EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;
// Порог CMPA:
EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA;
// Начальная фаза равна нулю:
EPwm1Regs.TBPHS.half.TBPHS = 0x0000;
// Обнуление счётчика:
EPwm1Regs.TBCTR = 0x0000;
// Счёт на увеличение:
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Запрет загрузки по
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Делитель частоты SYSCLKOUT:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Установка теневых регистров в нуль
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// Выбор вариантов реакции на события
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // По НУЛЮ выход
// PWM1A = «1»
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // По ПЕРЕСЕЧЕНИЮ
// ПОРОГА A ВВЕРХ выход PWM1A = «0»
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // По НУЛЮ выход
// PWM1B = «1»
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // По ПЕРЕСЕЧЕНИЮ
// ПОРОГА B ВВЕРХ выход PWM1B = «0»
// Сигналы запуска АЦП
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Разрешение
// импульса SOC-A
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Привязка SOC к
// пересечению CPMA вверх
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Выработка им-
// пульса SOC по 1-му (каждому) событию
// Настройка прерываний в блоке ШИМ-1
// Прерывание по достижению НУЛЯ
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
// Прерывание по 1-му событию
EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;
// Разрешение прерывания
EPwm1Regs.ETSEL.bit.INTEN = 1;
}
//============================
6. Список литературы