图22 系统实物图
2.系统测试数据处理
2.1利用matlab对电机两端电压和转速数据进行曲线拟合
实型电压数据:
votlage_V=[1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 3.1 3.2 3.3 3.41 3.49 3.61 3.71 3.8 3.9 4 4.1 4.21 4.3 4.4 4.51 4.6 4.7 4.8 4.9 5]; 整型电压数据:
votlage_D=[77,82,87,92,97,102,108,113,118,123,128,133,138,143,148,153,159,164,169,175,179,185,190,195,200,205,210,216,220,225,231,236,241,246,251,255]; 测得速度数据:
speed=[12,17,22,27,33,42,45,48,53,58,62,65,69,73,76,80,83,87,89,93,96,99,101,103,106,109,111,113,116,119,122,125,128,133,140,144];
Matlab拟合命令:
p=polyfit(votlage_V,speed,1);
speed_poly1=p(1)*votlage_V+p(2); q=polyfit(votlage_D,speed,1);
speed_poly2=q(1).*votlage_D+q(2); figure(1)
plot(votlage_V,speed,'or',votlage_V,speed_poly1);grid on title('电压V-----转速r/s') figure(2)
plot(votlage_D,speed,'or',votlage_D,speed_poly2);grid on title('电压D-----转速r/s') 拟合曲线如图21所示:
图21 电压—速度曲线
如图21所示,电机电压与转速基本成正比关系,所以可以按最小二乘法进行线性拟合,得到电压与转速关系式为: (1)电压为实型,转速=34.5178*电压V -28.91,其中(a=34.5178,b=-28.91); (2)电压为整型,转速=0.67373*电压D-28.8715,其中(a=0.67373 b=-28.8715);
上面两个关系式将作为电机控制的基本数学模型,有软件算法实现电机输出转速对输入电压的跟踪。
2.2 不同转速设定值下电机对应的输出转速及误差如表1
输入转速 12 17 22 27 33 42 45 48 53 58 62 65 69 73 116 119 122 输出转速 13 19 19 25 33 40 42 49 55 59 62 63 71 76 绝对误差 -1 -2 3 2 0 2 3 -1 -2 -1 0 2 -2 -3 输入转速 76 80 83 87 89 93 96 99 101 103 106 109 111 113 125 128 133 输出转速 80 78 81 89 93 97 94 99 102 104 105 112 111 112 125 130 131 绝对误差 -4 -2 2 -2 -4 -4 2 0 -1 -1 1 -3 0 1 0 -2 2 119 -3 117 2 126 -4 表1 电机转速误差表 2.3 电机输出转速误差曲线
图 23 电机输出转速相对电压绝对误差曲线
图 24 电机输出转速相对电压的相对误差曲线 2.4 系统性能分析
对上面图23、图24两个误差曲线分析可以得出以下结论,
一方面,当电机两端的电压在1.5V~4.8V范围了变化时,电机的转速变化范围在12R/S~134R/S(即720R/mint~8040R/mint)之间变化,当电机两端的电压在1.5V以下时,电机无法驱动,为电机的死区电压,电机转速变化基本符合实际情况。
另一方面,由于本系统自身设计本省存在着多种缺陷,所以测式结果产生了一定的误差,电机转速的绝对误差基本在6V以下,
其相对误差根据两端电压范围的不同呈现不同的趋势,当电压在1.5V~1.8V左右,即电机转速≤50R/S时,电机输出转速的相对误
差≤16%,当电机两端电压在1.8V~4.8V左右,即电机转速≥60R/S时,电机输出转速的相对误差≤8%。所以系统综合性能基本能
满足设计要求。
五、 设计心得
课程设计是培养我们综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。
本次的课程设计是基于运用所学单片机技术、传感检测技术、电机驱动技术等方面的知识,设计电机调速与控制系统,很好的
结合了当今工业直流电机方面的实际应用,相对于前几学期的课程设计,这次的题目综合性更高、设计难度更大、实用性更强,是
对我们所学专业知识如《单片机原理及接口技术》、《传感器与检测》、《C语言程序设计》、《直流电机驱动原理》等课程知识的综合
检验与应用,很好的锻炼了我们从单一模块到系统设计与调试能力的转变与提高,同时也让增强了我们直流电机控制原理与应用有了更深的认识和体会。
回顾起此次课程设计,至今我仍感慨颇多,从选题到定稿,从理论到实践,我们小组都付出了很多努力,也收获了很多,在此
次设计中不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计也使我懂得了理论
与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能做出实
际的有用的东西,从而提高自己的实际动手能力和独立思考的能力。通过这次课程设计还锻炼了我们的团队合作精神,只有大家在分工明确的基础上齐心协力,才能使团队获得成就。
在这次设计的过程中我们也遇到了很多困难,尤其是我们小组有两个人都要考研,时间特别紧迫,还有就是这次在电机的控制
其设计和测速模块的设计上都遇到了很大的问题,但是我们在老师的指导下,我们小组积极讨论,分工合作,合理安排时间,通过查阅资料学习相关的知识,逐步突破了每一个技术难关,最后比较好的独立的完成了这次设计。
通过这次课程设计,我更发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,而且缺少自主分析问题的能力,碰到问题后有一种和逃避依赖心理。也让我明白做电子类设计每一步都要细心严谨,不能马虎。
六、 参考文献
1.李朝青编.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998 2.胡向东编《传感技术》.重庆大学出版社,2006年第1版。 3. 谭浩强 《C语言程序设计》. 北京:清华大学出版社,2002。
8. 后闲哲也编 《单片机C程序设计与实践丛书》 北京航空航天大学出版社 2008。
七、 附录
程序:#include
#include \typedef unsigned char INT8U;
typedef unsigned int INT16U; typedef unsigned int INT8;
//以下选择 ADC 转换速率,只能选择其中一种
// SPEED1 SPEED0 A/D转换所需时间 #define AD_SPEED 0x60 // 0110,0000 1 1 70 个时钟周期转换一次, // CPU工作频率21MHz时 A/D转换速度约 300KHz //#define AD_SPEED 0x40 //0100,0000 1 0 140 个时钟周期转换一次 //#define AD_SPEED 0x20 //0010,0000 0 1 280 个时钟周期转换一次 //#define AD_SPEED 0x00 //0000,0000 0 0 420 个时钟周期转换一次 //#define uchar unsigned char //#define uint unsigned int #define P2M0 0x00 #define P2M1 0x00 #define P0M0 0x00 #define P0M1 0x00
sbit caiji=P2^2; sbit led0=P2^0; sbit led1=P2^1;
INT8 flag_uart=0,flag_on=0,flag_x=0,flag_xianshi=0,flag_ad=0,n1=0; INT8 ad_vall=0,ad_val=0,moto_speed=0,shudu=0,shisu=0; INT8U rec,cont=0,cont2=0; //串口、计数器变量 float ad_fl,a1=0,a2=0,b1=0,b2=0; INT8U get_AD_result(INT8U channel);
//AD转换函数声明
void delay0(INT8U delay_time); //延时函数声明 void delay(char xms);
void delay0(INT8U delay_time); // 延时函数 void timer_init() { TMOD=0x21;
TH0=(65536-50000)/256; TL0=(65536-50000)%6;
TH1=0xfd; TL1=0xfd; TR1=1; ET0=1; SM0=0; SM1=1; REN=1; EA=1;ES=1; }
//定时器计数器初始化函数