- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例9.1 设置两个按键SW1和SW2及两个指示灯D1和D2,按SW1键,电机以全速方式运行,且发光二极管D1亮,D2灭;按SW2键,电机以全速的1/2方式运行,且发光二极管D1灭,D2亮。两个按键SW1和SW2分别接单片机的P1.0和P1.1引脚,指示灯D1和D2分别接P2.1和P2.2引脚,三极管Q1作为直流电机的驱动电路给绕组提供较大的电流。
;源程序如下:
#include reg51.h
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P2^1; //定义发光二极管控制位
sbit LED2=P2^2;
sbit LR5=P2^0; //定义三极管控制位
void delay1ms(uchar t) //定义延时函数
{uchar i,j;
for(i=0;it;i++)
for(j=0;j120;j++);
}
;main()
{ uchar key,flag;
LR5=0; //三极管截止,电机停转
while(1)
{ if(P1!=0xff) //有键按下
{delay1ms(10); //延时去抖动
key=P1;
while(P1!=0xff);
switch(key)
{case 0xfe: { flag=2;break;}
case 0xfd: { flag=1;break;}
}
}
;if(flag==2){ LR5=1;LED1=0;LED2=1;} //全速运行
if(flag==1) //半速运行
{ LR5=1;delay1ms(20);
LR5=0;delay1ms(20);
LED1=1;LED2=0;
}
}
}
; 步进电动机接口?电路
步进电动机接收步进控制脉冲,输出角位移(或线位移)。它具有启停迅速、步距精确、控制方便等优点。广泛应用于需要精确定位的控制系统和仪器设备,如各类数控机床、某些光学仪器、计算机的打印机、磁盘驱动器等。随着计算机的广泛应用,目前步进电动机的运行一般都采用微机控制。步进电动机已成为微机控制系统中的主要执行元件之一。 ?; 图中电动机定子上有6个磁极:U1、U2、V1、V2、W1、W2,每个磁极上有5个均匀分布的矩形小齿。相邻两个磁极之间相隔60。相对的两个磁极组成一相,磁极上绕有一相线圈。此图所示的为三相步进电动机(U1-U2相,V1-V2相,W1-W2相)。当某一相绕组有电流通过时,该绕组所在的两个磁极形成N极和S极。
;工作方式和步距角
仍以三相步进电动机为例说明,有三种工作方式:
(1)单三拍通电方式为U→V→W→U→…。
(2)双三拍通电方式为 UV→VW→WU→UV→…。
(3)六拍通电方式为U→UV→V→VW→W→WU→U→…。
通电顺序可正可反。每一次通电(一拍)转子转过的角度称为步距角θs,其表达式为:
式中N为运行拍数;Zr为转子齿数。
当Zr=40时,在单三拍和双三拍方式下,θs=3o;在六拍方式下,θs=1.5o。
;对于三相步进电动机不同的工作方式,可以确定对P1口所送的数码(称为控制字)以及其变化规律如表9-1~9-3所示。
;任务9-1 直流电机正反转控制
1.目的与要求
通过单片机控制直流电机正反转电路的设计与制作,掌握驱动电路的设计与直流电机正反转的控制方法。
设计要求:设置3个按键分别控制直流电机的正转、反转与停止;设置3个指示灯对应电机的3种运行状态。
2.电路设计
单片机控制直流电机如图,P3口低3位分别接3个按键控制直流电机的正转、反转、停止,P0口低3位分别接3个发光二极管指示电机的运行状态,正转时D1亮,反转时D2亮,停止时D3亮。8个NPN三极管接成复合管构成电机的驱动电路。
;3.源程序设计
#include reg51.h
sbit k1=P3^0; //定义按键控制位
sbit k2=P3^1;
sbit k3=P3^2;
sbit D1=P0^0; //定义指示灯控制位
sbit D2=P0^1;
sbit D3=P0^2;
sbit A=P1^0; //定义电机绕组通电方向控制位
sbit C=P1^1;
;void main()
{ D1=1;D2=1;D3=0;
while(1)
{ if(k1==0) //k1按下,电机正转
{
文档评论(0)