直流小电动机调速系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//开启定时器 0 中断
TR0=1;
//启动定时器 0
}
void keys() //键盘扫描
{
if(keys1 == 0)
{
delay();
7
if(keysp1 == 0) vid=1;
} if(keys2 == 0) {
delay(); if(keys2 == 0)
vid=3; } if(keys3 == 0) {
code
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int spd; //电机转速 unsigned char ge,shi,bai,qian; //电机转速 spd 的各个位
5
unsigned int counter=0;
//光电传感器脉冲数
unsigned int pwm;
//pwm 占空比
unsigned int mid;
//占空比设置值
unsigned int c; //设定多长时间计算一次速度
void display(); //数码管显示电机速度
void delay(); //延迟函数
void ctrlpwm(); //控制电机占空比
口输出。
3
显示部分 采用 4 位共阳极数码管实现转速显示。数码管的位选端 1~4
分别接 STC89C52 的 P2.0~P2.3 管脚。
完整仿真电路图
4
百度文库
软件部分
系统软件采用 Keil 集成开发环境开发 程序如下:
#include <reg51.h>
sbit P2_0=P2^0; //数码管位
sbit P2_1=P2^1;
delay(); if(keys3 == 0)
vid=5; } } void speed() { if(c>=100) //100*10ms=1s 计算一次电机转速
8
{
frq1=counter/3; //转的圈数除以时间
counter=0;
//清零脉冲数
c=0;
//清零标志
}
}
void ctrlpwm() {
硬件部分
1.时钟电路 系统采用 12M 晶振与两个 30pF 电容组成震荡电路,
接 STC89C52 的 XTAL1 与 XTAL2 引脚
2
2.按键电路 三个按键分别控制电机的不同转速,采用开环控制方法
3.电机控制与驱动部分 电机的运行通过 PWM 波控制。PWM 波通过 STC89C52 的 P2.4
P2_0=0;
10
P0=table[qian]; delay(); P0=0xff; P2_0=1; P2_1=0; P0=table[bai]; delay(); P0=0xff; P2_1=1; P2_2=0; P0=table[shi]; delay(); P0=0xff; P2_2=1; P2_3=0; P0=table[ge]; delay(); P0=0xff; P2_3=1;
{
EA=1; //开启总中断
EX0=1; //开启外部中断 0
IT0=1; //设置成下降沿触发方式
TMOD=0x01; //设置定时器 0 为模式 1,即 16 位计数模式
TH0=(65536-10000)/256; //计数时间为 10ms
TL0=(65536-10000)%256;
ET0=1;
题 目 直流小电机测速系统
一.题目要求 设计题目:直流小电动机调速系统 描述:采用单片机、uln2003 为主要器件,设计直流电机调速系 统,实现电机速度开环可调。 具体要求:1、电机速度分 30r/m、60r/m、100r/m 共 3 档;
2、通过按选择速度; 3、检测并显示各档速度。
实验器件: 实验板、STC89C52、直流电机、晶振(12MHz)、电容(30pFⅹ2、 10uFⅹ2)、)uln2003、小按键、按键(4 个)、、数码管、以及 电阻等 二.组内分工
10ms
TL0=(65536-10000)%256;
pwm++;
c++;
}
void _INT0() interrupt 0
{
counter++;
}
void display()
//数码管显示函数
{
ge=spd%10;
shi=spd/10%10;
bai=spd/100%10;
qian=spd/1000%10;
void speed(); //计算电机速度,放于 motorspeed 变量中
void keys(); //按键扫描
void main()
{
P2=P2&0x0f;
vid=0;
initial();
while(1)
{
keys();
display();
ctrlpwm();
6
speed();
}
}
void initial() //初始化程序
1
摘要 在电气时代的今天,电动机在工农业生产与人们日常生活中
都起着十分重要的作用。直流电机作为最常见的一种电机,具有 非常优秀的线性机械特性、较宽的调速范围、良好的起动性以及 简单的控制电路等优点,因此在社会的各个领域中都得到了十分 广泛的应用。
本文设计了直流电机测速系统的基本方案,阐述了该系统的 基本结构、工作原理、运行特性及其设计方法。本系统采用 PWM 测量电动机的转速,用 MCS-51 单片机对直流电机的转速进行控 制。本设计主要研究直流电机的控制和测量方法,从而对电机的 控制精度、响应速度以及节约能源等都具有重要意义。 ·关键词:直流电机 单片机 PWM 转速控制
if(pwm>=0 && pwm<vid) { P2_4=1; } else if(pwm>=mid && pwm<10) {
P2_4=0; } else pwm=0; }
9
void _TIMER0() interrupt 1
{
TH0=(65536-10000)/256; //重新装入初值,计数时间为
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4; //电机位
sbit keysp30=P1^1; //30
sbit keysp60=P1^2; //60
sbit keysp100=P1^3; //100
unsigned
char
table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
11
} void delay() //延迟函数 {
unsigned char i;