《电子工程师项目教学与训练》课件第6章_第1页
《电子工程师项目教学与训练》课件第6章_第2页
《电子工程师项目教学与训练》课件第6章_第3页
《电子工程师项目教学与训练》课件第6章_第4页
《电子工程师项目教学与训练》课件第6章_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章消旋控制器设计

6.1引言6.2消旋控制器设计任务书

6.3设计方案6.4硬件电路设计6.5软件设计6.6程序清单

6.1引言飞行器在飞行中,机体产生旋转,使其上携带的相机也随之旋转,造成拍摄到的图像叠加了额外的旋转,妨碍了后续的图像处理。为了获得稳定的图像,需要隔离机体旋转对相机姿态的耦合影响,实现对目标图像的消旋。本节设计了隔离机体旋转的消旋控制器。该控制器通过测量机体旋转的运动参数,控制消旋平台及相机反向旋转,从而使相机姿态不受机体旋转的影响。本节内容主要涉及到A/D转换、PWM波生产、直流电机驱动、数字滤波、闭环控制系统和数字PID算法等方面的内容。6.2消旋控制器设计任务书

1.设计任务消旋系统的基本结构如图6-1所示。图中,直流有刷电机的转子与相机镜头和陀螺仪直接轴连,当机体产生旋转时,电机带动镜头做反向旋转实现消旋效果。陀螺仪为系统中的测角速度元件,其信号表征相机镜头旋转的角速度,即机体转速与电机转速之差。现设计并制作一消旋控制器,要求该控制器能根据陀螺仪的信号,通过控制算法的运算,输出一定占空比的PWM波驱动直流电机,使镜头反向旋转以抵消机体的旋转,实现消旋效果。图6-1消旋系统结构示意图

2.设计要求

1)对陀螺仪输出信号的采样和处理系统中使用的陀螺仪为单轴角速率陀螺,用来测量相机镜头旋转的角速率。陀螺仪的量程为±20°/s,其输出为一电压信号,该信号与被测角速度间呈图6-2所示的线性关系。陀螺仪的零位电压值(即陀螺在静止时的输出电压)为2.5V。按设计要求,对陀螺仪的输出信号要进行A/D采样,按陀螺仪的刻度因数,要求采样的精度大于10mV。图6-2陀螺仪信号关系图

2)控制算法的实现和输出PWM波形本设计中采用数字PID算法,要求实现较高的控制精度。当机体转速为720°/s时,镜头的转速小于5°/s。另外,当机体有加/减速动作时,要求镜头能尽快响应该变化,实现较理想的消旋效果。控制算法的运算结果通过量程转换将转变为PWM波形的占空比,该PWM波的频率为8kHz。

3)驱动直流有刷电机系统通过对PWM波形进行功率放大,驱动直流有刷电机。该电机驱动器要求外加电源,包括逻辑部分电源和绕组供电电源,驱动器逻辑部分输入电压5V±10%,电机绕组驱动输入电压范围为12~48V。6.3设计方案消旋控制器主要由三部分组成:处理器、功放驱动电路和陀螺仪,三者形成了一个闭环控制系统,实现对电机转速的自动调速。其原理框图如图6-3所示。处理器选用了TI公司的16位微控制器MSP430F149,该芯片上集成有12位A/D转换器、16位定时器等资源,可以大大简化系统的电路设计。驱动电路采用ST公司生产L298芯片,该芯片为内含两个H桥的高电压大电流全桥式驱动器。其最高工作电压可达46V,瞬间峰值电流可达3A,持续工作电流为2A。图6-3消旋控制器原理框图6.4硬件电路设计6.4.1主处理器及其外围电路设计此次设计中主控制器选择使用MSP430F149。该单片机是TI公司生产的一款FLASH型超低功耗16位单片机,它集处理能力强、运算速度快、功耗低等优点于一身;内部预设了JTAG模块,使得每一个单片机芯片都具有完整的在线调试功能,而不必使用复杂的仿真调试工具;采用了精简指令集,只有27条核心指令,指令周期可达125ns。该系列单片机不但在指令的执行速度上取得了优势,其内部的附加资源也比传统的MCS-51丰富了许多,其主要特点如下:

(1)超低功耗:运行在1MHz时钟条件下时,工作电流视工作模式不同为0.1~400μA。

(2)工作电压:1.8~3.6V。

(3)工作频率范围:32768Hz~8MHz。

(4)用户应用程序空间:60KB、48KB、32KB、16KB、8KB、4KB、1KB。

(5)片上集成最高可达2KBRAM。

(6) 6个8位通用I/O端口(48个):每一端口的所有引脚可以单独配置,具有控制I/O方向、输出、输入的能力。P1、P2口具有中断功能,每一个引脚都可以单独选择中断触发沿、单独允许中断。

(7)基础时钟模块:包括一个数控振荡器(DCO)和2个晶体振荡器。CPU可以用DCO工作,也可以用晶振时钟信号运行。

(8)看门狗定时器:保证程序发生问题时使受控系统重新启动。应用程序中如果不需要此功能,则可以把它当作普通定时器,当选定时间到达后将产生中断。

(9)带有3个捕获、比较寄存器的16位定时器Timer_A3和带有7个捕获、比较寄存器的16位定时器Timer_B7:可以支持同时进行的多种时序控制、多个捕获、比较功能、多种输出波形(PWM波形),也可以是上述功能的组合。具有中断能力,每个捕获、比较寄存器还可以硬件方式实现串行通信(如UART方式)。

(10)模拟比较器:可实现模拟电压比较。

(11)具有8路12位精度的A/D转换模块。

(12) UART接口:支持两种不同的串行协议,即通用异步协议(UART协议)和同步协议(SPI协议)。

(13)硬件乘法器:可以明显提高程序的运行速度,大大减轻CPU的程序开销。

(14)工作温度范围:-40~+85℃。

(15)封装:PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20。图6-4给出了MSP430F149及其外围电路。系统采用了外部晶振(8MHz);复位电路采用了普通的按键复位电路。JP2接口为14针JTAG 接口,可以利用它下载和在线调试程序。陀螺仪的输出信号由接口JP1引入,经电阻分压后接入MSP430F149的A4通道进行采样。管脚P4.1为TimerB的输出管脚,输出PWM波形。管脚P5.0输出L298的使能信号(高电平有效)。图6-4主处理器及其外围电路6.4.2功率驱动电路设计功放驱动电路的核心是L298芯片,该芯片内含两个H桥,其原理框图如图6-5所示。由图6-5可见,每个H桥的下侧桥臂晶体管发射极连在一起,其输出脚(1和15)用来连接电流检测电阻。9脚接逻辑控制部分的电源,常用+5V。4脚为电机驱动电源VS。5、7、10、12脚输入标准TTL逻辑点评信号,用来控制H桥的开与关。6、11脚则为使能控制端。图6-6所示为由L298构成的电机驱动电路,其中电机驱动电源为 +28V。首先将单片机输出的PWM波形通过与非门芯片HEF4093B变为两路反相的PWM波(In1、In2)接入L298的输入端,然后将L298的两组H桥并联使用,这样可以使电机驱动电流达到3.5A。图6-5L298原理框图图6-6电机驱动电路6.5软件设计6.5.1系统程序结构系统的程序结构如图6-7所示。系统上电之后先进行初始化操作, 主要包括时钟初始化、变量的初始化、A/D和Timer的配置。进入主程序后,首先对陀螺仪的输出信号启动A/D转换,得到采样结果后进行数字滤波;然后计算偏差,进入数字PID算法;根据其计算结果,经量程转换变为占空比值,然后配置TimerB,使其在P4.1管脚上输出该占空比的PWM波,之后程序再次启动A/D转换,循环运行以上步骤。这样,程序可根据陀螺仪测得的镜头转速,不断地调整所输出PWM波的占空比,再由L298驱动达到控制电机转速使之抵消外部旋转的目的。图6-7系统程序结构框图6.5.2数字滤波在本设计中,主程序首先要对陀螺仪的输出值进行采样,由于各种干扰的存在,如果仅采样一次,就无法确定结果是否可信。因此,在软件设计上采用数字滤波的方法来减少干扰,提高采样的可靠性。设计中采用中值滤波和算数平均滤波相结合的方法,具体的做法是:在一个控制周期内(即主程序循环一次)对被测量连续采样7次,将采样结果排序去除最大和最小值,然后求剩余5个采样结果的算术平均值,将其作为最终的采样结果输出。这部分程序结构比较简单,请读者阅读程序清单。6.5.3数字PID算法

PID控制器是一种线性控制器,它根据给定值r(t)与实际输出值c(t)构成控制偏差e(t)=r(t)-c(t)将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。在计算机控制中,采用的是对积分、微分项进行离散化处理后的数字PID算法。关于数字PID算法及其常用的改进方法,本节中不再做详细的讨论,请参阅相关参考书。在本设计中,为了得到较好的控制特性,采用增量式PID控制,并加入了积分分离、和遇限削弱积分环节。其程序框图见图6-8,具体的程序设计详见程序清单。图6-8系统流程图6.5.4PWM波形的生成

PWM波形的生成是利用了MSP430F149定时器的复位/置位模式来实现的。如图6-9所示,对复位/置位模式,当TimerB的计数值小于TBCCR1时输出高电平;大于TBCCR1时输出低电平。配合计数器时钟的选择,配置TBCCR0的值来设定PWM波形的频率,修改TBCCR1的值来设定其占空比。图6-9PWM波形输出示意图下面给出了生成PWM的程序:

voidInit_TimerB(void)

{

P4DIR|=BIT1; //P4.1为输出

P4SEL|=BIT1; //选择P4.1为TB1管脚

TBCTL=TBSSEL1+TBCLR; //选择SMCLK,清除TAR

TBCCR0=1000;

//SMCLK的频率为8MHz,PWM频率为8KHz

TBCCTL1=OUTMOD_7; //CCR1输出模式为“复位/置位”模式

TBCCR1=500; //PWM占空比为500/1000=50%

TBCTL|=MC0;

//增记数模式

return;

}6.6程序清单

#include<MSP430X14X.h>

voidInit_CLK(void);

voidInit_ADC(void);

voidInit_TimerB(void);

intDutyCycle,i,max,min,PWM; //DutyCycle为占空比值

intSampling[7]={0,0,0,0,0,0,0}; //采样结果

longinttemp1;

floatKp,Ki,Kd,Input,Feedback,Error,Error_1,U_PID,U_P,U_I,U_D,U_I_1;

//Kp,Ki,Kd为PID控制参数

//Error,Error_1分别为偏差和上一控制周期的偏差//U_PID,U_P,U_I,U_D,U_I_1分别为总控制量、比例控制量、积分控制量、微分控制量和上一//控制周期的积分控制量//---------------------------------------------------voidInit_Variable(void)//变量初始化{DutyCycle=2048;temp1=0;Kp=0.035;Ki=0.0085;Kd=0.001;Input=2048.0;Feedback=0.0;Error=0.0;Error_1=0.0;U_PID=0.0;U_P=0.0;U_I=0.0;U_D=0.0;U_I_1=0.0;}//---------------------------------------------------------------------------voidInit_CLK(void){unsignedinti;//将寄存器的内容清零

//XT2震荡器开启

//LFTX1工作在低频模式

//ACLK的分频因子为1BCSCTL1=0X00;

do{//清除OSCFault标志

IFG1&=~OFIFG;for(i=0x20;i>0;i--);}while((IFG1&OFIFG)==OFIFG);BCSCTL2=0X00; //MCLK的时钟源为XT2CLK:8MHz,分频因子为0BCSCTL2+=SELM1+DIVM_0; //SMCLK的时钟源为XT2CLK:8MHz,分频因子为0BCSCTL2+=SELS+DIVS_0;return;}//------------------------------------------------------------------------------voidInit_ADC(void){//设置P6.0为模拟输入通道

P6SEL=0X07;//设置ENC为0,从而修改ADC12寄存器的值

ADC12CTL0&=~(ENC);//打开内部参考电压

ADC12CTL0|=REFON;//内部参考电压设为2.5VADC12CTL0|=REF2_5V;//转换的起始地址为:ADCMEM4ADC12CTL1|=CSTARTADD_4; //输入通道为A4ADC12MCTL4=INCH_4+EOS;ADC12CTL0|=ADC12ON;ADC12CTL0|=MSC;

//转换模式为:单通道、单次转换

ADC12CTL1|=CONSEQ_0;

ADC12CTL1|=ADC12SSEL_3;

//选择转换内核的时钟源为SMCLKADC12CTL1|=ADC12DIV_3;

//分频因子为4ADC12CTL1|=(SHP);//使能ADC转换

ADC12CTL0|=ENC; return;}//----------------------------------------------------------------------voidInit_TimerB(void){//P4.1为输出

P4DIR|=BIT1;

//选择P4.1为TB1管脚

P4SEL|=BIT1;//选择SMCLK,清除TARTBCTL=TBSSEL1+TBCLR;//CCR0中断允许

//PWM频率为8000HzTBCCR0=1000;//CCR1输出模式为“复位/置位”模式

TBCCTL1=OUTMOD_7;TBCCR1=500;//增记数模式

TBCTL|=MC0; return;}voidmain(void){

WDTCTL=WDTPW+WDTHOLD;

Init_CLK();Init_TimerB();Init_ADC();Init_Variable();

while(1){DutyCycle=0;temp1=0;

//-------------------------------------数据采样-----------------------------------for(i=0;i<7;i++){ADC12CTL0|=ENC+ADC12SC; //启动转换

while((ADC12IFG&ADC12BUSY)==0); //判断转换是否完成

Sampling[i]=ADC12MEM4;temp1=temp1+Sampling[i];}//------------------------------------数字滤波-----------------------------------------max=Sampling[0];min=Sampling[0];for(i=1;i<7;i++){if(Sampling[i]>max)max=Sampling[i];elseif(Sampling[i]<min)min=Sampling[i];}

Feedback=(temp1-max-min)/5;

//----------------------

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论