《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计.docx
- 文档编号:4227814
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:17
- 大小:312.81KB
《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计.docx
《《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计.docx》由会员分享,可在线阅读,更多相关《《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计
1、直流电机PWM调速原理介绍:
调节PWM信号占空比。
可以调节直流电机速度
(1)、直流电机调速原理:
当改变励磁电流时,可以改变磁通量的大小,从而达到变磁通调速的目的。
但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流和磁通量只能在低于其额定值的范围内调节,故只能弱磁调速。
而对于调节电枢外加电阻R时,会使机械特性变软,导致电机带负载能力减弱。
当改变电枢电压,理想空载转速随电枢电压升降而发生相应的升降变化。
不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。
当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。
(2 )、PWM基本原理:
PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。
PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
设电机始终接通电源时,电机转速最大为V,当我们改变占空比D:
t/T时,就可以得到不同的电机平均速度,从而达到调速的目的。
严格地讲,平均速度与占空比D并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。
(3)、实现方法:
PWM信号的产生通常有两种方法:
一种是软件的方法;另一种是硬件的方法。
硬件方法的实现已有很多文章介绍,这里不做赘述。
本文主要介绍利用单片机对PWM信号的软件实现方法。
2、电路的工作原理及主要芯片的性能:
(1)电路的工作原理图为:
(2)L298N的工作原理:
L298N是SGS公司的产品,其内部包含4通道逻辑驱动电路,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机口。
由L298N构成的PWM功率放大器的工作形式为单极可逆模式,2个H桥的下侧桥晶体管发射极连在一起,其引脚排列如图1所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传号。
L298可驱动2个电机,OUTlOUT2和OUT3、OUT4之间分别接2个电动机。
5、7、10、12脚接输人控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机的停转。
这些特性使得L298N很适合用作小型直流电机控制芯片。
下面图1为L298N的外部引脚图:
图1:
L298N的外部引脚
3、脉宽可调的PWM方波程序:
(1)程序软件流程图:
(2)程序代码(加注释):
#include"f2407_c.h"//屏蔽中断程序
voidinlinedisable()
{
asm("setcINTM");
}//系统初始化子程序
intinitial()
{
asm("setcSXM");//符号位扩展有效
asm("clrcOVM");//累加器中结果正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4CLKIN=24M
WDCR=0x0E8;//不使能看门狗,因为SCSR2中的WDOVERRIDE
//即WD复位后的缺省值为1,故可以用软件禁止看门狗
IMR=0x0000;//禁止所有中断
IFR=0x0FFFF;//清除全部中断标志,"写1清0"
WSGR=0x00;//禁止所有的等待状态
}
//EVB模块的PWM初始化程序
intpwminitial()
{
MCRC=MCRC|0x007E;//IOPE1-6被配置为基本功能方式,PWM7-12
ACTRB=0x0666;//PWM12,10,8低有效,PWM11,9,7高有效
DBTCONB=0x00;//不使能死区控制
CMPR4=0x1000;
CMPR5=0x3000;
CMPR6=0x5000;
T3PR=0x6000;//设置定时器3的周期寄存器,并设置CMPR4-6,//以确定不同的输出占空比
COMCONB=0x8200;//使能比较操作
T3CON=0x1000;//定时器3为连续增计数模式
}
//该中断服务程序主要是为了防止干扰,不做任何其它操作
voidinterruptnothing()
{
return;//中断直接返回
}
//主程序
main()
{
disable();//总中断禁止
initial();//系统初始化
pwminitial();//PWM输出初始化
T3CON=T3CON|0x9040;//启动定时器3
while
(1)
{
;
}
}
(3)调试方法、过程及结果:
将示波器的红色表笔分别与DSP的J8-1、J8-3、J8-5相连,观察示波器上的输出波形,然后改变方波的占空比,看示波器上输出方波是否改变。
上述的程序运行的结果可以从示波器上看出来,当红色表笔与J8-1相连时,示波器上的显示图形为:
T3=T1+T2,T2=5T1,由此可见,该方波的占空比为1:
5。
当红色表笔与J8-3相连时,示波器上的显示图形为:
T3=T1+T2,T2=T1,由此可见,该方波的占空比为1:
1。
当红色表笔与J8-5相连时,示波器上的显示图形为:
T3=T1+T2,5T2=T1,由此可见,该方波的占空比为5:
1。
结果分析:
由CMPR4=0x1000;CMPR5=0x3000;CMPR6=0x5000;T3PR=0x6000;四条语句可以看出DSP上J8-1、J8-3、J8-5输出的方波占空比理论值应该分别为1:
5、1:
1、5:
1,与真实输出一致,说明输出方波的占空比与CMPR4、CMPR5、CMPR6、T3PR的赋值有关,改变这些值,就可以改变输出方波的占空比。
4、CAN总线通信程序:
(1)程序软件流程图:
发送流程图接收流程图
(2)程序代码(加注释):
发送程序代码(加注释):
#include"f2407_c.h"//引用头部文件
intCAN_FLAG;//定义标志寄存器
voidsystem_init();//声明在程序中需要用到是函数
voidCANMBX_ISR();
voidCAN_INIT();
voidinlinedisable()
{
asm("setcINTM");
}
voidinlineenable()
{
asm("clrcINTM");
}//系统初始化子程序
//
(1)主程序
main()
{
system_init();//系统初始化子程序
CAN_FLAG=0x00;//清CAN用户标志,CAN_FLAG=0表示收到数据
CAN_INIT();//CAN初始化子程序
enable();
for(;;)
{
TCR=0x20;//MBX3请求发送
while(TCR&0x2000==0)//等待发送应答
continue;
TCR=0x2000;//清TA3和MIF3标志位
CAN_FLAG=0x0000;//清接收到标志
MDER=0x0000;//邮箱不使能
MCR=0x0140;//CDR=1,数据改变请求
MBX3A=MBX2A;//用邮箱2中数据更新3中的数据
MBX3B=MBX2B;
MBX3C=MBX2C;
MBX3D=MBX2D;
MCR=0x0480;//DB0=1,AB0=1,STM=0设置为正常工作模式
MDER=0x04C;
}
}
//
(2)系统初始化子程序
voidsystem_init()
{
asm("setcSXM");//抑制符号位扩展
asm("clrcOVM");//累加器中结果正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
asm("setcINTM");//禁止所有中断
SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4CLKIN=24M
WDCR=0x0E8;//不使能看门狗,因为SCSR2中的WDOVERRIDE
//即WD复位后的缺省值,故可以用软件禁止看门狗
IMR=0x0010;//开中断优先级5
IFR=0x0FFFF;//清除全部中断标志,"写1清0"
}
//(3)CAN初始化子程序
voidCAN_INIT()
{
MCRB=MCRB|0x0C0;//设置IOPC6、IOPC7为CANRX,CANTX
CAN_IFR=0x0FFFF;//清所有中断标志
LAM1_H=0x7FFF;//设置邮箱3、2的屏蔽ID寄存器
LAM1_L=0x0FFFF;//0则ID必须匹配
MCR=0x1000;//CCR=1改变配置请求
while(GSR&0x0010==0)continue;//CCE=1时即可配置BCR2、BCR1寄存器
BCR2=0x01;//波特率预分频寄存器
BCR1=0x033;//波特率设置为500Kbps
MCR=MCR&0x0EFFF;//CCR=0改变配置请求
while(GSR&0x0010!
=0)
continue;//只有当CCE=0时,配置BCR2、BCR1寄存器成功
MDER=0x040;//不使能邮箱2,邮箱2改为接收方式
MCR=0x0103;//CDR=1,数据区改变请求
MSGID2H=0x2447;//设置邮箱2的控制字及ID,IDE=0,AME=0,AAM=0
//标准方式为MSGID2H[12~2]
MSGID2L=0x0FFFF;
MSGCTRL2=0x08;//设置控制,数据长度DCL=8,RTR=0数据帧
MBX2A=0x1000;//邮箱2信息初始化
MBX2B=0x3000;
MBX2C=0x0000;
MBX2D=0x0000;
MSGID3H=0x2447;/设置邮箱3的标识符
MSGID3L=0x0FFFF;
MSGCTRL3=0x08;//RTR=0,DCL=8
MBX3A=0x1500;//邮箱3信息初始化
MBX3B=0x2000;
MBX3C=0x5500;
MBX3D=0x6000;
CAN_IMR=0x0F7FF;
CAN_IFR=0x0FFFF;
MCR=0x0480;//DB0=1,AB0=1,STM=1设置为自测试模式
MDER=0x04C;//使能邮箱2和3,邮箱2为接收方式
//Counter=0;
}
//(4)中断程序
voidinterruptGRIS5()
{
switch(PIVR)
{
case64:
CANMBX_ISR();
break;
}
enable();
return;
}
voidCANMBX_ISR()
{
RCR=0x040;//复位RMP2和MIF2
CAN_FLAG=1;//置用户接收标志
}
//直接返回中断服务程序
voidinterruptnothing()
{
return;
}
接收程序代码(加注释):
#include"f2407_c.h"//引用头部文件
intCAN_FLAG;//定义标志寄存器
voidsystem_init();//声明在程序中需要用到是函数
voidCANMBX_ISR();
voidCAN_INIT();
voidinlinedisable()
{
asm("setcINTM");
}
voidinlineenable()
{
asm("clrcINTM");
}
//EVB模块的PWM初始化程序
intpwminitial()
{
MCRC=MCRC|0x007E;//IOPE1-6被配置为基本功能方式,PWM7-12
ACTRB=0x0666;//PWM12,10,8低有效,PWM11,9,7高有效
DBTCONB=0x00;//不使能死区控制
CMPR4=MBX2A;
CMPR6=MBX2B;
T3PR=0x6000;//设置定时器3的周期寄存器,并设置CMPR4-6,以确定不同的输出占空比
COMCONB=0x8200;//使能比较操作
T3CON=0x1000;//定时器3为连续增计数模式
}
//
(1)主程序
main()
{
disable();//总中断禁止
system_init();//系统初始化子程序
CAN_FLAG=0x00;//清CAN用户标志,CAN_FLAG=0表示收到数据
CAN_INIT();//CAN初始化子程序
enable();
for(;;)
{
while(CAN_FLAG==0)continue;//等待接收数据
CAN_FLAG=0x0000;//清接收到标志
MDER=0x0000;//邮箱不使能
MCR=0x0140;//CDR=1,数据改变请求
pwminitial();//PWM输出初始化
T3CON=T3CON|0x9040;//启动定时器3
MCR=0x0480;//DB0=1,AB0=1,STM=0设置为正常工作模式
MDER=0x044;
}
}
//
(2)系统初始化子程序
voidsystem_init()
{
asm("setcSXM");//抑制符号位扩展
asm("clrcOVM");//累加器中结果正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
asm("setcINTM");//禁止所有中断
SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4CLKIN=24M
WDCR=0x0E8;//不使能看门狗,因为SCSR2中的WDOVERRIDE
//即WD复位后的缺省值,故可以用软件禁止看门狗
IMR=0x0010;//开中断优先级5
IFR=0x0FFFF;//清除全部中断标志,"写1清0"
WSGR=0x00;//禁止所有的等待状态
}
//(3)CAN初始化子程序
voidCAN_INIT()
{
MCRB=MCRB|0x0C0;//设置IOPC6、IOPC7为CANRX,CANTX
CAN_IFR=0x0FFFF;//清所有中断标志
LAM1_H=0x7FFF;//设置邮箱3、2的屏蔽ID寄存器
LAM1_L=0x0FFFF;//0则ID必须匹配
MCR=0x1000;//CCR=1改变配置请求
while(GSR&0x0010==0)continue;//CCE=1时即可配置BCR2、BCR1寄存器
BCR2=0x01;//波特率预分频寄存器
BCR1=0x033;//波特率设置为500Kbps
MCR=MCR&0x0EFFF;//CCR=0改变配置请求
while(GSR&0x0010!
=0)continue;//只有当CCE=0时,配置BCR2、BCR1寄存器成功
MDER=0x040;//不使能邮箱2,邮箱2改为接收方式
MCR=0x0103;//CDR=1,数据区改变请求
MSGID2H=0x2447;//设置邮箱2的控制字及ID
//IDE=0,AME=0,AAM=0,标准方式为MSGID2H[12~2]
MSGID2L=0x0FFFF;
MSGCTRL2=0x08;//设置控制,数据长度DCL=8,RTR=0数据帧
MBX2A=0x3000;//邮箱2信息初始化
MBX2B=0x3000;
MBX2C=0x0000;
MBX2D=0x0000;
MSGID3H=0x2447;//设置邮箱3的标识符
MSGID3L=0x0FFFF;
MSGCTRL3=0x08;//RTR=0,DCL=8
MBX3A=0x1234;//邮箱3信息初始化
MBX3B=0x5678;
MBX3C=0x9abc;
MBX3D=0x1111;
CAN_IMR=0x0F7FF;
CAN_IFR=0x0FFFF;
MCR=0x0480;//DB0=1,AB0=1,STM=1设置为自测试模式
MDER=0x04C;//使能邮箱2和3,邮箱2为接收方式
}
//(4)中断程序
voidinterruptGRIS5()
{
switch(PIVR)
{
case64:
CANMBX_ISR();
break;
}
enable();
return;
}
voidCANMBX_ISR()
{
RCR=0x040;//复位RMP2和MIF2
CAN_FLAG=1;//置用户接收标志
CMPR4=MBX2B;
}
//直接返回中断服务程序
voidinterruptnothing()
{
return;
}
(3)调试方法、过程及结果:
将两台DSP试验箱用两根导线连接起来,一台电脑作为发送端,运行发送程序,一台电脑作为接收端,运行接收程序,通过改变发送程序中MBX2A、MBX2B的赋值,间接改变CMPR4、CMPR6的值,因此,输出的方波的占空比改变了,从而影响了电机的转速和旋转的方向,即实现了通过改变发送信息,控制电机的转速和正反旋转。
5、各模块输出的波形图:
输入的两路波形可以从示波器上看出来,如下:
输出的两路波形可以从示波器上看出来,如下:
从示波器上可以看出,影响电机转速的是方波的占空比,占空比越大,则平均电压越高,两路输出,J8-1一路输出高电平,J8-5一路输出低电平,则实现正传,如果J8-1一路输出低电平,J8-5一路输出高电平,则实现反转。
通过改变占空比,间接改变平均电压,平均电压越小,转速越慢,平均电压越大,转速越快。
6、课程设计收获与体会:
通过本次课程设计,我对DSP这门课程有了更进一步的认识,由原来的半知半解,到现在的初步掌握,对于本次课程设计的收获分一下几点:
(1)熟悉掌握了L298N这块芯片的引脚及其功能;
(2)认识并且理解了DSP控制直流电机的原理;
(3)掌握了直流电机PWM调速的原理;
(4)对于改变方波的占空比,进而控制电机的转速和旋转方向有了深刻的认识,可以熟练的控制电机的转速,并且实现正传和反转;
(5)更好的认识了CAN控制器对于信号的发送和接收操作。
7、参考文献:
(1)《DSP原理及电机控制应用》北京航空航天大学出版社,刘和平、邓力、江渝、郑群英编著;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP原理及电机控制应用 DSP 原理 电机 控制 应用 课程设计 直流电机 调速
![提示](https://static.bdocx.com/images/bang_tan.gif)