【电气工程自动化】直流无刷电机-运动控制实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《运动控制系统综合实验》
实验报告
小组成员:
直流无刷电机实验报告
一、实验目的
通过对8257的编程控制,发出可以驱动直流无刷电机的六路PWM 波,实现对电机的控制。
二、实验原理
1.直流无刷电机驱动原理
这部分在PPT里有详细介绍,简单来说就是要根据转子上的三个霍尔传感器的状态发出下一步所需的三相电流。刚开始时我
对这部分原理迟迟不能搞透彻,对着向量图思考了好久,就是不
能把霍尔传感器的状态和所需电流方向对应起来。主要问题是那
个PPT上的向量图没有清楚的思考步骤,导致我把定子的磁场一
直当成转子的看,当然搞不清楚。后来在和身边同学交流后才明
白。然后我按照六步驱动法得到了逆时针转动所需的霍尔状态表,
如图1左,经验证此状态表是可以成功驱动电机的。
搞定逆时针转动后我趁热打铁,把顺时针转动的霍尔状态表也写了出来。但是最开始我想当然的以为把逆时针的状态倒过来
对应霍尔传感器的值电机就会反转,经过试验后证明这种思路是
错误的,电机还是逆时针转动。我想了好久没想明白,只好又从
头推了一遍顺时针转动所需的状态表,如图一右。前后对比我们
发现相同霍尔状态时,正反所需的电流恰好相反,也即相差180°。
再回想推导过程中实际是用下一个状态的电流对应本状态的霍尔
值,我一下豁然开朗。我判断电机在某一位置时允许有60°的误差,逆时针转动时上一个状态加上60°,顺时针转动时则减去60°,所以顺时针逆时针转动正好差了180°。
霍尔传感器的状态和所需电流如下表:
逆时针转动顺时针转动HaHbHc A B C A B C
001 - 0 + + 0 -
101 0 - + 0 + -
100 + - 0 - + 0
110 + 0 - - 0 +
010 0 + - 0 - +
011 - + 0 + - 0 2.相序确定
上述表格中A,B,C其实是我们假定的,与霍尔元件HaHbHc 对应的ABC并不对应,所以我们还要确定一下三相相序。考虑到我们只给三相电机提供A正B负的电流时,电机转子应该停在一个确定的位置,而这个位置对应的霍尔状态值为010。
那么当我们任意通入一正一负的电流时,若霍尔状态值为010,此时正电流即A相,负电流即B相。按此方法即可确定相
序,所用的A正B负程序如下:
写在main里面是为了一直发出A正B负的电流。
3.8257的编程原理
一直以来涉及到程序的地方都让我很头痛,不过这次还好,codewarrior采用C语言,还是可以熟练应用的。概括说来,
我们所编写的程序应能按照上述表格发射正确的PWM波,为
此需添加PWM模块,并应用里面的Submodule子模块。每个
模块可以产生两路PWM,所以我们需要三个子模块。通过对
module里的value赋值可以控制该路波的发出与占空比,从而
发出所有的PWM。
三、实验中遇到的问题与解决
显然在实验过程中大家都碰到了许多问题,困扰我们的问题比较
多,其中比较大比较重要的有以下几个:
1.PWM模块的配置
虽然关于PWM模块的设置助教老师讲过一遍,但怎奈需要配置的参数太多,前几周我都没能把PWM波完整的发出去,
更别提受控制的波形。好在通过查找相关资料我终于搞明白如
何调整占空比,如下所示:
通过给VAL2、VAL3赋值即可控制PWM23开通的时间。这是
一个Sub里的一个频道A,对频道B和其他Sub方法是一样的。
这样我们终于可以发出6路PWM,但此时这些PWM还不受控制,是一起输出的,下一个问题是怎么控制PWM的输出。
2.PWM输出的控制
开始时我想反正占空比是可以固定不变的,那就控制频道的输出与否就可以控制PWM的输出了。刚好我在PWM自带的函数库里看到了控制某路输出enable/diaable的函数,如下:
因此就采取这种方法进行编程。但是不知为何,采用enable/disable的方法编写的程序就是不能正确工作,而且逻
辑上程序也没有错误,在多次讨论找不到错误后我就向身边的同学请教,又学会了另一种方法,即通过对三个模块的VAL2、VAL3、VAL4、VAL5的不断赋值来控制,相关函数如下:
采用这种方式要注意每次对某个模块复制后要加上一行LDOK,即将寄存器里的值赋给VAL,否则VAL的值不会改变。
采用这种方式还有一个好处就是可以改变占空比,而且非常简
单。
3.电机连线
经过好久的调试后PWM波终于可以按规定变化,接上电机后电机也可以转起来,但我们发现转不一会儿电机就发出大量热,手摸上去都受不了。而且电机转的不太均匀,有不太强的震动。
开始时以为是电机的问题,但换了一个后还是发热,后来经询问
老师后我们想到虽然电机能转,但可能电机的频率和PWM的变化频率并不一样,电机可能没有跟上PWM的变化频率。正常运行时电机的ABC三相应该正好与PWM的三相对应,但如果A相接正确而BC相接反时电机也会转,只不过效率不高而且转的不稳。
经过确定相序后发热的问题也随之消失。
四、实验感想(???)
这次实验主要是靠自己动手,从刚开始时什么也不会到最后成功驱动电机,中间我们付出了很多时间和精力,但也学到了很
多。按常老师的话说这次课程主要是锻炼我们自主学习知识的能
力,特别是查找资料的能力。虽然刚开始几周助教老师讲解时我
没听太懂,但助教老师把相关资料都放在电脑里了,想看随时都
可以看。通过几周的研究特别是查找codewarrior里的帮助,我既搞懂了原理,也明白了应该怎么实现。有时实在想不通某个问题
我还会和身边的同学讨论讨论,大家交流一下互相的想法基本都
能解决问题。
通过这次课程我觉得我基本已经可以花费一些时间来掌握一
门自己从没接触过的技能,学习的能力得到了很大的提高。常老
师对待科研的态度也给我留下了深刻印象,对待科研一定要认真,一点马虎都要不得。对我们的课程我们也有一些小小的反馈,希
望老师能看一下:
首先电源转换器看上去就很危险,220V的火线都露在表面,说不好就有漏电的危险。另外实验的驱动电路经常电到我们,漏电比较严重。不过想要更换实验设备关系到许多问题,所以我
们也只好抱怨一下。
另外希望常老师能把每个阶段的任务都给我们明确一下,不
然好多次在实验室大家都不知道该干嘛,就坐在那儿等助教来讲。遮掩效率比较低下,也不便于有些能力强的同学自主完成任务。