电机控制设计报告最终版本
“盟升杯”大学生电子设计大赛
《电机控制》组设计报告
设计题目:电机控制
目 录
1. 引言...................................................................... 3
2. 设计指标...............................................................3
2.1设计任务...............................................................................3
2.2详细指标...............................................................................4
3. 方案论证与选择....................................................4
3.1 坐标系选择....................................4
3.2 控制显示模块..................................5
3.3 电机及驱动电路................................5
3.4 卷线工件......................................5
4. 硬件设计................................................................6
4.1 MCU.......................................6
4.2 步进电机..................................7
4.3 卷线工件设计..............................7
4.4 小物件的选择..............................8
4.5 输入与显示................................8
4.6 硬件系统整体示意图........................8
5. 软件设计..................................................................9
5.1程序框图...................................................................................9
5.2算法............................................................................................11
5.3电机移动....................................................................................15
5.4输入与显示.................................................................................17
5.5即时坐标储存及连续任意坐标移动..........................18
5.6累计误差补正............................................19
6. 测试与误差分析.........................................................19 6.1 测试仪器与工具.......................................19
6.2 测试方案与误差分析...................................19
7. 设计总结.............................................................................23
1 引言
本次竞赛我们选择了电机控制方向。随着生产过程机械化、电气化和自动化的不断发展,控制学在各行业的应用越来越多。而电机控制更是在机械化设备中广为应用,渗透与我们生活的方方面面。本着对电机控制的兴趣,我们小组最后选定了该题,希望通过此题对电机控制有更深的理解。
2 设计指标
2.1 设计任务
(1)设计一电机控制系统,驱动两只电机(固定在板上)通过穿过滑轮的吊绳控制一物体在板上运动,要求该板倾斜仰角≤100度。
(2)物体运动范围为80cm×100cm 。物体的形状不限,质量大于100克。物体上固定有浅色画笔,运动时能在板上画出运动轨迹。
(3)板上标有间距为1cm 的浅色坐标线(不同于画笔颜色),左下角为直角坐标原点, 示意图如下。
2.2 详细指标
(1)控制系统能够通过键盘或其他方式任意设定坐标点参数;
(2)控制物体在80cm ×100cm 的范围内作自行设定的运动,运动轨迹长度不小于100cm ,物体在运动时能够在板上画出运动轨迹,限300秒内完成;
(3)控制物体作圆心可任意设定、直径为50cm 的圆周运动,限300秒内完成;
(4)物体从左下角坐标原点出发,在150秒内到达设定的一个坐标点(两点间直线距离不小于40cm) 。
(5)能够显示物体中画笔所在位置的坐标;
3 方案论证与选择
3.1 坐标系选择
方案一:构建坐标系x y 下小物件位移与x , y 的函数关系,通过控制x , y , 控制
小物件连续的进行位移。该方案虽作图精度大,但函数构建困难,并且难以通过控制电机转动直接控制x ,y 坐标,实践过程中难以对函数进行调试与修改,故不采用。
方案二:设左右电机转轴到悬挂物件的绳长分别为l 1, l 2, 在确定电机位置下,同一(l 1,l 2)对应的坐标点唯一。基于这一数据特点构建关于l 1, l 2的新坐标系,通过控制l 1, l 2的值采用微元法控制小物体的移动。该方案会产生一定的误差,但通过增加有效数位与添加补偿系数能使误差减小到忽略不计且能适用于各种硬件环境,同时绳长测量方便,方便使用过程中的调试与修改,故采用。
3.2 控制显示模块
方案一:采用矩阵键盘,与数码管显示。该方案编程容易,电路简便,但显示位数有限且占用I/O口资源过多,故不采用。
方案二:采用矩阵键盘,与LCD 显示。该方案虽编程相对复杂,但暂用I/O资源小,切能提供足够的显示位数,故采用。
3.3 电机及驱动电路
方案一:使用直流电机。直流电机成本低,转速快。但难以实现转速精确控制,切难以处理开始转动与停止转动时的加速度。故不采用。
方案二:使用步进电机。步进电机虽成本较高,每步之间也存在加速度,但使用PWM 波能非常容易的实现转速与转动时间的精确控制,同时使用相应的驱动电路,能良好的处理启动与停止所产生的加速度。故采用该方案更优。
3.3 卷线工件
方案一:螺丝在工件中部,卷线面积更大,但螺丝容易扰乱细线的收卷,此方案虽然卷线面积大,但考虑到螺丝绞线所带来的不确定因数,故不选择;
方案二:螺丝在工件边缘,卷线面积缩小,但螺丝不会影响细线的收卷,该方案安全系数非常高,虽然卷线面积偏小但我们可以采用很细的线,故选择此方案;
4 硬件设计
4.1 MCU
本设计采用ARM Cortex-M3,该处理器的优势在于低功耗与高性能的结合,能快速准确的处理信号,同时该核心最多可减少12个时钟周期数,在实际应用中可减少70%中断,避免了程序编写的冗杂。
4.2 步进电机
4.2.1 步进电机的优势
在方案论证中我们已经提到对于该实验,步进电机是很好的选择。一般电动机都是连续旋转,而步进电动却是一步一步转动的,每输入一个脉冲信号,步进电机就转过一定的角度。这样一来步进电机就能非常准确被单片机所控制,进而我们才可以通过编程定量的控制步进电机转动设定的距离或角度,从而带动卷线工件收放线,对小物体施已精确的控制。对步进电机的控制细节将会在程序部分详细说明。
4.2.2 步进电机的参数介绍
电机固有步距角:
它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了 一个步距角的值,我们所用电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为
1.8°),这个步距角可以称之为‘电机固有步距角’,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。
步进电机的相数:
是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则‘相数’将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。
4.3 卷线工件设计
卷线工件的设计也是本实验难点之一,以下是我们设计的两张图纸。在方案论
证中我们已经提到,对于该实验右图为更佳的方案。
4.4 小物体的选择
对于100克以上小物件的选择,我们做了一下思考。首先,根据要求,小物件上要能固定笔,且要大于100克。100克的物体为了是防止体积过大,有限考虑的是金属。
方案一:我们先就地取材,拆了一只废弃的马达,并利用其中的磁铁吸附了一些螺丝等金属以达到要求种类,并用螺帽固定一只铅笔,但因摇晃过大,且笔固定不稳,导致轨迹呈明显波动状,故不采用。
方案二:用两块万用版钻洞,用螺丝固定,中间孔中插一只铅笔,四角再用螺丝稳定,万用版上可插各种元器件增加重量,但因万用版较脆,钻孔过程中大量破裂,故不采用次方案。 方案三:根据可以挂的金属想到了运用锁,但较难固定笔,于是利用橡皮的可塑性将其钻孔插入较短彩色水笔,固定在锁上,锁靠外侧以保证稳定,经验证画图清晰晃动小,故采用
4.5 输入与显示
在方案论证中,我们选择了LCD 显示屏作为显示器,显示预设参数,与物体移动的及时坐标值;矩阵键盘用来输入坐标以及模式选择。该部分内容将在LCD 与矩阵键盘程序部分详细介绍。
4.6 硬件系统整体示意图
5 软件设计
5.1 程序框图
为完成指标要求,方便操作,本设计根据功能的不同划分为6个模式,分别为mode1-mode5,并由主函数进行调用,程序框图如下:
主函数:
Mode1点到点移动:
Mode2 画心形轨迹:
Mode3 画圆:
Mode5 输入即时坐标:
5.2 算法
5.2.1 将(x ,y )坐标系转化为线长坐标系(l 1,l 2)
在方案选择中我们已经提到,利用(l 1,l 2)坐标参数将大大简化算法。而且在小物体运动范围内(80⨯100), (x ,y )坐标与 (l 1,l 2)坐标一一对应。所以我们的首要任务就是将(x ,y )坐标系转化为线长坐标系(l 1,l 2)。
如图所示:
我们将(x ,y )坐标转化为(l 1,l 2)坐标
22
L 1=115-y )+(x +15)
22L 2=115-y )+(95-x )
部分程序算法如下:
5.2.2点到点运动的平移法
平移法是我们最先想到的方法,该方法的最大优点是便于坐标的显示。该算法下,物体先做横向平移,在做纵向平移。但该方法具有较大误差(尤其是在移动到很高位置时)所以我们更偏向于5.2.3的方法;
5.2.3点到点的直接移动法
相比于与5.2.2将点到点分解为横竖两个方向的运动,点到点的直接运动更为快捷也更为精确,然而点到点移动在坐标显示方面存在难点,因为点到点之间的过程中难以通过计算准确显示小物件的即时坐标。该方法的算法非常简单,我们设起始点为(x1,y1) 到达点为(x2,y2),通过5.2.1的坐标转换:
22L 1=115-y )+(x +15)
22L 2=115-y )+(95-x )
我们得到对应的了l1-l2坐标参数(l1,L1)(l2,,L2)。该方法为下面5.2.4,5.2.5所描述描绘轨迹算法的基础。 部分程序算法如下:
5.2.4画圆算法
考虑到直接绘画弧线难度系数较大且难以控制,根据步进电机的特性,我们采用微元法移动小物件。将半径为为25cm 的圆微分成400份等长度的线段。在如此细小的微元下,小物件运动轨迹几乎为标准圆形。
设定圆心点坐标为(40 50)半径r=25;
360o
=0. 9o ; 首先把圆心角分为400份,i 为份数(0到399),每一份为j ,即j =
400
所以我们很容易得到第i 份的坐标:
Xi = 40+r ⨯cos (j ⨯i ) Yi= 50+25⨯sin (j ⨯i )
(X 399,Y 399)(X 0,Y 0)由此我们将得到400个坐标点:,,...... , 再通过(X 1,Y 1)
坐标转换得到(l 1,l 2)的坐标参数; 部分程序算法如下:
5.2.3心形图算法
此部分的实现方法与计算思路与画圆部分基本符合,均采用微圆法将心形微分成400个小部分。
设定圆心点为(50,50)心形半径为r=10;
360o
=0. 9o ; 同样将圆心角分为400份,i 为份数(0到399),每一份为j ,即j =
400
Xi =
50+r ⨯2cos (j ⨯i ) -r ⨯cos (2j ⨯i ) 50+r ⨯2sin (j ⨯i ) -r ⨯sin (2j ⨯i )
Yi=
与5.2.2相同,通过参数方程,我们将得到400个坐标点,再次利用坐标转换得到对应的(l 1,
l 2)的坐标参数;
部分程序算法:
5.3 电机移动
本设计采用二相8细分步进电机,即步距角为0.45°,切用于绕线的线轴半径为
15mm ,通过L =2πr 得出周长为47.2mm ,因驱动电路采用PWM 波上升沿触发,设定电机线速度为1cm/s,该条件下所需PWM 波周期为0.002944,同时在电机转动时PWM 波占空比应为0.5,停止时应为0。因设定电机线速度为1cm/s,可直接将需要卷线长度作为PWM 波占空比置为0.5
的时长来对电机转动进行控制。由于本方案采用通过绳长控制坐标变化的方法,结合上述算法中的微元法移动,将每一次移动转化为一系列点中前一个点的所在位置的线长减去后一个点的所在位置线长作为每次的转动量。线长差为正则电机正转收线,线长差为负则电机倒转放线。不同的移动中左右线长改变量不同,因此函数中做出判断,两个电机同时启动,转动时间短的电机停止后另一电机继续转动至结束。在实际测试中,我们发现电机速度可以大幅度提升,但又为保障稳定,将电机速度调为2.5倍,即周期和运动时间皆乘以0.4。程序贴图如下:
5.4 输入与显示
5.4.1 矩阵键盘输入
本设计采用4×3矩阵键盘作为控制端,如下图所示:
我们对此种矩阵键盘进行扫描法判断输入。 定义未有键按下为
根据键盘编写数组keys
得出所按点对应值
此函数只能得出一个数字或字符,为能得到0~100的数字,并可以做到退格、确定等,又编写了以下程序:
定义*为退格键,#为确认键,使输入方式更为方便。 在此后函数中即可直接调用。
5.4.2 LCD显示输出
本设计选用了PC1602A LCD作为显示端输出,用于模式选择、坐标输入以及坐标
显示等功能。在坐标移动、画轨迹、画圆时,我们都采用了微元法,因此,每一次循环中都有对应的x,y 值,用整形格式输出到LCD
中即可将路径中的坐标显示。如以下程序:
5.5 即时坐标储存及连续任意坐标移动
在程序开头,我们对全局声明了变量imx,imy 用来储存即时的X,Y 坐标,每次经过移
动,就将移动到的X 值重新赋值到这两个变量中,使程序运转流程中可以即时储存当前所在坐标,显示当前坐标,并为下一次运动做运算,因此,在下一次移动中,只要一当前位置为出发点进行计算即可。算法贴图如下:
移动结束后:
5.6 累计误差修正
经过反复实验,发现虽然每次运行误差不大,但是连续多次运行后会有较大的累计误差,因此本方案设计了mode5对累计误差进行修正,程序如下:
6 测试与误差分析
6.1测试仪器与工具
6.2测试方案与误差分析
6.21 指标一(移动到指定坐标点)测试与误差分析
方案:将小物体校准于坐标原点,由近到远的随机选设定将要到达到达
坐标点8个 (15,15),(25,30),(30,45),(40,45) ,(55,60),(55,70),(70,70),(75,85);在5.2中曾提到,对于指标一,我们有两种可以实现的算法(5.22平移法,5.23直接法),我们分别用这用两种算法让小物体移动到指定坐标,并记录实际坐标与所花时间。对比两种算法准确度与速度,最后对误差进行系统分析。
数据测试结果:(均从原点出发)(坐标显示均为理论值)
方法一为直接法;方法二为平移法
数据误差分析与调整方案:
对比分析方法一(直接法),方法二(平移法)的测试数据,我们发现方法一的误差更小,而且较为均匀,与运动远近关系不大;而方案二虽然在移动到近距离时具有极小的误差,但当移动到距离原点较远的点时,误差明显扩大(尤其是纵坐标误差达到了-1.1);另一方面,对比移速度,方法一均快于方法二,所以我们更加偏向于使用方法二。我们认为误差的主要来源在于绳子的形变,但方案二x ,y 方向的运动更为均匀,减小了累计误差,所以方案二的准确度较为理想。
整体说来,用方法一与方法二均误差均远远小于4cm 。对于方案一误差的消除,我们采取了两种方法: 1. 补偿法:
在多组实验后我们发现横移,纵移偏移量随移动距离基本成一次关系,故我们在程序中设定了一个补偿系数,修正偏移量,但效果不稳定; 2. 判定法:
我们发现由于物体高度会影响绳子张力所带来的形变,物体高度越高横移竖直偏移越大,所以我们设定物体若向上移动,则先横后竖;若向下移动则先竖后横,此方法在某些情况效果明显,但有其局限性;
6.22 指标二,三(圆形轨迹,心形轨迹)测试与误差分析
测试方案:
对于指标二三,测试方法与指标一大同小异,但侧重检测所画轨迹是否与设定轨迹相吻合以及完成轨迹所需要的时间。我们在坐标纸上用铅笔描出预设轨迹,观察小物体所画轨迹与所描坐标线吻合度,以及返回时与原点重合情况;
测试情况:
数据误差分析与调整方案:
整体来看绘制图形的精确度比较高,所花时间也较为理想;但我们发现,在小物体绘制轨迹的时候,抖动较为严重,甚至有时所描绘轨迹在预设轨迹左右画波浪线(当然偏差均小于5毫米)。对此我们将小物件上起平衡作用的橡皮换成平衡性更好的扁平橡皮,并调整画笔位置,使小物件的重心更低,平衡性更高,再次测试,抖动情况明显改观。
6.23 输入校正法
在5.. 中我们已经提到输入校正法,具体算法不在重复。利用该方法,我们
可以随时将当前位置的精确坐标输入与程序中,刷新程序中记录的当前坐标,避免误差的累积;利用该方法可以不用手动校准小物件,使该系统更智能化。
6.24测试总结
实验的测试情况较为理想,经过如上所说一系列的调整,误差有明显的减少。
对于实验指标,我们完全实现了基础部分与发挥部分,并实现了许多要求之外的功能
7 设计总结
本设计通过控制PWM 脉冲驱动步进电机按指定转速转动,通过矩阵键盘,LCD
控制数据输入,实现了带动指定挂件做指标规定运动的设计目标。其中在运动过程中会产生一定误差,在对误差进行了计算与分析后,初步得出误差来源于挂绳形变,挂件震动等。经过对软件与硬件的优化与调试,最终将误差尽可能缩小,在运行精度,运行时间等方面均达到了设计指标的要求。