logo资料库

东南大学DSP实验 课程设计 直流无刷电机的控制.doc

第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
资料共31页,剩余部分请下载后查看
一.实验目的
1.1 基本要求
1.2 提高要求
二.实验设备
三.实验原理
3.1 霍尔传感器
3.2直流无刷电动机
3.3 电机驱动与控制
3.4 基于drvlib281x库的PWM波形产生:
四.实验步骤与实验内容
4.1霍尔传感器的捕获与正反转数组的确定
4.2 电机转向的控制
4.3 电机转速的控制
4.4 键盘控制部分
4.5 电位器控制部分
4.6 液晶屏显示部分
五. 实验总结
附录 实验代码
东南大学自动化学院 实 验 报 告 课程名称: DSP 技术及课程设计
目录 一.实验目的 ...................................................................................................................................3 1.1 基本要求 ............................................................................................................................3 1.2 提高要求 ............................................................................................................................3 二.实验设备 ...................................................................................................................................3 三.实验原理 ...................................................................................................................................3 3.1 霍尔传感器........................................................................................................................3 3.2 直流无刷电动机 ................................................................................................................ 4 3.3 电机驱动与控制............................................................................................................... 4 3.4 基于 drvlib281x 库的 PWM 波形产生: ...........................................................................6 四.实验步骤与实验内容.............................................................................................................. 6 4.1 霍尔传感器的捕获与正反转数组的确定 ........................................................................ 6 4.2 电机转向的控制............................................................................................................... 7 4.3 电机转速的控制............................................................................................................... 9 4.4 键盘控制部分 ....................................................................................................................9 4.5 电位器控制部分............................................................................................................. 10 4.6 液晶屏显示部分............................................................................................................. 12 五. 实验总结 ...............................................................................................................................14 附录 实验代码 ...............................................................................................................................15
一.实验目的 综合实验目标是: 利用F28335核心板与ICETEK-MOTOR-E运动控制板,实现直流无刷电 机的驱动与转速控制,利用小键盘或电位器对直流无刷电机进行转速调节,并利用液晶屏显示 转速等状态信息。 1.1 基本要求 ①掌握 F28335 核心板与 ICETEK-MOTOR-E 运动控制板的使用方法,接线正确,能捕获并 证实霍尔传感器状态变化规律(表 1); ②能正确总结出正/反转控制表(表 2),从而控制电机正转/反转; ③能通过修改占空比,用示波器观察 pwm 口输出波形的变化。 1.2 提高要求 ①能通过阅读学习“ICETEK-Motor-E 使用说明书.pdf”,发现 ICETEK-MOTOR-E 运动控制 板中的电位器信号,编制程序从 DSP 相应的 ADC 输入端口采集该电位器信号,能用 CCS 图形 显示 AD 变换结果曲线; ②能编制程序,利用 AD 变换结果调节 PWM 占空比,从而对直流无刷电机进行调速; ③能设计基本的人机接口软件,即编制程序,利用小键盘进行正转、反转、停止功能选择, 利用液晶屏显示(示意)正转、反转、停止等状态信息,并可自行扩展其它辅助功能。 二.实验设备 计算机,ICETEK-F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 系统板+相 关连线及电源),ICETEK-Motor-E 电机。 三.实验原理 3.1 霍尔传感器 插好电机驱动板,连接好霍尔传感器接头,先不连接驱动电源和电机的abc三项电源,给dsp
试验板上电,则霍尔传感器即可工作。手动转动电机,电机不加电,观察正转和反转时指示灯 D4、D5、D6等的变化顺序。 D6 1 1 0 0 0 1 D6 1 1 0 0 0 1 D5 0 0 0 1 1 1 D5 0 1 1 1 0 0 D4 正转(俯视电机主轴,顺时针转动) 0 1 1 1 0 0 D4 反转(俯视电机主轴,逆时针转动) 0 0 0 1 1 1 3.2 直流无刷电动机 ICETEK-F2812-BCM实验箱采用的直流无刷电机是三相方波控制型直流无刷电机(BLDCM),如 果按照一定顺序给电机的各相通入方波即可使电机转动,转动的速度及力矩与通入电机定子绕 组的电压、电流成正比关系。 3.3 电机驱动与控制 通过ICETEK-F2812-BCM实验箱,ICETEK-F2812-A板与电机驱动板及直流无刷电机连接,通 过编程,TMS320F2812输出的控制信号能够控制电机转动。具体控制信号连接如下所示: 电机驱动模块的内部结构如下所示:
各PWM管脚按如下顺序完成信号的输出可使电机转动: 其中,PWM代表输出一定占空比的PWM波,0常关或强制低,1常开或强制高。PhaseA、 PhaseB和PhaseC的相应输出为:
3.4 基于 drvlib281x 库的 PWM 波形产生: PWM1-6控制:如果要电机转动则连接电机的PhaseA、PhaseB和PhaseC的输出需要满足上 面图2-2给出的波形,每相电压在±24V之间变动并满足上述时序关系。而要实现这一输出,需 要在PWM1-6管脚上输出满足上面图描述的波形和时序关系。 转向控制原理:TMS320F281x DSP的寄存器ACTRA控制PWM1-6的输出模式,对应状态0-5 的取值分别为0x0CE、0x0C0E、0x0CE2、0x2EC、0x0E2C和0x0EC0。我们只需调用电机驱动 库drvlib281x中PWM波形发生模块,输入这六种状态,就可以将相应控制字送PWM的ACTRA 控制寄存器。换句话说,我们可以通过在程序中给PWM发生模块顺序输入状态0-5即可让电机 转动。如果反向顺序输入5-0则可使电机反向转动。 转速控制原理:如上所述,电机转动需要安装一定频率送状态0-5控制字,而送电机控制信 号的速度(频率)则在一定程度上决定了电机转速,0-5各状态切换得快,则电机可以快些运行。 但还有一个因素,即送电机输出的电流,送给电机定子的三相绕组的电流直接决定了电机转子 能产生多大的转矩。当控制状态由一种切换到下一种时,电流发生的力矩是否能让转子转动到 位,这决定了电机在下一个状态电流到来时是否能顺利转动下去。如果电流弱,不足以使转子 转动到位,电机将“失步”或根本无法转动;如果电流过大,在下一个状态到来前早就到位,电 机转子将在当前电流控制下在此位置“刹车”,如果在惯性的驱动下稍微转动过位时,就会反向 转回来,导致电机转子在运行时会产生不同程度的震动,甚至电机绕组发热。由此,我们需要 选择好电机状态切换的频率,也要控制好送电机驱动信号的电流大小,亦即控制好切换PWM控 制字的频率和控制PWM输出的占空比。 四.实验步骤与实验内容 4.1 霍尔传感器的捕获与正反转数组的确定 打 开 “ DSP_MotorEx\DSP2833x_examples\28335bcm3.1\build ” 下 的 工 程 文 件 “bldc3_1_281x_CCS3x.pjt”。 (1) 先进行霍尔传感器的状态读入测试,在工程管理器的include下面找到build.h文件,将编 译开关#define BUILDLEVEL LEVEL? 的设置设为LEVEL0,然后编译程序、运行程序测试。 注意在中断服务程序的LEVEL0处理分支下,使用变量nNowStatus给pwm指针赋值。程序生 成PWM的原理参见“准备实验2”: pwm1.CmtnPointer = nNowStatus;//0-5 pwm1.DutyFunc = (int16)rmp2.Out;
pwm1.update(&pwm1); 在变量观察窗口中改变nNowStatus的值(0-5之间),在变量观察窗口里观察变量hallcap的 变化。观察指示灯的状态和hallcap的数值的变化对应关系,总结出指示灯和霍尔传感器读入的 状态的对应关系,然后总结出正转hallcap的变化顺序,和反转时的变化顺序。 (2) 总结对应关系填写下表, :俯视电机主轴,顺时针转动. (D6~D4灯亮为1,灭为0) nNowStatus 表1 正转关系 Hallcap 对应捕获端口 数据 0 1 2 3 4 5 6 4 5 1 3 2 D6 D5 D4 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 由上面即可确定正转数组为:Uint16 zhengzhuan[6]={4,0,5,2,3,1}; fanzhuan[6]={2,4,3,0,1,5}; 同理可得反转数组为: Uint16 4.2 电机转向的控制 (1)目的:在程序中添加内容完成使电机正/反方向转动。 (2)分析:根据实验原理,我们只需要控制送给PWM波形发生模块pwm1的状态输入顺序即可改变 电机转动方向。 根据准备实验1中总结出的正反转顺序可知,如果当前电机锁定状态为5状态,欲正转,则 电机须锁定到1状态,所以pwm.Cmtnpointer赋值为2,若想反转,则电机须锁定到4状态,所以 pwm指针赋值为0。因此得出正反转数组下标(下标为当前霍尔传感器读入状态,数组值为向下 一状态转动pwm所赋数值),与pwm指针对应数组为: 转向 正 反 正 反 正 反 正 反 正 反 正 反 表2 正/反转控制表 霍尔 状态 Pwm 指针 1 2 3 4 5 6 4 2 0 4 5 3 2 0 3 1 1 5
(3)修改程序: 以上表为参考修改BLDCMControl.c程序中的相关变量定义: Uint16 zhengzhuan[6]={ 4,0,5,2,3,1 }; Uint16 fanzhuan[6]= { 2,4,3,0,1,5 }; 注意BLDCMControl.c中的代码,并尝试让电机正转。 nISRWork1=(int16)hall1.HallGpio; bISRWork=( nISRWork1>0 && nISRWork1<7 )?(1):(0); if ( bISRWork ) { nNowStatus=zhengzhuan[nISRWork1-1]; } (4) 最终实现代码 代码中设置了如下两个变量: char direction; char changeDirection; //转换标志 changeDirection =1,有转向;changeDirection = 0,无转向 //其中 direction=0 正转,direction=1 反转 当使用者通过键盘发出转向命令时,即可改变上述两个变量的值,实际代码如下: nISRWork1=(int16)hall1.HallGpio; bISRWork=( nISRWork1>0 && nISRWork1<7 )?(1):(0); if ( bISRWork ) { /*************************************************************************** TASK: 补充代码,以 nISRWork1 为索引,查找表 zhengzhuan 或 fanzhuan,并将值 赋给 nNowStatus ****************************************************************************** **/ if(changeDirection==1){ tts=DFuncDesired; DFuncDesired=0; rmp2.DesiredInput = (int32)DFuncDesired; rmp2.calc(&rmp2); changeDirection=0; } else{ } if(direction==0){ }else{ } nNowStatus=zhengzhuan[nISRWork1-1]; //0 对应正转,1 对应反转 nNowStatus=fanzhuan[nISRWork1-1];
分享到:
收藏