基于PWM勺电机调速系统
实验目的:
1. 学会并掌握可keil软件的使用;
2. 学会并掌握protues软件的使用;
3. 通过实验巩固单片机相关知识和检验自身动手能力
实验要求:
掌握单片机相关知识,利用调PWm空比的方式来控制直流电机的转速,并且在led 数码管上显示转速。
实验设备和仪器:
单片机最小系统
2. 直流电机
3. 示波器
实验内容:
本次实验设计是由小组五个成员共同完成基于PWM勺电机调速系统并完成实物搭建和撰写实验报告。本次实验小组共提供了两个方案,方案一和方案二,两个方案各自具有优缺点,详细内容会在下面给出。
方案一实验步骤:
1.利用protues画电路图,电路图如图1所示:
图1:方案一电路图
2.根据电路图编写C语言'代码:
代码如下:
#include <>
sbit PWM=P2A7;
sbit CS3=P2A3;
sbit CS2=P2A2;
sbit CS1=P2A1;
sbit CS0=P2A0;
sbit key1=P1A。;
sbit key2=P1A1;
sbit key3=P1A2;
sbit key4=P1A3;
unsigned char timer1;
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void Time1Config();
void main(void)
(
Time1Config();
while(1)
(
if(timer1>100) 验仿真,部分仿真结果如图2图3所示:
图2:仿真结果图(1)
图3:仿真结果图(2)
4. 实物验证结果如图4所示:
图4:方案一实物验证结果
实物验证可以明显感觉到电机转速的变化,由于每个开发板不同,相比仿真程序,对实物验证程序进行了略微的修改,最终能达到要求。
方案二实验步骤:
1. 利用protues画电路图,电路图如图5所示:
图5:方案二protues电路图2. 编写C语言程序代码:
代码如下:
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3A1;
sbit CLOCK=P2A4;
sbit ST=P2A5;
sbit EOC=P2A6;
sbit OE=P2A7;
sbit PWM=P3A7;
uint temp,temp1;
sbit CS3=P2A3;
sbit CS2=P2A2;
sbit CS1=P2A1;
sbit CS0=P2A0;
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar start;
void delayms(uint ms)
{
uchar j;
while(ms--)
{
for(j=0;j<120;j++);
}
}
void delay(uint zz);
void main()
P3=0;P0=0xff;
TMOD=0x02;
TH0=0x01;
TL0=0X00;
IE=0x82;
TR0=1;
start=0;
while(1)
(
start=1;
while(start)
(
ST=0;ST=1;ST=0;验仿真,部分仿真结果如图6所示:
图6:方案二仿真结果
4.实物结果如图7所示:
图7:方案二实物结果
实验总结:
本次实验提供了方案一和方案二两个方案,方案一是通过不同按键设定不同的
PW M T
空比从而实现对电机调速,其优点是可以设定我们自己需要的转速从而实现相对精确的调速;缺点便是只能调到设定的转速,如需调制其它速度,需要对软件代码进行改写,相对而言比较繁琐。
方案二是通过滑动变阻器改变电压值从而改变PW M T空比实现电机调速,其优点是可
以直接从硬件调速,快速方便;缺点就是利用滑动变阻器难以精确控制PWM&空比从而精
确控制转速。
方案一和方案二各有优缺点,可以对自己的需求进行选择。
心得体会:
通过本次的实验,小组成员都发现自己的知识面还是非常的狭窄,缺少的东西也有很多,在网上查找一些相关的资料以及在图书馆借阅了几本关于单片机方面的书籍,慢慢的懂了一些关于编程和仿真方面的问题。通过这次实验,成员们都发现各自还是存在一些问题。这些不经意的东西虽然看起来不起眼,但是在试验中是不可忽视的问题。这次试验让我遇到的困难有很多,例如一开始在编程的时候,我们一直在重视如何获取电机的转速并在led上实时显示,失败之后吸取经验从PWM形入手来显示数值。这次的实验,学习到的内容也有很多,不求在一个试验中就能让我学到很多的东西,但在以后的学习中,会慢慢的一点点改进,熟练的理解以及掌握相关的知识,希望能在这方面学到的越来越多。