【电气工程自动化】直流无刷电机-运动控制实验报告_第1页
【电气工程自动化】直流无刷电机-运动控制实验报告_第2页
【电气工程自动化】直流无刷电机-运动控制实验报告_第3页
【电气工程自动化】直流无刷电机-运动控制实验报告_第4页
【电气工程自动化】直流无刷电机-运动控制实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、小组成员:运动控制系统综合实验实验报告直流无刷电机实验报告、 实验目的通过对8257的编程控制,发出可以驱动直流无刷电机的六路pwm 波,实现对电机的控制。、 实验原理1. 直流无刷电机驱动原理这部分在ppt里有详细介绍,简单来说就是要根据转子上的 三个霍尔传感器的状态发岀下一步所需的三相电流。刚开始时我 对这部分原理迟迟不能搞透彻,对着向量图思考了好久,就是不 能把霍尔传感器的状态和所需电流方向对应起来。主要问题是那 个ppt上的向量图没有清楚的思考步骤,导致我把定子的磁场一 直当成转子的看,当然搞不清楚。后来在和身边同学交流后才明 白。然后我按照六步驱动法得到了逆时针转动所需的霍尔状态表,

2、 如图1左,经验证此状态表是可以成功驱动电机的。搞定逆时针转动后我趁热打铁,把顺时针转动的霍尔状态表 也写了出来。但是最开始我想当然的以为把逆时针的状态倒过来 对应霍尔传感器的值电机就会反转,经过试验后证明这种思路是 错误的,电机还是逆时针转动。我想了好久没想明白,只好又从 头推了一遍顺时针转动所需的状态表,如图右。前后对比我们 发现相同霍尔状态时,正反所需的电流恰好相反,也即相差180。o再回想推导过程中实际是用下一个状态的电流对应本状态的霍尔 值,我一下豁然开朗。我判断电机在某一位置时允许有60°的误 羌,逆时针转动时上一个状态加上60。,顺时针转动时则减去 60° ,

3、所以顺时针逆时针转动正好差了 180°。霍尔传感器的状态和所需电流如下表:逆时针转动顺时针转动hahbhcabcabc001-0+0-1010+0+100+0-+0110+0-0+0100+-0+011+0+02. 相序确定上述表格中a,b,c其实是我们假定的,与霍尔元件hahbhc 对应的a b c并不对应,所以我们还要确定一下三相相序。考 虑到我们只给三相电机提供a正b负的电流时,电机转子应该 停在一个确定的位置,而这个位置对应的霍尔状态值为0 1 0。 那么当我们任意通入一正一负的电流时,若霍尔状态值为0 1 0,此时正电流即a相,负电流即e相。按此方法即可确定相 序,所用的a

4、正b负程序如下:/* write your local variable def inition here /* processor expert internal initialization. don't remove this codeii / pe low level init();/»* end of processor expert internal initialization*/z« write your code here */cpudelayl00us(1000);b2_setval();cpu_d©layl00us(1000);b3_

5、setval();for(;) cc»cc_getval(); pesl(efpuml pesl(efpwml pesl(efpuml pesl(ofpuml pesl(efpuml pesl(efpuml pesl(efpuml pesl(efpuml pesl(efpuml device. device, device, device. device, device, device, device, device,;2 pum pum pum pum pum pum pum pumoot11t22t mmemhermme sssssssssurite_value_reg3. 0x

6、3000).write value 二reg5. 0x0000), ldokpvm_smo);urite_value_reg3. 0x0000) urite_value_reg5. 0x1000). look. pvmsml);urite_value_reg3. 0x(*00) urite_value_reg5. 0x0000), look, pvm sm2);写在ma i n里面是为了一直发岀a正b负的电流。3. 8257的编程原理一直以来涉及到程序的地方都让我很头痛,不过这次还好, codewarrior采用c语言,还是可以熟练应用的。概括说来, 我们所编写的程序应能按照上述表格发射正确的

7、pwm波,为 此需添加pwm模块,并应用里面的submodule子模块。每个 模块可以产生两路pwm,所以我们需要三个子模块。通过对 module里的value赋值可以控制该路波的发出与占空比,从而 发出所有的pwmo三、实验中遇到的问题与解决显然在实验过程中大家都碰到了许多问题,困扰我们的问题比较 多,其中比较大比较重要的有以下几个:1. pwm模块的配置虽然关于pwm模块的设置助教老师讲过一遍,但怎奈需要配置的参数太多,前几周我都没能把pwm波完整的发出去,更别提受控制的波形。好在通过查找相关资料我终于搞明白如何调整占空比,如下所示:pwm smnval2 field descriptio

8、ns (continued)ftolddetcriptionth© 164x1 signed vaju« in this bufforoa roadwnte rogistor (tofinos tho count value to sot pwm23 high. tns register is no( byte acces&bto.note: the val2 rogistgf is buffered. th© value written doos not take ©feet unti mctrlfldok is set and the nex

9、t pwm load cycto oegms or ctrlfldmod) ts set val2 cannot be wntton when mctrlldok is s«(. reading val2 roads tho valuo m a buffer and not nocossanly th。valuo th® pwm gonorator is cunontt/ using.pwm smnval3 field descriptionsftolddescription15-0 val3value register 3the 16-ott signed value m

10、 trus dufferod. reaawme rogistor oeftnes me count value to set pwm23 low. this register is not "to accossibto.note: th© val3 register is bufforod. th© valuo written does not take effect unti mctrljldok is set and tho next pwm 3d cycs begins or ctrlfldmoo is sot. val3 cannot bo wntton

11、whon mctrlfldok is mt reading val3 roads tho vatu。m a buff or and not nocossanly the vajuo tho pwm gowatoc s currently using.通过给val2、val3赋值即可控制pwm23开通的时间。这是 一个sub里的一个频道a,对频道b和其他sub方法是一样的。 这样我们终于可以发出6路pwm,但此时这些pwm还不受 控制,是一起输出的,下一个问题是怎么控制pwm的输出。2. pwm输出的控制开始时我想反正占空比是可以固定不变的,那就控制频道 的输出与否就可以控制pwm的输出了。刚好

12、我在pwm自带 的函数库里看到了控制某路输出enable/diaable的函数,如下:ary/nentsdeviceminmodule identifier- use eflexpwmparaminpwm_smo_enable pwma ou|put for so enabled pwm.sm1jnable pwma 0側 for s1 enabled pwm.sm2.enable pwma 0咖 for s2 enabled pwm.sm3.enable pwma 0卿 for s3 enabled pwm smo disable pwma output for so dsabled pwm

13、.smldisable pwma output for s1 disabled pwm.sm2.disable pwma output fa s2 disabled pwm.sm3.disa8le pwma oitput for s3 disabledixisple:r£sl eflexpwc, outwtj,昭.smo.gbhi);:oct:( eflex昭 piw.otiroijl. paeloslei.);因此就采取这种方法进行编程。但是不知为何,采用 enable/disable的方法编写的程序就是不能正确工作,而且逻 辑上程序也没有错误,在多次讨论找不到错误后我就向身边的

14、同学请教,又学会了另一种方法,即通过对三个模块的val2、 val3、val4、val5的不断赋值来控制,相关函数如下: pwm-sm0.write_value-reg3 set pwm.sm value register 3.argumentsdeviceldinmodule identifier use eflexpwmparaminword value to be written to the registersresult:o voidsxdeple;pesl( eflexpwm, pwm_sm0_write_value_reg3. 1 ); ioctl( eflexpwm, pwm_

15、sm0_write_value_reg3r 1 );采用这种方式要注意每次对某个模块复制后要加上一行ldok,即将寄存器里的值赋给val,否则val的值不会改变。deviceldinmodule identifier use eflexpwmparaminpwm.smo set load okay smo pwm sm1-set load okay sm1 pwm_sm2 - set load okay sm2 pwm_sm3 set load okay sm3 pwm zero nothing selectedrsi/t0 voidexdflple:?esl( eflexpkm, pkmse

16、tldok, pwmsmoi.);ioctl( eflexpkm, pwmsetldok, ptosmoi.);采用这种方式还有一个好处就是可以改变占空比,而且非常简 单。3. 电机连线经过好久的调试后pwm波终于可以按规定变化,接上电机 后电机也可以转起来,但我们发现转不一会儿电机就发出大量热, 手摸上去都受不了。而且电机转的不太均匀,有不太强的震动。 开始吋以为是电机的问题,但换了一个后还是发热,后来经询问 老师后我们想到虽然电机能转,但可能电机的频率和pwm的变 化频率并不一样,电机可能没有跟上pwm的变化频率。正常运 行时电机的abc三相应该正好与pwm的三相对应,但如果a相 接正确而

17、bc相接反时电机也会转,只不过效率不高而且转的不稳。 经过确定相序后发热的问题也随之消失。四、实验感想(?)这次实验主要是靠自己动手,从刚开始时什么也不会到最后成功驱动电机,中间我们付出了很多时间和精力,但也学到了很 多。按常老师的话说这次课程主要是锻炼我们自主学习知识的能力,特别是查找资料的能力。虽然刚开始儿周助教老师讲解时我 没听太懂,但助教老师把相关资料都放在电脑里了,想看随时都 可以看。通过几周的研究特别是查找codewarrior里的帮助,我既 搞懂了原理,也明口了应该怎么实现。有时实在想不通某个问题 我还会和身边的同学讨论讨论,大家交流一下互相的想法基本都 能解决问题。通过这次课程

18、我觉得我基本已经可以花费一些时间来掌握一 门自己从没接触过的技能,学习的能力得到了很大的提高。常老 师对待科研的态度也给我留下了深刻印象,对待科研一定要认真, 一点马虎都要不得。对我们的课程我们也有一些小小的反馈,希 望老师能看一下:首先电源转换器看上去就很危险,2 2 0 v的火线都露在表 面,说不好就有漏电的危险。另外实验的驱动电路经常电到我们, 漏电比较严重。不过想要更换实验设备关系到许多问题,所以我 们也只好抱怨一下。另外希望常老师能把每个阶段的任务都给我们明确一下,不 然好多次在实验室大家都不知道该干嘛,就坐在那儿等助教来讲。 遮掩效率比较低下,也不便于有些能力强的同学自主完成任务。

19、步进电机实验报告步进电机驱动原理与直流无刷电机相比,步进电机结构比较简单,驱动原理也相对简单。其内部接线图如下:黑 a-绿 grn c。黑 blk a。 黄 yel 0。绿 grn c4 leadsbdredblu红蓝6 leads b 0 d red wht blu 红白蓝本次实验用的是四步步进电机,共四根接线,两两一组控制2只 线圈。为了让电机顺利转起来,比如逆时针转动,我们需要先给 线圈ac通正电,再给线圈bd通正电,再给ac通负电,再给bd 通负电。一个周期共四个状态,所以称为四步步进电机。由于实 验所用板子输出的是三相电,所以在接线时须将bc或ad接在同 一相,用相间电压uab, u

20、 b c做ac、b d电压。二、 p wm控制通过上面的分析知道要驱动步进电机只需要按顺序发出四个状态 的pwm波即可。不过由于没有反馈检测,我们无法确认应该在 何时切换pwm,进入下一个状态。考虑到电机的转子旋转90°(这时需切换状态)需要一定时间,我们可以在每个状态之间加 上延吋,根据延吋的多少来控制电机的转速。程序实现如下:peskefpuml.device, pesl(efpuml_device, pesl(efpuml_device, pesl(efpuml_device, pesl(efpumldevice. pesl(efpuml_device, pesl(efpuml

21、_device, pesl(efpum1_device, pesl(efpwml_device, cpudelay10 ous(a);pesl(efpum1_device, pesl(efpum1_device. pesl(efpum1_device, pesl(efpum1_device, pesl(efpum1_device, pesl(efpumlzdevice, pesl(efpuml.device, peskefpuml.device, pesl(efpum1_device. cpu_delay10 ous(a);pesl(efpuml_device, pesl(efpum1_dev

22、ice pesl(efpuml.device, pesl(efpwml_device, pesl(efpum1_device pesl(efpum1_device, pesl(efpwmlzdevice, pesl(efpwml_device, pesl(efpuml_device, cpu_delayloous(a);pesl(efpum1_device, pesl(efpuml.device, pesl(efpumldevice pesl(efpwm1_device, pesl(efpum1_device, pesl(efpuml.device, pesl(efpuml_device, p

23、esl(efpuml.device. pesl(efpwml_device, cpu delayloous(a),pum pum pumflwpumpum pum pum pumo o t 11 t 2 m merm m £ sssssspum_smo pum_smo pum_setpum_sm1pvm.smlpumzsetpum_sm2pum_sm2 pum_setpurite_value_reg3. write look. write write ldok, write writevalue.reg5 pum.smo);value_reg3.value_reg5 pum.sm1)

24、;value_reg3 value_reg5ldok, pwm.sm2);urite_value_reg3, urite_value_reg5, ldok, pvm.smo);urite_value_reg3.urite_value_reg5, ldok. pvm_sm1);urite_value_reg3, urite_value_reg5, ldok. pum_sm2):urite_value_reg3# urite_value_reg5, ldok,pvm_smo);urite_value_reg3,urite_value_reg5, ldok, pvm.sm1);urite_value_reg3, urite_value_reg5, ldok. pum_sm2);0x2000),0x0000),0x0000),0x5000),0x0000),0x0000h0x0000),0x0000),0x2000),0x0000)r0x0000),0x5000)0x0000);0x2000);0x5000);0x0000);0x0000);0x0000);pppppppppoot11t22tsssssssss _urite_value_reg

温馨提示

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

评论

0/150

提交评论