学位论文计算机控制系统课程设计直流伺服电机控制系统Word文件下载.docx
- 文档编号:22419644
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:31
- 大小:458.24KB
学位论文计算机控制系统课程设计直流伺服电机控制系统Word文件下载.docx
《学位论文计算机控制系统课程设计直流伺服电机控制系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《学位论文计算机控制系统课程设计直流伺服电机控制系统Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
本系统是由一片单片机、矩阵式键盘、超声波模块HC-SR04、显示模块和一辆带有直流伺服电机的车模组成,另外通过AltinumDesigner软件进行电路设计。
2.1微控制器
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。
按性能分成两个不同的系列:
STM32F103“增强型”系列和STM32F101“基本型”系列。
增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;
基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。
时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品。
以下是STM32系列的内部结构图:
2.2电机驱动芯片
模块上的EN端为H桥的使能端,需要外接5V电压,EN不可悬空,当EN都为高电平时电机驱动模块开始工作,EN端为低电平时,电机驱动停止工作。
2.3按键输入和显示模块
2.3.1按键输入
采用自己设计的形如4×
4矩阵式按键,按键用于设定某一数值。
通过程序设置延时环节来消除按钮的抖动问题,这样做使矩阵式按钮硬件连线简单,同时按钮的软件设计也变的简单。
2.3.2显示模块
系统采用传统点阵式1602显示器,显示传感器的测量值以及键盘的输入设定值。
2.4直流伺服电动机
直流伺服电动机在伺服系统中控制机械元件转动.是一种补助马达间接变速装置。
又称执行电动机,在自动控制系统中,用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出。
其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。
其作用可使控制速度、位置精度非常准确。
直流伺服电动机的结构与直流电动机基本相同。
只是为减小转动惯量,电机做得细长一些。
所不同的是电枢电阻大,机械特性软、线性(电阻大,可弱磁起动、可直接起动)。
供电方式是他励供电,即励磁绕组和电枢分别两个独立的电源供电。
控制方式包括电枢控制和磁极控制,其中改变电枢电压U调速范围较大,直流伺服电机常用此方法调速。
直流伺服电动机转速的计算公式如下:
式中:
n为转速;
Φ为磁通;
U为外加电压;
I、R为电枢电流和电阻;
Ke为电势系数。
3.单片机控制系统软件设计
软件设计采用模块化设计,由主程序模块和功能实现模块两大部分组成。
主程序通过读取键值与超声波传感器测量距离进行求差,结合PID控制算法输出至驱动模块以达到控制电机的目的;
功能实现模块主要由主函数模块、键盘处理子程序和屏幕显示模块、PID控制算法子程序等组成。
3.1主程序
主程序首先对键盘和显示模块的程序进行初始化,通过读取键值处理后与超声波传感器测量距离进行求差以达到控制电机的目的。
主程序流程图如图3-1所示。
图3-1主程序流程图
3.2键盘处理子程序
键盘采用程序扫描的工作方式,即在特定的程序位置段上安排键盘扫描程序读取键盘状态。
键盘处理子程序的程序扫描法流程图如图3-2所示。
图3-2键盘处理子程序的程序扫描法流程图
4.控制系统原理图及仿真
4.1控制系统方框图
控制系统是以单片机为控制器,通过键盘输入设定值,经单片机处理后送到电机驱动器,电机驱动器将收到的信号进行放大,最终电机按照减小设定值与测量值的方式转动。
图4-1即为控制系统方框图
图4-1控制系统方框图
4.2控制系统电路原理图
图4-2控制系统电路原理图
5.Simulink组件对直流伺服控制系统的仿真
5.1直流伺服电机数学模型
直流伺服电机闭环系统结构图如图5-1所示
图5-1直流伺服电机闭环系统结构图
其中直流伺服电机的传递函数为
5.2系统Simulink模型及时域特性仿真
对于单输入单输出系统,在经典控制理论中可用传递函数来描述系统,获得系统的动态响应。
同样,Simulink仿真软件也有传递函数模块,可方便地描述系统的特性,且简化了仿真模型。
从模块库窗口创建系统模型如图1所示,选信号源模块组中的阶跃信号模块为输入信号,以输出模块组中的示波器模块作为显示器来观察系统阶跃响应。
在模型窗口设置传递函数模块的参数和特性,运行仿真模型,得系统阶跃响应曲线。
5.2.1Simulink建模及仿真
图5-2直流伺服电机开环系统Simulink模型
端口Step为直流伺服电机的输入电压,输出端口为驱动信号。
图5-3是开环系统的仿真结果,即开环系统的阶跃响应曲线,也即直流伺服电机输入1V单位阶跃电压时。
电机的转轴输出呈线性变化。
图5-3开环系统仿真图
由图5-3响应曲线可知,系统没有在可视范围内达到稳态值“1”,但从理论上分析知此系统属稳定系统,在足够时间内是能够达到稳定状态的。
上述分析说明:
系统的响应速度较慢,系统性能较差,从而可能不具备使用价值。
结果表明,该系统没有达到预期的设计要求。
5.2.2单位负反馈系统Simulink建模及仿真
图5-4是在图5-3的基础上加一个单位负反馈环节,构成直流伺服电机的单位负反馈系统,单位负反馈系统Simulink模型如图5-4所示
图5-4直流伺服电机单位负反馈系统Simulink模型
图5-5是单位负反馈系统的仿真结果
图5-5单位负反馈系统仿真图
系统超调:
40%,调节时间:
2s。
由图5-5和开环阶跃响应曲线相比较知:
系统应经可以达到较快达到稳态值。
说明闭环单位负反馈系统对系统性能有很大改善。
5.3PID校正
为了使系统能够达到设计要求,我们可以在图5-4前向通道上设置一个控制器构成闭环系统来校正直流伺服电机。
基于PID控制(闭环)的直流伺服电机系统框图如图5-6所示。
输入信号+
速度输出
输出信号
信号偏差
+
-
图5-6基于PID控制(闭环)的直流伺服电机系统框图
其控制过程为比较超声波传感器的测量值与键盘设定值,即输入信号,通过反馈后与系统输入信号进行比较,得到偏差信号。
偏差信号作为PID控制器的输入信号根据设定的PID控制规律计算后输出信号U,作为控制量输入给直流电机,从而实现整个直流电机调速系统的闭环负反馈PID控制。
5.3.1PID参数的凑试法确定
增大比例系数Kp系统响应有利于减小静差,但是过大会增大超调,并产生震荡,使稳定性变坏。
增大Ti可以减小超调,减小震荡,是系统更稳定,但静差消除变慢。
增大微分Td有利于加快系统响应时间,使超调减小,稳定性增加,但对扰动的抑制能力减弱,对扰动有较敏感的响应。
在凑试时,对参数实行下述先比例,后积分,再微分的整定步骤。
(1)首先只整定比例部分。
即将比例部分由小变大,并观察相应的系统响应,直到得到反应快,超调小的响应曲线。
如果系统没有静差或静差已小到允许范围内,那么只需用比例控制器即可,最优比例系数可由此确定。
(2)如果在比例调节的基础下系统的静差不能满足设计要求,则须加入积分环节。
整定时首先置积分时间Ti为一较大值,并将经第一步整定得到的比例系数略微缩小,然后减小积分时间,并在保持系统良好动态性能的情况下,静差得到消除。
在此过程中,可根据响应曲线的好坏反复改变比例系数与积分时间,以期得到满意的控制过程与整定参数。
(3)若使用比例积分控制器消除了静差,但动态过程经反复调整仍不能满意,则可加入微分环节,构成比例积分微分控制器。
在整定时,可先置微分时间Td为零。
在第二步整定的基础上,增大Td,同时相应的改变比例系数和积分时间,逐步凑试,以获得满意的调节效果和控制参数。
5.3.2比例控制器校正
比例控制系统Simulink模型及仿真
图5-7比例控制系统Simulink模型
Kp=1时仿真图
Kp=3时
Kp=5时仿真图
由以上三个比例控制的仿真图可知,增大比例系数KP一般系统响应利于减小静差,但是过大会增大超调,并产生震荡,使稳定性变坏。
5.3.3比例积分控制器校正
积分控制的作用是只要系统存在误差,积分控制作用就不断地积累,输出控制量以消除误差,因而,只要有足够的时间,积分控制将能完全消除误差。
在比例环节基础上加入积分环节,只要参数设置合适就能完全消除系统偏差。
比例积分控制系统Simulink模型
图5-8比例积分控制系统Simulink模型
Kp=1、Ki=1时仿真图
Kp=1、Ki=3时仿真图
Kp=5、Ki=3时仿真图
由以上三个比例积分控制的仿真图可知,增大TI有减小超调,减小震荡,使系统更稳定,但静差消除变慢。
PI控制参数设置适当可使系统静差为零。
经多次试凑,选KI=1.
5.3.4PID控制器校正
比例积分作用虽能是系统误差为零,但系统动态性能不能得到满足。
积分作用太强可能会使系统出现震荡。
微分控制具有超前控制能力,可抑制最大动态偏差,改善系统动态性能,提高系统的稳定性。
为此,在PI作用基础上引入微分控制,构成PID控制器,以使系统满足稳、准、快的要求。
PID控制控制系统Simulink模型如图
图5-9PID控制系统Simulink模型
Kp=1、Ki=1、Kd=0.1时仿真图
和PI控制闭环响应曲线相比较可知:
系统响应时间变短,超调变小,但仍不符合要求;
Kp=5、Ki=1、Kd=0.1时仿真图
与KP=1、KI=1、KD=0.1时的仿真图相比,系统超调和调节时间都变小,仍然不符合要求,继续校正。
需加大Kp及Ki。
Kp=12、Ki=1、Kd=0.5时仿真图
由上曲线知此时系统有微量的超调,进一步加大Ki时超调为零。
Kp=12、Ki=1、Kd=0.9时仿真图
经过多次校正参数,此时当Kp=12、Ki=1、Kd=0.9时系统超调量为0,稳态误差为0,性能满足设计要求,稳定、准确、快速得到了完满的统一。
5.小结
控制系统特点是以单片机为控制器,通过键盘输入设定值,使得系统消除测量值与实际值的偏差方便快捷。
但在proteus中没能实现闭环系统的PID控制。
此缺点通过软件弥补,在MATLAB软件中的SIMULINK中进行了直流伺服电机的开环控制系统仿真,单位闭环控制系统仿真,闭环PI控制系统仿真,闭环PD控制仿真,闭环PID控制仿真能够更好的测试和控制系统的性能,从而为系统设计提供了更准确的性能指标。
参考文献
[1]李正军.计算机控制系统.北京:
机械工业出版社,2010.6
[2]周荷琴等.微型计算机原理及接口技术[M].合肥:
中国科技大学出版社,2008.6
[3]张毅刚等.单片机原理与应用设计[M].北京:
电子工业出版社
[4]计算机控制技术实验指导书
部分程序如下:
#include"
stm32f10x.h"
user_Config.h"
TFT28.h"
GUI.h"
#include<
stdio.h>
key.h"
math.h>
intoverflow=0;
#definemodule_interval25
#defineobject_distance100.0
voidNVIC_Configuration(void);
voidTIM_Configuration(void);
voidGPIO_Configuration(void);
voidRCC_Configuration(void);
floatSensor_using(void);
voiddelay(void);
unsignedlonglastTime;
doubleInput,Output,Setpoint,dErr;
doubleerrSum,lastErr;
unsignedintDevice_code;
GPIO_InitTypeDefGPIO_InitStructure;
//定义一个结构变量,用于初始化GPIO
ErrorStatusHSEStartUpStatus;
voidDelay(vu32nCount)
{
for(;
nCount!
=0;
nCount--);
}
voiddelay_ms(unsignedintnCount)
inti,j;
for(i=0;
i<
nCount;
i++)
{
for(j=0;
j<
0x3000;
j++);
}
voidRCC_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
voidGPIO_Config(void)
RCC_APB2PeriphClockCmd(RCC_GPIO_TFT,ENABLE);
GPIO_InitStructure.GPIO_Pin=DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN|DS5_PIN|DS6_PIN|DS7_PIN|DS8_PIN;
//工作在输出模式
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//GPIO¹
¤
×
÷
Ô
Ú
Ê
ä
³
ö
Ä
£
½
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIO_TFT_DATA,&
GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_GPIO_CTRA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
//使用PA0、PA1
GPIO_Init(GPIO_CTRA,&
RCC_APB2PeriphClockCmd(RCC_GPIO_CTRB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_8;
//使用PB0.1.2.8
GPIO_Init(GPIO_CTRB,&
GPIO_ResetBits(GPIO_CTRB,GPIO_Pin_8);
voidNVIC_Configuration(void)
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&
NVIC_InitStructure);
voidTIM_Configuration(void)
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=10000;
TIM_TimeBaseStructure.TIM_Prescaler=0;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&
TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM3,359,TIM_PSCReloadMode_Immediate);
TIM_ARRPreloadConfig(TIM3,DISABLE);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3,DISABLE);
voiddelay(void)
u32i;
i=3000;
while(i--);
//超声波传感器模块
floatSensor_using(void)
floatdistance=0;
u16TIM=0;
GPIO_SetBits(GPIOC,GPIO_Pin_12);
delay();
GPIO_ResetBits(GPIOC,GPIO_Pin_12);
TIM_Cmd(TIM3,ENABLE);
while(!
GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)&
&
overflow==0);
TIM3->
CNT=0;
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)&
if(overflow!
=0)
overflow=0;
return0.0;
TIM=TIM_GetCounter(TIM2);
distance=(float)sqrt((TIM/20.0*17)*(TIM/20.0*17)-module_interval*module_interval/4.0)+12.0;
return(distance);
voidTIM3_PWM_Init(u16arr,u16psc)//PWMoutput
{
GPIO_InitTypeDefGPIO_InitStructure;
TIM_OCInitTypeDefTIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);
//启用定时器三
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);
TIM_TimeBaseStructure.TIM_Period=arr;
TIM_TimeBaseStructure.TIM_Prescaler=psc;
TIM_TimeBaseStructure.TIM_ClockDivision=0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=0;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学位 论文 计算机控制 系统 课程设计 直流 伺服 电机 控制系统