文档库 最新最全的文档下载
当前位置:文档库 › 基于51单片机的直流电机控制系统

基于51单片机的直流电机控制系统

基于51单片机的直流电机控制系统
基于51单片机的直流电机控制系统

南昌航空大学

题目:基于51单片机的直流电机控制系统设计

姓名:

院(系):信息工程学院

专业班级:自动化专业

学号:

指导教师:

成绩:

摘要

本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。控制系统主要是以8051单片机为核心组成的控制系统,本系统中的电机转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比,因此,由MCU内部的可编程计数器阵列输出PWM波,以调整电机两端电压与控制波形的占空比,从而实现调速。

目录

第一章:设计任务 (2)

第二章:总体设计方案 (2)

第三章系统硬件电路设计 (3)

第四章系统的软件设计 (4)

第五章:程序 (5)

第六章:PCB图 (5)

第七章:元件清单 (5)

第八章:参考文献 (5)

第九章:心得体会 (6)

第一章:设计任务

任务: 单片机为控制核心的直流电机PWM调速控制系统设计的主要内容以及技术参数:

功能主要包括:

1)直流电机的正转;

2)直流电机的反转;

3)直流电机的加速;

4)直流电机的减速;

5)直流电机的转速在数码管上显示;

6)直流电机的启动;

7)直流电机的停止;

第二章:总体设计方案

总体设计方案的硬件部分详细框图如图一所示。

键盘向单片机输入相应控制指令,由单片机通过P1.0与P1.1其中一口输出与转速相应的PWM脉冲,另一口输出低电平,经过ULN2003芯片控制电路,实现电动机转向与转速的控制。电动机的运转状态通过数码管显示出来。电动机所处速度级以速度档级数显示。正转时最高位显示“三”,其它三位为电机转速;反转时最高位显示“F”,其

它三位为电机转速。每次电动机启动后开始显示,停止时数码管显示出“0000”。

第三章系统硬件电路设计

整体框图如下

第四章系统的软件设计

本系统编程部分工作采用KELI-C51语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别和功能、PWM 脉宽控制和数码管显示等部分的设计。

单片机资源分配如下表:

①PWM脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:

/*****************延时函数*************************/

delays()

{

uchar i;

for(i=5000;i>0;i--);

}

②键盘中断处理子程序:采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。

要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。

③显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个数码管要显示的值。

④定时中断处理程序:采用定时方式1,因为单片机使用12M晶振,可产生最高约为

65.5ms的延时。对定时器置初值B1E0H可定时20ms,即系统时钟精度可达0.02s。当20ms定时时间到,定时器溢出则响应该定时中断处理程序,完成对定时器的再次赋值,并对全局变量time加1,这样,通过变量time可计算出系统的运行时间。

3、软件设计中的特点:

对于电机的启停,在PWM控制上使用渐变的脉宽调整,即开启后由停止匀加速到默

认速度,停止则由于当前速度逐渐降至零。这样有利于保护电机。键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。

第五章:程序

见附件1

第六章:PCB图

第七章:元件清单

第八章:参考文献

[1] 孙涵芳徐爱卿.MCS-51/96系列单片机原理及应用[M].北京:北京航空航天大学出版社,1977..

[2] 何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,2003..

[3] 史国生.交直流调速系统[M].北京:化学工业出版社,2002.161-174.

第九章:心得体会

本次课程设计虽然只有两周,但短短两周我掌握了汇编编程的原理和方法。熟悉了单片机基本特征和电路设计的方法。掌握了直流电机的控制方法。熟练了运用定时器设计PWM波控制直流电机。总之,收获很多。

附件1

/************头文件*********/

#include

#include

#include

/************************** /

/********自定义变量********/

#define uint unsigned int //自定义变量

#define uchar unsigned char

char gw,sw,bw,qw;

uchar j; //定时次数,每次20ms

uchar f=5; //计数的次数

sbit P10=P1^0; //PWM输出波形1

sbit P11=P1^1; //PWM输出波形2

sbit P12=P1^2; //正反转

sbit P13=P1^3; //加速

sbit P14=P1^4; //减速

sbit P15=P1^5; //停止

sbit P16=P1^6; //启动

uchar k;

uchar t; //脉冲加减

/**************************/*

/*********控制位定义********************/

uchar code smg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x71};//程序存储区定义字型码表

char data led[4]={0x08,0x04,0x02,0x01}; //位码

uint x; //数码管显示的数值

display(); //数码管显示

delays(); //延时函数

key();

displays();

/*****************************************/

/***************主函数********************/

main (void)

{

TMOD=0x51; //T0方式1 定时计数 T1方式1计数

TH0=0xb1; //装入初值 20MS

TL0=0xe0;

TH1=0x00; // 计数567

TL1=0x00;

TR0=1; //启动 t0

TR1=1; //启动t1

gw=sw=bw=qw=0; //数码管初始化

P0=0xc0;

P2=1;

while(1) //无限循环

{

display(); //数码管显示

key();

}

}

/*****************************************/

/***************数码管显示****************/

display()

{

uchar i;

gw=x%10; //求速度个位值,送到个位显示缓冲区sw=(x/10)%10; //求速度十位值,送到十位显示缓冲区bw=(x/100)%10; //求速度百位值,送到百位显示缓冲区qw=x/1000; //求速度千位值,送到千位显示缓冲区for(i=0;i<4;)

{

P2=led[i];

if(i==0) //显示个位

{

P0=smg[gw];

delays();

}

else if(i==1) //显示十位

{

P0=smg[sw];

delays();

}

else if(i==2) //显示百位

{

P0=smg[bw];

delays();

}

else if(i==3) //显示千位

{

if(k==0) //正转时显示"三"

{

P0=0x49;

delays();

}

else

{

P0=0x71; //反转时显示"F"

}

}

i++;

}

}

/*******************************************************/

/*****************延时函数*************************/ delays()

{

uchar i;

for(i=5000;i>0;i--);

}

/************************************************/

/*********t0定时*中断函数*************/ void t0() interrupt 1 using 2

{

TH0=0xb1; //重装t0

TL0=0xe0;

f--;

if(k==0)

{

if(f

P10=1;

else

P10=0;

P11=0;

}

else

{

if(f

P11=1;

else

P11=0;

P10=0;

}

if(f==0)

{

f=5;

}

j++;

if(j==50)

{

j=0;

x=TH1*256+TL1; //t1方式1计数,读入计数值TH1=0x00;

TL1=0x00;

x++;

display();

}

}

/****************按键扫描**************/

key()

{

if(P12==0) //如果按下,

{

while(!P12) //去抖动

display();

k=~k;

}

if(P16==0) //启动

{

while(P16==0);

IE=0x8a;

}

if(P13==0) //加速

{

while (P13==0);

t++;

}

if(t>=5)

t=5;

if(P14==0) //减速

{

while(P14==0);

t--;

}

if(t<1)

t=1;

if(P15==0) //停止

{

while(P15==0);

EA=0;

P10=0;

P11=0;

}

}

课程设计成绩评定表

一个基于51单片机控制直流电机的设计

今天做的一个基于51单片机控制直流电机的设计 2010-09-12 18:47 可以实现的功能是: 按下左转键则开始向左转动 按下右转键则向右转动 按下停止键则开始逐渐停止转动 按下调速键一次则会加速一档 按下调速键二次则会加速二档 按下调速键三次则会加速三档 按下调速键四次则会加速四档 按下调速键五次则会回到最初速度重新记档位 设计思路: 直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动方向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的。直流电机的驱动电路要有过流保护作用,图中的二极管就直到这个作用,另外电机的驱动电流是比较大的所以需要用三极管来放大电流。程序的关键就是如何实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。用51实现PWM信号的输出,相对麻烦点,要是AVR就可以方便地实现PWM 信号,由见51单片机的局限性与AVR单片机的优势。 原理图

详细程序: #include #define uchar unsigned char #define uint unsigned int sbit PW1=P2^0 ; sbit PW2=P2^1 ; //控制电机的两个输入 sbit accelerate=P2^2 ; //调速按键 sbit stop=P2^3 ; //停止按键 sbit left=P2^4 ; //左转按键 sbit right=P2^5 ; //右转按键 #define right_turn PW1=0;PW2=1 //顺时针转动 #define left_turn PW1=1;PW2=0 //逆向转动 #define end_turn PW1=1;PW2=1 //停转 uint t0=25000,t1=25000; //初始时占空比为50% uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hz uchar flag=1; //此标志用于选择不同的装载初值 uchar dflag; //左右转标志 uchar count; //用来标志速度档位 void keyscan(); //键盘扫描 void delay(uchar z); void time_init(); //定时器的初始化 void adjust_speed(); //通过调整占空比来调整速度 void main() {

51单片机控制的步进电机C语言程序

我上周刚做的这个实验成功拉,给你参考一下吧这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的和ULN2003一样,你把它换成2003就行拉 #include unsigned char code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf 9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00}; unsigned char temp,temp_old; unsigned char key; unsigned char i,j,k,m,s; void delay(int i) { for(m=i;m>0;m--) for(j=250;j>0;j--) for(k=10;k>0;k--); } void saomiao() { P3=0xff; P3_4=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--)

for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=4; break; } temp=P3;

temp=temp&0x0f; while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp)

51单片机控制直流电机PWM调速C语言程序

#include #define uchar unsigned char #define uint unsigned int sbit KEY1 = P3^4; sbit KEY2 = P3^5; sbit KEY3 = P3^6; sbit IN1 = P1^0; sbit IN2 = P1^1; sbit ENA = P1^2; sfr ldata=0x80; sbit dula=P2^6; sbit wela=P2^7; //sbit lcden=P3^4; //uchar timer,ms,t_set = 1; uchar T_N=100; uchar T_N1=100; uchar T_H_N=50; uchar T_H_N1=50; void msplay(uchar,uchar); uchar code x1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //uchar code x2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; uchar code x3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //uchar code x4[]={0x01,0x02,0x04,0x08,0x10,0x20}; void delay(uint z) //延时函数 { uint x; for(x=z;x>0;x--); }

基于51单片机的步进电机控制-设计报告(说明书)及源程序

南京XX大学 指导老师:张X 课程设计基于51单片机的步进电机控制 机械电子工程学院 测控技术与仪器 XXXXX Xxx 2012年1年4日

步进电机控制系统 [摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启 动、停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求。 关键字:步进电机、数码管、51单片机、ULN2803 一步进电机与驱动电路 1.1 什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2 步进电机的种类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 1.3 步进电机的特点 1.精度高一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点 2.过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算

51单片机PWM控制直流电机正反转

//程序说明:使用内部时//PWM0=P3^7PWM1=P3^5 PWM2=P2^0 PWM3=P2^4 #include #define uchar unsigned char #define uint unsigned int sbit PWM0=P3^7; sbit PWM1=P3^5; sbit PWM2=P1^2; sbit PWM3=P1^3; uint i,j; void PWM_init() { CMOD=0x00;//PCA计数脉冲选择内部时钟fosc/12(0x02:fosc/2) CL=0x00;//PCA赋初值 CH=0x00; CR=1; //开始计数 } void zheng(uchar ZKB) { CCAP0L=255*(40-ZKB)/100;//占空比设置 CCAP0H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-0)/100;//占空比设置 CCAP1H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void fan(uchar ZKB) { CCAP0L=255*(40-0)/100;//占空比设置 CCAP0H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-ZKB)/100;//占空比设置 CCAP1H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void Delay(uint t) //延时函数

基于51单片机控制直流电机的设计

可以实现的功能是: 按下左转键则开始向左转动 按下右转键则向右转动 按下停止键则开始逐渐停止转动 按下调速键一次则会加速一档 按下调速键二次则会加速二档 按下调速键三次则会加速三档 按下调速键四次则会加速四档 按下调速键五次则会回到最初速度重新记档位 设计思路: 直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动方向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的。直流电机的驱动电路要有过流保护作用,图中的二极管就直到这个作用,另外电机的驱动电流是比较大的所以需要用三极管来放大电流。程序的关键就是如何实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。用51实现PWM信号的输出,相对麻烦点,要是AVR就可以方便地实现PWM信号,由见51单片机的局限性与AVR单片机的优势。 原理图

详细程序: #include #define uchar unsigned char #define uint unsigned int sbit PW1=P2^0 ; sbit PW2=P2^1 ; //控制电机的两个输入 sbit accelerate=P2^2 ; //调速按键 sbit stop=P2^3 ; //停止按键 sbit left=P2^4 ; //左转按键 sbit right=P2^5 ; //右转按键 #define right_turn PW1=0;PW2=1 //顺时针转动 #define left_turn PW1=1;PW2=0 //逆向转动 #define end_turn PW1=1;PW2=1 //停转 uint t0=25000,t1=25000; //初始时占空比为50% uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hz uchar flag=1; //此标志用于选择不同的装载初值 uchar dflag; //左右转标志 uchar count; //用来标志速度档位 void keyscan(); //键盘扫描 void delay(uchar z); void time_init(); //定时器的初始化 void adjust_speed(); //通过调整占空比来调整速度 void main()

基于51单片机控制步进电机

单片机原理及系统课程设计 1 引言 步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。 随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。 步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。 1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。 在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

2 设计方案与原理 4.1 设计方案 设计一个51单片机四相步进电机控制系统要求系统具有如下功能: (1)由I/O口产生的时序方波作为电机控制信号; (2)信号经过驱动芯片驱动电机的运转; (3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。 4.2 设计原理 步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。 在本次设计中,我们使用的是四相单八拍的工作方式。通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。 图 2.1 步进电机内部结构截图 根据步进电机的相关相序表我们可以正常的控制电机的步进运行。

51单片机直流无刷电机控制

基于MCS-51单片机控制直流无刷电动机 学号:3100501044 班级:电气1002 :王辉军

摘要 直流无刷电机是同步电机的一种,由电动机本体、位置传感器和电子开关线路三部分组成。其定子绕组一般制成多相(三相、四相、五相不等),转子由永久磁钢按一定极对数(2p=2,4,…)组成。电机转子的转速受电机定子旋转磁场的速度及转子极数(P)影响: N=120.f / P。在转子极数固定情况下,改变定子旋转磁场的频率就可以改变转子的转速。直流无刷电机即是将同步电机加上电子式控制(驱动器),控制定子旋转磁场的频率并将电机转子的转速回授至控制中心反复校正,以期达到接近直流电机特性的方式。也就是说直流无刷电机能够在额定负载围当负载变化时仍可以控制电机转子维持一定的转速。 MCS-51单片机是美国英特尔公司生产的一系列单片机的总称,是一种集成电路芯片,采用超大规模技术把具有数据处理能力的微处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入输出接口电路、定时计算器、串行通信口、脉宽调制电路、A/D转换器等电路集成到一块半导体硅片上,这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。 本论文将介绍基于MCS-51单片机控制直流无刷电动机的设计,它可以实现控制直流无刷电动机的启动、停止、急停、正反转、加减速等功能。 关键词:单片机,直流无刷电动机,控制系统

直流无刷电动机是在直流电动机的基础之上发展而来的,它是步进电动机的一种,继承了直流电动机的启动转矩大、调速性能好等特点克服了需要换向器的缺点在交通工具、家用电器及中小功率工业市场占有重要的地位。直流无刷电动机不仅在电动自行车、电动摩托车、电动汽车上有着广泛的应用,而且在新一代的空调机、洗衣机、电冰箱、吸尘器,空气净化器等家用电器中也有逐步采用的趋势,尤其是随着微电子技术的发展,直流无刷电动机逐渐占有原来异步电动机变频调速的领域,这就使得直流无刷电动机的应用围越来越广。 本设计就是基于MCS-51系列单片机控制直流无刷电动机,利用所学的知识实现单片机控制直流无刷电动机的启动、停止、急停、正反转,加减速等控制,并对直流无刷电动机运行状态进行监视和报警。详细介绍单片机的种类、结构、功能、适用领域和发展历史、未来前景及其直流无刷电动机的工作原理、控制结构等容,既着重单片机的基本知识、功能原理的深入阐述,又理论联系实际详细剖析单片机控制直流无刷电动机的过程。 1.直流无刷电动机的基本组成 直流无刷电动机是在直流电动机的基础上发展而来的,直流无刷电动机继承了直流电动机启动转矩大、调速性能好的优点,克服了直流电动机需要换向器的缺点,在交通工具、家用电器等生活的方方方面面占有重要的地位。 由于直流无刷电动机既具有交流电动机的结构简单、运行可靠、维护方便等一系列优点,又具备直流电动机的运行效率高、无励磁损耗以及调速性能好等诸多优点,故在当今国民经济各领域应用日益普及。 直流无刷电动机主要由电动机本体、位置传感器和电子开关线路三部分组成。其定子绕组一般制成多相(三相、四相、五相不等),转子由永久磁钢按一定极对数(2p=2,4,…)组成。图3-1所示为三相两极直流无刷电机结构。 三相定子绕组分别与电子开关线路中相应的功率开关器件联结,A、B、

基于89C51单片机直流电机控制及其程序

课程设计说明书 院系:船舶工程学院 班级: 姓名: 学号:

机电综合课程设计 设计题目:直流电机控制系统 立体目的:通过本次课程设计,达到培养学生综合应用所学知识,分析和解决实际工程问题,锻炼创造能力的目的。 技术要求:设计直流电机控制系统,包括:机械装配图,控制原理图和接线图,并编制相应的控制程序。 完成基于89C51单片机开发板的直流电机速度控制,启停 及正反转控制。 一.机械系统 由直流电机驱动滚珠丝杠实现滑台的平移。将电机的旋转运动通过滚珠丝杠转换为平台的直线运动。 系统组成:直流电机,底板,支座,光杠,滚珠丝杠,平台等。

二.电气系统 1. 直流电机 电机采用无刷直流电机,型号为:BL-2203C。其特点是调速范围宽,低速力矩大,运行平稳,低噪声,高效率。 电机接线,两股线,一股为电机线,一股为电机霍尔线。 2.驱动器 驱动器采用无刷直流电机驱动器。接线端子说明:

驱动器由220V交流供电。 驱动器调速方式 (1)内部电位器调速:逆时针旋转驱动器控制面板上的电位器,电机速度减小,顺时针则转速增大:由于测速需 要响应时间,速度显示会滞后。 (2)外部输入调速:将外接电位器的两端分别接于驱动器的“+12”和“COM”端上,将调解段接于“AVI”上 即可使用外接电位器调速,也可以通过其他控制单元 输入模拟电平信号到“AVI”端实现调速。 (3)多段速度选择:通过控制驱动器上的CH1—3三个端子的状态可以选择内部预先设定的几种转速。 电机运行/停止控制(R/S) 通过控制端子“R/S”相对于“COM”的通、断可以控制电机的运行和停止。端子“R/S”内部以电阻上 拉到+12,可以配合无源触点开关使用,也可以配合集电极开路的PLC 等控制单元;当“R/S”与端子“COM”断开时电机运行,反之电机停止。使用运行/停止端控制电机停止时,电机为自然停车,其运动规律与负载惯性有关;

基于AT89C51单片机的步进电动机控制系统设计

重庆科技大学 本科毕业论文 基于AT89C51单片机的步进电动机控制系统 设计 考生姓名: XXXXX X 准考证号: XXXXXXXXXXXX 专业层次:本科院(系):XXXXXXXXXXXXXXXXXXX 指导教师: XXXXXX 职称:讲师 重庆科技大学 二O一二年月日

基于AT89C51单片机的步进电动机控制系统 设计 考生姓名: XXXXXX 准考证号: XXXXXXXXXXXX 专业层次:本科 指导教师: XXXXXXX 院(系):机械与动力工程学院 重庆科技大学 二O一二年九月二十日

摘要 随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。 步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。 本设计是采用AT89C51单片机对步进电机的控制,通过I/O口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。 实践证明,基于单片机控制的步进电机比传统的步进控制器具有更好的性能,更加简单、方便、可靠。本设计的主要研究对象就是开环伺服系统中最常用的执行器件——步进电机。 关键词:步进电机,单片机,正反转控制,键盘控制,LCD液晶显示

基于单片机STC89C52的直流电机PWM调速控制系统

第一章:前言 Pwm 电机调速原理对于电机的转速调整,我们是采用脉宽调制(PWM)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端EN1 和EN2 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。此电路中用微处理机来实现脉宽调制,通常的方法有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。 (2)硬件实验自动产生PWM 信号,不占用CPU 处理的时间。这就要用到STC89C52的在PWM模式下的计数器1,具体内容可参考 相关书籍。 51 单片机PWM 程序 产生两个PWM,要求两个PWM 波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256, PWM 这个功能在PIC 单片机上就有,但是如果你就要用51 单片机的

话,也是可以的,但是比较的麻烦.可以用定时器T0来控制频率,定时器T1 来控制占空比:大致的的编程思路是这样的:T0 定时器中断是让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1 是让IO 口输出低电平,这样改变定时器T0 的初值就可以改变频率,改变定时器T1 的初值就可以改变占空比。 前言: 直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。 近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过 PWM 方式控制直流电机调速的方法就应运而生。 采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。而用PWM 技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。并且 PWM 调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。 随着我国经济和文化事业的发展,在很多场合,都要求有直流电机 PWM 调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。 本设计任务: 任务: 单片机为控制核心的直流电机PWM 调速控制系统 设计的主要内容以及技术参数: 功能主要包括: 1) 直流电机的正转; 2) 直流电机的反转; 3) 直流电机的加速; 4) 直流电机的减速; 5) 直流电机的转速在数码管上显示; 6) 直流电机的启动; 7) 直流电机的停止; 第二章:总体设计方案

单片机课程设计完整版pwm直流电动机调速控制系统》

单片机原理及应用课程设计报告设计题目: 学院: 专业: 班级: 学号: 学生姓名: 指导教师: 年月日 目录

设计题目:PWM直流电机调速系统 本文设计的PWM直流电机调速系统,主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路以及独立按键组成的电子产品。电源采用78系列芯片实现+5V、+15V对电机的调速采用PWM波方式,PWM是脉冲宽度调制,通过51单片机改变占空比实现。通过独立按键实现对电机的启停、调速、转向的人工控制,LED实现对测量数据(速度)的显示。电机转速利用霍尔传感器检测输出方波,通过51单片机对1秒内的方波脉冲个数进行计数,计算出电机的速度,实现了直流电机的反馈控制。 关键词:直流电机调速;定时中断;电动机;波形;LED显示器;51单片机 1 设计要求及主要技术指标: 基于MCS-51系列单片机AT89C52,设计一个单片机控制的直流电动机PWM调速控制装置。 设计要求 (1)在系统中扩展直流电动机控制驱动电路L298,驱动直流测速电动机。 (2)使用定时器产生可控的PWM波,通过按键改变PWM占空比,控制直流电动机的转速。 (3)设计一个4个按键的键盘。 K1:“启动/停止”。 K2:“正转/反转”。 K3:“加速”。 K4:“减速”。 (4)手动控制。在键盘上设置两个按键----直流电动机加速和直流电动机减速键。在手动状态下,每按一次键,电动机的转速按照约定的速率改变。 (5)*测量并在LED显示器上显示电动机转速(rpm).

(6)实现数字PID调速功能。 主要技术指标 (1)参考L298说明书,在系统中扩展直流电动机控制驱动电路。 (2)使用定时器产生可控PWM波,定时时间建议为250us。 (3)编写键盘控制程序,实现转向控制,并通过调整PWM波占空比,实现调速; (4)参考Protuse仿真效果图:图(1) 图(1) 2 设计过程 本文设计的直流PWM调速系统采用的是调压调速。系统主电路采用大功率GTR为开关器件、H桥单极式电路为功率放大电路的结构。PWM调制部分是在单片机开发平台之上,运用汇编语言编程控制。由定时器来产生宽度可调的矩形波。通过调节波形的宽度来控制H电路中的GTR通断时间,以达到调节电机速度的目的。增加了系统的灵活性和精确性,使整个PWM脉冲的产生过程得到了大大的简化。 本设计以控制驱动电路L298为核心,L298是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。 本设计以AT89C52单片机为核心,如下图(2),AT89C52是一个低电压,高性能 8位,片内含8k bytes的可反复擦写的只读程序存储器和256 bytes的随机存取数据存储器(),器件采用的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 图(2) 对直流电机转速的控制即可采用开环控制,也可采用闭环控制。与开环控制相比,速度控制闭环系统的机械特性有以下优越性:闭环系统的机械特性与开环系统机械特性相比,其性能大大提高;理想空载转速相同时,闭环系统的静差(额定负载时电机转速降落与理想空载转速之比)要小得多;当要求的静差率相同时, 闭环调速系统的调速范围可以大大提高。直流电机的速度控制方案如图(3)所示。

基于51系列单片机控制步进电机调速实验 (自动保存的)

基于51系列单片机控制步进电机调速实验 实验指导书 仇国庆编写 重庆邮电大学自动化学院 自动化专业实验中心 2009年2月

基于51系列单片机控制步进电机调速实验 实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED 数码管显示。 实验原理: 步进电机控制原理 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所 以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将 逐渐扩大。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来 进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由 脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号 可以由单片机产生。 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几 何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻 两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐, B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)

基于51单片机的直流电机调速的方法

基于51单片机的直流电机调速的方法 田云史洁黑龙江农业经济职业学院机电工程系157041 0 引言 许多单片机爱好者,在设计一些单片机控制系统的时候,都会采用小型直流电动机来制作各种各样的电子设备,因为直流电机调速范围广,易于平滑调速,启动、制动和过载转矩大,易于控制,可靠性较高。对于直流电机的控制,无非是控制其转向,以及速度。转向的控制方法比较简单,只要改变电机的通电极性就可改变其旋转方向。在这里,我们重点讨论如何对其速度上的控制,对其调速可以采用多种办法。对于直流电机转速的调节,最常用的办法是通过改变电枢端的电压来实现,传统的思路是通过调节电枢电路电阻R的阻值来改变端电压,以达到调速的目的。但由于接入的电阻消耗了部分电压,因此这种传统的调速方法效率很低。随着电力电子技术的发展,出现了许多新的电枢电压控制方法,其中PWM(Pulse Width Modulation)控制是常用的一种调速方法。PWM控制是指在保持周期丁不变的情况下,通过调节开关导通的时间对脉冲宽度进行调制,从而达到调节电机转速的目的。在脉宽调速系统中,电机电枢两端的电压是脉宽可调的脉冲电压,在输出脉冲频率足够快的情况下,由于惯性的存在,只要按照一定的规律改变通、断电的时间,即可使电机的速度达到并保持一个稳定值。对于直流电机,采用PWM控制技术构成的无级调速系统,启停时对直流系统无冲击,并且具有启动功耗小、运行稳定的特点。本文在给出直流电机调速和PWM实现方法的基础上,提供一种用51单片机软件实现PWM调速的方法。 1 PWM基本原理 PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。如图1所示,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

基于单片机的直流电机调速系统的课程设计

一、总体设计概述 本设计基于8051单片机为主控芯片,霍尔元件为测速元件, L298N为直流伺服电机的驱动芯片,利用 PWM调速方式控制直流电机转动的速度,同时可通过矩 阵键盘控制电机的启动、加速、减速、反转、制动等操作,并由LCD显示速度的变化值。 二、直流电机调速原理 根据直流电动机根据励磁方式不同,分为自励和它励两种类型,其机械特性曲线有所不同。但是对于直流电动机的转速,总满足下式: 式中U——电压; Ra——励磁绕组本身的内阻; ——每极磁通(wb ); Ce——电势常数; Ct——转矩常数。 由上式可知,直流电机的速度控制既可以采用电枢控制法也可以采用磁场控制法。磁场控制法控制磁通,其控制功率虽然较小,但是低速时受到磁场和磁极饱和的限制,高速时受到换向火花和换向器结构强度的限制,而且由于励磁线圈电感较大,动态响应较差,所以在工业生产过程中常用的方法是电枢控制法。 电枢控制法在励磁电压不变的情况下,把控制电压信号加到电机的电枢上来控制电机的转速。传统的改变电压方法是在电枢回路中串连一个电阻,通过调节电阻改变电枢电压,达到调速的目的,这种方法效率低,平滑度差,由于串联电阻上要消耗电功率,因而经济效益低,而且转速越慢,能耗越大。随着电力电子的发展,出现了许多新的电枢电压控制法。如:由交流电源供电,使用晶闸管整流器进行相控调压;脉宽调制(PWM)调压等。调压调速法具有平滑度高、能耗低、精度高等优点,在工业生产中广泛使用,其中PWM应用更广泛。脉宽调速利用一个固定的频率来控制电源的接通或断开,并通过改变一个周期内“接通”和“断开”时间的长短,即改变直流电机电枢上的电压的“占空比”来改变平均电. 压的大小,从而控制电动机的转速,因此,PWM又被称为“开关驱动装置”。如 果电机始终接通电源是,电机转速最大为Vmax,占空比为D=t1/t,则电机的平均转速:Vd=Vmax*D,可见只要改变占空比D,就可以调整电机的速度。平均转 速Vd与占空比的函数曲线近似为直线。 三、系统硬件设计

基于单片机的直流电机转速测量与显示-精品

目录 绪论 (2) 第1章参数计算与设备选型 (3) 1.1控制芯片 (3) 1.2测速发电机 (4) 1.3模数转化器件——ADC0809 (6) 第2章系统设计 (9) 2.1 系统方框图 (9) 2.2 硬件设计 (10) 2.2.1 直流测速发电机 (10) 2.2.2 ADC0809与单片机连接 (10) 2.2.3 数码管 (11) 2.2.4 综合接线图 (11) 2.3 软件设计 (12) 2.3.1 程序设计思路说明 (12) 2.3.2 总程序控制流程图 (13) 2.3.3 ADC0809工作流程图及程序 (14) 2.3.4显示部分工作流程图及程序 (15) 第3章结论 (18) 参考文献 (19)

绪论 在现代工业自动化高度发展的时期,几乎所有的工业设备都离不开电机,形形色色的电机在不同领域发挥着很重要的作用。与之而来的问题是,如何更好地控制电机,对于不同的场合,对电机的控制要求是不同的,但大部分都会涉及到直流电机的转速测量,从而利用转速来实施对直流电机的控制。 直流电机转速作为直流电机的一项重要技术指标,在各个应用场合都有重要的研究价值,例如在发动机,电动机,机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量,显示其转速及瞬时速度等,转速是其他大部分技术参数的计算来源,因此,准确测量直流电动机的转速具有重要的研究意义和理论价值。 目前,对直流电动机的速度检测方法很多,从整体上可分为模拟检测和数字检测方法。 模拟检测:即利用测速电机作为发电机,通过检测反电势E的大小和极性可得到转速N和电机转向,采用这种方法直接可以得到转速N和输出电压的特性曲线,直观,但也有很多不足,比如在高速和低速情况下实际输出偏离理想特性。 数字检测技术:即通过分析数字信号产生的一系列脉冲间接获取电机转速。如光电旋转编码器是将检测圆盘划分为等距的三个同心圆,最外环和次外环分别用等距的黑白条纹分开,且最外环和次外环的缝隙位置相位差为90度,用于判断电机的转速,最内环只有一个黑条纹,用作定位脉冲或者是复位脉冲,利用光电编码器输出的脉冲可以计算转速,具体的又可分为M法,T法和M\T法。 此外,市场上已经有了技术成熟的电机测速装置,如利用霍尔元件设计制作的直流电机测速仪等,凭借其精度高,稳定性好等优势占有重要的一席之地。 而本次微机控制原理课程设计的任务是直流电机速度的测量与显示。主要要求是通过测速直流发电机作为传感器,检测直流电机的转速,并输出与转速相关的电压,通过ADC0809芯片将测速发电机输出电压转换成电压的数字信号。控制芯片采用AT89C51将采集转换后的数字信号进行处理,得到转速,并通过四位数码管予以显示。整体上能够完成从转速检测到数据处理到显示的一整套功能。

51单片机控制四相步进电机解析

51单片机控制四相步进电机 2009年07月21日星期二 12:44 51单片机控制四相步进电机 2009-03-01 18:53 接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。这几天给自己的任务就是搞定步进电机的单片机控制。以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下 图所示: 详细内容: https://www.wendangku.net/doc/cf7179765.html,/31907887_d.h tml

拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。 如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四

线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图: C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void)

51单片机控制步进电机程序及硬件电路图

#include static unsigned int count; //计数 static int step_index; //步进索引数,值为0-7 static bit turn; //步进电机转动方向 static bit stop_flag; //步进电机停止标志 static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快static int spcount; //步进电机转速参数计数 void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒 void gorun(); //步进电机控制步进函数 void main(void) { count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; //允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许 TH0 = 0xFE;

TL0 = 0x0C; //设定时每隔0.5ms中断一次TR0 = 1; //开始计数 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do{ speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; }while(1); } //定时器0中断处理 void timeint(void) interrupt 1 { TH0=0xFE; TL0=0x0C; //设定时每隔0.5ms中断一次count++; spcount--; if(spcount<=0) { spcount = speedlevel; gorun(); } } void delay(unsigned int endcount) { count=0; do{}while(count

相关文档
相关文档 最新文档