内容发布更新时间 : 2024/11/15 18:34:19星期一 下面是文章的全部内容请认真阅读。
湖南科技大学本科生毕业设计(论文)
3.1.4 伺服电机介绍
伺服电动机又称执行电动机,在自动控制系统中,用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降[14]。
定义:在伺服系统中控制机械元件运转的发动机.是一种补助马达间接变速装置。 作用:可使控制速度,位置精度非常准确。将电压信号转化为转矩和转速以驱动控制对象。
分类:直流伺服电机和交流伺服电机。直流伺服电机分为有刷电机和无刷电机两种。有刷电机成本低,结构简单,启动转矩大,调速范围宽,控制容易,需要维护,但维护方便(换碳刷),产生电磁干扰,对环境有要求。因此它可以用于对成本敏感的普通工业和民用场合。 无刷电机体积小,重量轻,出力大,响应快,速度高,惯量小,转动平滑,力矩稳定。控制复杂,容易实现智能化,其电子换相方式灵活,可以方波换相或正弦波换相。电机免维护,效率很高,运行温度低,电磁辐射很小,长寿命,可用于各种环境。
- 12 -
湖南科技大学本科生毕业设计(论文)
3.2 系统软件设计
3.2.1 程序流程图
图3.4 PWM调速系统程序流程图
3.2.2 C语言程序设计
/* =======直流电机的PWM速度控制程序======== */ /* 晶振采用11.0592M,产生的PWM的频率约为91Hz */ #include
- 13 -
湖南科技大学本科生毕业设计(论文)
#define uint unsigned int [15]
sbit en1=P1^0; /* L298的Enable A */ sbit s1=P1^2; /* L298的Input 1 */ sbit s2=P1^1; /* L298的Input 2 */ uchar t=0; /* 中断计数器 */ uchar m=0; /* 电机速度值 */ uchar tmp; /* 电机当前速度值 */ /* speed-电机速度(-100—100) */ void motor(char speed) {
if(speed>=-100 && speed<=100) {
m=abs(speed); /* 取速度的绝对值 */ if(speed<0) /* 速度值为负则反转 */ { s1=0; s2=1; }
else /* 不为负数则正转 */ { s1=1; s2=0; } } }
void delay(uint j) /* 简易延时函数 */ {
for(j;j>0;j--); }
void main() { uchar i;
TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值 */ TL0=0x9B;
- 14 -
湖南科技大学本科生毕业设计(论文)
EA=1; /* 开中断 */
ET0=1; /* 定时器0允许中断 */ TR0=1; /* 启动定时器0 */ while(1) /* 电机实际控制演示 */ {
for(i=0;i<=100;i=i++) /* 正转加速 */ { motor(i); delay(5000); }
for(i=100;i>0;i--) /* 正转减速 */ { motor(i); delay(5000); }
for(i=0;i<=100;i++) /* 反转加速 */ { motor(-i); delay(5000); }
for(i=100;i>0;i--) /* 反转减速 */ { motor(-i); delay(5000); } } }
void timer0() interrupt 1 /* T0中断服务程序 */ {
if(t==0) /* 1个PWM周期完成后才会接受新数值 */ { tmp=m; }
if(t - 15 - 湖南科技大学本科生毕业设计(论文) if(t>=100) t=0; /* 1个PWM信号由100次中断产生 */ } 3.3 PWM调速系统仿真 本文采用C语言编程,利用Keil编译成功后生成Hex文件,导入到Proteus的工程中。仿真时,在AT89C51上加载Hex文件,即可实现仿真。 3.3.1 系统仿真电路图 图3.5 PWM调速系统仿真图 3.3.2 电压输出波形 下面所示图3.6至图3.13是系统仿真时从L298的OUT1引脚得出的波形图。 图3.6 电压输出波形(1) 图3.7 电压输出波形(2) - 16 -