《电气工程及自动化文献综述 (12).docx》由会员分享,可在线阅读,更多相关《电气工程及自动化文献综述 (12).docx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 中国地质大学长城学院本 科 毕 业 论 文题目:数字化上拉式磁悬浮系统设计系 别工程技术学院学生姓名刘通专 业电气工程及其自动化学 号043130108指导教师李建勋职 称正高级工程师2017年04月30日数字化上拉式磁悬浮系统设计摘 要近年来磁悬浮技术应用逐渐广泛,比如轨道交通、轴承等。研究磁悬浮系统很有必要。本人设计了一款磁悬浮实验平台。基于stm32系列微控制器设计,采用 PID控制算法,通过采集位置传感器的反馈信号,控制电磁铁输入电压,使得浮子悬浮,可以向上位机传输实时数据,将数据显示为波形,利用这些波形,实验人员能更加方便的进行系统调试。本文介绍了磁悬浮系统的硬件系统电路和控制系统
2、软件。最后又利用该平台进行一系列实验,通过分析实验数据,调整PID控制算法参数,最后使得浮子能够稳定悬浮。关键词: 磁悬浮; PID控制算法; STM32Design of digital up pull maglev systemABSTRACTIn recent years, magnetic suspension technology has been widely used, such as rail transportation, bearings and so on. It is necessary to study the magnetic levitation system.
3、I designed a maglev experimental platform. STM32 series micro controller design based on PID control algorithm is adopted in the feedback signal through the position sensor, electromagnet control input voltage, making the the suspension can transmit real-time data to the host computer, the data is d
4、isplayed as waveforms, using these waveforms, experimental personnel can debug the system more convenient.This paper introduces the hardware system, circuit and control system software of the maglev system. Then use the platform to carry out a series of experiments, through the analysis of the exper
5、imental data, the control algorithm to adjust the parameters of PID, and finally makes the stable float. Key words:magnetic suspension; PID control algorithm; STM32目 录1绪论12现状分析22.1国外的发展22.2国内的发展23技术分析34磁悬浮系统的整体设计44.1 磁悬浮系统组成44.2 磁悬浮系统工作原理44.3 磁悬浮系统的数学模型54.3.1 控制对象的动力学方程54.3.2 系统的电磁力模型54.3.3 磁悬浮系统平衡的
6、边界条件74.3.4 建立系统方程组74.3.5 系统模型线性化处理74.3.6 最终模型的建立84.4 磁悬浮系统硬件设计94.4.1 控制器电路94.4.2 驱动电路设计104.4.3 传感器的选型与电路连接114.5 磁悬浮系统软件设计124.5.1 main 主函数的编制124.5.2 ADC 函数的编制124.5.3 PWM 函数的编制134.5.4 printf 函数的编制144.5.5 time(定时器)函数的编写144.5.6 中断函数的编写154.5.7 PID 函数的编制155磁悬浮系统整体调试185.1 PID 参数的整定186结论20参考文献21致 谢23附录1 下机位
7、程序24附录2 实物图34中国地质大学长城学院2017届毕业设计1绪论磁悬浮技术是一门包括电工电子技术、自动控制原理、传感器技术、程序设计等多种学科的综合性技术。当今社会的科技水平飞速发展,磁悬浮技术已经与我们的生活逐渐密切,在很多地方都得到了应用。航天航空、精密仪器仪表以及机械制造和交通运输中磁悬浮技术都发挥着越来越多的作用。由于电子科技水平提高,磁悬浮技术更多的渗透到了广大人民群众的生活中,这使得磁悬浮技术变的微小化,从而贴近近生活。类似磁悬浮音响,磁悬浮台灯等各类科技感十足的贴近我们生活的产品也越来越多。此次设计是基于STM32系列微处理器的数字化上拉式磁悬浮系系统,本设计是将磁悬浮系统
8、微小化,建立模型以研究上拉式磁悬浮特性以便于以后深入研究和开发。2现状分析2.1国外的发展 德国在二十世纪初首先提出了磁悬浮原理,并申请相关产品专利。随着各个国家生产力的提高,如今已有的交通水平已经不能满足社会发展的需求。欧美等发达国家陆续计划进行磁悬浮运系统的利用与研发。利用电磁悬浮为原理的磁悬浮技术一直致力于国际研发的前端。1988年首次举行磁悬浮会议,而且计划两年为一周期,举行一次会议。以美国为首的法国、瑞士、日本等国家在磁悬浮列车,轴承等工业领域都有很大突破。2.2国内的发展国内磁悬浮技术起步相对较晚,1986年,广州机床研究所与哈尔滨工业大学首先对“磁力轴承的开发及其在FMS中的应用
9、”这一课题进行了研究。此后,国内一些一流大学都常年致力于这方面的研究与开发。由于国家的重视,近年来磁悬浮技术在我国飞速发展。上世纪八十年代末我国成功研制出第一台磁悬浮样车。九十年代中期,我国第一台磁悬浮列车在实验室正式开通。自此我国成为第六个继欧美等国后,开通运行磁悬浮列车并初步掌握该技术的国家。2016年5月6日,长沙磁浮快线正式载客试运营。这是我国拥有自主知识产权的我国首条磁浮载客运营轨道交通,象征着磁悬浮技术在我国从研发到建设的覆盖,自此我国并入世界上少数几个掌握此技术的国家之列。3技术分析目前磁悬浮技术的发展方向集中在以德国为首的主要研究常导磁悬浮和以日本为首的研究超导磁悬浮,而我国主
10、要研究永磁悬浮。磁悬浮技术目前还尚未完全成熟,相对于高铁和汽车相比应用的局限性还很大,而且面临的环境问题和能源等问题等,一直困扰着磁悬浮技术在生产生活中的实用性与适用性所以在大型工业方面还需要投入很多的研究。与此同时,磁悬浮技术正在向小型化智能化的科技家居用品靠拢,使磁悬浮技术更好地应用于我们的生活中,进而衍生出一系列小型磁悬浮技术的产品,诸如磁悬浮音响、磁悬浮台灯等家居用品。但是小型科技技术应用还很匮乏,现实中使用效果也并不是太如人愿。本设计,是将磁悬浮技术微小化,模型化,使磁悬浮技术可以在小型礼品、小型电子产品等微型领域得到应用。4磁悬浮系统的整体设计4.1 磁悬浮系统组成磁悬浮系统组成如
11、图所示: 图4-1 磁悬浮系统组成如图4-1所示,磁悬浮系统分为中央控制器、浮子位移传感器、电磁铁、功率放大驱动器和浮子等元器件组成。 4.2 磁悬浮系统工作原理磁悬浮控制系统实现闭环控制。由线性霍尔元件传感器检测浮子与电磁铁之间的距离变化,当浮子受到扰动下降,浮子与电磁铁之间的距离增大,传感器输出电压发生变化,信号经控制器处理,相应的控制信号由功率放大器放大,使电磁铁绕组中的控制电流相应增大,电磁力增大,浮子被吸回平衡位置,反之亦然,使浮子能在平衡位置悬浮1。 4.3 磁悬浮系统的数学模型一个合适的自动控制系统,要了解系统的工作原理,还要能描述系统中各变量之间的关系,分析系统中结构、参数和性
12、能之间的数学关系,最后能够利用这些数学关系对我们的设计做出理论指导,辅助我们进行自动控制系统设计。在本章中,我们通过数学模型分析磁悬浮系统的特性。在实际系统数学建模时,系统中可能存在很多变量,如果考虑这些变量,会使我们的系统数学模型变得更加复杂,在建立该系统的数学模型时,首先确定出可忽略变量的关系,才可以建立起基本贴近现实的简单系统模型。系统在建模前可进行如下假设: 1. 不计算漏磁通,假设所有电磁铁的磁通量通过外部磁极气隙; 2. 不计算边缘效应,磁通量均匀分布; 3. 不计算浮子和铁芯的磁阻。则电磁铁与浮子所组成的磁路的磁阻主要集中在两者之间的气隙上; 4. 假设电磁力集中在浮子的在中心点
13、,浮子中心与质心重合。 4.3.1 控制对象的动力学方程不计算浮子受到的其他干扰,则浮子在我们建立的模型中只受到电磁力F和浮子重力。浮子在竖直方向的动力学方程 可以如下描述: (4-1)式中:x -浮子中心与电磁铁磁极之间的气隙,单位:mm -浮子的质量,单位:KgF(i, x) -电磁吸力,单位:Ng -重力加速度,单位:m/s24.3.2 系统的电磁力模型在图2.1磁悬浮实验系统结构图中,浮子到电磁铁磁极的气隙为x。由上面假设可知磁路的磁阻主要集中在电磁铁磁极和浮子所组成的气隙上。其磁阻为: (4-2) 式中 l -铁芯(包括衔铁)的导磁长度(m); u0 ,u -分别为空气磁导率和铁芯的
14、相对磁导率, A , A0 -分别为螺线管一头的空气隙和铁芯导磁截面积;其中u0 =410H/m因为电磁铁铁芯由铁制成,铁芯磁阻远小于气隙磁阻,上式中铁芯磁阻可不计算在内,所以 (4-3)由磁路的基尔霍夫定律有: (4-4) 则: (4-5)由上式得: (4-6)若没有在磁饱和的状态下工作的电磁铁的每匝线圈中均有相同的磁通量通过。则线圈的磁通链数为: (4-7)由毕奥-萨伐尔定律可知,通过回路所包围的面积的磁通量也与I成正比,即 (4-8)则瞬时电磁铁绕组线圈电感为: (4-9)磁场的能量Wm(i ,x )为: (4-10) 以上A为电磁铁下方整个空气隙的磁通截面积,换算到浮子的截面积,则浮子
15、电磁的吸引力: (4-11)式中:u0 -空气磁导率;u0 = 410 H/m; KfA-磁通流过浮子截面的导磁面积; N-电磁铁线圈匝数;x-浮子质心到电磁铁磁极表面的瞬时气隙; i-电磁铁绕组中的瞬时电流;其中 (4-12) u、A、N均也为常数,故可定义一常系数K: (4-13)则电磁力可改写为: (4-14)由电磁力公式可知,磁悬浮系统不稳定的根源在于电磁吸力F(i, x)与气隙x是非线性的反比关系。4.3.3 磁悬浮系统平衡的边界条件 (4-15)4.3.4 建立系统方程组 (4-16) 4.3.5 系统模型线性化处理磁力F和绕组中的瞬间电流i、气隙x间关系复杂不存在比例关系,于是需
16、要对其加以线性化处理。此自动控制的系统在一定范围内可以实现动态平衡,所以在理论上可以认为此系统是线性化的。线性化模型在一定范围内能表现此系统的本质动态平衡过程。对F(i , x )作泰勒级数展开,省略高阶项可得 (4-17)式中 F(i0, x0)是当磁极与浮子间的气隙x0,平衡电流为i0时电磁铁对浮子的电磁引力,且与浮子的重力平衡,即: (4-18) 定义Ki ,Kx 分别为: (4-19)由上两式可知,Ki为平衡点处电磁力对电流的刚度系数,Kx为平衡点处电磁力对气隙的刚度系数。由上式整理得: (4-20) 故完整描述此系统的方程式如下: (4-21)4.3.6 最终模型的建立在建立模型时,
17、输入量直接是电磁铁的控制电流,没有考虑感抗对系统的影响,而从感性元件储能的角度加以分析建模。假设功率放大器的输出电流与输入电压之间呈严格的线性关系且无延迟。系统可用下列方称来描述: (4-22)拉普拉斯变换后得: (4-23) 该系统的开环传递函数: (4-24)定义系统对象的输入量为功率放大器的输入电压也即控制电压Uin,系统输出量为x所反映出来的输出电压为Uout,则该系统控制对象的模型可写为: (4-25)则有开环系统的特征方程为: (4-26)解得系统的开环极点为: (4-27)可以看出系统有一个开环极点位于复平面的右半平面,根据系统稳定性判据,即系统所有开环极点必须位于复平面的左半平
18、面时系统才稳定,磁悬浮系统为开环不稳定系统。所以必须在该系统加入反馈控制才能使该系统相对稳定。4.4 磁悬浮系统硬件设计4.4.1 控制器电路控制器是整个磁悬浮系统的核心部件,由于不同类型的控制器工作时钟频率不同,内部资源不同,所以我们要根据我们实际的工作要求和工作环境对它进行选择。它的选型与设计对整个系统的性能影响非常大。 以ARM为内核的32位微控制器,基于cortex-M3内核推出的STM32F103(如图4-2所示)系列的微控制器拥有较高的运算速度和丰富的片上外设,STM32F103C8T6是增强型32位基于ARM Cortex-M3核心的CPU,时钟频率为72MHz,64K的flas
19、h和20K的RAM,拥有2个12位的ADC,7个定时器,2个I2C接口(SMBus/PMBus),3个USART接口,支持ISO7816,LIN,IrDA接口和调制解调控制,2个SPI同步串行接口(18兆位/秒),CAN接口(2.0B主动),USB2.0全速接口还拥有36个快速I/O口。下面介绍STM32F103C8T6系统的设计。微控制器工作所需的最基本组成为电源电路、复位电路、时钟电路和数据传输电路四大块。电源电路为MCU供电,STM32F103C8T6的工作电压一般在2.0V到3.6V,我们一般给其提供3.3V的工作电压。这里使用LM1117固定输出3.3的集成电路。 复位电路的主要作用
20、是把特殊功能寄存器的数据刷新为默认数据,单片机在运算过程中由于干扰等外界原因造成寄存器中数据混乱不能使其正常继续执行程序(称死机)或产生的结果不正确时均需要复位,以使程序重新开始运行。 这个我们采用一个基本复位电路。 STM32F103C8T6系统设计两个时钟电路,一个高频外部时钟电路,一个低频时钟电路。高频时钟电路采用8MHz的晶振,经过倍频后能提供最高72MHz的系统时钟频率。低频时钟电路采用32768Hz的晶振,主要给RTC时钟和定时器提供时钟频率。图4-2 STM32f103C8T6 引脚图4.4.2 驱动电路设计磁悬浮控制系统中驱动电路是非常重要的部分。它能够将控制信号发出的电压进行
21、放大处理,从而给电磁线圈供给电压。使电磁铁持续输出保持浮子稳定悬浮的电磁力。这里的驱动电路我们选择一款L298N(如图4-3所示)双H桥驱动芯片进行我们的驱动电路设计。 L298N是ST公司生产的15针脚芯片,能驱动电流电压较大的电动机。支持346V的工作电压,能输出3A的峰值电流,稳定持续输出2A电流。额定25W的大功率。两个高压全桥式驱动器,可以通过较大电流。能驱动直流感性负载。单片机管脚与逻辑电平信号控制直接连接。在不受输入信号影响的前提下两个使能控制端允许或禁止器件工作。一个逻辑电源输入端,部分内部逻辑电路在较低电压下正常工作。还可以外接检测传感器,将检测值发送给控制电路。VS位电机驱
22、动电源,VSS为逻辑控制电源。 L298N含两 H桥电路,我们这里只驱动一个电磁铁,只能使用到一个。当给ENA高电平,IN1和IN2分别给高电平和低电平时,我们假设OUT1和OUT2输出正向电压,电磁铁对浮子作用正向的电磁吸力。反之,IN1和IN2分别给低电平和高电平时,电磁铁对浮子作用反向的电磁吸力。当我们给ENA或IN1或IN2其中之一输入PWM信号时,输出电压即为PWM信号的放大电压。图4-3 L298N 驱动电路原理图4.4.3 传感器的选型与电路连接传感器用于监测浮子的位置,将浮子相对位移信息发送给控制器,达到反馈控制的目的。 能够用于检测浮子位置信号的传感器必须为非接触式位移传感器
23、,考虑到成本和实验操作方便与否等因素,采用线性霍尔元件的工作原理为霍尔效应。所以在微位移内,悬浮浮子的位移跟霍尔传感器的输出电压成线性关系,利用这个线性关系,我们将霍尔元件输出的电压信号反馈给控制器,再利用某些控制算法,就能实现浮子的悬浮控制。选用线性霍尔元件是因为精度好、线性强、抗干扰强、价格便宜等优点。 通过以上分析对比,本系统选用线性霍尔元件3503(如图4-4所示)做位移传感器。图4-4 线性霍尔元件 3503 引脚图VCC和GND分别接在STM32F103C8T6系统的VDD和GND上,OUT接在PA7口。PA7的信号输入口,经过AD转换,将霍尔传感器输出的模拟电压信号转换为控制器可
24、以处理的数字信号。4.5 磁悬浮系统软件设计 软件即控制器程序代码,主要实现以下几个功能: (1) 将线性霍尔元件输出的模拟电压信号转换为能够处理的数字信号。 (2) 将霍尔元件输出量转化的AD值传递给一控制算法函数。 (3) 由控制算法函数计算出某一输出值,将该输出值传递给PWM函数。 (4) PWM函数的输出值经GPIO口输出,产生控制电压。 (5) 能向PC端发送实时数据,将霍尔元件输出量转化的AD值实时上传。4.5.1 main 主函数的编制main函数的功能为搭建整体程序构架,初始化各子函数,设置PID参数等。在main函数中写一个死循环,在初始化各子函数,设置完各参数后,进入whi
25、le(1)死循环,这个死循环的功能是等待定时器中断,在定时器中断服务子程序中我们将计算PID值,输出PWM值,将AD值和PWM值通过串口通信传给上位机。在main函数中我们将初始化以下几个函数:ADC函数初始化、printf函数初始化、定时器函数初始化、PID函数初始化。另外,我们将设置PID参数、设置浮子平衡位置AD值,设置L298N信号电压。4.5.2 ADC 函数的编制ADC函数的功能是将线性霍尔元件输出的模拟电压值转化为控制器可以处理的数字量。我们选择的这款控制器中有2个12位的ADC,我们使用其中一个。下面介绍ADC函数编写过程。 1.开启时钟 我们使用的是控制器中的ADC1,它是挂
26、接在RCC_APB2上的。2.设置GPIO的输入输出模式 在做为ADC输入的时候,GPIO口应该配置为是:模拟输入3.设置ADC时钟分频 该控制器的ADC最高频率为14MHz,系统时钟频率为72MHz,但是ADC分频系数只能为2、4、6、8,所以为了获得较高的ADC频率,我们取分频系数6。4.ADC模式的初始化 ADC的初始化我们可以调用库函数的ADC_Init()。它有两个输入参数:第一个参数是选择你要设置的ADC,我们使用ADC1,以设置为:ADC1。第二个参数是传递一个结构体的指针,它成员有: ADC_MOD:表示ADC的模式,我们使用独立模式,所以我们设置为:ADC_Mode_Inde
27、pendent。 ADC_ScanConvMode:表示ADC是否使用扫描模式,所谓扫描呢就是在多通道时,不用手动切换通道用的。我们这里不使用,所以设置为:DISABLE。 ADC_ContinuousConvMode:表示ADC是否使用连续模式,也就是一直转换。 我们是单次转换,我们设置为:DISABLE。ADC_ExternalTrigConv:表示触发方式,ADC可以使用多种定时器类型触发,还可以使用外部中断触发,我们这里是软件触发,所以设置为:ADC_ExternalTrigConv_None。 ADC_DataAlign:表示存储数据的对齐方式(上面我们有提到过数据保存的对齐)。我们
28、使用右对齐,所以设置为:ADC_DataAlign_Right。 ADC_NbrOfChannel:表示顺序进行规则转换的通道数,我们一次只转换一个通道,所以我们可以把这个设置为:1。 5. 开启ADC使能 ADC_Cmd(ADC1, ENABLE); /打开 ADC 使能 6. 复位 ADC 校准,然后检测复位ADC校准是否完成ADC_ResetCalibration(ADC1);/重置指定的ADC的校准寄存器 while(ADC_GetResetCalibrationStatus(ADC1);/获取ADC重置校准寄存器的状态 7. 开启ADC校准,然后等待ADC校准开启成功。 ADC_St
29、artCalibration(ADC1);/开始指定ADC的校准状态 while(ADC_GetCalibrationStatus(ADC1);/获取指定ADC的校准程序 8. 设置采样周期和选择通道 我们可以用ADC_RegularChannelConfig()函数,它有三个参数:第一个参数表示选择使用的ADC。我们选择 ADC1 第二个参数选择要使用的通道。每个GPIO 口都有对应的通道的,我们选择通道 7,对应的是 GPIO_PA7,周期我们设置 239.5 个周期。4.5.3 PWM 函数的编制PWM函数的功能是给L298N的IN1口输出PWM信号电压,控制L298N输出驱动电压。在s
30、tm32控制器中,定时器发出PWM信号,在控制器中,除基本定时器,其他的定时器都能产生4路PWM输出。这里,我们TIM2的通道2产生PWM波形。开启TIM2时钟以及复用功能时钟,配置PA1为复用输出。要使用TIM2,我们必须先开启TIM2的时钟,这里我们还要配置PA1为复用输出,这是因为TIM2_CH2通道将映射到PA1上,此时,PA1属于复用功能输出。初始化TIM2,设置TIM2的ARR和PSC在开启了TIM2的时钟之后,我们要设置ARR和PSC两个寄存器的值来控制输出PWM的周期。PWM通道设置是通过函数TIM_OC1Init()TIM_OC4Init()来设置的,不同的通道的设置函数不一
31、样,这里我们使用的是通道2,所以使用的函数是TIM_OC2Init()。修改TIM2_CCR2来控制占空比,PWM其实已经开始输出了,只是其占空比和频率都是固定的,而我们通过修改TIM2_CCR2则可以控制CH2的输出占空比。这个占空比我们将在定时器中断服务子程序里输出。设置采样周期和选择通道我们可以用ADC_RegularChannelConfig()函数,它有三个参数:第一个参数表示选择使用的ADC。我们选择ADC1第二个参数选择要使用的通道。每个GPIO口都有对应的通道的,我们选择通道7,对应的是GPIO_PA7,周期我们设置239.5个周期。4.5.4printf函数的编制Printf
32、函数的功能是将一串字符串传给上位机,能够将霍尔传感器的AD值实时传给上位机。上位机和下位机的通信方式采用串口通信方式。串口操作步骤:打开GPIO的时钟使能和USART的时钟使能。设置串口IO的IO口模式。(一般输入是模拟输入,输出是复用推挽输出)初始化USART。这里我们截取一个函数来说明串口初始化。USART_Init()函数:这个函数用于配置USART的设置,它拥有两个输入参数:第一个参数是用来设置要选择的串口,我们要使用的是USART1,所以我们设置为:USART1。第二个参数是传递一个结构体的指针,这个结构有6个第一个是:USART_BaudRate,表示要设置的串口波特率,我们可以设
33、置我们想要的波特率,比如你要使用9600的时候,就设置为9600。(在我们的例程中,波特率是通过初始化函数传递设置的,所以等于传递的参数baudRate)。第二个是:USART_WordLength,表示要传送数据的长度,一般是8位数据长度,所以我们设置为:USART_WordLength_8b。第三个是:USART_StopBits,表示停止位的长度,我们设置为:USART_StopBits_1。第四个是:USART_Parity,表示是否需要效验,我们设置为不需要:USART_Parity_No。第五个是:USART_HardwareFlowControl,表示是否需要硬件流,所谓硬件流就
34、是使用DMA,我们这里不适用,所以我们设置为硬件流失能:USART_HardwareFlowControl_None第六个是:USART_Mode,表示你要设置的模式,我们要设置既能接收又能发送,所以设置为:USART_Mode_Tx|USART_Mode_Rx。4.5.5time(定时器)函数的编写定时器函数的作用是使控制器每隔一段时间产生一个定时器中断,在定时器中断函数中将执行PID计算,PWM输出,printf函数等。我们首先来配置定时器。TIM3时钟使能TIM3是挂载在APB1之下,所以我们通过APB1总线下的使能使能函数来使能TIM3。调用的函数是:/*开启定时器3时钟*/RCC_A
35、PB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);初始化定时器参数,设置自动重装值,分频系数,计数方式等在库函数中,定时器的初始化参数是通过初始化函数TIM_TimeBaseInit实现的:voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef,下面我们看看这个结构体的定义: typedef
36、 struct uint16_t TIM_Prescaler; uint16_t TIM_CounterMode; uint16_t TIM_Period; uint16_t TIM_ClockDivision; uint8_t TIM_RepetitionCounter; TIM_TimeBaseInitTypeDef; 这个结构体一共有5个变量,要说明的是,对于通用定时器只有前面四个参数有用,最后一个参数TIM_RepetitionCounter 是高级定时器才有用的。 第一个参数TIM_Prescaler 是用来设置分频系数的。第二个参数 TIM_CounterMode是用来设置计数方式
37、,我们这里设置为向上计数模式 TIM_CounterMode_Up。第三个参数是设置自动重载计数周期值。第四个参数是用 来设置时钟分频因子。 因为我们要使用 TIM3 的更新中断,寄存器的相应位便可使能更新中断。 在 库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现的: void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); 第一个参数是选择定时器号,这个容易理解,取值为 TIM1TIM17。 第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有
38、很多种,包括更新中断TIM_IT_Update,触发中断TIM_IT_Trigger,以及输入 捕获中断等等。第三个参数就是失能还是使能。 TIM3 中断优先级设置 在定时器中断使能之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器, 设置中断优先级。 允许 TIM3 工作,也就是使能 TIM3 我们在配置完后要开启定时器,通过TIM3_CR1 的CEN位来设置。在固件库里面使能定时器的函数是通过TIM_Cmd 函 数 来 实 现 的:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) 编写中断服务函数中断服务函数在后续
39、介绍。 4.5.6 中断函数的编写中断函数中包含定时器中断函数和串口中断函数。在定时器中断函数中,我们计算 PID,输出 PWM,将 AD 值和 PWM 值传给上位机。串口中断函数就是串口通信的接受与发送。4.5.7 PID 函数的编制在编写 PID 函数之前,先介绍一下PID算法。 模拟PID控制系统原理框图如图所示。该系统由模拟PID控制器和被控对象组成。r(t)是给定值,y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差e(t) (4-28)其中:Kp控制器比例系数 Ti控制器积分系数 Td控制器微分系数e(t)=r(t)- y(t) e(t)作为PID控制的输入,u(t)作为PID控制器的输出和被控对象的输入。所以模拟PID控制器的控制规律为图4-5 PID控制器控制规律图比例部分的数学式表示是:在模拟PID控制器中,比例环节的作用是对偏差瞬间作出反应。控制作用的强弱取决于比例系数Kp,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是Kp越大,也越容易产生振荡,破坏系统的稳定性。故而,比例系数Kp选择必须恰当,才能过渡时间少,静差小而又稳定的效果。 积分部分的数学式表示是: (4-29)从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加
限制150内