山东交通学院
直流减速电机控制实验报告
班
学
姓
时
成
级
号
电气 072 085
070812206
080819520
070812213
名 孟前进 孔凡春 王晓林
2010 年 6 月
间
绩
直流电机测速与控制
一、实验目的
通过凌阳十六位单片机控制直流电机的驱动实验掌握芯片 L298N 的使用,以及通过通过
软件编程改变输出波形的占空比实现直流电机的调速,增强我们的动手能力,为以后的大模
块设计打下基础。
二、实验内容
根据老师提供以及我们自己搜索的直流电机驱动、测速电路的资料通过使用单片机驱动
直流电机,测量直流电机的转速,控制直流电机稳定运行在要求的某一范围内。
三、实验要求
按实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
使用栅格圆盘和光电门组成测速系统。当直流电机通过传动部分带动栅格圆盘旋转时,
测速光电门获得一系列脉冲信号。这些脉冲信号通过单片机两个定时/计数器配合使用,一
个计数,一个定时。计算出单位时间内的脉冲数 m,经过单位换算,就可以算得直流电机旋
转的速度。
直流电机转速计算公式:n=60·m/(N1·T·N)(rpm)
其中:n 为直流电机转速,N 为栅格数,N1 为 T0 中断次数,m 为计数器 T1 在规定时间
内测得的脉冲数,T 为定时器 T0 定时器溢出时间。
使用外接显示电路,可把电机的转速显示出来
电机测速模型如下,将栅格圆盘变化通过光电发射器和接收器以及外围转换电路的作用
送给单片机通过数学运算得到单片的的转速。
具体测速模型如下
A
1
K
2
C
3
E
4
Q
9
A
O
p
t
o
i
s
o
l
a
t
o
r
V
C
C
V
C
C
P
1
1
A
P
u
l
s
e
O
u
t
R
4
7
A
2
2
0
R
4
8
A
4
.
7
K
1
1
1
0
U
1
2
A
E
7
4
L
S
1
4
直流电机转速调节:
某些场合往往要求直流电机的转速在一定范围内可调节,例如,电车、机床等,调节范
围根据负载的要求而定。调速可以有三种方法:(1)改变电机两端电压;(2)改变磁通;(3)
在电枢回路中,串联调节电阻。本实验采用第一种方法:通过改变施加于电机两端的电压大
小达到调节直流电机转速的目的。
部分操作程序
while(1)
{
*P_TimerA_Ctrl=0x0230;
*P_Watchdog_Clear=0x0001;}
//8/16
//中速
}
void IRQ3(void)__attribute__((ISR));
void IRQ3(void)
{if(*P_INT_Ctrl&0x0100)
{while(*P_IOB_Data^0x000c)
{
*P_TimerA_Ctrl=0x03b0;
*P_Watchdog_Clear=0x0001;}
*P_INT_Clear=0x0100;
}
else if(*P_INT_Ctrl&0x0200)
{while(*P_IOB_Data^0x000c)
{
*P_TimerA_Ctrl=0x0070;
*P_Watchdog_Clear=0x0001;}
*P_INT_Clear=0x0200;
//高速
//14/16
//低速
//1/16
}
}
修改P_TimerB_Ctrl与P_TimerA_Ctrl配合实现正转反转,程序类似,不加赘述。
五、实验步骤
1) 连接电路如图,
2)启动 PC 机,打开 unSP IDE 2.0.02 软件,加载程序,编译,下载,运行。
3)通过程序控制直流电机旋转,实现软件调速,通过数码管显示电机转速。
电路接线图
附录:
操作程序:
#include"SPCE061A.h"
main()
{
}
*P_IOA_Dir=0xffff;
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0x0003;
*P_IOB_Dir=0x0300;
*P_IOB_Attrib=0x0300;
*P_IOB_Data=0x000c;
*P_INT_Ctrl=0x0300;
asm("INT IRQ");
while(1)
{
*P_TimerA_Ctrl=0x0230;
*P_Watchdog_Clear=0x0001;}
//8/16
//中速
void IRQ3(void)__attribute__((ISR));
void IRQ3(void)
{if(*P_INT_Ctrl&0x0100)
{while(*P_IOB_Data^0x000c)
{
*P_TimerA_Ctrl=0x03b0;
*P_Watchdog_Clear=0x0001;}
//高速
//14/16
*P_INT_Clear=0x0100;
}
else if(*P_INT_Ctrl&0x0200)
{while(*P_IOB_Data^0x000c)
{
*P_TimerA_Ctrl=0x0070;
*P_Watchdog_Clear=0x0001;}
*P_INT_Clear=0x0200;
//低速
//1/16
}
}
电路图: