基于PWM地电机调速系统文档格式.docx

上传人:b****1 文档编号:4777084 上传时间:2023-05-04 格式:DOCX 页数:15 大小:743.35KB
下载 相关 举报
基于PWM地电机调速系统文档格式.docx_第1页
第1页 / 共15页
基于PWM地电机调速系统文档格式.docx_第2页
第2页 / 共15页
基于PWM地电机调速系统文档格式.docx_第3页
第3页 / 共15页
基于PWM地电机调速系统文档格式.docx_第4页
第4页 / 共15页
基于PWM地电机调速系统文档格式.docx_第5页
第5页 / 共15页
基于PWM地电机调速系统文档格式.docx_第6页
第6页 / 共15页
基于PWM地电机调速系统文档格式.docx_第7页
第7页 / 共15页
基于PWM地电机调速系统文档格式.docx_第8页
第8页 / 共15页
基于PWM地电机调速系统文档格式.docx_第9页
第9页 / 共15页
基于PWM地电机调速系统文档格式.docx_第10页
第10页 / 共15页
基于PWM地电机调速系统文档格式.docx_第11页
第11页 / 共15页
基于PWM地电机调速系统文档格式.docx_第12页
第12页 / 共15页
基于PWM地电机调速系统文档格式.docx_第13页
第13页 / 共15页
基于PWM地电机调速系统文档格式.docx_第14页
第14页 / 共15页
基于PWM地电机调速系统文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于PWM地电机调速系统文档格式.docx

《基于PWM地电机调速系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于PWM地电机调速系统文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

基于PWM地电机调速系统文档格式.docx

2.根据电路图编写C语言代码:

代码如下:

#include<

reg51.h>

sbitPWM=P2^7;

sbitCS3=P2^3;

sbitCS2=P2^2;

sbitCS1=P2^1;

sbitCS0=P2^0;

sbitkey1=P1^0;

sbitkey2=P1^1;

sbitkey3=P1^2;

sbitkey4=P1^3;

unsignedchartimer1;

unsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voidTime1Config();

voidmain(void)

{

Time1Config();

while

(1)

{

if(timer1>

100)//PWM周期为100*0.5ms

{

timer1=0;

}

if(~key1)

if(timer1<

30)//改变30这个值可以改变直流电机的速度

PWM=1;

else

PWM=0;

CS0=0;

CS1=0;

CS2=1;

CS3=0;

P0=tab[3];

P0=0xff;

CS2=0;

CS3=1;

P0=tab[0];

elseif(~key2)

{if(timer1<

50)

P0=tab[5];

elseif(~key3)

{if(timer1<

80)

P0=tab[8];

elseif(~key4)

100)

CS1=1;

P0=tab[1];

}

voidTime1Config()

TMOD|=0x10;

//设置定时计数器工作方式1为定时器

//--定时器赋初始值,12MHZ下定时0.5ms--//

TH1=0xFE;

TL1=0x0C;

ET1=1;

//开启定时器1中断

EA=1;

TR1=1;

//开启定时器

}

 

voidTime1(void)interrupt3//3为定时器1的中断号

//重新赋初值

timer1++;

3.实验仿真,部分仿真结果如图2图3所示:

图2:

仿真结果图

(1)

图3:

仿真结果图

(2)

4.实物验证结果如图4所示:

图4:

方案一实物验证结果

实物验证可以明显感觉到电机转速的变化,由于每个开发板不同,相比仿真程序,对实物验证程序进行了略微的修改,最终能达到要求。

方案二实验步骤:

1.利用protues画电路图,电路图如图5所示:

图5:

方案二protues电路图

2.编写C语言程序代码:

#include<

#defineucharunsignedchar

#defineuintunsignedint

sbitkey1=P3^1;

sbitCLOCK=P2^4;

sbitST=P2^5;

sbitEOC=P2^6;

sbitOE=P2^7;

sbitPWM=P3^7;

uinttemp,temp1;

uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

ucharstart;

voiddelayms(uintms)

ucharj;

while(ms--)

for(j=0;

j<

120;

j++);

voiddelay(uintzz);

voidmain()

{

P3=0;

TMOD=0x02;

TH0=0x01;

TL0=0X00;

IE=0x82;

TR0=1;

start=0;

start=1;

while(start)

{

ST=0;

ST=1;

ST=0;

//启动ADC0809

while(!

EOC);

//查询EOC是否为1;

OE=1;

temp=P1;

//读取A/D转化的结果

OE=0;

temp1=temp/2.38;

P0=tab[temp1/100];

delayms

(1);

P0=tab[temp1%100/10];

P0=tab[temp1%10];

PWM=1;

//PWM输出高电平

delay(temp);

//正脉冲宽度

PWM=0;

//PWM输出低电平

delay(255-temp);

//低脉冲宽度

}

voidclockwave()interrupt1

CLOCK=!

CLOCK;

voiddelay(uintzz)

uintx,y;

for(x=zz;

x>

0;

x--)

for(y=50;

y>

y--);

3.实验仿真,部分仿真结果如图6所示:

图6:

方案二仿真结果

4.实物结果如图7所示:

图7:

方案二实物结果

实验总结:

本次实验提供了方案一和方案二两个方案,方案一是通过不同按键设定不同的PWM占空比从而实现对电机调速,其优点是可以设定我们自己需要的转速从而实现相对精确的调速;

缺点便是只能调到设定的转速,如需调制其它速度,需要对软件代码进行改写,相对而言比较繁琐。

方案二是通过滑动变阻器改变电压值从而改变PWM占空比实现电机调速,其优点是可以直接从硬件调速,快速方便;

缺点就是利用滑动变阻器难以精确控制PWM占空比从而精确控制转速。

方案一和方案二各有优缺点,可以对自己的需求进行选择。

心得体会:

通过本次的实验,小组成员都发现自己的知识面还是非常的狭窄,缺少的东西也有很多,在网上查找一些相关的资料以及在图书馆借阅了几本关于单片机方面的书籍,慢慢的懂了一些关于编程和仿真方面的问题。

通过这次实验,成员们都发现各自还是存在一些问题。

这些不经意的东西虽然看起来不起眼,但是在试验中是不可忽视的问题。

这次试验让我遇到的困难有很多,例如一开始在编程的时候,我们一直在重视如何获取电机的转速并在led上实时显示,失败之后吸取经验从PWM波形入手来显示数值。

这次的实验,学习到的内容也有很多,不求在一个试验中就能让我学到很多的东西,但在以后的学习中,会慢慢的一点点改进,熟练的理解以及掌握相关的知识,希望能在这方面学到的越来越多。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2