基于FPGA的直流电动机伺服系统.doc_第1页
基于FPGA的直流电动机伺服系统.doc_第2页
基于FPGA的直流电动机伺服系统.doc_第3页
基于FPGA的直流电动机伺服系统.doc_第4页
基于FPGA的直流电动机伺服系统.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的直流电动机伺服系统设计摘 要:提出的直流电动机伺服系统设计方案综合了EDA技术,单片机和模糊控制技术,采用模糊比例算法,即大范围内采用模糊控制,以提高系统的动态响应速度,在小范围内采用比例控制,以提高系统的稳态控制精度.试验证明:该系统细分精度高,可维护性强,响应速度快,控制效果理想.关键词:FPGA;伺服系统;模糊比例控制;PWM波1 引言随着微控制进入控制领域,以及新型的电力电子功率器件的不断出现,使得采用全控型的开关功率元件进行PWM控制方式为主流.这种控制方式很容易在微控制器中实现,从而为直流电动机控制数字化提供了契机.传统的模糊控制器控制动作欠细腻,稳态精度欠佳.电动机是一种旋转式机器, 它将电能转变为机械能,它主要包括一个用以产生磁场的电磁铁绕组或分布的定子绕组和一个旋转电枢或转子,其导线中有电流通过并受磁场的作用而使转动,这些机器中有些类型可作电动机用,也可作发电机用。它是将电能转变为机械能的一种机器。通常电动机的作功部分作旋转运动,这种电动机称为转子电动机;也有作直线运动的,称为直线电动机。电动机能提供的功率范围很大,从毫瓦级到万千瓦级。电动机的使用和控制非常方便,具有自起动 、加速、制动、反转、掣住等能力,能满足各种运行要求;电动机的工作效率较高,又没有烟尘、气味,不污染环境,噪声也较小。由于它的一系列优点,所以在工农业生产、交通运输、国防、商业及家用电器、医疗电器设备等各方面广泛应用。而模糊比例控制(利用模糊数学的基本思想和理论的控制方法。在传统的控制领域里,控制系统动态模式的精确与否是影响控制优劣的最主要关键,系统动态的信息越详细,则越能达到精确控制的目的。然而,对于复杂的系统,由于变量太多,往往难以正确的描述系统的动态,于是工程师便利用各种方法来简化系统动态,以达成控制的目的,但却不尽理想。换言之,传统的控制理论对于明确系统有强而有力的控制能力,但对于过于复杂或难以精确描述的系统,则显得无能为力了。因此便尝试着以模糊数学来处理这些控制问题。)将模糊控制和比例控制有效的结合,使控制器兼有两者的优点.2 算法设计2.1 电机模型的建立直流电动机空载转速为4100r/min,减速比为1/160,额定电压为56V,额定电流不大于12A,功率为500W.忽略电枢电感及黏性阻尼系数,以电枢电压)(tua为输入变量,电机转速)(t为输出变量的直流伺服电动机的传递函数可简化为11)(+=sTKsHme式中,电动机反电动势系数36041005660160=eK,机电时间常数msTm10=.以上推出的传递函数为电压与角度的关系,所以应在此传递函数基础上再加一积分环节,从而实现电枢电压与角度的传递关系.22.2 模糊比例算法当误差小于1.2V时,采用模糊控制.模糊控制采用单输入,单输出结构,即以误差信号为输入信号,控制信号为输出信号.当误差大于1.2V时,电机全速转动.比例算法的控制函数为:)()(terrorKtup=式中pK比例系数.比例算法控制器的作用是成比例的反映控制系统的偏差信号)(terror,偏差一旦产生,控制器立即产生控制作用,以减少偏差.采用微处理器,需引入数字比例控制,即以一系列采样时刻点kT代表时间t,其中,T为采样周期,k为采样序号.代入上式后变为:)()(1kTerrorKkTup=将T归一化为1后,可将)(1kTu简记为)(1kU.这样得到离散比例表达式:)()(1kerrorKkup=3 系统模型的建立在Simulink中建立的系统理论模型如图1所示.对于模糊算法,由于只在大范围内采用,而系统的细调则采用比例算法,因此为提高系统的响应速度,未对模糊控制范围进行分类,而是利用其控制思想,当指令与反馈误差大于一定值时,电机全速运行.实际控制中,也体现了这种做法的优点.引入前馈算法,是为提高相应速度,增加系统带宽,实际控制也证明了这一点.34 系统的硬件设计伺服器硬件电路主要由FPGA控制器,数据采集电路,过流保护电路,隔离电路,驱动电路等组成.各个模块在中央控制器FPGA的控制下协调工作.使用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便的对设计进行修改.本设计采用的可编程逻辑芯片为Altera公司的FLEX10K系列的EPF10K10LC84-4芯片,它具有高密度,低成本,低功耗,灵活的内部连接和强大的I/O引脚功能等特点.其硬件结构如图2所示:数据采集系统主要由3个A/D传感器组成,其中指令值和位置反馈值用AD1674进行模/数转换,电流值由ADC0809采样得到.利用FPGA控制它的三条通道同时采样,分别采集指令信号,反馈信号和电流信号.系统采用双极可逆受限PWM波控制两组NMOS电路驱动直流电机.根据两组PWM波的占空比大小,控制电机的正反转.同时,两组PWM波通过设定适当死区,避免管子同时导通而导致电流过流发生的情况.电源系统需提供3组不共地电源,控制MOS管的导通和截至.本系统以3个DC/DC变换器作为隔离器件,产生3组幅值均为10V但不共地的电压源.由FPGA产生的一路PWM波作为控制信号,FPGA的另一路信号EN作为使能信号,控制PWM波的输出.其硬件电路图如图3所示.输出A路和C路PWM波控制一路MOS管的导通截至.输出B路和D路PWM波控制另一路MOS管的导通与截至.同时,两路PWM波的死区时间控制也由此电路实现.通过电路产生2组PWM波信号,因此提高了电路的可靠性.而且,通过调整电阻和电容的值可以实现死区时间的改变.采用集成运放组成电压比较电路.4PWMEN3A6B8C11DIC5AIC5BIC5CIC5DIC6AIC6BIC6CIC6Dvcc10k10k10k10k10k1k1k10k10k10k10k1k1k0.01uF0.01uF图 35 系统的软件设计伺服驱动器系统软件能够完成电机的正转,反转,加减速等控制功能.在本系统中采用混合编辑法设计各个模块,采用VHDL语音描述各模块功能.所提出的伺服系统方案,已经在康芯GW-48EDA试验箱中做了部分试验.并对系统进行了仿真.PWM波产生模块的VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bio_polor1 isport(ctr1:in std_logic_vector(7 downto 0);clk:in std_logic;pwm:out std_logic);end entity;architecture one of bio_polor1 isbeginprocess(clk)variable cnt:std_logic_vector(7 downto 0);beginif clkevent and clk=1 thenif cnt=11111111thencnt:=00000000;elsif cnt=ctr1 thenpwm=1;cnt:=cnt+1;else pwm=0;cnt:=cnt+1;end if;5end if;end process;end one;对其进行仿真,得到的工作仿真波形如图4和图5所示:以上的仿真研究试验表明,在256个时钟内,控制输入不变的话,输出稳定可靠,达到理想的效果.6 AD1674控制模块程序如下;伪定义ADCHEQU32H;采样值高字节ADCLEQU31H;采样值低字节ADCNUMEQU30H;采样次数ADCSBITP1.5;AD7814片选ADSCLKBITP1.1;AD7814时钟ADDOUTBITP1.7;AD7814数据输出ADSCLBITP1.1;AD7416时钟ADSDABITP1.7;AD7416数据I/O;程序初始化;AD7814的采样参考程序SAMPLE78:MOVADCNUM, #8 ;采样8次SE078:CLRADCS ;选中AD7814MOVR7, #16 ;产生16个取数脉冲MOVADCH, #0 ;A/D值高字节MOVADCL, #0 ;A/D值低字节SE178:CLRADSCLKNOPNOPJBADDOUT, SE178SE378:CLRADSCLKNOPNOPMOVC, ADDOUTMOVA, ADCLRLCAMOVADCL, AMOVA, ADCHRLCAMOVADCH, ASETBADSCLKNOPNOPDJNZR7, SE378SETBADCS;进行数据处理DJNZADCNUM, SE078RET;AD7416的采样参考程序;AD7414、AD7415与AD7416相似,但地址不同。SAMPLE74:MOVADCNUM, #8 ;连续采样8次SE074:MOVR6, #9EH ;片选AD7416的地址写操作MOVR5, #1 ;选中配置寄存器MOVR4, #18H ;给配置寄存器赋值LCALLWRCOM ;三字节的写操作MOVR6,#10011110BMOVR5,#3 ;选中温度上限寄存器MOVR4,#40H ;上限温度=64LCALLWRCOMMOVR6,#10011110BMOVR5,#2 ;选中温度下限寄存器MOVR4,#20H ;上限温度=32LCALLWRCOMMOVR6,#10011110BMOVR5,#0 ;选中温度寄存器MOVWREXE ;两字节的写操作MOVDATA1,#10011111B ;片选AD7416,读操作LCALLRDCOM ;数据处理DJNZADCNUM,SE074 ;采样未完,返回WRCOM:LCALLBEGIN ;三字节的写操作MOVDATA1,R6LCALLOUTBYTE ;输出字节MOVDATA1,R5LCALLOUTBYTEMOVDATA1,R4LCALLOUTBYTELCALLSTOPRETWREXE:LCALLBEGIN ;两字节的写操作MOVDATA1,R6LCALLOUTBYTEMOVDATA1,R5LCALLOUTBYTELCALLSTOPRETRDCOM:LCALLBEGIN ;读操作LCALLOUTBYTELCALLINBYTE ;输入字节MOVADCH,DATA1LCALLNACK ;MCU使ADSDA数据线变为低电平LCALLINBYTEMOVADCL,DATA1LCALLACK ;MCU使ADSDA数据线变为高电平LCALLSTOPRETOUTBYTE:MOVR7,#8 ;输出字节OE1:MOVA,DATA1RLCAMOVADSDA,CMOVDATA1,ALCALLCLOCKDJNZR7,OE1LCALLACK ;AD7416产生应答RETINBYTE:SETBADSDA ;输入字节MOVR7,#8INE1:LCALLCLOCKMOVA,DATA1RLCAMOVDATA1,ADJNZR7,INE1RETNACK:CLRADSDA ;AD7416无应答LCALLCLOCK ;ADSDA数据线为0,一个时钟脉冲之后,ADSDA为1RETACK:SETBADSDA ;AD7416有应答LCALLCLOCK ;ADSDA为1,一个时钟脉冲之后,ADSDA为0RETSTOP:CLRADSDA ;产生停止信号SETBADSCLNOPNOPNOPNOPSETBADSDARETBEGIN:SETBADSDA ;产生开始信号SETBADSCLNOPNOPNOPNOPNOPCLRADSDANOPNOPNOPNOPCLRADSCLRETCLOCK:NOP ;产生时钟脉冲SETBADSCLNOPNOPNOPNOPMOVC,ADSDACLRADSCLRET7 ADC0809控制模块程序如下:COM EQU 50H ; 指令寄存器DAT EQU 51H ; 数据寄存器RS EQU P2.1 ; LCD寄存器选择信号RW EQU P2.2 ; LCD读/写选择信号E EQU P2.3 ; LCD使能信号ORG 0000HLJMP MAIN ;主程序入口ORG 000BHLJMP BT0;T0中断入口ORG 0030H ;主程序,初始化MAIN: MOV SP,#60HLCALL INTMOV 30H,#30HMOV 31H,#0A5HMOV 32H,#30HMOV 33H,#30HMOV 34H,#30HMOV R7,#30HLCALL N1 ;显示 200808588 ZPPVoltage = 0.000MOV TMOD,#00H;定时器T0设为方式0MOV TH0,#00h;装入定时常数MOV TL0,#00hSETB TR0;启动T0MOV 24h, #03h ;装入T0中断次数MOV IE,#82H ;开中断LP: MOV R7,#30H ;显示缓冲区首地址LCALL DISPLYSJMP LP ;循环显示DISPLY: mov com,#0CAH ;设置数据起始地址(第而行第10位) lcall pr1 mov r1,#05h mov r0,#30hl: MOV DAT,r0 LCALL PR2 INC R0 djnz r1,l ret;1. 逐字依次输入方式演示程序段N1:MOV COM,#01H ;清屏 LCALL PR1 MOV COM,#06H ;设置输入方式 LCALL PR1 MOV COM,#081H ;设置数据起始地址(第一行地二位) LCALL PR1 MOV DPTR,#TAB1 MOV R2,#0EH MOV R3,#00HWRIN1: MOV A,R3 MOVC A,A+DPTR MOV DAT,A LCALL PR2 INC R3 DJNZ R2,WRIN1 MOV COM,#0C1H ;设置数据起始地址(第二行地二位) LCALL PR1 MOV DPTR,#TAB2 MOV R2,#9 MOV R3,#00HWRIN2: MOV A,R3 MOVC A,A+DPTR MOV DAT,A LCALL PR2 INC R3 DJNZ R2,WRIN2 RETTAB1: DB 200808588 ZPP TAB2: DB VOLTAGE= ; LCD间接控制方式下的初始化子程序INT:LCALL DELAY ; 调延时子程序MOV COM,#38H ; 设置工作方式(2行,8位数据)LCALL PR1MOV COM,#01H ; 清屏LCALL PR1MOV COM,#06H ; 设置输入方式LCALL PR1MOV COM,#0CH ; 设置显示方式LCALL PR1RETDELAY:MOV R6,#0FH ; 延时子程序MOV R7,#00HDELAY1: NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RET;LCD间接控制方式的驱动子程序如下;1 读BF和AC值PR0: PUSH ACC MOV P0,#0FFH ; P0置位, 准备读 CLR RS ; RS=0 SETB RW; R/W=1 SETB E ; E=1 LCALL DELAY MOV COM,P0 ; 读BF和AC6-4值 CLR E ; E=0 POP ACC RET;2 写指令代码子程序PR1: PUSH ACC CLR RS; RS=0 SETB RW ; R/W=1PR11:MOV P0,#0FFH; P0置位, 准备读 SETB E ; E=1 LCALL DELAY NOP MOV A,P0 CLR E JB ACC.7,PR11;BF=1? CLR RW; R/W=0 MOV P0,COM SETB E ; E=1 CLR E ; E=0; E=0 POP ACC RET;3 写显示数据子程序PR2:PUSH ACCCLR RS ; RS=0SETB RW; R/W=1PR21:MOV P0,#0FFHSETB E ; E=1LCALL DELAYMOV A,P0 ; 读BF和AC6-4值CLR E ; E=0JB ACC.7,PR21SETB RSCLR RWMOV P0,DAT; 写入数据SETB ECLR EPOP ACCRET;4 读显示数据子程序PR3:PUSH ACCCLR RS ; RS=0SETB RW; R/W=1PR31:MOV P0,#0FFH ; P0置位, 准备读SETB E ; E=1LCALL DELAYMOV A,P0 ; 读BF和AC6-4值CLR E ; E=0JB ACC.7,PR31SETB RSSETB RW; R/W=1MOV P0,#0FFH ; 读数据SETB E ; E=1MOV DAT,P0CLR E ; E=0POP ACCRET; 定时器T0中断服务程序,读取ADC0809第0通道的A/D转换结果并化为显示值BT0:PUSH ACC ;保护现场PUSH PSWMOV PSW,#08HCLR TR0;停止T0MOV TH0,#00h ;重装定时常数MOV TL0,#00huuMOV DPTR,#0F6FFH ;0809端口地址/MOV A,#0 ;0通道MOVX DPTR,A ;启动0809MOVX A,DPTR ;读0809转换结果MOV B,#03H ;将转换的值除以3再累加,存入40H中DIV AB;ADD A,40H;/MOV 40H,AMOV A,B ;将除以3后的余数累加放入41H中ADD A,41H MOV 41H,Adec 24h ;3次中断未到则返回/mov a,24hjnz rtn1 mov 24h,#03h ;重装中断次数MOV A,41H;将累加的余数再除3后相加DIV A

温馨提示

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

评论

0/150

提交评论