直流电机测速程序

合集下载

基于C51单片机直流电机测速仪设计

基于C51单片机直流电机测速仪设计

基于C51单片机直流电机测速仪设计摘要:电机的转速是各类电机运行过程中的一个重要监测量,测速装置在电机调速系统中占有非常重要的地位,特别是数字式测速仪在工业电机测速方面有独到的优势。

本文介绍了一种基于C51单片机的光电传感器转速测量系统的设计。

系统采用对射式光电传感器产生与齿轮相对应的脉冲信号,使用AT89C51单片机采样脉冲信号并计算每分钟内脉冲信号的数目,即电机对应的转速值,最终系统通过LCD实时显示电机的转速值。

经过软硬件系统的搭建,分别通过Protues软件系统仿真实验和实际电路搭建检查实验。

仿真实验表明本系统满足设计要求,并且结构简单、实用。

整个直流电机测速系统在降低测速仪成本,提高测速稳定性及可靠性等方面有一定的应用价值。

关键词:转速测量;光电传感器;单片机Based On C51 SCM Single DC Motor Speedometer DesignABSTRACT:Motor speed is all kinds of motor operation is an important process to monitor the amount of speed measuring device in the motor control system occupies a very important position, Especially the digital speedometer in the industrial motor speed has unique advantage. This paper describes a photoelectric sensor 51 SCM-based speed measurement system design. System uses a beam photoelectric sensor generates a pulse signal corresponding to the gear, the use of a sampling pulse signal AT89C51 SCM and calculating the pulse per minute, the number of signals that the speed of the motor corresponding to the value of the final system time through the LCD display the motor speed value.After a hardware and software system structures, respectively, through Protues software system to build the actual circuit simulation and experimental examination. Simulation results show that the system meets the design requirements, and the structure is simple and practical. DC Motor Speed entire system in reducing speedometer costs, improve reliability, speed stability and a certain application value.Keywords: Speed measurement; Photoelectric; Single chip micyoco目录1 绪论 (1)1.1 数字式转速测量系统的发展背景 (1)1.2 转速测量在国民经济中的应用 (1)1.3主要研究内容 (2)1.4 设计的目的和意义 (2)2 转速测量系统的原理 (4)2.1 转速测量原理 (4)2.2 转速测量计算方法 (5)3转速测量系统设计方案 (7)3.1 直流电机转速测量方法 (7)3.2 设计任务及方案 (8)4 直流电机测速系统设计 (9)4.1 单片机AT89C51介绍 (9)4.2 转速信号采集 (14)4.2 转速信号处理电路设计 (16)4.4 最小系统的设计 (17)4.4.1复位电路 (17)4.4.2 晶振电路 (20)4.5 显示部分设计 (20)5 直流测速系统仿真 (24)5.1 直流测速系统仿真 (24)5.1.1单片机最小系统仿真 (25)5.1.2 数码管显示仿真 (25)5.2 主程序流程设计 (26)5.2.1 主程序流程设计 (26)5.2.2 定时器的初始化 (27)5.3 实际电路实验 (28)参考文献 (30)致谢 (31)1 绪论1.1 数字式转速测量系统的发展背景在现代工业自动化高度发展的时期,几乎所有的工业设备都离不开旋转设备,形形色色的电机在不同领域发挥着很重要的作用。

无刷直流电机测速原理

无刷直流电机测速原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

无刷直流电机测速原理

无刷直流电机测速原理

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

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

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

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

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

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

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

- 1 -。

直流电机测速系统课程设计

直流电机测速系统课程设计

西安邮电学院单片机课程设计报告书题目:电机测速系统院系名称:自动化学院学生姓名:专业名称:自动化班级:自动XXXX班时间:20XX年X月X日至 X月XX日电机测速系统一、设计目的随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。

在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。

为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。

因此设计一种较为理想的电机测速控制系统是非常有价值的。

二、设计要求1.用按键控制电机起停;2.电机有两种速度,通过按键来改变速度;3.通过数码管显示每分钟或每秒的转速。

四、设计方案及分析(包含设计电路图)1. STC89C52单片机介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。

该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

(1)单片机最小系统单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成。

单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。

图单片机最小系统(2)晶振电路(3)复位电路复位是单片机的初始化操作。

其主要功能是把PC 初始化为0000H ,使单片机从0000H 单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

2. ST151光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。

基于proteus的直流电机测速系统仿真

基于proteus的直流电机测速系统仿真

第2期(总第189期)2015年04月机械工程与自动化MECHANICAL ENGINEERING & AUTOMATIONNo.2Apr.文章编号:1672‐6413(2015)02‐0214‐02基于Proteus的直流电机测速系统仿真张小石,郝秀平(中北大学机电工程学院,山西 太原 030051)摘要:介绍了由AT89C51、LCD和L256组成的直流电机测速系统,详细介绍了系统的设计框图,并通过Proteus软件实现仿真。

仿真结果表明该系统具有可控调速、显示直观等特点。

关键词:直流电机;Proteus;仿真;测速系统中图分类号:TP391畅9∶TM33 文献标识码:B收稿日期:2014‐05‐26;修订日期:2014‐12‐26作者简介:张小石(1987‐),男,山西阳泉人,在读硕士研究生,主要从事链式自动机驱动技术。

0 引言直流电机的测速系统通过LCD可视化地显示电机的转速,便于操作人员观察,使其能够更加有效地对电机进行控制。

Proteus软件提供了大量的单片机仿真元器件,相当于虚拟实验室,节省了直流电机的研制成本,缩短了研制周期。

从科学的研究角度来看,基于Proteus的直流电机仿真是必要的、合理的。

1 直流电机测速系统的硬件总体设计本设计实现的是通过LCD显示电机的转速信息。

系统采用AT89C51单片机,通过键盘控制电机并进行可控转速显示,该系统的总体结构框图如图1所示。

图1 直流电机测速系统结构框图2 直流电机测速系统的软件设计直流电机测速系统软件编程时采用了模块化的设计思想,主要功能模块被编成独立的函数,由主程序调用。

其主要的程序模块包括初始化程序、键盘信号采集及处理程序、液晶显示程序、可控调速程序、信息显示程序和超限报警程序。

系统的软件主要采用C语言编制,对单片机程序进行调试,最终实现仿真的相应功能。

3 仿真主要过程在keilc中编译程序并运行,运行结果说明程序调试成功。

程序调试图见图2。

实验13--直流电机测速实验

实验13--直流电机测速实验

4562、由DAC0832经功放电路驱动直流电机,计数光电开关通关次数并经过换算得出直流电机的转速,并将转速显示在LED上。

3、G5区的0、1号按键控制直流电机转速快慢, (最大转速≈96r/s,5V,误差±1r/s)六、演示程序(完整程序见目录SPEED);键盘、LED显示子程序请参阅综合实验一.MODEL TINYEXTRN CMD_8279:WORD, DATA_8279:WORDEXTRN Display8:NEAR, SCAN_KEY:NEAR,GetKeyA:NEARPCIBAR1 EQU 14H ;PCI9052 I/O基地址(用于访问局部配置寄存器)PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,;也为DMA & 32 BIT RAM板卡上的8237提供基地址) PCIIPR EQU 3CH ;IRQ号INTCSR EQU 4CH ;PCI9052 INTCSR地址mask_int_9052 EQU 24HVendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号VoltageOffset EQU 5 ;0832调整幅度.STACK 200.DATAIO8259_0 DW 00F0HIO8259_1 DW 00F1HRD_IO8259 DW 0000HCon_8253 DW 00E3HT0_8253 DW 00E0HT1_8253 DW 00E1HDA0832 DW 00D0HIO_Bit8_BaseAddress DW ?PCI_IO_BaseAddress0 DW ?PCI_IRQ_NUMBER DB ?INT_MASK DB ?INT_Vector DB ?INT_CS DW ? ;保护原中断入口地址INT_IP DW ?msg0 DB 'BIOS不支持访问PCI $'msg1 DB '找不到Star PCI9052板卡 $'msg2 DB '读PCI9052 I/O基地址时出错$'msg3 DB '读8位I/O空间基地址时出错$'msg4 DB '读IRQ号出错$'buffer DB 8 DUP(0) ;显示缓冲区,8个字节buffer1 DB 8 DUP(0) ;显示缓冲区,8个字节VOLTAGE DB 0 ;转换电压数字量Count DW 0 ;一秒转动次数NowCount DW 0 ;当前计数值kpTime DW 0 ;保存上一次采样时定时器的值bNeedDisplay DB 0 ;需要刷新显示.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址CALL ModifyVector ;修改中断向量、允许中断MOV bNeedDisplay,1 ;显示初始值MOV VOLTAGE,99H ;初始化转换电压输入值,99H-3.0VMOV Count,0 ;一秒转动次数MOV NowCount,0 ;当前计数值MOV kpTime,0 ;保存上一次采样时定时器的值CALL DAC0832 ;初始D/ACALL Init8253CALL Init8259STIMAIN: CALL IfExitCALL GetKeyA ;按键扫描JNB Main1JNZ Key1Key0: MOV AL,VoltageOffset ;0号键按下,转速提高ADD AL,VOLTAGECMP AL,VOLTAGEJNB Key0_1MOV AL,0FFH ;最大Key0_1: MOV VOLTAGE,AL ;D/ACALL DAC0832JMP Main2Key1: MOV AL,VOLTAGE ;1号键按下,转速降低SUB AL,VoltageOffsetJNB Key1_1XOR AL,AL ;最小Key1_1: MOV VOLTAGE,ALCALL DAC0832 ;D/AJMP Main2Main1: CMP bNeedDisplay,0JZ MAINMOV bNeedDisplay,0 ;1s定时到刷新转速Main2: CALL RateTest ;计算转速/显示JMP MAIN ;循环进行实验内容介绍与测速功能测试;转速测量/显示RateTest: MOV AX,CountMOV BL,10DIV BLCMP AL,0JNZ RateTest1MOV AL,10H ;高位为0,不需要显示RateTest1: MOV buffer,AHMOV buffer+1,ALMOV AL,VOLTAGE ;给0832送的数据AND AL,0FHMOV buffer+4,ALMOV AL,VOLTAGEAND AL,0F0HROR AL,4MOV buffer+5,ALMOV buffer+2,10H ;不显示MOV buffer+3,10HMOV buffer+6,10HMOV buffer+7,10HLEA SI,bufferLEA DI,buffer1MOV CX,8REP MOVSBLEA SI,bufferCALL Display8 ;显示转换结果RETTimer0Int: MOV bNeedDisplay,1MOV AX,NowCountSHR AX,1SHR AX,1MOV Count,AX ;转一圈,产生四个脉冲,Count = NowCount/4MOV NowCount,0RETIntProc: PUSH AXPUSH DXCALL ClearIntMOV DX,RD_IO8259IN AL,DXIN AL,DX ;判断由哪个中断源引起的中断CMP AL,08HJNZ IntProc1CALL Timer0IntJMP IntProc2IntProc1: CMP AL,0FHJNZ IntProc2CALL CountIntIntProc2: MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP DXPOP AXIRETCountInt: MOV DX,Con_8253MOV AL,40HOUT DX,AL ;锁存MOV DX,T1_8253IN AL,DXMOV AH,ALIN AL,DXXCHG AL,AH ;T1的当前值XCHG AX,kpTimeSUB AX,kpTimeCMP AX,100JB CountInt1 ;前后二次采样时间差小于100,判断是干扰INC NowCountCountInt1: RETInit8253 PROC NEARMOV DX,Con_8253MOV AL,34HOUT DX,AL ;计数器T0设置在模式2状态,HEX计数MOV DX,T0_8253MOV AL,12HOUT DX,ALMOV AL,7AHOUT DX,AL ;CLK0=31250Hz,1s定时MOV DX,Con_8253MOV AL,74HOUT DX,AL ;计数器T1设置在模式2状态,HEX计数MOV DX,T1_8253MOV AL,0FFHOUT DX,ALMOV AL,0FFHOUT DX,AL ;作定时器使用RETInit8253 ENDPInit8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7EHOUT DX,ALRETInit8259 ENDP;数模转换,A-转换数字量DAC0832 PROC NEARMOV DX,DA0832MOV AL,VOLTAGEOUT DX,ALRETDAC0832 ENDP;IfExit、InitPCI、ModifyAddress、ModifyVector、ClearInt、Exit子程序请参阅8259实验END START七.实验扩展及思考题实验内容:在日光灯或白炽灯下,将转速调节到25、50、75,观察转盘有什么现象出来。

课程设计实验报告-直流电机测速 (1)

课程设计实验报告-直流电机测速 (1)

直流电机测速摘要设计一种直流电机调速系统,以STC89C52 为控制核心,通过ULN2003 驱动电机,使用ST151 测量转速,实现了按键输入、电机驱动、转速控制、转速显示等功能。

关键词:直流电机, 80C51, ULN2003, 转速控制第一章题目描述直流小电机调速系统:采用单片机、ul n2003 为主要器件,设计直流电机调速系统,实现电机速度开环可调。

要求:1、电机速度分30r /m、60r /m、100r /m共3 档;2、通过按选择速度;3、检测并显示各档速度。

所需器件:实验板(中号)、直流电机、STC89C52、电容(30pFⅹ2、10uF ⅹ2)、数码管(共阳、四位一体)、晶振(12M H z )、小按键(4 个)、ST151、电阻、发光二极管等。

第二章方案论述按照题给要求,我们最终设计了如下的解决方案:用户通过键盘键入控制指令(开关),微控制器在收到指令后改变输出的 PW M波,最终在 U LN2003 的驱动下电机转速发生改变。

通过 ST151 传感器测量电机扇叶的旋转情况,将转速显示在数码管上。

在程序主循环中实现按键扫描与转速显示,将定时器0 作为计数器,计数ST151 产生的下降沿,可算出转速,并送至数码管显示。

第三章硬件部分设计系统硬件部分包含输入模块、显示模块、控制模块、测速模块等。

在硬件搭建前,先通过Pr ot eus Pr o 7. 5 进行硬件仿真实现。

1. 时钟电路系统采用12M 晶振与两个30pF 电容组成震荡电路,接STC89C52 的 XTAL1 与 XTAL2 引脚,为微控制器提供时钟源2. 按键电路四个按键分别控制电机的不同转速,即控制 PW M波高电平的占空比,以实现电机的速度控制,采用开环控制方法,不是十分精确,但控制简单,易实现,代码编写简单3. 显示部分系统采用4 位共阴极数码管实现转速显示。

数码管的位选端1~4 分别接STC89C52 的P2. 0~P2. 3 管脚,端选段A~G与 D P分别接 STC89C52 的 P0. 0~P0. 7 管脚。

直流电机测速实训报告

直流电机测速实训报告

一、实训目的通过本次实训,使学生了解直流电机测速的基本原理,掌握直流电机测速仪的设计与制作方法,提高学生的动手能力和创新意识。

同时,培养学生的团队合作精神和严谨的科学态度。

二、实训内容1. 直流电机测速原理直流电机测速是通过测量电机转动时产生的电压信号,从而确定电机的转速。

常用的测速方法有电磁测速、光电测速和霍尔元件测速等。

本次实训采用霍尔元件测速方法。

2. 直流电机测速仪的设计与制作(1)电路设计直流电机测速仪的电路主要由以下几个部分组成:电源模块、霍尔元件模块、放大电路模块、滤波电路模块、A/D转换模块、单片机控制模块和显示模块。

(2)硬件制作根据电路设计,制作电路板,焊接各个元件,连接好电路。

(3)软件编程编写单片机控制程序,实现以下功能:1)采集霍尔元件输出的电压信号;2)将电压信号转换为转速值;3)将转速值显示在LCD屏幕上;4)通过红外遥控器控制测速仪的开关和转速设定。

3. 实验步骤(1)组装测速仪按照电路图组装好测速仪,确保各个元件焊接牢固,电路连接正确。

(2)调试测速仪将组装好的测速仪接入电源,调试各个模块,确保电路正常工作。

(3)测试测速仪将测速仪与待测电机连接,通过红外遥控器控制测速仪的开关和转速设定,观察LCD屏幕上显示的转速值是否准确。

三、实训结果与分析1. 实验结果本次实训成功制作了一台直流电机测速仪,通过测试,测速仪能够准确测量电机的转速,满足实验要求。

2. 结果分析(1)电路设计合理,元件选择合适,电路连接正确,确保了测速仪的正常工作。

(2)软件编程实现功能完善,能够满足实验要求。

(3)测速仪具有较好的稳定性和抗干扰能力。

四、实训总结1. 通过本次实训,使学生掌握了直流电机测速的基本原理和测速仪的设计与制作方法。

2. 提高了学生的动手能力和创新意识,培养了团队合作精神和严谨的科学态度。

3. 深化了对电子电路、单片机编程和传感器应用等课程知识的理解。

五、实训体会1. 在实训过程中,认真对待每一个环节,确保电路连接正确,编程无误。

基于STM32的直流电动机测速系统设计

基于STM32的直流电动机测速系统设计

的发展,直流电机因其具有良好的启动、制动和调速性能,已经广泛运用于工业控制、机械制造、电力电子等领域。

在现代工业控制领域里,通常需要对电动机的转速进行准确有效的控制,而精确控制的前提是需要对电机转速进行准确的测量,目前对电机转速测量的主要方法有:接触式测量,需要把传感器安装在转轴上,测量不方便;光电非接触式测量,这种测量方法需要电机部分外露,对测量和安装带来极大的不便。

本系统采用非接触式直流电动机转速检测装置,无需对电机本身或内部进行改装固定,只需要在电机外部安装电磁感应探头,利用电机内磁场的变化就可以准确的测量电机的转速。

1 系统方案的设计本系统通过自制的电磁感应传感器采集电动机的转速,采集到的信号通过滤波电路、放大电路、比较电路整形之后,由STM32的计数器获取电机磁场变化频率,进而转化出电机的转速,由STM32处理后通过OLED显示电机的转速值等信息。

测量的线性和精度同样由硬件调试得到,软件作为精度补偿,通过STM32的线性算法和补偿算法来得到相当高的精度。

■1.1 主控器件的选择采用 STM32(STM32F103C8T6)作为核心控制,它具有多功能定时器、功耗低、速度高、稳定性强、性价比高等特点,既可以满足作品要求,同时也简化了外部电路。

具有最高72MHz 的 CPU 工作频率和很强的控制和运算能力,能够实现一些复杂的控制和运算功能,对与实现输出脉冲波有良好的周期精度,满足系统要求。

■1.2 显示屏的选择采用 OLED液晶屏。

此款液晶能使人机交互显得更加人性化,具有可触摸屏,功耗小,体积适中,非常适合于少感器难度大、但是采集精度高、对于任意电机的适用性强)。

传感器的信号随电机内磁场的变化而变化,所以感应电流和转速之间具有线性关系的,且容易通过硬件电路及程序算法进行校正。

(1)采用C型电感型探头(如图1)此传感器使用单一线圈对信号进行采集。

该电路的优点是采集信号的范围更广。

但是,当电机转速低时,电机供电电压低,电机产生的磁场弱,然而电路的噪声是一定的,此时C型探头接收到其他磁极的干扰也会增加,导致信号的信噪比不高,使后续电路的处理难度加大,且容易出现不稳定的触发。

利用电动自行车后轮无刷直流电机霍尔信号的一种测速方法

利用电动自行车后轮无刷直流电机霍尔信号的一种测速方法

利用电动自行车后轮无刷直流电机霍尔信号的一种测速方法摘要:一、无刷直流电机霍尔测速原理二、电动自行车后轮无刷直流电机霍尔信号测速方法1.一路霍尔信号测速方法2.三路霍尔信号测速方法三、以STM32单片机为核心的转速测量系统四、总结正文:一、无刷直流电机霍尔测速原理无刷直流电机的工作原理本质上与有刷电机类似,不同之处在于无刷电机采用电子方式对绕组电流换向。

直流电机中的转矩是通过永磁体磁场和绕组中的电流相互作用产生的。

霍尔位置传感器探测转子旋转磁场的位置,通过逻辑与驱动电路,给相应的绕组激励。

二、电动自行车后轮无刷直流电机霍尔信号测速方法1.一路霍尔信号测速方法利用一路霍尔信号进行转速测量时,可以通过计算相同时间间隔内传感器输出的脉冲个数来获得转速。

设霍尔传感器输出的信号每转R个脉冲,对应的转速为N(r/min),则通过计算脉冲频率与60的比值,即可得到转速。

2.三路霍尔信号测速方法利用三路霍尔信号进行转速测量时,可以通过逻辑电路或算法产生六倍于一路霍尔信号频率的倍频信号,然后对其进行测量。

这种方法可以提高测速的准确性。

三、以STM32单片机为核心的转速测量系统以STM32单片机为核心搭建转速测量系统,可以实现对电动自行车后轮无刷直流电机的精确测速。

通过处理霍尔传感器输出的信号,实时监测电机转速,为用户提供准确的行驶速度信息。

四、总结利用电动自行车后轮无刷直流电机霍尔信号进行测速的方法具有较高的实用价值。

通过一路或三路霍尔信号的测量,可以实现对电机转速的准确监测。

以STM32单片机为核心的转速测量系统,进一步提高了测速的准确性和可靠性,为电动自行车用户提供实用的行驶速度信息。

自动控制直流电机测速反馈控制实验

自动控制直流电机测速反馈控制实验

目录一、实验目的 (1)二、实验器材 (1)三、实验对象介绍 (1)四、实验思路 (1)五、实验过程 (2)六、实验结果 (7)七、出现问题及解决方案 (8)八、总结 (9)直流电动机转速控制实验一、实验目的1.掌握控制系统的结构框架和基本环节对系统的影响或作用2.建立数学建模的思想,学会用建模思想解决控制系统问题3.通过设计的测速闭环反馈控制系统让直流电动机达到理想和稳定的转速二、实验器材直流电动机、电路实验箱、电动机驱动模块、电源模块、导线若干三、实验对象介绍被控对象:电动机被控量:电动机的转速四、实验思路1、首先通过实验测定直流电动机转速模型的传递系数K 、时间常数T,以获得电机转速的传递函数1)(+=ΦTs K s 。

2.然后对未校正的直流电机转速控制系统建立数学模型。

3.最后添加校正环节到控制系统,使电机转速达到预定转速电路直流电机控制系统模拟五、实验过程1.接线(1)电机:粗线(红、黑端)接输入驱动模块的out+和out-,细线(红、黑端)接测速反馈;(2)电源模块:输出端v+、com(提供24V电压)分别接电动机驱动模块的电源输入端BAT+、GND;(3)电动机驱动模块:S1端接地,S2端接控制信号;out+和out-为控制信号输出;EN、COM两端短接,控制其工作使能;(注:若输出信号为负,短接DIR和COM)。

2.获取电机转速的传递函数(1)电动机的传递函数为一阶系统,给控制系统加一个单位阶跃输入,测其输出响应。

但输出仿真波形中出现了大量高次噪声,所以需串联一个滤波环节。

(2)一阶积分环节具有滤除高频噪声的能力,同样二阶惯性环节也能滤除高频噪声,由于二阶惯性环节电路图比较复杂,所以选用一阶积分环节。

一阶环节的电路原理图如下:(3)加入滤波环节后再对其加单位阶跃输入,测得其输出响应波形为通过测试得到k=1.04,t=0.296,所以电机转速的传递函数为 1296.004.1)(+=Φs s 。

无刷直流电机调速--C语言源程序

无刷直流电机调速--C语言源程序

附录1. C语言源程序:#include"stdio.h"#include"myapp.h"#include"ICETEK-VC5502-EDU.h"#include"scancode.h"#include"lcd.h"#define CTRSTATUS (*(unsigned int * )0x608000) //port8000#define CTRLED (*(unsigned int * )0x608004) //port8004#define MCTRKEY (*(unsigned int * )0x608005) //port8005#define CTRCLKEY (*(unsigned int * )0x608006) //port8006#define CTRMOTORBSPEED (*(unsigned int * )0x608003)void InitMcBSP();void INTR_init( void );void InitForMotorB( void );void showparameters();void LCDPutString(unsigned int * pData,int x,int y,unsigned int nCharNumber,unsigned color);void PIDControl(int rk,int yk);void PrintParameters();//定时器分频参数#define T100 99 // 100个时钟周期中断一次#define T2Hz 20000 // 20000个时钟周期读取速度一次//工作变量usigned int uWork,uN,nCount,nCount1,nCount2,nCount3,nCount4;int nSSS,nJSSpeed,pwm1;int md,wc;unsigned int nScreenBuffer[30*128];float a=0.6f,b=0.2f,c=0.1f,duk;int ek,ek1,ek2,tz;int nInput;unsigned int *www=(unsigned int *)0x608003;Int m_nSpeed,m_bPCSet;// 主函数main(){unsigned char ccc;int speed[100],sp,lj;float ljh;int i,w1,w2,w3;unsigned int uWork1;unsigned int bWork1,*pWork;int breakflage;// 初始化工作变量for ( sp=0;sp<100;sp++ )speed[sp]=0;for ( sp=0;sp<1024;sp++ ) nScreenBuffer[sp]=0;sp=nSSS=nCount=nCount1=nCount2=nCount3=nCount4=nJSSpeed=0;nInput=tz=wc =0;ek=ek1=ek2=0;uN=40;md=70;pwm1=60;m_nSpeed=70;m_bPCSet=0;inputspeed=0;uWork1=0;breakflage=0;initemif();CLK_init();*(int*)0x400001=1;CREG=1; //使能外部总线接口InitCTR();CTRGR=0x80;CTRGR=0;CTRGR=0x80;LCDTurnoff();// 设置显示参数和内容LCDSetDelay(1); //设置延时等待参数LCDSetScreenBuffer(nScreenBuffer); // 显示缓冲区for (bWork=0,pWork=nScreenBuffer;bWork<30*128;bWork++,pWork++) (*pWork=0)LCDTurnOn();//打开显示LCDCLS();//清除显示内存LCDPutCString(str1,0,127,8,0);LCDPutCString(str2,0,111,2,1);LCDPutCString(str3,68,111,2,1);LCDPutCString(str4,68,79,2,1);LCDPutCString(str5,68,95,2,1);LCDPutCString(str6,0,95,2,1);LCDPutCString(str7,0,79,3,1);ShowParamctors();//参数显示InitMcBSP();INTR-init();InitForMotorB();While(!breakflage){if(nCount==0) //读取键盘标志{uWork=MCTRKEY;CTRCLKEY=0;Switch(uWork1){Casc 128;if(inputspecd!=0){Md=inputspecd;Inputspecd=0;LCDPutCString(numbers+104,104,79,1,1);LCDPutCString(numbers+104,112,79,1,1);LCDPutCString(numbers+104,120,79,1,1);LCDRefreshScreen();}break;case 64;breakflage=1;case 1;inputspeed=inputspeed+1break;case 2;inputspeed=inputspeed-1;break;case 4;inputspeed=inputspeed+10;break;case 8;inputspeed=inputspeed-10;break;}if(inputspeed>90){inputspeed=90;}if(inputspeed<0){inputspeed=0;}w1=inputspeed%1000/100;w2=inputspeed%100/10;w3=inputspeed%10; LCDPutString(numbers+w1*8,104,79,1,1);LCDPutString(numbers+w2*8,112,79,1,1);LCDPutString(numbers+w3*8,120,79,1,1);LCDRefreshScreen();}if(m-bPCSet){m-bPCSst=0;if (m-nSpeed>=0&&m-nSpeed<256){md=m-nSpeed;LCDPutCString(numbers+104,104,79,1,1); LCDPutCString(numbers+104,112,79,1,1); LCDPutCString(numbers+104,120,79,1,1); LCDRefreshScreen();printparameters();}}if(nJSSpeed==0) //读取速度标志{LED=1;nJSSpeed=0;ccc=CTRMOTORBSPEED; //读取端口速度计数ccc=ccc&0xff;nSSS=ccc;if(nSSS>=0 && nSSS<400) //合法性检测{speed(sp)=Nssssp++;sp%=33;}if(sp==0) //读取实际速度{lj=0;ljh=0;for(i=0;i<33;i++){if(speed(i)>=0&&speed(i)<400){ljh+=speed(i);lj++;}}nCount3++;nCount3%=3;if(nCount3==2){PIDControl(md,wc); //调用PID算法控制程序uN=100-pwml; //利用占空比调整控制Showparameters(); //显示各参数到LCD}CloseCTR();exit(0);}//PID算法控制子程序void PIDControl(int rk,int yk){ek=rk-yk;duk=a*ek+b*ek1+c*ek2; //计算控制输出ek2=ek1; ek1=ek;tz=(int)duk;pwm1+=tz; //计算当前占空比if(pwml<0) pwml=0;else if(pwml>99) pwml=99;}void interrupt Timer(){uWork=PCR1; //pwml输出if(nCont1>u N){uWork=4; //根据占空比设置FSR状态}else{uWork&=0x0fffb;}PCR1=uWork;//设置中断控制寄存器void INTR-init(void){asm(“BSET INTM”);IVPD=0x01;IVPH=0x01;IERO=0x10;DBIERO=0x10;IFRO=0xffff;asm(“BCLR INTM”);}void InitForMotorB(void){ioport unsigned int *GPTCTL1-0;ioport unsigned int *GPTPRD1-0;ioport unsigned int *GPTGCTL1-0;*GPTCTL1-0=0;*GPTPRD1-0=0x1d8;*GPTGCTL1-0=0x3;}//显示参数到LCDvoid ShowParameters(){int w1,w2,w3;w1=md%1000/100;w2=md%100/10,w3=md%10; LCDPutString(numbers+w1*8,36,111,1,1); LCDPutString(numbers+w2*8,44,111,1,1); LCDPutString(numbers+w3*8,52,111,1,1);if (ek>=0){LCDPutString(numbers+88,36,95,1,1);w3=((int)ek)%100;}else{LCDPutString(numbers+96,36,95,1,1);w3=((int)(-ek))%100;}for (j=0;j<16;j++,k<<=1){if (color==2) mcolor=2;else{mcolor=(pData(1*8+i)&k)(1):(0);if(color==0) mcolor=1-mcolor;}LCDPutPixel(x+1*8+I,y-j,mcolor);}int wwss;void PrintParameters(){wwcc=wc-md;printf(“测速(%3d) 设置(%3d) 误差(%+4d) PID调整量(%+3d) 占空比(%3d%%)\n”,wc,md,wwcc,tz,pwm1);}。

单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)

单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)

单片机原理及应用课程设计报告书题目:用单片机控制直流电动机并测量转速姓名:徐银浩学号:1110702225专业:电子信息工程指导老师:沈兆军设计时间:2014年 11月信息工程学院目录1. 引言 01.1 设计意义 01.2 系统功能要求 02. 方案设计 03. 硬件设计 (2)3.1 AT89C51最小系统 (3)3.2 按键电路 (4)3.3 A/D转换模块 (4)3.4. D/A转换模块 (6)3.5 电机转速测量电路 (7)3.6 显示电路 (8)3.7 总电路图 (10)4. 软件设计 (101)4.1 系统主程序设计 (12)4.2 按键扫描程序设计 (12)4.3 显示子程序 (12)4.4 定时中断处理程序 (12)4.5 A/D转换程序 (13)5. 系统调试 (14)6. 设计总结 (16)7. 参考文献 (17)8. 附录A;源程序 (18)9. 附录B;电路原理总图、作品实物图片 (23)用单片机控制直流电动机并测量转速1 引言1.1. 设计意义电动机作为最主要的动力源,在生产和生活中占有重要地位。

电动机的调速控制过去多用模拟法,随着计算机的产生和发展以及新型电力电子功率器件的不断涌现,电动机的控制也发生了深刻的变化,本系统利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。

1.2.系统功能要求单片机扩展有A/D转换芯片ADC0809和D/A转换芯片DAC0832。

通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电动机的转速。

手动扩展。

在键盘上设置两个按键——直流电动机加速键和直流电动机减速减。

在手动状态下,每按一次键,电动机的转速按照约定的速率改变。

用显示器LED或LCD显示数码移动的速度,及时形象地跟踪直流电动机转速的变化情况。

HAL库直流电机编码测速(L298N驱动)笔记

HAL库直流电机编码测速(L298N驱动)笔记

HAL库直流电机编码测速(L298N驱动)笔记主函数开始后的处理流程:1.外设初始化:HAL_Init()2.系统时钟配置RCC振荡器初始化:HAL_RCC_OsConfig()RCC时钟初始化:HAL_RCC_ClockConfig()系统滴答定时器初始化:HAL_SYSTICK_Config()3.按键GPIO初始化GPIO端⼝时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()⼯作模式激活下拉或上拉引脚初始化:HAL_GPIO_Init()4.串⼝初始化串⼝GPIO端⼝使能:__HAL_RCC_GPIOA_CLK_ENABLE()串⼝初始化(包含串⼝硬件初始化):HAL_UART_Init()5.编码器定时器初始化定时器时钟使能:__HAL_RCC_TIM3_CLK_ENABLE()编码器GPIO引脚初始化GPIO端⼝时钟使能:__HAL_RCC_GPIOB_CLK_ENABLE()⼯作模式激活下拉或上拉引脚初始化:HAL_GPIO_Init()编码器中断优先级配置设置中断优先级:HAL_NVIC_SetPriority()使能中断请求:HAL_NVIC_EnableIRQ()定时器基本环境初始化:HAL_TIM_Base_Init()定时器时钟源配置:HAL_TIM_ConfigClockSource()定时器输⼊捕获环境初始化:HAL_TIM_IC_Init()定时器主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()定时器输⼊捕获配置:HAL_TIM_IC_ConfigChannel()6.编码器定时器启动:HAL_TIM_Base_Start()7.L298N定时器初始化基本环境初始化:HAL_TIM_Base_Init()时钟源配置:HAL_TIM_ConfigClockSource()⽐较输出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()初始化:HAL_TIM_Base_MspInit()反初始化:HAL_TIM_Base_MspDeInit()主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()刹车和死区时间配置:HAL_TIMEx_ConfigBreakDeadTime()通道⽐较输出配置:HAL_TIM_PWM_ConfigChannel()定时器实际时钟频率为:72MHz/(定时器预分频+1)=36MHzPWM频率为:定时器实际时钟频率/(定时器周期+1),[定时器周期为900的话,36MHz/(900+1)=40Khz]实际PWM频率为:PWM频率/(⾼级定时器重复计数寄存器值+1),[⾼级定时器重复计数寄存器值为0的话,40KHz/0+1=40KHz] PWM占空⽐为:定时器通道⽐较输出脉冲/定时器周期*100%,占空⽐为50%时电机不转。

直流电机调速控制和测速系统设计

直流电机调速控制和测速系统设计

直流电机调速控制和测速系统设计摘要:直流型的电机得性能在电机结构中有着较好的优势,由于时代的持续进步,与直流电机相关的使用频率也变得更高。

然而,以往的直流电机工作性质与所面临得运转问题息息相关,怎样对转速进行合理管控就变成了直流电机发展和应用期间存在的困难。

而直流电机控制系统的产生,可以较好的处理该方面的情况,不仅能够增强直流电机的平稳程度和精准程度,还可以合理管控直流电机的运行速度,从而达到我国对相关设备的应用标准。

基于此,本文重点分析了直流电机调速控制的方式,进一步对测速系统进行设计,以供相关人员参考。

关键词:直流电机;调速控制;测速系统目前,直流发电机的应用非常广泛,在自动化装备领域中,其内蓄电池内部都配置有相应的直流发电机,保证在断电的情况下起到一定的发电机组的润滑作用。

而直流电动机在启动时,其所用的电流量会增大很多,造成一定的冲击力,这种冲击力会造成一定的影响,比如充电器出现损坏、短路等,这些故障的产生都会使得发电设备无法正常运转。

因此,为了解决我国在有关这方面的控制技术上存在的问题,需要对调速与测速系统进行控制与设计,以此来确保整个电机设备的稳定性与安全性。

1电机调速原理及其实现电机调速原理主要是指对电机两端所存在的电压进行数据上的更改,以此来完成对电机转速的调节工作,对于电机而言,当自身的电压方向出现改变,那么电机的旋转变化发生改变。

而PWM在调速原理方面则是以脉冲信号为主,利用脉冲信号的输出特性来进行传输,并改变原本存在于电机内部空间的脉冲信号,通过间接或速度按钮来完成有关电机电压的更改工作,从而来确保电机的转速能够因此发生改变。

在这一过程中,电机内部的脉冲占比越大,转速也就越慢。

整个电路主要是以H桥为主,为了确保整个驱动电机能够得到有效控制,将三极管进行单片机的引脚安装,将基极部分分别安装,从而来确保当电机处于运行状态时,能够利用垫片机来对其自身的转速内容进行控制。

当脉冲信号输送工作时,另一端会通过开展低电平的模式来进行应用,这时的直流电机会呈现为正转状态,反之亦然。

课程设计---直流电动机测速系统设计

课程设计---直流电动机测速系统设计

专业课程设计题目三直流电动机测速系统设计院系:专业班级:小组成员:指导教师:日期:前言1.题目要求设计题目:直流电动机测速系统设计描述:利用单片机设计直流电机测速系统具体要求: 8051 单片机作为主控制器、利用红外光传感器设计转速测量、检测直流电机速度,并显示。

元件: STC89C52、晶振(12MHz)、小按键、 ST151、数码管以及电阻电容等2.组内分工(1)负责软件及仿真调试:主要由完成(2)负责电路焊接:主要由完成(3)撰写报告:主要由完成3.总体设计方案总体设计方案的硬件部分详细框图如图一所示 :数码管显示按键控制单片机 PWM 电机驱动一、转速测量方法转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。

按照不同的理论方法,先后产生过模拟测速法 (如离心式转速表) 、同步测速法(如机械式或闪光式频闪测速仪) 以及计数测速法。

计数测速法又可分为机械式定时计数法和电子式定时计数法。

本文介绍的采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的就是电子式定时计数法。

对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。

在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:①测频率法:在一定时间间隔t 内,计数被测信号的重复变化次数N ,则被测信号的频率fx 可表示为f x =Nt(1)②测周期法:在被测信号的一个周期内,计数时钟脉冲数m0 ,则被测信号频率fx = fc/ m0 ,其中, fc 为时钟脉冲信号频率。

③多周期测频法:在被测信号m1 个周期内, 计数时钟脉冲数m2 ,从而得到被测信号频率fx ,则fx 可以表示为fx =m1 fcm2, m1 由测量准确度确定。

电子式定时计数法测量频率时, 其测量准确度主要由两项误差来决定: 一项是时基误差 ; 另一项是量化± 1 误差。

直流电机测速实验

直流电机测速实验

实验三直流电机测速实验一实验目的(1)掌握8254的工作原理和编程方法;(2)了解光电开关,掌握用光电传感器测量电机转速的方法。

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

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

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

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

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

三线路连接线路连接如图所示。

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

GA TE0和GA TE2均接+5V电源。

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

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

四编程提示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 0COUNT1 DB 0COUNT2 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 ;A X←DX ,AX÷1000商,D X←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←A L,个位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 ;D L>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 ;返回DOS INT 21HCODE ENDSEND ST ART ;结束七上机操作相关数据截图八思考题关闭电机后,为什么8254计数不为零?。

直流电机的转速检测及电路设计

直流电机的转速检测及电路设计

摘要在电气时代的今天,电动机在工农业生产与人们日常生活中都起着十分重要的作用。

直流电机作为最常见的一种电机,具有非常优秀的线性机械特性、较宽的调速范围、良好的起动性以及简单的控制电路等优点,因此在社会的各个领域中都得到了十分广泛的应用。

系统主要功能是:AT89C51单片机接受霍尔传感器传来的脉冲信号,单片机根据外部中断,以及内部定时器进行计数计算出电机转速送到LED并显示,外部装有蜂鸣器电路,在超速或低俗过低都会停止电动机,蜂鸣器发音,显示器不显示,从实用角度看,评价一个系统实用价值的重要标准,就是这个系统对社会生活和科技观念有多大的贡献。

本设计以单片机为核心设计一个电动机转速测定及数据显示控制系统,要求对转速范围在0-3000r/min的直流调速电动机进行测量并显示,转速数据显示精度要达到转速个位数,有转速高、低限报警提示。

本设计使用6V直流电机。

将霍尔传感器产生的脉冲信号输入到单片机外部中断0口,单片机工作在内部定时器工作方式0,对周期信号进行计数,调用计算公式计算出转速,调用显示程序在LED上,其主要内容是单片机部分主要完成电机转速的测量,LED显示部分主要是把转速显示出来,显示范围在0-3000r/min之间。

本设计主要研究直流电机的控制和测量方法,效率高,电路简单,使用也比较广泛,测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。

从而对电机的控制精度、响应速度以及节约能源等都具有重要意义。

关键词:单片机霍尔IC传感器 , DAC0832 直流电动机转速流程图A/D 和D/A转换器目录摘要 (2)第一章:引言 (5)第二章:系统功能分析 (7)2.1 系统功能概述 (7)2.2 系统要求及主要内容 (7)2.3 系统技术指标 (7)第三章:系统总体设计 (8)3.1 硬件电路设计思路 (8)3.2 软件设计思路 (9)第四章:硬件电路设计 (8)4.1 单片机描述 (12)4.1.1 AT89C51引脚及作用 (12)4.1.2 ULN2003引脚图及功能 (13)4.2 外围电路设计 (14)4.2.1时钟电路 (14)4.2.2复位电路 (14)4.2.3测速电路 (15)4.2.4报警电路 (16)4.2.5显示电路 (16)4.2.6 74HC573引脚图及功能 (18)第五章:软件电路设计 (20)第六章:系统调试 (23)6.1 硬件调试 (23)6.2 软件调试 (24)6.3 综合调试 (24)6.4 故障分析与解决方案 (24)6.4.1 故障出现情况 (24)6.4.2 解决方案 (25)第七章:结论 (30)参考文献 (31)致谢 (28)附录 (29)第一章引言电子技术的高速发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术进入到一个新的阶段。

直流电机测速代码

直流电机测速代码
end process;
process (s)
begin
case s is
when "000"=>lout4<=in6;
when "001"=>lout4<=in5;
when "010"=>lout4<=in4;
when "011"=>lout4<="0000";
when "100"=>lout4<=in3;
signal lout4:std_logic_vector(3 downto 0);
begin
process (clk)
begin
if (clk'event and clk='1')then
if (s="111") then
s<="000";
else s<=s+1;
end if;
end if;
sel<=s;
解决办法
通过学习了解了控制占空比就可以控制直流电机转速
五、 调试过程介绍
1、 调试过程 (1)
把程序下载到实验箱,观察实验现象,如果不对就修改程序,重复前面的操作,直到成功
2、
(1) 调试过程中出现的问题及其解决方法 问题一 数码管显示的速度跳动很大
解决方法
通过把占空比从100分频调到1000,这样占空比没变化1速度的变化
一、 设计要求
1. 用数码管显示直流电机转速 2. 控制直流电机转速
3. 控制直流电机保持在一个恒定值 二、 设计目的
a) 掌握直流电机的工作原理。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档