直流电机PWM调速实验报告
学 院:
专 业:机械设计制造及其自动化
姓 名:
班 级:
学 号:
指导老师:
直流电机PWM调速实验
一、 实验目的:
1、掌握脉宽调制的方法;
2、用程序实现脉宽调制,并对直流电机进行调速控制
二、 实验设备:
PC机一台,单片机最小系统,驱动板,直流电机,连接导线等
三、 实验原理:
1、 PWM(Pulse Width Modulation)简称脉宽调制。即,通过改变输出脉冲的占空比,实现对直流电机进行调速控制。
2、 实验线路图:
四、 实验内容:
1、利用实验时提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。
2、连接实验电路,观察PWM调控速度控制,实现的加速、减速等调速控制。
五、 实验步骤:
1、 按系统电路图连线,调试完成;
2、 开启单片机,按下键盘启动按钮,电机正常旋转;
3、 按动键盘加速、减速、正转、反转、停止按键,分别实现预定功能。
4、 实验完成,收拾实验器械,整理。
六、 实验程序:
#include<reg51.h>
#define TH0_TL0 (65536-1000)//设定中断的间隔时长
unsigned char count0 = 50;//低电平的占空比
unsigned char count1 = 0;//高电平的占空比
bit Flag = 1;//电机正反转标志位,1正转,0反转
sbit Key_add=P2 ^ 0; //电机减速
sbit Key_dec=P2 ^ 1; //电机加速
sbit Key_turn=P2 ^ 2; //电机换向
sbit PWM1=P2^6;//PWM 通道 1,反转脉冲
sbit PWM2=P2^7;//PWM 通道 2,正转脉冲
unsigned char Time_delay;
/************函数声明**************/
void Delay(unsigned char x);
void Motor_speed_high(void);
void Motor_speed_low(void);
void Motor_turn(void);
void Timer0_init(void);
/****************延时处理**********************/
void Delay(unsigned char x)
{
Time_delay = x;
while(Time_delay != 0);//等待中断,可减少PWM输出时间间隔
}
/*******按键处理加pwm占空比,电机加速**********/
void Motor_speed_high(void)//
{
if(Key_add==0)
{
Delay(10);
if(Key_add==0)
{
count0 += 5;
if(count0 >= 100)
{
count0 = 100;}
}
while(!Key_add);//等待键松开}
}
/******按键处理减pwm占空比,电机减速*****/
void Motor_speed_low(void)
{
if(Key_dec==0)
{ Delay(10);
if(Key_dec==0)
{ count0 -= 5;
if(count0 <= 0)
{ count0 = 0; }
}
while(!Key_dec );}
}
/************电机正反向控制**************/
void Motor_turn(void)
{ if(Key_turn == 0)
{ Delay(10);
if(Key_turn == 0)
{ Flag = ~Flag; }
while(!Key_turn);}
}
/***********定时器0初始化***********/
void Timer0_init(void)
{ TMOD=0x01; //定时器0工作于方式1
TH0=TH0_TL0/256;
TL0=TH0_TL0%256;
TR0=1;
ET0=1;
EA=1;
}
/*********主函数********************/
void main(void)
{ Timer0_init();
while(1)
{ Motor_turn();
Motor_speed_high();
Motor_speed_low();}
}
/**************定时0中断处理******************/
void Timer0_int(void) interrupt 1 using 1
{ TR0 = 0;//设置定时器初值期间,关闭定时器
TL0 = TH0_TL0 % 256;
TH0 = TH0_TL0 / 256 ;//定时器装初值
TR0 = 1;
if(Time_delay != 0)//延时函数用
{ Time_delay--;
}
if(Flag == 1)//电机正转
{ PWM1 = 0;
if(++count1 < count0)
{ PWM2 = 1;
}
else PWM2 = 0;
if(count1 >= 100)
{ count1=0; }
}
else //电机反转
{ PWM2 = 0;
if(++count1 < count0)
{ PWM1 = 1;
}
else PWM1 = 0;
if(count1 >= 100)
{ count1=0;
}
七、 实验心得:
此次实验,不仅锻炼了我们的独立思考和动手能力。还让我们了解到单片机来实现电机调整有多种途径。相对于其他用硬件或者硬软结合的方法实现对电机进行调整。掌握脉宽调制的方法;学会用程序来实现脉宽调制,并对直流电机进行启动、加速、减速、停止等调速控制。
马鞍山职业技术学院
课程设计说明书
课程名称:《嵌入式接口技术》与《嵌入式硬件设计》
题目:直流电机PWM调速试验
专业名称:计算机应用与技术
班级:09计应
学号:
姓名:
小组成员:李东东、程茜茜、肖亚明
指导老师:刘俞
成绩:
评定成绩:
教师评语:
指导老师签名:
年 月 日
目录
一、 项目功能要求说明
二、 硬件设计
2.1 整体方案设计
2.1.1 器材选择
2.1.2 产品功能模块划分(设计图)
2.1.3 可行性分析
2.2 硬件电路设计
2.2.1 所用器材功能说明
2.2.2 系统的工作说明
三、 软件设计方案
3.1 软件功能模块的划分与分析
3.2 程序模块的详细设计
3.3 分析结果
四、产品说明书
4.1 功能
4.2 使用说明
一、 项目功能要求说明
1.1 用单片机控制直流电机的转速,用两个中断按钮分别作为加速键和减速键,LED作为转速档位显示器。初始时,电机带动的风扇处于静止状态,LED显示“0”,当按下一次加速按钮后,风扇开始以1档的速度转动,同时LED显示“1”,再次按下加速按钮后,风扇速度加快,以2档速度转动,同时LED显示“2”,再次按下加速按钮后,风扇速度加快,以3档速度转动,同时LED显示“3”,当再次加速按钮后,风扇速度不再变化,LED依然显示“3”(即:3档位最高速度);同理,当按下减速按钮时,风扇速度降低一档,同时LED显示的档位数字减少(最低档位为0)。
1.2 当直流电机转速达到最高档(3)及最低档(0)后,再按加速或者减速按钮,会触动报警器报警,再按减速或加速使风扇回到正常转速范围时,报警解除。
二、硬件设计
2.1.1 器材选择
AT89C51
TD-51开发板
SP451012H直流电机
LED数字显示器
扬声器
2.1.2 产品功能模块划分
2.1.3 可行性分析
通过电机转速控制风扇的速度,从事件处理模块获得当前风扇的速度。可以通过按键随时修改电机转速和风扇档位。根据档位的增加和减小情况确定LED的显示情况,根据转速变化是否超出额定范围确定扬声器的报警情况。
2.2 硬件电路设计
2.2.1所用器材功能说明
(1)AT89C51(微控制器)
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
(2) ADC0809 (模数转换芯片)通过采样,量化和编码将模拟信号转换成数字信号
(3) SP451012H(直流电机)启动电机,使风扇转动,根据PWM来调节转速。
(4) LED(数字显示器) 由8段发光二极管组成,用来显示数字和字符或小数点,又称数码管。本实验中指用到一位LED,显示当前的档位值,指示系统当前状态,建立一个良好的用户与系统的接口,提高用户与系统的交互能力。
(5) ULN2803AG (点评转换芯片)将5V电压转化成12V电压,用于驱动电动机单次脉冲单元。
2.2.2系统的工作说明
初始时,LED显示0,直流电动机为低电平停止转动,加速按键后触发定时器中断0,并以初始值计时,产生一定频率的PWM脉冲,经过驱动器驱动直流电机转动,再按加速定时器0初值变大,高频宽度变大,LED的字符取值加1,按下减速后定时器0初值变小,高频宽度减小,电机转速变慢,LED的字符取值减1,连续加速或减速超过限定范围触发定时器中断1,产生一定频率的脉冲驱动扬声器工作,改变回限定范围后停止定时器1工作,扬声器停止报警。
三、软件设计方案
3.1软件功能模块的划分与分析
功能共分为:LED显示模块、键盘输入模块、扬声器发声模块
(1)、LED显示模块:显示风扇档位
(2)、键盘输入模块:控制电机转速
(3)、扬声器发声模块:保持电机在合理转速
3.2程序模块的详细设计(代码)
#include<reg51.h>
#define T_value (unsigned char)0x80 //PWM周期
#define T1_value (unsigned char)0x60 //高电平周期
#define TH0_value (unsigned char)0xFE
#define TL0_value (unsigned char)0x00
unsigned char code LEVEL[]= {0xc0,0xF9,0xA4,0xB0};//0-3
sbit DRV=P1^6;
unsigned char T_Count,t1;
sbit DRV2=P1^7;
unsigned int t02s=0;
unsigned int i=0;
bit fla=1,ff=0,gg=0,start=0; //高低电平、超界及启动状态
void init_tim0()
{
TMOD=0x11;
TH0=TH0_value; //1us
TL0=TL0_value;
TH1=(65536-500)/256; //0.5ms
TL1=(65536-500)%256;
TR0=1;
ET0=1;
ET1=1;
EA=1;
}
void init_int()
{
IT0=1;
EX0=1;
IT1=1;
EX1=1;
EA=1;
}
void sound() interrupt 3
{
TH1=(65536-500)/256; //0.5ms
TL1=(65536-500)%256;
t02s++;
if(t02s==400)
{
t02s=0;
fla=~fla; //0.2s
}
if(fla==0)
{
DRV2=~DRV2; //0.2s后低电平
}
}
void int0_isr() interrupt 0
{
start = 1;
if(t1<T_value-30){ //T_value(0x80): 0x60 ~ 0x7E
t1=t1+10;
i++;
}
if(t1>=T_value)
{
TR1=1; //开始喇叭计时
ff=1; //上超界
}
if(t1>=T_value-30&&gg==1) //0x14
{ TR1=0; //解除下超界
DRV2=1;
gg=0;
}
}
void int_tim0() interrupt 1
{
TH0=TH0_value; //1us
TL0=TL0_value;
T_Count--; //1*T_Count
}
void int2_isr() interrupt 2
{
if(t1>T_value-30){ // 0x7E~0x60
t1=t1-10;
i--;
}
else
{
start=0;
TR1=1; //开始喇叭计时
gg=1; //下超界
}
if(t1<T_value&&ff==1)
{
TR1=0;
DRV2=1;
ff=0; //解除上超界
}
}
void main()
{
unsigned char Tx;
bit flag=0;
t1=T1_value;
DRV=1;
init_tim0();
init_int();
T_Count=t1; //初始高电平
while(1)
{
P0 = 0x01;
P1 = LEVEL[i];
if(start==1&&T_Count==0)
{
DRV=~DRV;
if(flag==0) //低电平
Tx=T_value-t1;
else Tx=t1; //高电平
T_Count=Tx;
flag=~flag;
}
}
}
3.3分析结果
通过测试,本程序完成了功能要求中的各项要求。在本次设计中,针对使用电机的特性,对于电机的控制没有精确的给出脉冲信号,而是给低电平启动,给高电平停止转动。由于时间处理用软件实现且软件的选择结构和中断的执行导致系统时间难以精确的提供,本设计中只为系统提供粗略时间。本设计中应用多种方式控制字符的传递,均可完成将字符传送到LED寄存器中。
四、产品说明书
4.1功能
(1)、根据转速判断当前的档位,在试验箱上的LED上显示。
(2)、通过按键方便完成电机转速的快慢调节
(3)、超过额定转速后自动报警,保证电机运转安全
4.2使用说明
加速:KK1
减速:KK2
电机实验报告课程名称电机实验指导老师成绩实验名称直流并励电动机实验类型同组学生姓名一实验目的和要求1掌握用实验方法测取直流并励电机…
单片机原理与应用课程设计报告直流电机PWM波调速的设计与制作要求一功能要求1实现利用PWM波控制直流电机的转速2用数码管显示PWM…
直流电机PWM调速实验报告学院专业机械设计制造及其自动化姓名班级学号指导老师直流电机PWM调速实验一实验目的1掌握脉宽调制的方法2…
重庆邮电大学综合实验报告姓名魏敏学号20xx213148班级0881202组号专业电气工程与自动化指导老师陈俊华自动化学院检测与控…
课程设计报告课程名称题目单片机课程设计基于51单片机PID直流电机调速摘要随着科技的日益进步对自动化的要求也越来越高直流电动机应用…
课程设计报告课程名称题目单片机课程设计基于51单片机PID直流电机调速摘要随着科技的日益进步对自动化的要求也越来越高直流电动机应用…
直流电机的特性测试一实验要求在实验台上测试直流电机机械特性工作特性调速特性空载和动态特性其中测试机械特性时分别测试电压电流转速和扭…
电机实验报告课程名称电机实验指导老师成绩实验名称直流并励电动机实验类型同组学生姓名一实验目的和要求1掌握用实验方法测取直流并励电机…
直流电机实验报告课程名:电机学与电力拖动姓名:学院:电气工程学院班级:电气1108班学号:指导老师:2-2直流发电机一、实验目的1…
实验题目类型:设计型《电机与拖动》实验报告实验题目名称:直流电动机实验实验室名称:电机及自动控制实验室实验组号:1组指导教师:报告…
网络教育学院电机与拖动实验报告学习中心江苏南通如皋奥鹏层次专升本专业电气工程及其自动化学号学生刘平完成日期20xx年3月9日实验报…