Автор работы: Пользователь скрыл имя, 05 Октября 2011 в 18:52, дипломная работа
Современный электропривод представляет собой конструктивное единство электромеханического преобразователя энергии (двигателя), силового преобразователя и устройства управления. Он обеспечивает преобразование электрической энергии в механическую в соответствии с алгоритмом работы технологической установки. Сфера применения электрического привода в промышленности, на транспорте и в быту постоянно расширяется. В настоящее время уже более 60% всей вырабатываемой в мире электрической энергии потребляется электрическими двигателями. Следовательно, эффективность энергосберегающих технологий в значительной мере определяется эффективностью электропривода. Разработка высокопроизводительных, компактных и экономичных систем привода является приоритетным направлением развития современной техники.
Введение 6
1 Анализ объекта управления 8
1.1 Основные требования к объекту управления 8
1.2 Принцип работы БДПТ 10
1.3 Управление шаговым двигателем 14
1.4 Описание объекта управления 17
1.5 Анализ целей управления 17
2 Обзорный анализ существующих аналогов СУ 18
3 Построение структурной схемы СУ 20
4 Проектирование принципиальной схемы СУ 22
4.1 Выбор управляющего микроконтроллера 22
4.1.1 Основные требования к микроконтроллеру 22
4.1.2 Анализ аппаратных ресурсов микроконтроллера и обоснование их использования 23
4.1.3 Модуль микроконтроллера 24
4.2 Проектирование силовой части схемы 25
4.2.1 Устройство сопряжения и транзисторный ключ 25
4.2.2 Датчики положения ротора 27
4.2.3 Оптический энкодер 29
4.2.4 Разработка принципиальной схемы блока питания 32
4.3 Проектирование интерфейса пользователя 32
4.3.1 Модуль ЖК-дисплея 32
4.3.2 Устройство сброса микроконтроллера 34
5 Синтез алгоритма СУ 35
5.1 Разработка алгоритма микроконтроллера 35
5.2 Процедура инициализации 36
5.3 Основной цикл программы 38
5.4 Обработка прерывания QEI 38
5.5 Отладка программы микроконтроллера в среде MPLAB 39
5.6 Настройка параметров среды программирования 40
5.7 Создание нового проекта 40
5.8 Создание основного файла проекта 41
5.9 Подключение дополнительных файлов проекта 41
6 Технологическая часть 42
6.1 Программирование микроконтроллера 42
6.2 Разработка печатной платы 43
6.2.1 Общие сведения о системе проектирования печатных плат ACCEL P-CAD 2002 44
6.2.2 Технология изготовления печатных плат 44
6.2.3 Разработка печатных плат системы управления и силовой части 46
7 Экономическая часть 51
7.1 Расчет стоимости опытного образца 51
7.1.1 Расчет стоимости основных материалов 51
7.1.2 Расчет стоимости покупных изделий 52
7.2 Расчет стоимости проектирования и изготовления устройства 54
7.2.1 Расчет основной заработной платы 54
7.2.2 Расчет дополнительной заработной платы 54
7.2.3 Отчисления на социальные нужды 54
7.2.4 Общая стоимость проектирования и изготовления устройства 55
7.3 Общехозяйственные расходы. 55
7.4 Расчет полной стоимости устройства 56
7.5 Экономический эффект от создания устройства 56
8 Охрана труда и окружающей среды 57
8.1 Охрана труда 57
8.1.1 Разработка системы управления 57
8.1.2 Изготовление печатных плат системы управления и силовой части 60
8.1.3 Эксплуатация и обслуживание системы управления 63
8.2 Охрана окружающей среды 64
8.2.1 Охрана окружающей среды при работе на ПЭВМ 65
8.2.2 Охрана окружающей среды при работах по пайке и лужению 65
8.2.3 Экономия ресурсов и утилизация прибора 66
Заключение 68
Список литературы 69
Приложение А 70
Приложение Б 71
Приложение В 73
Приложение Г 74
Приложение Д 92
Создание любого нового изделия требует множество различных материалов и большое количество затрат энергии. С точки зрения экономии электроэнергии важна правильная организация работы с прибором, обеспечение планирования хода эксперимента таким образом, чтобы исключить холостую работу устройства, без проведения измерений.
Добыча и переработка руд
Устройство представляет собой печатную плату с впаянными в нее электронными компонентами, оформленную в пластмассовый корпус. Срок службы разработанного устройства категорично оценен быть не может, однако срок службы элементов, входящих в его составные части ограничен.
При
утилизации устройства необходимо разобрать
устройство на составные части, детали
и узлы, которые соединены между
собой при помощи стандартных крепежных
деталей, отпаять и демонтировать все
провода, выпаять и демонтировать все
радиоэлементы. Наиболее экономически
выгодным является извлечение цветных
и драгоценных металлов из элементов устройства.
Драгоценные металлы содержат интегральные
микросхемы, диоды и конденсаторы.
В
ходе дипломного проектирования была
разработана система
Были
разработаны структурная и принципиальная
схемы устройства, печатные платы системы
управления и силовой части, алгоритм
работы устройства и написана управляющая
программа для микроконтроллера.
Продолжение
приложения Б
Программа работы микроконтроллера:
#define __dsPIC30F2010__
#include "p30F2010.h"
#include "xlcd.h"
_FOSC(CSW_FSCM_OFF & XT_PLL8);
_FWDT(WDT_OFF); //сторожевой таймер отключен
_FBORPOR(MCLR_EN & PWRT_OFF);
_FGS(CODE_PROT_OFF);
#define FCY 20000000 // кварц 5 МГц
#define MILLISEC FCY/10000 // задержка 1 мс
#define FPWM 39000
#define Oborot 90 // число шагов на 1 оборот при шаге = 4 градуса
#define MIN 60
void __attribute__((interrupt, no_auto_psv)) _CNInterrupt (void);
void DelayNmSec(unsigned int N); // задержка
void InitMCPWM(void); // инициализация ШИМ
void InitTMR3(void);
void InitLCD(void); // инициализация дисплея
void LCD_WriteNibble(unsigned char nb);
void LCD_PutCHar(unsigned char ch);
void LCD_WriteCHar(void); //
void LCD_ERror(void); //выводим на дисплей "ошибка"
void LCD_Razgon(void); //выводим на дисплей "разгон"
void LCD_setDDRAM(unsigned
char set); //устанавливаем адрес, по которому
выводится символ
struct {
unsigned RunMotor : 1;
unsigned SndSpeed : 1;
unsigned CheckRX : 1;
Продолжение приложения Г
unsigned SendTX : 1;
unsigned unused : 14;
} Flags;
unsigned int Enc; // переменная, содержащая состояние резца
unsigned int Enc_r;
unsigned int NextEnc; // седующее состояние резца
unsigned int imp_pr,imp_lf;
unsigned int timer3value;
unsigned int ob_min;
unsigned int ob;
unsigned int t,i;
unsigned char a, b, c, d, e; // байты, содержащие символ, выводимый на дисплей
unsigned int Razgon;
В первой таблице содержится однозначное соответствие принятого сигнала определенному номеру.
Во второй таблице - порядок включения ШИМ для вращения двигателя по часовой стрелке.
Во третьей таблице - порядок включения ШИМ для вращения двигателя против часовой стрелки.
Таблица №1 Таблица №2 Таблица №3
1(001) | 5 1 |A B 1 |A C
_____________ ___________
2(010) | 3 2 | B 2 | A
_____________ ___________
3(011) | 4 3 |B C 3 |A B
_____________ ___________
4(100) | 1 4 | C 4 | B
_____________ ___________
5(101) | 6 5 |A C 5 |B C
_____________ ___________
6(110) | 2 6 | A 6 | C
_____________ ___________
******************************
Продолжение приложения Г
unsigned int Table_ENC[] = {0x0000, 0x0005, 0x0003, 0x0004, 0x0001, 0x0006, 0x0002};
unsigned int Table_PWM_pr[] = {0x0000, 0x0F00, 0x0C00, 0x3C00, 0x3000, 0x3300, 0x0300};
unsigned int Table_PWM_lf[] = {0x0000, 0x3300, 0x0300, 0x0F00, 0x0C00, 0x3C00, 0x3000};
/*****************************
Прерывание возникает как только заготовка повернется на 4 градуса.
******************************
void __attribute__((interrupt, no_auto_psv)) _CNInterrupt (void)
{
if (PORTBbits.RB4 == 1)
{
if (PORTBbits.RB5 == 0)
imp_pr = imp_pr + 1;
else
imp_lf = imp_lf +1;
}
else
{
if (PORTBbits.RB5 == 1)
imp_pr = imp_pr + 1;
else
imp_lf = imp_lf +1;
}
if (imp_pr == 278) // вращение по часовой стрелке
{
Enc = 0x0000; // обнулили переменную состояния резца
if (PORTEbits.RE8 == 1)
Enc = Enc | 0x04;
if (PORTDbits.RD0 == 1)
Enc = Enc | 0x02;
if (PORTDbits.RD1 == 1)
Enc = Enc | 0x01;
Продолжение приложения Г
Enc_r = Table_ENC[Enc]; // загрузили в переменную информацию о номере включения ШИМ из таблицы 2
if (Table_PWM_pr[Enc_r] == NextEnc) // проверка на правильность работы - резец повернулся
{
Norm1:
OVDCON = Table_PWM_pr[Enc_r]; // подключаем соответствующие ШИМ
if (Enc_r == 6)
NextEn
else
NextEn
timer3value = TMR3; // время поворота заготовки на 4 градуса
TMR3 = 0; // обнулили таймер
ob = Oborot*timer3value*25; // время одного оборота
ob_min = MIN*1000000/ob; // число оборотов за 1 минуту
IFS0bits.
}
else // если резец не повернулся за заготовкой
{
if (Razgon == 0)
goto Norm1;
else
{
TMR3 = 0;
ob_min = 0; //выводим на экран сообщение об ошибке
IEC0bi
}
}
}
else
IFS0bits.
Продолжение приложения Г
if (imp_lf == 278) //вращение против часовой стрелки
{
Enc = 0x0000; // обнулили переменную состояния резца
if (PORTEbits.RE8 == 1)
Enc = Enc | 0x04;
if (PORTDbits.RD0 == 1)
Enc = Enc | 0x02;
if (PORTDbits.RD1 == 1)
Enc = Enc | 0x01;
Enc_r = Table_ENC[Enc]; // загрузили в переменную информацию о номере включения ШИМ из таблицы 2
if (Table_PWM_lf[Enc_r] == NextEnc) // проверка на правильность работы - резец повернулся