微机原理 无刷直流风扇调速与测速分析

合集下载

无刷直流电机调速系统的控制原理

无刷直流电机调速系统的控制原理

无刷直流电机调速系统的控制原理下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

此文下载后可定制随意修改,请根据实际需要进行相应的调整和使用。

并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Downloaded tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The documents can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!无刷直流电机调速系统是一种能够实现精准控制电机转速的技术,它在工业生产和生活中有着广泛的应用。

无刷直流电机测速原理

无刷直流电机测速原理

无刷直流电机测速原理无刷直流电机是一种常见的电机类型,其具有高效率、高功率密度、低噪音等优点,因此被广泛应用于各种领域。

测速是无刷直流电机控制中非常重要的一部分,其原理如下:1. 电机测速原理无刷直流电机的转速可以通过检测电机内部的反电动势(back EMF)来实现。

当电机运转时,由于磁场变化引起线圈内部产生反向电势,这个反向电势随着转速的增加而增加。

因此,通过检测反向电势大小可以确定电机的转速。

2. 反向电势检测原理为了实现反向电势检测,需要在驱动无刷直流电机时采用PWM调制方式。

PWM调制方式是指通过改变占空比来控制输出信号的有效值。

在PWM调制方式下,输出信号会周期性地从高状态(+V)到低状态(-V),然后再回到高状态。

当输出信号处于高状态时,线圈中会产生磁通,并且随着时间的推移这个磁通会逐渐增加。

当输出信号从高状态变为低状态时,线圈内部产生的磁通会逐渐减少,同时也会产生反向电势。

反向电势的大小与线圈中的磁通变化率成正比。

3. 反向电势检测电路原理为了实现反向电势检测,需要在无刷直流电机驱动电路中添加一个反向电势检测电路。

该电路包括一个比较器和一个滤波器。

比较器用于将反向电势信号与参考信号进行比较。

参考信号可以是一个固定的阈值,也可以是由微控制器生成的一个可变参考信号。

滤波器用于去除噪声和干扰,以保证检测到的反向电势信号稳定可靠。

常用的滤波器包括低通滤波器和带通滤波器等。

4. 反向电势测速方法通过上述原理和方法,可以实现无刷直流电机的反向电势测速。

具体步骤如下:(1)将PWM调制方式应用到无刷直流电机驱动中;(2)通过比较器将反向电势信号与参考信号进行比较;(3)通过滤波器去除噪声和干扰;(4)根据反向电势信号的大小计算出电机转速。

总之,无刷直流电机测速原理是基于反向电势检测的,通过比较器和滤波器等电路将反向电势信号转换为可靠的转速信号。

这种方法简单、可靠,广泛应用于各种无刷直流电机控制系统中。

微机原理无刷DC风机调速及测速.doc

微机原理无刷DC风机调速及测速.doc

微机原理无刷DC风机调速及测速理工学院微机原理(三级)项目报告名称:微机原理课程设计项目名称:无刷DC风扇速度调节和速度测量讲师;█ █部门:机电专业:机械设计、制造和自动化团队成员的信息科学数量;姓氏:王█ █团队成员信息编号:姓氏:郭█ █完成时间:结果从XXXX 12月1日到XXXX 1月3日:审阅者:目录一、学习目标 (1)第二,该项目要求 (1)第三,速度测量和调节系统的硬件构成 (1)四、程序流程图和解释思路 (3)五、风机转速与占空比的关系表及曲线 (4)六、设计过程 (5)七、设计问题分析 (12)八.计划摘要 (13)一、学习目标本系统作业的目的是:(1)通过脉宽调节改变无刷直流风扇的转速;(2)通过风扇旋转时产生的脉冲信号测量并显示风扇的转速;(3)将每个风扇组从某一转速(600转/分)到另一转速(XXXX 12月1日至XXXX 1月3日)的结果进行比较:审阅者:目录一、学习目标 (1)第二,该项目要求 (1)第三,速度测量和调节系统的硬件构成 (1)四、程序流程图和解释思路 (3)五、风机转速与占空比的关系表及曲线 (4)六、设计过程 (5)七、设计问题分析 (12)八.计划摘要 (13)一、学习目标本系统作业的目的是:(1)通过脉宽调节改变无刷直流风扇的转速;(2)通过风扇旋转时产生的脉冲信号测量并显示风扇的转速;(3)比较每组风扇从某一速度(600转/分)稳定运行到另一速度(2000转/分)所需的时间。

通过比较测试结果的估计结果并讨论产生差异的主要原因,学生可以展示他们对无刷直流风扇数学模型建立和调整方法的局限性的深入理解。

二.项目要求检查项目要求速度显示风扇速度可在发光二极管上显示,速度单位为r/min,刷新周期约为1秒,风扇速度可调节,风扇速度可在700时改变:根据要求接线:黄线连接到Vcc,黑线接地,绿线连接到P3 ,蓝线连接到P2 .输出:输出,如下图所示Iv .画一个程序流程图并解释程序思想。

微机原理大作业-测量电风扇转速的方案

微机原理大作业-测量电风扇转速的方案

测量电风扇转速的方案0 引言电风扇是每家每户都会有的一个电器,在空调尚未普及之前,炎炎夏日人们能在风扇面前吹着风就已经是很好的享受了。

但是不知道大家有没有想过,我们常见常用的风扇叶片的转速究竟是多少呢。

接下来我们便来探讨测量电风扇转速的一种方法。

1 可行性研究1.1 背景风扇转速是指风扇扇叶每分钟旋转的次数,单位是rpm。

风扇转速由电机内线圈的匝数、工作电压、风扇扇叶的数量、倾角、高度、直径和轴承系统共同决定。

在风扇结构固定的情况下,直流风扇(即使用直流电的风扇)的转速随工作电压的变化而同步变化。

风扇的转速可以通过内部的转速信号进行测量,也可以通过外部进行测量(外部测量是用其他仪器看风扇转的有多快,内部测量则直接可以到BIOS里看,也可以通过软件看。

内部测量相对来说误差大一些)。

风扇转速与散热能力并没有直接的关系,风量是决定散热能力的根本条件,更高的风扇转速会带来更高的噪声,选购散热器产品时如果风量差不多,可以选择转速低的风扇,在使用时会安静一些。

1.2 应用现状/对比案例查阅资料可知,在其他的转速测量方法中,有一些采用了内部测量转速的方法需要采集的电子参数过多,电路逻辑分析也过于复杂(如图1、图2),故在电风扇转速的测量中,我们应尽量选用外部测量的方法,这样可以简化操作并有效减小误差。

图1其他方案转速采集电路仿真图2其他方案控制系统示意图1.3 效益分析本方案中所选取的单片机、传感器均为常见且易得的器件,在花费上可以有效节省费用。

2 总体方案/初步设计2.1 方案总述针对在工程实践中很多场合都需要对转速这一参数进行精准测量的目的,采用以STC89C51芯片为核心,结合转动系统、光电传感器、显示模块等构成光电传感器转速测量系统,实现对电风扇转速的测量。

通过测试表明该系统具有结构简单、所耗成本低,测量精度高、稳定可靠等优点,具有广阔的应用前景。

2.2 总体方案系统总体结构如图3所示,主要包含以单片机为核心的主控电路、以传感器为主的信息采集处理单元、转动系统、显示模块等。

剖析风扇速度控制器原理

剖析风扇速度控制器原理

剖析风扇速度控制器原理1 概述IC设计者力求在越来越小的封装里放入更多高速运行的晶体管,但这必将导致发热。

为了把这些高功率IC放进更小的封装内,就必须有效解决热管理问题。

在很多应用中使用风扇来降温,但风扇会带来机械故障,增加功耗和噪声。

因此,应当对风扇速度进行监测和控制以解决这些问题,从而使风扇工作更可靠,功耗和噪声更低。

由于直流无刷风扇易用、可靠,因此是大部分电子产品的首选方案。

它是一个两端器件,加上直流电压即可工作。

其直流电压电压有5V,12V,24V和48V,目前选和的12V风扇较多。

随着12V电源的减少,5V风扇的用量将会增加。

电信领域一般使用48V风扇。

直流无刷风扇的换向整流是在风扇内部通过电子方式控制的,老式直流风扇使用机械工刷子,因而会产生较高的EMI,并易于损坏。

而无刷风扇用电子传感器和开关来替代机械式刷子,从而延长了使用寿命,是一种简单易用、工作可靠的两端器件。

直流无刷风扇的端电压不同,其转速和消耗的电流也不同(成正比)。

尽管直流无刷风扇有很高的可靠性,但它仍然是机械器件。

在长时间使用时,其风扇速度和冷却效率可能会下降甚至失效,所以要对风扇进行连续监测。

很多风扇制造商提供有不同的监控方式,一般分为:报警传感器和速度传感器两类。

利用报警传感器可在风扇速度低于某个门限值时给出报警信号。

而某些制造商则用速度传感器给出与频率成正比的风扇速率的输出信号,一般每转娄产生2个脉冲。

报警传感器和速度传感器都可以提供漏极开路或内部上拉输出,内部上拉可以是TTL电平或电源电压。

值得注意的是:用风扇速度控制电源电压的改变将会影响传感器和其它电路。

而且实际设计中必须考虑风扇的使用条件,(如最恶劣的温度范围、最大功耗、风扇的误差和使用寿命等),工作在适当的条件下可以降低风扇速度,而在最恶劣的条件下,则应加快风扇速度。

合理控制风扇速度能够降低系统的噪声和功耗,从而延长风扇的寿命并减少灰尘。

脉冲宽度调制法(PWM)是将风扇电源的开关频率设为固定值,通过改变其占空比来调节风扇速度的方法。

直流风扇电机转速测量与PWM控制

直流风扇电机转速测量与PWM控制

1直流电机……………………………………………………………..6.1.1直流电机的结构 (7)1.2直流电机的原理 (7)1.3直流电机的主要技术参数 (8)1.4直流电机调速技术指标 (9)2 .单片机的相关知识 (9)2.1单片机的简介 (9)2.2单片机的发展史 (9)2.3单片机的特点 (10)2.4 AT89C51单片机的介绍 (11)3. 硬件电路的设计 (13)3.1 控制电路的设计………………………………………………………….13.3.2 隔离电路的设计 (14)3.3驱动电路的设计 (14)3.4续流电路的设计 (17)3.5 整个电路原理图 (18)4. 软件设计4.1 主程序设计 (18)4.2 数码显数设计…………………………………………………………….20.4.3功能程序设计 (20)5.结束语 (24)参考文献 (24)摘要本课题是对直流电机PWM调速器设计的研究,主要实现对电动机的控制。

因此在设计中,对直流调速的原理,直流调速控制方式以及调速特性,PWM基本原理及实现方式进行了全面的阐述。

为实现系统的微机控制,在设计中,采用了AT89S52单片机作为整个控制系统的控制电路的核心部分,配以各种显示,驱动模块,实现对电动机的转速的显示和测量;由命令输入模块,光电隔离模块及H型驱动模块组成。

采用带中断的独立式键盘作为命令的输入,单片机在程序的控制下,不断给光电隔离电路发送PWM波形,H型驱动电路完成电机的正反转控制。

在设计中,采用PWM调速方式,通过改变PWM的占空比从而改变电动机的电枢电压,进而实现对电动机的调速。

设计的整个控制系统,在硬件结构上采用了大量的集成电路模块,大大的简化了硬件电路,提高了系统的稳定性和可靠性,使整个系统的性能得到提高。

1 直流电机1.1直流电机的结构直流电机的结构应由定子和转子两大部分组成。

直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。

无刷直流电动机调速知识讲解

无刷直流电动机调速知识讲解
无刷直流电动机调速
9.1 同步电动机变压变频调速系统的特点及基本类型
同步电动机的定子与三相异步电动机的一样,而转子是磁极,由 直流励磁或永久磁铁励磁,是交流电动机中两大机种之一。同步 电动机因其转速n与供电电源频率f1之间保持严格的同步关系而得 名。只要供电电源的频率f1不变,其转速n就绝对不变。 同步电动机的应用范围也比较广泛,小到电子钟和记录仪表的定 时旋转机构,大到发电机组、空气压缩机、鼓风机等无不利用其 转速恒定的特点。
上述逆变器为1200通电型的六拍逆变器,每一时刻都只有两只功率 管导通,至于哪两只功率管导通则由转子位置检测器发出的信号 来控制。
10
二、控制方式 按照三相星型桥式接法为例说明其工作方法:
1
3
5
A
4
6
2
B C
逆变器为桥式接法、三相绕组为星型接法
1、两两导通方式 逆变器中功率管导通的顺序一般安排为: ..V 1 . .V 2 . .V 3 V 4 V 5 V 6 V 1 ..... 各触发脉冲相互间隔600,任意时刻有2只功率管导通,每只管子导通 时间为1200,各管子之间换流是在相邻桥臂中进行的。
性或容性三种状态下(同步补偿机就工作在容性状态下)。可调节转子
励磁电流改变输入功率因数,使其在 cos 1下运行。
异步电动机靠加大转差率提高转矩,同步电动机靠加大功率角来提高转 矩。(功率角为定子相电流与感应电动势的夹角)。
4
例如,同步电动机的变频启动,转子先加励磁电流,定子绕组输入频率很 低的三相交流电,由于定子(电枢)旋转磁通势的转速很低,可带动转子 开始旋转。将定子频率逐步增加,转子转速随之逐步升高,到达额定转速 时,启动过程结束。
2
1
iAC A

微机原理实验报告直流电机测速实验

微机原理实验报告直流电机测速实验

微机原理实验报告直流电机测速实验本科实验报告课程名称:微机原理及接口技术课题项目:直流电机测速实验专业班级:电科1201 学号:学生姓名:王天宇指导教师:任光龙19 年5 月24 日直流电机测速实验一、实验目的1. 掌握8254 的工作原理和编程方法2. 了解光电开关,掌握光电传感器测速电机转速的方法。

二、实验内容光电测速的基本电路有光电传感器、计数器/ 定时器组成。

被测电机主轴上固定一个圆盘,圆盘的边缘上有小孔。

传感器的红外线发射端和接收端装在圆盘的两侧,电机带动圆盘转到有孔的位置时,红外线光通过,接收管导通,输出低电平。

红外线被挡住时,接收截止,输出高电平。

用计数器/ 定时器记录在一定时间内传感器发出的脉冲个数,就可以计算车电机的转速,三、线路连接线路连接:8254计数器/定时器0和2作为定时器,确定测速时间,定时器0的CLKO 连1MHZ 永冲频率,OUT0乍为定时器2的输入,与CLK2相连,输出OUT% 8255的PA0端相连。

GATEC 和GATE2均接+5V, 8354计数器/定时器1作为计数器,,输入CLK1与直流电机计数端连接,GATE1与8254的PC0相连。

电机DJ端与+5V〜0V模拟开关SW1相连。

女口下图所示。

四、编程提示8254 计数器/定时器1作为计数器记录脉冲个数,计数器/定时器0和2作为定时器,组成10〜60秒定时器,测量脉冲个数,算出点击每分钟的转速并显示在屏幕上,8255 的PAO根据OUT2勺开始和结束时间,通过PCO向8254计数器/定时器1发出开始和停止计数信号。

五、流程图六、实验程序:DATA SEGMENTIOPORT EQU 0D880H-0280H IO8255K EQU IOPORT+283HIO8255A EQU IOPORT+280H IO8255C EQU IOPORT+282H IO8254K EQU IOPORT+28BH IO82542 EQU IOPORT+28AH IO82541 EQU IOPORT+289H IO82540 EQU IOPORT+288HMESS DB 'STRIKE ANY KEY,RETURN TO DOS!', 0AH, 0DH,'$' COU DB 0 COU1 DB 0 COUNT1 DB 0 COUNT2 DB 0 COUNT3 DB 0 COUNT4 DB 0 DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AXMOV DX, OFFSET MESS MOV AH, 09HINT 21H MOV DX, IO8254K MOV AL, 36HOUT DX, AL MOV DX, IO82540MOV AX, 50000 OUT DX, AL NOP NOPMOV AL, AH OUT DX, ALMOV DX, IO8255K MOV AL, 90H OUT DX, ALMOV DX, IO8255C MOV AL, 00OUT DX, AL LL: MOV AH, 01H INT 16HJNZ QUIT1 MOV DX, IO8254K MOV AL, 70HOUT DX, ALMOV DX,IO82541 MOV AL,0FFH OUT DX,AL NOP NOPOUT DX, ALMOV DX, IO8254K MOV AL, 90HQUIT1: A0: A1: DISP OUT DX, AL MOV DX, IO82542 MOV AL, 100OUT DX, AL MOV DX, IO8255C MOV AL, 01HOUT DX, AL JMP A0 JMP QUITMOV DX, IO8255A IN AL, DX AND AL, 01HJZ A1 MOV DX, IO8255C MOV AL, 00HOUT DX, AL MOV DX, IO8254K MOV AL, 70H OUT DX, ALMOV DX, IO82541 IN AL, DX MOV BL, AL IN AL, DXMOV BH, AL MOV AX, 0FFFFHSUB AX, BX CALL DISP MOV DL, 0DH MOV AH,02 INT 21HMOV DL, 0AH MOV AH, 02 INT 21HJMP LL PROC NEARMOV DX, 0000HMOV CX, 03E8H DIV CXMOV COUNT1, AL MOV AX, DX MOV CL, 64HDIV CL MOV COUNT2, AL MOV AL, AH MOV AH, 00H MOV CL, 10DIV CL MOV COUNT3, AL MOV COUNT4, AH MOV AL, COUNT1 CALL DISP1MOV AL, COUNT2 CALL DISP1MOV AL, COUNT3 CALL DISP1MOV AL, COUNT4 CALL DISP1 RET DISP ENDPDISP1 PROC NEAR AND AL, 0FH CMP AL, 09H JLE NUM ADD AL, 07H NUM: ADD AL, 30H MOV DL, AL MOV AH,02 INT 21H RET DISP1 ENDPQUIT: MOV AH, 4CH INT 21H CODE ENDSEND START七、实验步骤1. 连接试验电路2.打开主机进入DOS环境:开始一运行一cmd确定3. 编辑、汇编、链接汇编语言程序E: CD MASM(1)编辑汇编语言源程序:EDIT MA2.ASM编辑源程序。

4直流电机测速实验(微机原理)

4直流电机测速实验(微机原理)

本科实验报告课程名称:微机原理及接口技术实验项目:直流电机测速实验实验地点:微机原理实验室专业班级:电信1001 学号:2010001207 学生姓名:吴清涛指导教师:任光龙2013年6 月5 日一、实验目的(1)掌握8254的工作原理和编程方法;(2)了解光电开关,掌握用光电传感器测量电机转速的方法。

二、实验内容光电测速的基本电路由光电传感器、计数器/定时器组成。

被测电机主轴上固定一个圆盘,圆盘的边缘上有小孔。

传感器的红外发射端和接收端装在圆盘的两侧,电机带动圆盘转到有孔的位置时,红外光通过,接收管导通,输出低电平。

红外光被挡住时,接收截止,输出高电平。

用计数器/定时器记录在一定时间内传感器发出的脉冲个数,就可以计算出电机的转速。

三、线路连接(1)线路连接如图4.6所示。

8254计数器/定时器0和2作为定时器,确定测速时间,定时器0的CLK0引脚输入1MHz脉冲,输出OUT0引脚作为定时器2的输入,与CLK2引脚相连,输出引脚OUT2与8255的PA0端相连。

GATE0和GATE2均接+5V电源。

8254计数器/定时器1作为计数器,输入引脚CLK1与直流电机计数端连接,GATE1与8255的PC0相连。

电机DJ端与+5V~0V模拟开关SW1相连。

(2)8254计数器/定时器1作为计数器,记录脉冲个数,计数器/定时器0和2作为定时器,组成10~60秒定时器,测量脉冲个数,以此计算出电机每份钟的转速,并显示在计算机屏幕上。

8255的PA0根据OUT2的开始和结束时间,通过PC0向8254计数器/定时器1发出开始和停止计数信号。

四、流程图DA TA SEGMENT ;数据段 IOPORT EQU 0D880H-0280H ;8255端口基地址 IO8255K EQU IOPORT+283H ;8255控制口地址 IO8255A EQU IOPORT+280H ;8255 A 口地址 IO8255C EQU IOPORT+282H ;8255 C 口地址 IO8254K EQU IOPORT+28BH ;8254控制口地址 IO82542 EQU IOPORT+28AH ;8254计数器2端口地址 IO82541 EQU IOPORT+289H ;8254计数器1端口地址 IO82540 EQU IOPORT+288H ;8254计数器0端口地址MESS DB 'STRIKE ANY KEY ,RETURN TO DOS!',0AH ,0DH ,'$' ;提示信息 COU DB 0 ;预留单元并清零 COU1 DB 0 COUNT1DB 0 COUNT2 DB 0COUNT3 DB 0COUNT4 DB 0DA TA ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DA T AST ART:MOV AX,DA T A ;初始化,取段基址MOV DS,AXMOV DX,OFFSET MESS ;MESS首地址MOV AH,09H ;DOS 9号调用,INT 21H ;显示提示信息MOV DX,IO8254K ;DX←8254控制口地址MOV AL,36H ;AL=36H , 控制字OUT DX,AL ;设置计数器0,方式3,先读写低8位,再读写高8位MOV DX,IO82540 ;DX←8254计数器0端口地址MOV AX,50000 ;初始值为50000,输入时钟为1MHz,则输出时钟周期50msOUT DX,AL ;输出低8位NOP ;空操作NOPMOV AL,AH ;AL←AHOUT DX,AL ;输出高8位MOV DX,IO8255K ;DX←8255控制口地址MOV AL,90H, ;AL=90H,控制字OUT DX,AL ;A口方式0输入,PA0输入;C口方式0输出,PC0输出MOV DX,IO8255C ;DX←8255 端口C口地址,MOV AL,00 ;AL=0OUT DX,AL ;PC0=0,则GA TE1为低电平,定时器1禁止计数LL:MOV AH,01H ;DOS 1号调用,判断是否有键按下?INT 16HJNZ QUIT1 ;ZF=0,有键按下,转到标号QUIT1MOV DX,IO8254K ;DX←8254控制口地址MOV AL,70H ;AL=70H,控制字OUT DX,AL ;设置计数器1,方式0,先读写低8位,再读写高8位MOV DX,IO82541 ;DX←8254计数器1地址MOV AL,0FFH ;定时常数,实际为FFFFHOUT DX,AL ;输出低8位NOP ;空操作NOPOUT DX,AL ;输出高8位,开始计数MOV DX,IO8254K ;DX←8254控制口地址MOV AL,90H ;AL=90H,控制字OUT DX,AL ;计数器2,方式0,只读写低8位MOV DX,IO82542 ;DX←8254计数器2地址MOV AL,100 ;AL=100,定时常数OUT DX,AL ;CLK2=50ms,定时常数为100,则OUT2定时时间即检测时间为5秒MOV DX,IO8255C ;DX←8255端口C地址MOV AL,01H ;AL=01HOUT DX,AL ;PC0输出1,即为高电平,定时器1开始计数JMP A0 ;无条件转移到标号A0QUIT1:JMP QUIT ;无条件转移到标号QUITA0:MOV DX,IO8255A ;DX←8255端口A地址A1:IN AL,DX ;读入PA0的值,进行检测AND AL,01H ;判断PA0是否为高电平1?JZ A1 ;ZF=1,即PA0=0,为低电平,转到标号A1,继续检测MOV DX,IO8255C ;ZF=0,即PA0=1,为高电平,定时器2定时5秒结束OUT2输出高电平MOV AL,00H ;AL=00HOUT DX,AL ;8255端口C输出0,定时器1停止计数MOV DX,IO8254K ;DX←8254控制口地址MOV AL,70H ;AL=70HOUT DX,AL ;设置计数器1,方式0,先读写低8位,再读写高8位MOV DX,IO82541 ;DX←8254计数器1地址IN AL,DX ;读入计数器1的内容MOV BL,AL ;BL←AL先读入低8位IN AL,DX ;读入计数器1的内容MOV BH,AL ;BH←AL后读高8位,16位计数值送BXMOV AX,0FFFFH ;AX=FFFFHSUB AX,BX ;AX-BX=计算脉冲个数CALL DISP ;调显示子程序MOV DL,0DH ;DL=0DH,“回车”的ASCII码MOV AH,02 ;DOS 2号调用INT 21HMOV DL,0AH ;DL=0AH,“换行”的ASCII码MOV AH,02 ;DOS 2号调用INT 21HJMP LL ;无条件转到标号LL ,继续检测DISP PROC NEAR ;十六进制数→BCD转换并显示子程序MOV DX,0000H ;DX=0MOV CX,03E8H ;CX=03E8H=1000DIV CX ;AX←DX ,AX÷1000商,DX←DX ,AX÷1000余数MOV COUNT1,AL ;COUNT1←AL,千位MOV AX,DX ;AX←DX余数MOV CL,64H ;CL=64H=100DIV CL ;AL←AX÷100商,AH←AX÷100余数MOV COUNT2,AL ;COUNT2←AL,百位MOV AL,AH ;AL←AH余数MOV AH,00H ;AH=0MOV CL,10 ;CL=10DIV CL ;AL←AX÷10商,AH←AX÷10余数MOV COUNT3,AL ;COUNT3←AL,十位MOV COUNT4,AH ;COUNT4←AL,个位MOV AL,COUNT1 ;AL← COUNT1CALL DISP1 ;调显示字符子程序MOV AL,COUNT2CALL DISP1MOV AL,COUNT3CALL DISP1MOV AL,COUNT4CALL DISP1RETDISP ENDPDISP1 PROC NEAR ;显示字符子程序AND AL,0FH ;“与”操作,屏蔽高4位,保留低4位CMP AL,09H ;AL与9比较JLE NUM ;AL≤9,转到标号NUMADD AL,07H ;DL>9,DL←DL+7NUM:ADD AL,30H ;AL←AL+30H,转换成ASCII码MOV DL,AL ;DL←ALMOV AH,02 ;DOS 2号调用INT 21H ;显示一个字符RETDISP1 ENDPQUIT:MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND ST ART ;结束六、实验结果七、思考题(1)关闭电机后,为什么8254计数不为零?答:关闭电机后,由于计数值已经存储在锁存器中,所以只有到锁存器中的值为零时,才计数为零。

直流无刷电机调速原理

直流无刷电机调速原理

直流无刷电机调速原理直流无刷电机是一种新型的电动机,它具有高效率、低噪音、低振动、长寿命等优点,因此被广泛应用于各种电动设备中。

在实际应用中,直流无刷电机需要根据实际需求进行调速,以满足不同的工作要求。

本文将介绍直流无刷电机的调速原理及其实现方法。

一、直流无刷电机的基本原理直流无刷电机是一种基于电子换向技术的电动机,它的转子上没有传统的电刷和集电环,而是采用永磁体或电磁铁作为转子,靠电子器件对电机的转子进行换向控制。

直流无刷电机的转子和定子之间通过磁场相互作用产生电磁转矩,从而实现电机的转动。

直流无刷电机的工作原理可以分为两个阶段:电子换向和电磁转矩产生。

在电子换向阶段,电机控制器通过检测转子位置信号,控制电子器件对电机的相序进行调整,从而使得电机的磁场方向与转子位置相匹配,实现电子换向。

在电磁转矩产生阶段,电机的转子和定子之间产生的磁场相互作用产生电磁转矩,从而推动电机的转动。

二、直流无刷电机的调速原理直流无刷电机的调速原理主要是通过改变电机的电压和电流来改变电机的转速。

在实际应用中,直流无刷电机的调速方式主要有以下几种:1. 电压调速电压调速是最简单的调速方式,它通过改变电机的电压来改变电机的转速。

当电机的电压降低时,电机的转速也会降低。

因此,通过控制电机的电压,可以实现电机的调速。

电压调速的缺点是效率低,因为电机的功率不变,但电压下降会导致电机的电流增加,从而产生大量的损耗。

2. 电流调速电流调速是通过改变电机的电流来改变电机的转速。

当电机的电流增加时,电机的转速也会增加。

因此,通过控制电机的电流,可以实现电机的调速。

电流调速的优点是效率高,因为电机的功率不变,但电流增加不会产生大量的损耗。

但是,电流调速需要较为复杂的电路控制,因此成本较高。

3. PWM调速PWM调速是一种基于脉冲宽度调制技术的调速方式,它通过改变电机的脉冲宽度来改变电机的平均电压和电流,从而实现电机的调速。

当脉冲宽度增加时,电机的平均电压和电流也会增加,从而实现电机的加速。

无刷直流电机调速原理

无刷直流电机调速原理

无刷直流电机调速原理
无刷直流电机调速原理是通过不断改变电机的供电电压或电流来实现转速的调节。

为了方便理解,下面将分为几个步骤来介绍无刷直流电机调速原理。

1. 简介:无刷直流电机由转子和定子组成,通过电枢和永磁体的相互作用产生力矩,从而驱动电机转动。

调速原理是基于PWM(脉冲宽度调制)技术,通过改变电机的供电电压和电流来实现转速的调节。

2. 电机控制:无刷直流电机的控制主要包括位置传感器、电机驱动器和控制器三部分。

位置传感器用于检测转子位置信息,电机驱动器负责控制电流和电压的输出,控制器则根据传感器信号和控制算法确定输出的电流和电压。

3. 脉冲宽度调制:脉冲宽度调制是一种调整输出电压和电流的方法,通过不断调整PWM信号的占空比来改变电机的供电电压和电流。

占空比越大,输出电压和电流越高,电机转速也会相应增加。

4. 控制算法:控制器根据位置传感器的反馈信号,利用控制算法来调整PWM信号的占空比,从而控制电机的转速。

常用的控制算法包括电流环控制和速度环控制,电流环控制主要用于电流反馈控制,速度环控制则主要用于转速的闭环控制。

5. 转速调节:根据系统需求,控制器会调整PWM信号的占空比来改变电机的供电电压和电流,从而改变电机的转速。

当需
要提高转速时,控制器会增大占空比,增加供电电压和电流;当需要降低转速时,控制器会减小占空比,降低供电电压和电流。

综上所述,无刷直流电机调速原理是通过不断改变电机的供电电压和电流来实现转速的调节,利用PWM技术和控制算法来实现电机的精确控制。

基于单片机的无刷直流风扇转速测量与调节

基于单片机的无刷直流风扇转速测量与调节

基于单片机的无刷直流风扇转速测量与调节——09ME-LLQ测量风扇型号:品牌:台达,型号:AFB0712HHB东流电子HOT 51系列单片机学习板数码管显示芯片:74HC573 74HC138使用C语言编程一、项目开发流程:流程图开始中断产生PWM波计算风扇产生脉冲数码管显示理论值和实际值串口通信输入转速输出对应占空比的PWM波控制转速二、源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //不带小数点数字uchar code LED_W[8] = {0,1,2,3,4,5,6,7}; //亮数码管位sbit d1=P1^0;ulong number;uint num,tta,ttc,bb,cc,pm;uchar i=0;void Delay(uint i) //用于显示数码管,软件廷时1ms{uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);}void display(num) //显示程序{P0 = table[num/1000]; //显示转速测量值if((num/1000)!=0){P2 = LED_W[4];}Delay(1);P0 = table[(num/100)%10];P2 = LED_W[5];Delay(1);P0 = table[(num/10)%10];P2 = LED_W[6];Delay(1);P0 = table[num%10];P2 = LED_W[7];Delay(1);P0 = table[bb/1000]; //显示转速目标值if((bb/1000)!=0){ P2 = LED_W[0]; }Delay(1);P0 = table[(bb/100)%10];P2 = LED_W[1];Delay(1);P0 = table[(bb/10)%10];P2 = LED_W[2];Delay(1);P0 = table[bb%10];P2 = LED_W[3];Delay(1);}void Init(void) //程序初始化{EA=0;tta=0;num=0;bb=600;number=0;pm=800;TMOD = 0x26; //T0计数模式3,T1定时模式3 PCON = 0x00;SCON = 0x50;TH0=0xff; //计数器T0,一个脉冲溢出TL0=0xff;TH1 = 0xFd; //设置串口波特率9600TL1 = 0xFd;RCAP2H=(65536-50)/256; //定时器T2,定时0.5msRCAP2L=(65536-50)%256;ET0=1; //开T0、T1、T2中断允许ET2=1;TR0=1;TR1=1;TR2=1; //启动定时器1ES=1; //开串口中断EA=1; //开总中断}void pwm(bb) //调速程序{if(bb>=2100) pm=1910;else if(bb>=2000) pm=1835;else if(bb>=1900) pm=1650;else if(bb>=1800) pm=1500;else if(bb>=1700) pm=1370;else if(bb>=1600) pm=1240;else if(bb>=1500) pm=1150;else if(bb>=1400) pm=1110;else if(bb>=1300) pm=1030;else if(bb>=1200) pm=990;else if(bb>=1100) pm=905;else if(bb>=1000) pm=845;else if(bb>=900) pm=770;else if(bb>=800) pm=718;else if(bb>=700) pm=655;else if(bb>=600) pm=620;else if(bb>=500) pm=575;else if(bb>=400) pm=535;else if(bb>=300) pm=500;}void Main(void) //主函数{Init();while(1){if(num<bb-12) //速度微调pm=pm+1;else if(num>bb+12)pm=pm-1;elsepm=pm;display(num);}}void exter1() interrupt 1 using 1 // 定时器T0,P3.4接口计数方式{i++;number=number+tta;tta=0;if(i==3) //测量三次求平均值,减小转速波动{i=0;num=1800000/number;number=0;}}/* void Timer1 (void) interrupt 4 using 2 //T1,串口接收十六进制格式发送的目标转速{static uchar i=1; //定义为静态变量,当重新进入这个子函数时i的值不会发生改变EA = 0;if(RI == 1) //当硬件接收到一个数据时,RI会置位{if(i==1){cc=SBUF;RI=0;EA=1;}if(i==0){cc=cc*256+SBUF;RI=0;EA=1;i=2;bb=cc;cc=0;}i--;}pwm(bb);} */void Timer1 (void) interrupt 4 using 2 //T1,串口接收字符格式发送的目标转速{static uchar i=3; //定义为静态变量,当重新进入这个子函数时i的值不会发生改变EA = 0;if(RI == 1) //当硬件接收到一个数据时,RI会置位{if(i==3){cc=(SBUF-48);RI=0;EA=1;}if(i==2){cc=cc*10+(SBUF-48);RI=0;EA=1;}if(i==1){cc=cc*10+(SBUF-48);RI=0;EA=1;}if(i==0){cc=cc*10+(SBUF-48);RI=0;EA=1;i=4;bb=cc;cc=0;}i--;}pwm(bb);}void timer2() interrupt 5 using 3 //定时器T2,0.5ms中断产生PWM方波{static uchar i=0;TF2=0;i++;tta++;ttc++;if(ttc>=pm) //占空比0.22以下,风扇不转{d1=0;if(ttc==2000) //PWM波周期为100ms,周期越小,转速越稳定{d1=1;ttc=0;}}}。

无刷直流风扇原理

无刷直流风扇原理

无刷直流风扇原理霍尔传感器是利用霍尔效应实现磁电转换的一种传感器,它具有灵敏度高,线性度好,稳定性高、体积小和耐高温等特点,在机车控制系统中占有非常重要的地位。

对测速装置的要求是分辨能力强、高精度和尽可能短的检测时间。

发电机转速的检测方案可分成两类:用测速发电机检测或用脉冲发生器检测。

测速发电机的工作原理是将转速转变为电压信号,它运行可靠,但体积大,精度低,且由于测量值是模拟量,必须经过A/D转换后读入计算机。

脉冲发生器的工作原理是按发电机转速高低,每转发出相应数目的脉冲信号。

按要求选择或设计脉冲发生器,能够实现高性能检测。

所设计的基于霍尔元件的脉冲发生器要求成本低,构造简单,性能好。

在机车电气系统中存在着较为恶劣的电磁环境,因此要求产品本身要具有较强的抗干扰能力。

无刷直流风扇采用无电刷马达驱动,无电磁干扰,完全克服有刷换相马达电磁干扰,噪音大,机械寿命短的缺点.广泛应用于电子电工需强制散热的应用场合。

例如霍尔开关工作原理,AX277霍尔开关电路 AX277霍尔开关集成电路是一种单片式半导体集成电路。

该电路由反向电压保护器、精密电压调节器、霍尔电压发生器、差分放大器、施密特触发器、温度补偿器和互补型集电极开路输出器等七部分组成,它具有工作电压范围宽、磁灵敏度高、负载和反向保护能力强等特点。

该电路由于具有高达300 mA的负载能力,并且是互补型输出,因此,它是无刷风扇最理想的器件。

产品特点 . 单片集成,体积小.温度补偿、工作温区宽.负载能力强.反向保护 .集电极开路,互补输出 . 4引线环氧树脂封装,售价低 . 由于采用合金锡电镀、焊接温度可降低 . 可靠性高典型应用 . 高灵敏的无触点开关 . 直流无刷电机 . 直流无刷风机说明电压调节器:当电源电压从4.5V~20V变化时,保证该电路正常工作。

反向保护器:当应用电源反接或在使用过程中受到反向脉冲电压的干扰时,对电路起保护作用,保护电压可达30V; 霍尔电压发生器:将变化的磁信号转换成相应的电信号。

基于单片机的无刷直流风扇转速测量与调节

基于单片机的无刷直流风扇转速测量与调节

微机原理三级项目项目设计说明书设计题目:基于单片机的无刷直流风扇转速测量与调节指导老师:项目成员:XX大学机电工程系xxxx年xx月xx日一、项目设计要求1、实现无刷直流电机转速的测量和控制。

2、给定转速指令:由PC发送转速值,经单片机控制器,使得电机达到并稳定在指定转速上。

二、硬件设备1、测量风扇型号:品牌:台达,型号:AFB0712HHB2、51系列单片机学习板3、PC三、方案设计1、硬件电路P1.1口接PWM波输入,P3.2口接测速脉冲输入USB提供+5V电源,可以实现PC机与开发板的数据通讯和程序下载。

数码管显示速度和占空比,按键控制转速和占空比。

风扇电路连接:1、输出信号----转速输出每转输出2个脉冲OC输出,如右图2、 OC输出的特点外加集电极电源和负载;输出幅值任意;3. 输入信号--- PWM输入2、程序流程图说明:程序应用模块化进行设计,主要有初始化模块、显示模块、测速模块和调速模块。

编程次序可按此先后进行。

(1)、初始化模块:T0工作方式、标志位状态、所用单元初值、中断设置以及初始显示等。

(2)、显示模块:显示风扇转速的实测值及其对应的PWM占空比。

(3)测速模块:测出2s内风扇的脉冲数,进而求出风扇每分钟的转速。

(4)调速模块:通过键盘按键对PWM波占空比的调节,来控制风扇转速的大小。

3. 占空比与转速关系:占空比0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 转速r/min 250 435 585 735 870 990 1140 1275 占空比0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 转速r/min 1380 1485 1590 1710 1815 1920 1985 2010风扇转速低于250r/min时,由于电压过低,风扇停转,图表中只能测出占空比0.25以上的数据。

4、设计程序:#include<reg52.h>#define uchar unsigned char //0-255#define uint unsigned int //0-65535sbit dula=P2^6; //数码管段选sbit wela=P2^7; //数码管位选sbit P1_1=P1^1; //控制电机I/O口定义sbit P3_4=P3^4;sbit key_1=P3^1; //加速键sbit key_2=P3^3; //减速键sbit key_3=P3^5; //快加键sbit key_4=P3^6; //快减键sbit P1_6=P1^6; //占空比百位int ge,shi,bai,qian; //定义转速各位int m,n,num,PWM=200,PWMH=100;int zhuansu,PWMH_1,PWMH_2,PWMH_3; //转速uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示数据表/*=============延时函数==============*/ void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=50;y>0;y--);}/*=============数码管显示函数============*/ void display(){dula=1;P0=table[ge];dula=0;P0=0xff; //消隐wela=1; //显示转速个位P0=0xdf;wela=0;delay(3);dula=1;P0=table[shi];dula=0;P0=0xff; //消隐wela=1; //显示转速十位P0=0xef;wela=0;delay(3);dula=1;P0=table[bai];dula=0;P0=0xff; //消隐wela=1; //显示转速百位P0=0xf7;wela=0;delay(3);dula=1;P0=table[qian];dula=0;P0=0xff; //消隐wela=1; //显示转速千位P0=0xfb;wela=0;delay(3);dula=1;P0=table[PWMH_2];dula=0;P0=0xff; //消隐wela=1; //显示占空比十位P0=0xfe;wela=0;delay(3);dula=1;P0=table[PWMH_3];dula=0;P0=0xff; //消隐wela=1; //显示占空比个位P0=0xfd;wela=0;delay(3);}/*=========定时器0 PWM输出,调节转速========*/ //初始化,每次一溢出时间500usvoid csh(){TMOD=0x01;TH0=(65536-461)/256;TL0=(65536-461)%256;IT0=1;//下降沿EA=1;EX0=1;//打开外部中断0ET0=1;}//键盘扫描部分void keyscan(){if(key_1==0){delay(3); //延时祛去抖if(key_1==0){PWMH++;if(PWMH>=PWM)PWMH=PWM;while(!key_1); //等待按键释放}}if(key_2==0){delay(3);if(key_2==0){PWMH--;if(PWMH<=0)PWMH=0;while(!key_2); //等待按键释放}}if(key_3==0){delay(3); //延时祛去抖if(key_3==0){PWMH=PWMH+10;if(PWMH>=PWM)PWMH=PWM;while(!key_3); //等待按键释放}}if(key_4==0){delay(3);if(key_4==0){PWMH=PWMH-10;if(PWMH<=0)PWMH=0;while(!key_4); //等待按键释放}}}/*===========测量转速,利用外部中断INT0和定时器T0,每2s计算一次======*///定时器0中断部分void T0_time() interrupt 1{TH0=(65536-461)/256;TL0=(65536-461)%256;num++;n++;if(num==201) //周期定位200个num=0;if(num<=PWMH)P1_1=1; //置高电平else if(num>PWMH)P1_1=0; //置低电平if(n==3998) //2s时间到,计算转速{n=0;zhuansu=m*30/2;m=0;qian=zhuansu/1000;bai=zhuansu%1000/100;shi=zhuansu%100/10;ge=zhuansu%10;}}//外部中断0部分void X0_time() interrupt 0{EX0=0;m++;EX0=1;}/*=======显示占空大小======*/void PWMH_(){PWMH_1=PWMH/100;PWMH_2=PWMH%100/10;PWMH_3=PWMH%10;if(PWMH_1==1)P1_6=0; //显示占空比百位elseP1_6=1;}void main() //主函数{P3_4=0; //打通P3^4控制的按键csh(); //初始化子函数while(1){PWMH_();keyscan();display();}}五、方案总结该项目程序的转速是通过规定时间内求转数的方法测量的,转速显示误差为±15转每分钟,调速范围较广(235r/min到2010r/min),基本上能达到了设计任务的要求。

微机原理-无刷直流风扇调速与测速分析

微机原理-无刷直流风扇调速与测速分析

████工学院微机原理(3级)项目报告项目名称:微机原理课程设计项目题目:无刷直流风扇调速与测速指导教师:███系别:机电系专业:机械设计制造及其自动化组员信息学号:姓名:王██组员信息学号:姓名:郭██完成时间:2014 年12 月01日至2016 年 1 月 3 日成绩: 评阅人:目录一、学习目标....................................................(1)二、项目要求....................................................(1)三、转速测量和调节系统的硬件构成................................(1)四、程序流程图并说明方案思路....................................(3)五、风扇转速与占空比之间的关系表格和曲线..................... (4)六、设计程序....................................................(5)七、分析设计过程出现的问题......................................(12)八、方案总结................................................. (13)一、学习目标本次系统作业的目的在于:①ﻩ通过脉冲宽度调节实现无刷直流风扇转速的改变;②借助风扇转动时产生的脉冲信号,测量风扇的转速并显示;③ﻩ比较每组风扇从某一转速(600r/min)到另一转速(2000r/min)稳定运转的所需要的时间。

通过比较试验结果的估算结果并讨论结果差异的主要原因,让学生展示对无刷直流风扇数学模型建立和调节方法局限性有深入理解。

二、项目要求检查项目要求转速显示风扇转速能够显示在LED上,转速单位是r/min,刷新周期为1秒钟左右风扇转速可调风扇转速可以改变,根据要求转速在700-1400r/min风扇转速与显示通过简单方法给风扇加负载,随着转速的下降应该看到转速变化的显示转速指令输入环节通过串口或键盘输入给定转速给定某一转速,1200-1500之间,看显示转速的稳定性转速调节功能在稳定转动条件下1500r/min,在30cm处加载一个外加一个风扇,对照加载前后的稳态转速回答问题随机提出有关转速测量、PWM输出和转速控制方面的问题,要有针对性,检查设计过程中的付出。

无刷直流电机工作原理及PWM调速

无刷直流电机工作原理及PWM调速
永磁材料的去磁曲线表示永
磁材料被完全磁化后无外励
磁时的 B—H关系。
华北电力大学 电机教研室
《电机学》
§25-1永磁材料及其特性参数

永磁材料分类 常用的永磁材料有铝镍钴(AlniCo)、钡铁氧体 (Ba-Ferrite)和锶铁氧体(Sr-Ferrite)、钐钴 (SmCo 2∶17 型和SmCo 1∶5 型)和钕铁硼 (NdFeB),这是按发明的先后顺序排列的; 若按年产吨位排列则为:铁氧体、钕铁硼、铝镍 钴、钐钴;若按销售额排列则为:铁氧体和钕铁 硼并列第一,然后是钐钴、铝镍钴。

无刷直流电机的构成
无刷直流电机包括:直流电源,永磁电机,电子换向 电路(逆变器),转子位置检测,电流换向控制。
华北电力大学 电机教研室
《电机学》
§25-2 无刷直流电机的工作原理

永磁电机
表面磁钢结构的永磁电机
内永磁结构的永磁电机
分数槽绕组的永磁电机
华北电力大学 电机教研室
《电机学》
§25-2 无刷直流电机的工作原理
华北电力大学电机教研室电机学无刷直流电机的pwm调速252无刷直流电机的工作原理pwmon模式调制方法示意图华北电力大学电机教研室电机学无刷直流电机的pwm调速252无刷直流电机的工作原理onpwm模式调制方法示意图华北电力大学电机教研室电机学无刷直流电机的pwm调速252无刷直流电机的工作原理pwmonpwm模式调制方法示意图华北电力大学电机教研室电机学无刷直流电机的pwm调速252无刷直流电机的工作原理通过调整pwm的占空比调节加在电机绕组上的电压的大小可以实现像直流电机一样调速性能
华北电力大学 电机教研室
《电机学》
§25-2 无刷直流电机的工作原理

无刷直流电机测速原理

无刷直流电机测速原理

无刷直流电机测速原理
无刷直流电机是由两个磁芯组成的定子和转子,每个磁芯有两个相互垂直的线圈。

定子的磁芯可以提供电流进入转子,从而来提供转子的动力。

无刷直流电机的测速原理是:当定子通过电流提供磁感应,而转子变成一个被动的器件,随着定子的磁感应的变化,转子也会改变自身的方向,而定子的磁感应又取决于转子的转速,从而可以通过定子的磁感应来测量转子的转速。

无刷直流电机的测速有多种方法,常用的有套线法和磁尺法。

套线法是通过在定子输出端安装两根探头,记录定子的电流波形,然后根据定子的分析,得出转子转速的大小。

磁尺法是通过安装一根磁尺于定子的极化轴上,计算绕组之间的间隙距离和磁力矢量来计算转子的转速。

两种方法都可以成功完成无刷直流电机的测速工作,因此可以根据相关应用的需求选择合适的方法进行测速。

- 1 -。

微机原理实验小直流电机转速控制及测速实验

微机原理实验小直流电机转速控制及测速实验

《微机综合实践》实验报告选题:小直流电机转速控制及测速实验程序语言:C/C++姓名:同组伙伴:班级:学号:实验环节任务和要求:实验七——小直流电机转速控制及测速实验,要求使用8253,8255芯片组成连接电路,实现对小直流电机转速的控制及转速的测量的功能。

利用开关K0—K6进行转速的设定,经过可编程并行接口芯片8253进行芯片的读写,通过可编程计数器8253进行转速的设定(改变转速和占空比)和转速的计数。

连接好电路以后,采用C语言或C++进行编程,使整个电路可以实现所要求的功能,包括硬件的检测,芯片的初始化,转速的控制以及小直流电机转速的测量等。

实验原理:小直流电机的转速是由输出脉冲的占空比(PWM: Pulse width modulation )来决定的,正向占空比越大转速越快,反之越慢。

8253是一个三通道16比特的可编程定时计数器,他的最高计数频率可达2MHz,主要包括三个计数器通道,一个控制寄存器,数据总线缓冲器及读/写逻辑电路。

8253共有六种不同的工作方式,在不同的方式下,计数过程的启动方式、out端的输出波形都不一样。

本实验采用的是方式0和方式3。

其中方式0为软件启动不自动重复计数的方式,该方式在第一个写信号WR有效时向计数器写入控制字CW,之后其输出端OUT就变低电平,在第二个WR有效时装入计数初值,然后经过一个CLK信号的上升沿和下降沿,初值进入计数器。

当计数减到零——计数结束后,OUT输出变为高电平。

8253的方式3是方波发生器,在这个方式下,计时器既可以用软件启动,也可以用硬件启动。

方式3也可以自动重复计数。

只是计数到N/2时,OUT变为低,再接着计数到0时,OUT又变为高,并开始新一轮计数。

试验中利用方式3产生一定频率的方波信号,并且将方波信号作为基准信号与另一信号相比较,进行转速的测量。

而另一个计数器采用方式0进行计数操作,并与方波信号相比较,从而得到小直流电机的真正转速。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

████工学院微机原理(3级)项目报告项目名称:微机原理课程设计项目题目:无刷直流风扇调速与测速指导教师:███系别:机电系专业:机械设计制造及其自动化组员信息学号:姓名:王██组员信息学号:姓名:郭██完成时间:2014 年12 月01 日至 2016 年 1 月 3 日成绩:评阅人:目录一、学习目标 (1)二、项目要求 (1)三、转速测量和调节系统的硬件构成 (1)四、程序流程图并说明方案思路 (3)五、风扇转速与占空比之间的关系表格和曲线 (4)六、设计程序 (5)七、分析设计过程出现的问题 (12)八、方案总结 (13)一、学习目标本次系统作业的目的在于:①通过脉冲宽度调节实现无刷直流风扇转速的改变;②借助风扇转动时产生的脉冲信号,测量风扇的转速并显示;③比较每组风扇从某一转速(600r/min)到另一转速(2000r/min)稳定运转的所需要的时间。

通过比较试验结果的估算结果并讨论结果差异的主要原因,让学生展示对无刷直流风扇数学模型建立和调节方法局限性有深入理解。

二、项目要求检查项目要求转速显示风扇转速能够显示在LED上,转速单位是r/min,刷新周期为1秒钟左右风扇转速可调风扇转速可以改变,根据要求转速在700-1400r/min风扇转速与显示通过简单方法给风扇加负载,随着转速的下降应该看到转速变化的显示转速指令输入环节通过串口或键盘输入给定转速给定某一转速,1200-1500之间,看显示转速的稳定性转速调节功能在稳定转动条件下1500r/min,在30cm处加载一个外加一个风扇,对照加载前后的稳态转速回答问题随机提出有关转速测量、PWM输出和转速控制方面的问题,要有针对性,检查设计过程中的付出。

三、系统硬件构成风扇电路: 接线:黄线接Vcc ,黑线接地,绿线接P3^2,蓝线接P2^5。

输出:OC 输出,如下图四、画程序流程图并说明方案思路开始初始化中断产生PWM 波显示转速和占空比查询是否需要反馈调整查询是否收到串口数据查询风扇转速是否更新查询有无按键操作调整占空比更新目标转速刷新数码管缓存数据计算需要的占空比Y YYYNNNN程序主要用查询法判断需要执行的操作,并且利用中断处理函数来产生各种对应的标志位来通知主循环,在主循环中进行要求的运算。

其中T0定时约500us,它的每次中断相当于输出一个载波脉冲,实际上是用载波脉冲数为200个,载波周期为500us的方式构成周期为100ms的PWM波。

T1用做波特率发生器。

T2定时60ms。

每次T2中断能重置一次按键处理标志位,这个标志位能保证每60ms内只允许处理一次按键操作,让按键处理既能高速增减,也能准确;此外当有合计25次T2的中断发生时,它能保存当前的转速值并且通知主循环刷新数码管显示请况,因此我们计算转速的方式是“统计1.5s内风扇的转动圈数”。

利用在T2中断的定时判断,也能把当前数码管的显示请况发回PC机。

串口通讯方面,也是利用一个标志位来申明是否接受了数据。

使用“操作符+操作数据”的5字节字符串数据格式,例如用“A0980”代表需要风扇按n=980r/min的速度运行。

通知标志被主循环检测到的时候,会将串口数据检查并且保存成整数形式,方便后续函数的调用。

当串口数据不合理时,会发送信息到PC机。

五、风扇转速与占空比之间的关系表格和曲线编程实现单片机给PC定时发送转速与占空比数据后,取对应的数据制表如下。

占空比(%) 100 95 90 85 80 75 70 65 60 55 50转速2140 1960 1820 1740 1680 1600 1500 1420 1300 1180 1060 n/(r/min)占空比(%) 45 40 35 30 25 20 15 10 5 0转速900 740 580 440 100 0 0 0 0 0n/(r/min)将500个转速与占空比数据拟合成关系曲线如下可以发现,在风扇正常转动时,转速与占空比有着正相关的关系,占空比越大,风扇的转速越高。

此外,当占空比小于26%时,风扇停转。

六、设计程序1、主程序:#include <reg52.h>#define jingzhen 11059200UL /*使用11.0592M晶体*/#define botelv 9600UL /*波特率定义为9600*/volatile unsigned char sending;sbit dula =P2^6; //段选信号的锁存器控制sbit wela =P2^7; //位选信号的锁存器控制sbit PwmOut=P2^5; //PWM输出位置蓝线sbit need_steady=P3^4; //接地后开始调整sbit HideValue =P3^5; //接地后显示目标转速sbit K3 =P3^6; //增加占空比按钮sbit K4 =P3^7; //减少占空比按钮unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管各位的码表unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的码表unsigned char SPEED,SPEED_temp,count_time,count_send,wait;unsigned char PWM_count,PWM_turn,PWM_max; //控制PWM波的计数,转变值,周期个数,unsigned char Number[8]={0},value[6]={0}; //数码管显示缓存和串口字符串数据缓存int Target;bit flag=0,flag_k=0,flag_send=0,flag_direct=0; //通知标志void Timer0Init(void); //初始化函数void Timer2Init(void);void Ext0Init(void);void UARTInit(void);void check();void VALUE_To_Num(int num,unsigned char d); //数据填入数码管函数void direct(); //直接与反馈调节PWM函数void adjust();void Display();void send(unsigned char d);void sendc(unsigned char * pd);void sendc_num(unsigned char * pd);void main(){flag_direct=0;flag_send=0;wait=5;PWM_count=0,PWM_turn=170,PWM_max=200;Timer0Init();Timer2Init();Ext0Init() ;UARTInit() ;need_steady=1; //接地后开始调整HideValue =1; //接地后显示目标转速K3 =1; //增加占空比按钮K4 =1; //减少占空比按钮while(1) //主循环{if(flag_k) //控制每60ms允许通过按键调整一次PWM_turn{if(!K3&&PWM_turn<190) PWM_turn++;if(!K4&&PWM_turn>10 ) PWM_turn--;flag_k=0;}if(flag_direct){check();direct();flag_direct=0;wait=4; //传送了直接值后不能马上进行反馈调整,误差太大了}if(flag) //控制约1.5s允许调整数码管显示值{VALUE_To_Num((500*(SPEED_temp)/25),4);if(wait>0)wait--; //减缓约4.5~6s才允许反馈调整if((0==wait)&&(!need_steady)){ //满足条件时启用转速反馈调整adjust();}flag=0;}VALUE_To_Num(PWM_turn,0);if(!HideValue){ VALUE_To_Num(Target,0);} //直接按下K2显示当前的目标转速的值,可以检查有没有收到串口数据if(flag_send){ sendc_num(Number);flag_send=0;}Display();}}2、初始化子程序void Timer0Init(void){TMOD |= 0x01; //T0 16位定时TL0 = 0x33; //设置定时初值TH0 = 0xFE; //设置定时初值TF0 = 0; //清除TF0标志EA = 1; //总中断打开ET0 = 1; //定时器0中断打开TR0 = 1; //定时器0开始计时}void Timer2Init(void){RCAP2H = 0x28;RCAP2L = 0x00; //定时60msEA=1; //打开总中断ET2=1; //打开定时器2中断TR2=1; //定时器2开始计时}void ext0Init(void){INT0=1; //置高接收口P3.2PX0=1; //设置高中断优先级EA=1; //全局中断开IT0=1; //边沿触发EX0=1; //外部中断0开}void UARTInit(void) //9600bps@11.0592MHz{EA=0; //暂时关闭中断TMOD|=0x20; //定时器1工作在模式2,自动重装模式SCON=0x50; //串口工作在模式1TH1=256-jingzhen/(botelv*12*16); //计算定时器重装值TL1=256-jingzhen/(botelv*12*16);PCON|=0x80; //串口波特率加倍PS=1; //给串口中断高优先级ES=1; //串行中断允许TR1=1; //启动定时器1REN=1; //允许接收EA=1; //允许中断}3、中断操作程序/*********************************************************外部中断0统计转速脉冲*********************************************************/void ext0(void) interrupt 0 //负责统计速度值,信号下降沿产生中断{SPEED++;}/*********************************************************定时器0负责调控PWM波*********************************************************/void time0(void) interrupt 1 using 1 //负责产生PWM波{TL0 = 0x33; //设置定时初值TH0 = 0xFE; //设置定时初值PwmOut=PWM_count<PWM_turn?1:0; //计数值在0~199共200个组成;PWM_turn=0时只输出低电平,PWM_turn=PWM_max时只输出高电平PWM_count++;if(PWM_count>=PWM_max) //PWM_count达到顶端时回到初始PWM_count=0;}/*********************************************************串行中断服务函数接受速度控制命令*********************************************************/void serial() interrupt 4{static unsigned char write_point=0;static bit read_able=0;unsigned char Temp;if(RI) //判断是接收中断产生{RI=0; //标志位清零Temp=SBUF; //读入缓冲区的值if(read_able){value[write_point]=Temp;write_point++;if(write_point>4) //只读入4个字节{flag_direct=1; //通知主函数可以调节PWM了read_able=0;write_point=0;wait=4; //立即暂停反馈调整}}if(Temp=='A') //'A'作为特征码检测,也可以使用其他的字母来规定控制代码{write_point=0; //一旦收到A_ _ _ _,指针回到开头并且允许接受数据read_able=1;}}if(TI) //如果是发送标志位,清零{TI=0;sending=0; //清正在发送标志}}/*********************************************************定时器2调节数码管的刷新速度*********************************************************/void time2(void) interrupt 5 using 1 //定时器2中断{TF2=0;//必要的软件清中断标志count_time++;flag_k=1;if (count_time>=25){flag=1;SPEED_temp=SPEED;SPEED=0;count_time=0;count_send++;}if (count_send>=5){flag_send=1;count_send=0;}}4、辅助处理程序/*********************************************************检查串口数据*********************************************************/void check(){ unsigned char i;for(i=0;i<4;i++){if(value[i]<'0'||value[i]>'9')value[i]='0';}Target=(value[0]-'0')*1000+(value[1]-'0')*100+(value[2]-'0')*10+(value[3]-'0');if(Target>2180||Target<280) //禁止不可调节范围的PWMsendc("范围外的转速值!!\n");}/*********************************************************将数据填入数码管缓存*********************************************************/void VALUE_To_Num(int Num,unsigned char d){ unsigned char i;for(i=7;i>3;i--){Number[i-d]=Num%10;Num=Num/10;}}/*********************************************************直接调节PWM函数*********************************************************/void direct(){if(Target>2180||Target<280) //禁止不可调节范围的PWMreturn;if(Target<1520)PWM_turn=( 0.00003*Target*Target + 0.01311*Target + 53.467);//使用分段函数更贴合PWM-n 的关系elsePWM_turn=(-0.00009*Target*Target + 0.4299 *Target - 302.08);if(PWM_turn>200) PWM_turn=200;}/*********************************************************反馈调节PWM函数*********************************************************/void adjust(){double num;num=SPEED_temp*20;if(Target>2180||Target<280) //禁止不可调节范围的PWMreturn;if(Target<1520)PWM_turn=PWM_turn+( 0.00006*Target + 0.01311)*(Target-num);//原理是dy=f'(x)*dx else //属于比例调节PWM_turn=PWM_turn+(-0.00018*Target + 0.4299)*(Target-num);if(num<(Target/4)) //防堵转检测{ direct();wait=4;}if(PWM_turn>200) PWM_turn=200;}/*********************************************************数码管显示程序*********************************************************/void Display(){ unsigned char num;unsigned int m;for(num=0;num<8 ;num++){ P0=wei[num];wela=1;wela=0;P0=duan[Number[num]];dula=1;dula=0;for(m=128;m>0;m--); //时间间隔短,利用人眼的余辉效应,觉得每个数码管都一直在亮。

相关文档
最新文档