《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计Word下载.docx
《《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《《DSP原理及电机控制应用》课程设计DSP直流电机调速课程设计Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
(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()
setcSXM"
//符号位扩展有效
clrcOVM"
//累加器中结果正常溢出
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:
结果分析:
由CMPR4=0x1000;
CMPR5=0x3000;
CMPR6=0x5000;
四条语句可以看出DSP上J8-1、J8-3、J8-5输出的方波占空比理论值应该分别为1:
5、1:
1、5:
1,与真实输出一致,说明输出方波的占空比与CMPR4、CMPR5、CMPR6、T3PR的赋值有关,改变这些值,就可以改变输出方波的占空比。
4、CAN总线通信程序:
发送流程图接收流程图
发送程序代码(加注释):
//引用头部文件
intCAN_FLAG;
//定义标志寄存器
voidsystem_init();
//声明在程序中需要用到是函数
voidCANMBX_ISR();
voidCAN_INIT();
voidinlinedisable()
}
voidinlineenable()
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()
//抑制符号位扩展
//累加器中结果正常溢出
//B0被配置为数据存储空间
//禁止所有中断
//CLKIN=6M,CLKOUT=4CLKIN=24M
//即WD复位后的缺省值,故可以用软件禁止看门狗
IMR=0x0010;
//开中断优先级5
//(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;
//DB0=1,AB0=1,STM=1设置为自测试模式
//使能邮箱2和3,邮箱2为接收方式
//Counter=0;
}
//(4)中断程序
voidinterruptGRIS5()
switch(PIVR)
case64:
CANMBX_ISR();
break;
voidCANMBX_ISR()
RCR=0x040;
//复位RMP2和MIF2
CAN_FLAG=1;
//置用户接收标志
//直接返回中断服务程序
voidinterruptnothing()
return;
接收程序代码(加注释):
MCRC=MCRC|0x007E;
ACTRB=0x0666;
//PWM12,10,8低有效,PWM11,9,7高有效
DBTCONB=0x00;
CMPR4=MBX2A;
CMPR6=MBX2B;
//设置定时器3的周期寄存器,并设置CMPR4-6,以确定不同的输出占空比
COMCONB=0x8200;
//使能比较操作
T3CON=0x1000;
//定时器3为连续增计数模式
disable();
while(CAN_FLAG==0)continue;
//等待接收数据
T3CON=T3CON|0x9040;
//启动定时器3
MDER=0x044;
//抑制符号位扩展
//累加器中结果正常溢出
//B0被配置为数据存储空间
//禁止所有中断
//CLKIN=6M,CLKOUT=4CLKIN=24M
//不使能看门狗,因为SCSR2中的WDOVERRIDE
//即WD复位后的缺省值,故可以用软件禁止看门狗
//开中断优先级5
//清除全部中断标志,"
//禁止所有的等待状态
BCR1=0x033;
MCR=MCR&
=0)continue;
//设置邮箱2的控制字及ID
//IDE=0,AME=0,AAM=0,标准方式为MSGID2H[12~2]
MBX2A=0x3000;
//设置邮箱3的标识符
MBX3A=0x1234;
MBX3B=0x5678;
MBX3C=0x9abc;
MBX3D=0x1111;
//置用户接收标志
CMPR4=MBX2B;
//直接返回中断服务程序
将两台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原理及电机控制应用》北京航空航天大学出版社,刘和平、邓力、江渝、郑群英编著;