单片机测量电机转速

合集下载

基于单片机系统的电机转速测量电路设计

基于单片机系统的电机转速测量电路设计

2021.02科学技术创新基于单片机系统的电机转速测量电路设计杨扬(徐州工程机械技师学院,江苏徐州221000)1转速测量方法本电路设计转速测量是用增量式编码器结合单片机,采用M/T 法,完成测速工作并显示。

增量式编码器与电机相连,输出信号接入本设计电路,即可实现转速测量及显示。

1.1增量式轴编码器光电轴角编码器,又称轴编码器或光电角位置传感器,是通过两个光敏接收管来转化角度码盘的时序和相位关系,并与单片机、计算机等控制器及显示装置相连接,实现数字测量、数字控制与数字显示。

增量式编码器转轴旋转时,有相应的脉冲输出,轴编码器主要分为增量式、绝对式与混合式3种,其中增量式轴编码器主要用于测量转子速度,绝对式轴编码器主要用于测量转子的空间位置,混合式轴编码器是增量式轴编码器与绝对式轴编码器的组合后端加入处理芯片之后,3种轴编码器都具有测量转子速度与空间位置的功能。

增量式轴编码器的结构如图1。

图1增量式轴码器的结构1.2M/T 法测转速常用的采用旋转编码器的数字测速方法有三种:M 法、T 法、M/T 法。

检测T C 时间内旋转编码器输出的脉冲个数M 1,又检测同一时间间隔的高频时钟脉冲个数M 2,用来计算转速的方法,称作M/T 法测速。

高频脉冲的频率为f 0,则准确的测速时间为Tt =M 2/f 0,电机的转速为:采用M/T 法测速时,应保证高频时钟脉冲计数器与旋转编码器计数器同时开启与关闭,以减少误差。

只有捕捉到编码器脉冲前沿时,两个计数器才同时开启与停止计数。

图2M/T 法测速2硬件电路设计单片机测量转速基本原理框图如图3所示,本模块的设计思路是:引入编码器信号,对编码器信号进行简单的整形后,送入光耦将信号隔离,经光耦隔离后信号送入CPLD 进行预处理(辨向、倍频),然后送入单片机计算转速,送入LED 数码管显示。

测速模块由整形电路、cpld 、单片机、LED 显示电路组成。

图3硬件电路设计框图2.1传感器部分主要分为两个部分,第一部分是光电编码器,将电机的转速信号转换为脉冲信号。

AVR单片机在电机转速测量中两种方法

AVR单片机在电机转速测量中两种方法
《工业控制计算机》2008年21卷第1期AVR单片机在电机转速测量中两种方法张文斌1李斌2李幸丹1(1军事交通学院装运机械系,天津300161;2海军蚌埠士官学校军港机械教研室,安徽蚌埠230012)TwoMethodsofMeasuringRotationSpeedofElectricityEngineUsingAVR数据采集是工业测控的一个重要方面,数据采集系统的优劣直接影响系统测控结果的好坏。在转速的测量中影响测量精度的主要原因有两个:一是采样频率,采样频率越高采出的数据就越准确,而且不会出现误采数据的现象;二是采样点的多少,采样点越多速度测量结果越精确,尤其是对低速测量。在本系统中本文使用了8位RISC(精简指令集)AVR单片机的高端产品Atmega128,使用外部16M(兆)晶振,实现采样的高速化。采样点选取5个,对于电机转速的测量能达到足够高的精度。对Atmega128单片机编程使用了C语言,编译软件为Image-CraftC,调试用AVRStudio。1转速检测电路转速检测流程如图1所示,分为转速传感器信号转换、调压电路、脉冲整形电路和单片机对输入脉冲的检测四个部分。图1转速测量流程框图为实现转速传感器信号尽可能的无失真转换,可选用北京波谱世纪科技发展有限公司的S16(外径16mm)优质磁电式齿轮转速传感器,它由12V供电,分辨率高,频响宽,可靠性高且内装放大整形电路的,可将电机齿轮的转动频率(或速度)转化成方波脉冲电信号。调压电路功用是得到满足单片机端口所能承载的电平,为此选用精密的工业级电阻R1、R2组成调压电路,将峰值12V的电脉冲调节为峰值5V的电脉冲。脉冲整形电路为施密特触发电路(schmidttriggercircuit)74LS14,它是双稳态多谐振荡器的一种。它将调压电路输出的非脉冲型号变换为适于数字电路工作的脉冲,以及将波形畸变了的脉冲整形,同时经过两次电平翻转获得更高品质的方波。单片机对输入脉冲的检测对应本文将介绍的两种电机的测速方法。一是通过AVR单片机T/C2(8位定时计数器2)的外部输入引脚来检测;一种是通过T/C3(16位定时计数器3)的IC3引脚的输入捕捉功能来检测。2转速检测软件编程2.1外部输入测速的软件编程外部输入测速原理如图2所示。测速采用了两极中断,T2溢出中断程序用于记录外部脉冲,T0溢出中断程序用于对脉冲进行时间度量。图2外部输入测速测量原理图启动测速后,首先设置标志和初值。将E_Flag、T0_OVER初值设置为0,TCNT2初始值为0XFA,表示需要考察6个脉冲后就溢出中断了,设置TCCR2为0x07,这样的设置标时计数方式外部脉冲上升沿,且T2外部计数已使能;程序接着进行了容错处理,当TCNT2等于0XFA时,表示第一个脉冲还没有过去,程序等待,这样跳出等待也就是第二个脉冲到来之时,程序将对以下5个脉冲计数(T2)计时(T0)。对于这5个脉冲,首先将TCNT0清零,让后同时启动T0计数和使能T0溢出中断与T2溢出中断。这样T2外部输入端口检查外部5个脉冲,T0作为基准时钟不停地计数溢出,测到外部5个脉冲后,T2外部计数溢出中断,在T2的中断服务程序中,将转速计算出来,停止T0、T2,并关闭T0、T2溢出中断使能。测速完成后将测速标志E_Flag置1,这样便完成了转速测量。转速计算:5个脉冲的时间:1/(n/60)/Z=(T0_OVER*256+TCNT0)/(16*106),算得n=(4.8*109)/Z/(T0_OVER*256+TCNT0),其中,n:电机转摘要为实现电机转速的精确测量,设计了转速检测电路并分析了各部分的功用。运用AVR单片机外部输入计数和输入捕捉两种功能,重点阐述测速原理和C语言编程。程序使用了容错处理和中断程序,提高了转速测量的精度和实时性。关键词:AVR单片机,C语言,转速测量AbstractInordertogethighmeasuringaccuracyofrotationpeed,detectingcircitisdesignedandeachpart'susageisana-lyzedinthispaper.TwofucntionsofAVRsinglechipmicrocomputer,thatisouterinportcounterandinputcapture,especiallyexoatiateontheirspeedmeasuringtheoryandClanguageprogramme.Astheprogramisdealedwitherror_tolerencepro-cessandinterruptprogramme,themeasuringaccuracyandreal-timecharacterareenhanced.Keywords:AVRsinglechipmicrocomputer,Clanguage,rotaionspeedmeasuring73

51单片机测电机转速LCD显示

51单片机测电机转速LCD显示

主程序* 文件名称: Jiuzhouxuese.c 转速计的设计(LCD显示)的主程序* 原理: T1计数,T0计时,电动机每转动一周产生16个脉冲,T1采集一分钟内的脉冲数,后即可计算出转速* 版本信息: 2011-10-23---------------------------------------------------------------*/#include "LCD1602.h"#include<reg51.h>#define uint unsigned int#define uchar unsigned charbit flag; //计满1秒钟标志位uchar count=100; //储存定时器T0中断次数uint Speed; //储存电机转速uchar DispBuffer[4];//存放转换成液晶显示字符(ASCII)的数组/*------------------------------------------------------------功能:主函数说明:使用晶振为12MHz的芯片,定时0.01秒。

计时器初值为C=65536-0.01/10^(-6)=0D8F0H---------------------------------------------------------------*/void main(void){TMOD=0x51;//T1工作于计数模式1,T0工作于计时模式1;TH0=0xd8; //定时器T0赋初值TL0=0xf0;EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0while(1){TR1=1; //计数T1启动TH1=0; //计数T1高8位赋初值0TL1=0; //计数T1低8位赋初值0flag=0; //时间还未满1秒钟while(flag==0) //时间未满等待Speed=(TH1*256+TL1)*60/16; //计算速度,每周产生16个脉冲}}/*-------------------------------------------------------------函数功能:定时器T0的中断服务函数--------------------------------------------------------------*/void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器{count--; //T0每中断1次,count减1LCD_Initial();//液晶初始化if(count%4==0){DispBuffer[0]=Speed/1000+0x30; //将显示数据并分解出千位转换成ASCII码}if (count%4==1){DispBuffer[1]=Speed%1000/100+0x30;//将显示数据并分解出百位转换成ASCII码}if(count%4==2){DispBuffer[2]=Speed%100/10+0x30;//将显示数据并分解出十位转换成ASCII码}if(count%4==3){ DispBuffer[3]=Speed%10+0x30 ; // 将显示数据并分解出个位转换成ASCII码}LCD_Prints(1,0,DispBuffer);//LCD显示数据while(0);if(count==0) //若累计满100次,即计满1秒钟{flag=1; //计满1秒钟标志位置1count=100; //清0,重新统计中断次数}TH0=0xf0; //定时器T0重新赋初值TL0=0xd8;}LCM1602驱动程序/************************************* *************************************File Name: LCD1602.hAuthor: JiuzhouxunseCreated: 2011/10/23************************************* ************************************* */#ifndef _LCD_1602_H#define _LCD_1602_H#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char定义接口************************************* sbit LcdRs = P2^0;sbit LcdRw = P2^1;sbit LcdEn = P2^2;sfr DBPort = 0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口//内部等待函数************************************* ************************************* unsigned char LCD_Wait(void){LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();//while(DBPort&0x80),在用Proteus仿真时,屏蔽此语句,否则会进入死循环!LcdEn=0;return DBPort;//向LCD写入命令或数据************************************* ***********************#define LCD_COMMAND 0 // 命令#define LCD_DATA 1 // 数据#define LCD_CLEAR_SCREEN 0x01// 清屏#define LCD_HOMING 0x02 // 光标返回原点void LCD_Write(bit style, unsigned char input){LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();//注意顺序LcdEn=1; _nop_();//注意顺序LcdEn=0; _nop_();LCD_Wait();}//设置显示模式************************************* ***********************#define LCD_SHOW 0x04 //显示开#define LCD_HIDE 0x00 //显示关#define LCD_CURSOR 0x02 //显示光标#define LCD_NO_CURSOR 0x00 //无光标#define LCD_FLASH 0x01 //光标闪动#define LCD_NO_FLASH 0x00 //光标不闪动void LCD_SetDisplay(unsigned char DisplayMode){LCD_Write(LCD_COMMAND,0x08|DisplayMode);}//设置输入模式************************************* ***********************#define LCD_AC_UP 0x02#define LCD_AC_DOWN 0x00// 为缺省设置#define LCD_MOVE 0x01 // 画面可平移#define LCD_NO_MOVE 0x00//画面不可平移void LCD_SetInput(unsigned char InputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}//初始化LCD********************************* ***************************void LCD_Initial(){LcdEn=0;LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);//此句不能省LCD_SetDisplay(LCD_SHOW|LCD_NO _CURSOR); //开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CL EAR_SCREEN); //清屏LCD_SetInput(LCD_AC_UP|LCD_NO_ MOVE); //AC递增, 画面不动}//************************************ ************************************ void LCD_Pos(unsigned char x, unsignedchar y){if(y==0)LCD_Write(LCD_COMMAND,0x80|x); if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0 x40));}void LCD_Prints(uchar x,uchar y, unsigned char *str){while(*str!='\0'){LCD_Write(LCD_DATA,*str);str++;}}Proteus仿真图。

基于单片机的电机转速测量系统设计_(附图及源程序)

基于单片机的电机转速测量系统设计_(附图及源程序)

摘要在工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。

模拟式采用测速发电机为检测元件,得到的信号是模拟量。

数字式通常采用光电编码器,霍尔元件等为检测元件,得到的信号是脉冲信号。

随着微型计算机的广泛应用,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法。

本文便是运用AT89C51单片机控制的智能化转速测量仪。

电机在运行过程中,需要对其进行监控,转速是一个必不可少的一个参数。

本系统就是对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本状况。

本设计主要用AT89C51作为控制核心,由霍尔传感器、LED数码显像管、HIN232CPE电平转换、及RS232构成。

详细介绍了单片机的测量转速系统及PC机与单片机之间的串行通讯。

充分发挥了单片机的性能。

本文重点是测量速度并显示在5位LED数码管上。

其优点硬件是电路简单,软件功能完善,测量速度快、精度高、控制系统可靠,性价比较高等特点。

关键字:MSC-51(单片机);转速;传感器目录摘要 (1)Abstract .................................... 错误!未定义书签。

1 序言 (1)2 系统功能分析 (2)2.1 系统功能概述 (2)2.2 系统要求及主要内容 (3)3 系统总体设计 (4)3.1 硬件电路设计思路 (4)3.2 软件设计思路 (4)4 硬件电路设计 (6)4.1 单片机模块 (6)4.1.1 处理执行元件 (6)4.1.2 时钟电路 (10)4.1.3 复位电路 (11)4.1.4 显示电路 (12)4.2 霍尔传感器简介 (15)4.2.1 霍尔器件概述 (15)4.2.2 霍尔传感器的应用 (16)4.2.3 AH41霍尔开关 (17)4.3 发送模块 (18)5 软件设计 (22)5.1 单片机转速程序设计思路及过程 (22)5.1.1 单片机程序设计思路 (22)5.1.2 单片机转速计算程序 (23)5.1.3 二-十进制转换程序 (24)5.2 程序设计 (27)6 系统调试 (29)6.1 硬件调试 (29)6.2 软件调试 (30)6.3 综合调试 (32)6.4 故障分析与解决方案 (33)6.5 结论与经验 (34)参考文献 (36)致谢 (37)附录 (38)附录1 电路原理图 (38)附录2 元器件清单 (39)1 序言智能化转速测量可以对电机的转速进行测量,电机在运行的过程中,需要对其平稳性进行监测,适时对转速的测量有效地可以反映电机的状况。

C51单片机在电机转速测量仿真系统中的设计

C51单片机在电机转速测量仿真系统中的设计

C51 单片机在电机转速测量仿真系统中的设计单片机电机转速测量系统仿真系统采用单片机中T1 计数器对转速脉冲进行计数。

定时器T1 工作于外部事件计数方式,对转速脉冲计数; T0 工作于定时器方式。

每到1 s 读1 次计数值,此值即为脉冲信号的频率,根据式(1)可计算出电机的转速。

转速检测装置的软件系统主要包括:测速主程序、数据处理子程序和显示子程序。

单片机上电后,系统进入准备状态。

首先进行初始化,然后读取脉冲数据进行运算,将转速显示在LCD 上。

需要这款仿真及C 语言程序的爱好者可从文章配图左上角网址上了解。

该单片机电机转速测量系统仿真仿真采用测频法“M法”测量电机转速。

即在一定测量时间T 内,测量脉冲发生器(替代输入脉冲)产生的脉冲数m1 来测量转速,计算式如下:n=60m/TP,式中:P-为转轴转一周脉冲发生器产生的脉冲数;n-转速单位:(转/分);T-定时时间单位:(秒)。

在该方法中,测量精度是由于定时时间T 和脉冲不能保证严格同步,以及在T 内能否正好测量外部脉冲的完整的周期,可能产生的1 个脉冲的量化误差。

因此,为了提高测量精度,T 要有足够长的时间。

定时时间可根据测量对象情况预先设置。

设置的时间过长,可以提高精度,但在转速较快的情况下,所计的脉冲数增大(码盘孔数已定情况下),限制了转速测量的量程。

而设置的时间过短,测量精度会受到一定的影响。

转速部分软件设计思路:AT89S52 单片机的P3.5 口接收传感器的信号。

电路由显示电路、AT89S52 单片机,单片机时钟电路,复位电路,等组成。

中断服务程序INT0,软件需要解决的是定时器T0 的记数和外部计数器T1 的协调工作。

由于测量的转速范围大,所以低速和高速都要考虑在内,软件工作流程:传感器检测出电机转动一转的脉冲数,由单片机的P3.5 端口送入单片机,由单片机的内部计数器T1 计数,启动计数时,发送一个信号TR0=1,内部定时器T0 开始时,TH0、TL0 设定初值为0。

单片机在电机转速测量仪应用 测量仪常见问题解决方法

单片机在电机转速测量仪应用 测量仪常见问题解决方法

单片机在电机转速测量仪应用测量仪常见问题解决方法单片机是整个测量系统的紧要部分,担负对前端脉冲信号的处理、计算、信号的同步,计时等任务,其次,将测量的数据经计算后,将得到的转速值传送到显示接口中,用数码管显示数值。

在本系统中考虑到计数的范围、使用的定时,计数器的个数及I/O口线。

电机转速测量需要经过的4个基本步骤:1是掌控方式;2是确定计数方式;3是信号输入方式;4是计数值的读取;单片机完成对电机转速脉冲计数的掌控,读取寄存器完成转速频率的确定。

其测量过程是测量转速的霍尔传感器和电机机轴同轴连接,机轴每转一周,产生确定量的脉冲个数,由霍尔器件电路输出。

成为转数计数器的计数脉冲。

同时霍尔传感器电路输出幅度为12V的脉冲经光电耦合后降为5V,保持同单片机AT89C51逻辑电平相一致,掌控计数时间,即可实现计数器的计数值对应机轴的转速值。

主CPU将该值数据处理后,在数码管上显示出来。

本系统接受89C51中的0INT停止对转速脉冲计数。

定时器T0工作于定时方式,工作于方式1、每到1s读一次外部停止0INT计数值,此值即为脉冲信号的频率,可计算出电机的转速。

当直流电机通过传动部分带圆盘旋转时,霍尔传感器依据圆盘上得磁片获得一系列脉冲信号。

这些脉冲信号通过单片机系统定时/计数器0INT计数,定时器T0定时。

定时器T0完成100次溢出停止的时间T除以测得的脉冲数m,经过单位换算,就可以算得直流电机旋转的速度。

然后判定是否启动系统进行测量。

假如是,就启动系统运行。

假如不是就等待启动。

启动系统后,霍尔传感器检测脉冲到来后,启动外部停止,每来一个脉冲停止一次,记录脉冲个数。

同时启动T0定时器工作,每1秒定时停止一次,读取记录的脉冲个数,即电机转速。

连续采样三次,取平均值记为一次转速值。

再进行数值的判定,若数值高于5000rpm则报警并返回初始化阶段,否则就进行正常速度数码管显示。

单片机的转速测量完成,定时器T0作为内部定时器,外部停止来的时候读取TH0,TL0,并同时清零TH0、TL0,使定时器再次循环计内部脉冲。

基于单片机的电机转速测量系统设计

基于单片机的电机转速测量系统设计

基于单片机的电机转速测量系统设计一、绪论电机是现代工业生产中常用的电力传动装置,其转速的准确测量对于工业生产的稳定运行和质量控制具有重要意义。

本文设计了一种基于单片机的电机转速测量系统,通过对电机转速的实时监测和数据采集,实现对电机运行状态的有效控制和管理。

二、系统设计方案1.硬件设计:a.使用单片机作为控制核心,选择适合的单片机芯片,如STC89C52b.采用光电传感器作为转速检测元件,通过将光电传感器的发光管与光敏电阻相对应,并将其安装在电机转轴上,当转轴旋转时,光敏电阻会根据光线的变化产生电信号,通过电压变化实现转速测量。

c.添加滤波电路,通过对信号进行滤波处理,保证测量结果的稳定性和准确性。

d.利用LCD液晶显示模块,显示电机的实时转速。

e.设计相关电源和电路,保证系统正常运行。

2.软件设计:a.使用C语言编程,通过单片机的编程框架,编写测量转速的程序。

b.通过定时器中断的方式,实时采集光电传感器的信号,并进行信号处理,得到电机的实时转速值。

c.将转速值存储在内部存储器中,以备后续分析和处理。

d.利用LCD液晶显示模块,将转速值显示在LCD屏幕上,实现实时监测。

三、系统特点1.精确度高:通过光电传感器和滤波电路的配合使用,能够准确测量电机的转速,保证测量结果的准确性。

2.实时监测:通过单片机的编程,能够实时监测电机的转速,及时发现异常情况并进行处理。

3.数据采集:可以将转速数据存储在内部存储器中,方便后续分析和处理,实现对电机的有效控制和管理。

4.易于操作:通过LCD液晶显示模块,能够直观地显示转速值,操作简单方便。

5.低成本:该系统采用单片机作为核心,硬件设备简单,成本较低。

四、系统优化1.添加报警功能:当电机转速超过设定值或低于设定值时,系统能够及时发出警报提示操作人员,防止电机在异常情况下继续运行,保护设备安全。

2.添加通信功能:通过添加通信模块,将转速数据传输至上位机或者其他设备,实现对电机的远程监控和控制。

单片机测电机转速

单片机测电机转速
unchar i;
sbit P31=P3^1;
//*********************显示眼睛*************************//
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P34=P3^4;
display[2]=(pulse%1000)/100;
display[1]=((pulse%1000)%100)/10;
display[0]=(((pulse%1000)%100)%10)/1;
}
void timer0() interrupt 1
{
i0++;
i_1s++;
TH0=0xf8;
TL0=0x18;
}
}
}
void init()
{
TMOD=0x01;//注意要写正确
TH0=0xF8;//2ms
TL0=0x30;
TH1=0xfc;
TL1=0x66;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
}
void extract_speed(void)
{
display[3]=pulse/1000;
if(i0==1)
{
P2=0x01;
P0=dis_7[display[0]];
}
if(i0==2)
{
//P2=0x00;
P2=0x02;
P0=dis_7[display[1]];
i0=0;
}
if(i_1s==500)//1s

基于单片机的转速测试系统

基于单片机的转速测试系统

基于单片机的转速测试系统介绍了一种利用89C51型单片机技术实现高精度转速测量系统的方法。

这种测量系统具有数据准确、精度高、体积小、使用方便等优点,具有广阔的应用前景。

标签:转速测量系统;单片机;光电传感器1 转速测试的原理伴随着现代化的生产规模不断地扩大,基于单片机转速测量系统在工业和民用领域中都有很高的使用价值。

国内外的各类转速测量系统都朝着高智能化、高精度化、小型化的方面发展。

在智能化的转速测量系统中可以对转速进行自动高精度测量,大大的提高了实用价值。

转速测试系统的原理是测量旋转中的转子所产生的周期脉冲信號频率。

主要有测周期法、测频率法和测频测周期法三种:①测周期法(T法)测周期法转速通过两脉冲信号产生的间隔宽度决定(脉冲宽度用TP来表示),假设用来采集数据的叶片有N片,那么测量的时间是每转的1/N。

TP通过定时器测得,时钟脉冲计数通过定时器计数获得,在TP内计数值若为M1,那么计算公式为:P是转轴旋转一周脉冲发生器产生的脉冲fc是硬件产生的时钟脉冲频率,单位用HZ来表示N为转速,单位:r/minM1为时钟脉冲影响T法测量额精度误差有两个因素:两脉冲的上升沿触发时间不一样,计数和定时不一致。

这种方法在测量低转速时精度很高,随着速度的不断增加,T法的测量准度也随着降低。

②测频法(M法)测量脉冲发生器所产生的脉冲数m1来测量转速在时间T内完成。

测量精度由于定时时间T和脉冲不能保证同步,以及在T内不能测量外部脉冲的完整周期,捕捉脉冲信号的能力变差。

T要足够的长,才能确保测量结果的准确性。

③测频测周期法测频测周期法即综合了T法和M法,分别对高、低转速测量。

通过测量检测时间和在此检测时间内光电脉冲发生器所产生的脉冲信号来确定转速。

为确保在不同转速的测量准确性,要保证对两种不同脉冲信号进行同步测量。

2 单片机转速测量系统的主要原理单片机转速测量系统在实际应用中,大多数情况下都会被视线安装在相应的设备上,通过对不同类型的传感器产生脉冲信号,这样才能实现对电机的转速的测量。

单片机实现电机转速测量

单片机实现电机转速测量

目录绪论 (2)第1章参数计算 (3)第2章系统设计 (4)2.1 硬件设计 (4)2.1.1控制芯片——AT89C51单片机 (5)2.1.2直流测速发电机 (5)2.1.3 模数转化器件——ADC0809 (7)2.1.4 数码管 (11)2.1.5 综合接线图 (11)2.2 软件设计 (12)2.2.1 程序设计思路说明 (12)2.2.2 总程序控制流程图 (12)2.2.3 ADC0809工作流程图及程序 (13)2.2.4 显示部分工作流程图及程序 (14)第3章结论 (17)参考文献 (18)绪论直流电机转速作为直流电机的一项重要技术指标,在各个应用场合都有重要的研究价值,是其他大部分技术参数的计算来源,因此,准确测量直流电动机的转速具有重要的研究意义和理论价值。

目前,对直流电动机的速度检测方法很多,从整体上可分为模拟检测和数字检测方法。

模拟检测:即利用测速电机作为发电机,通过检测反电势E的大小和极性可得到转速N和电机转向,采用这种方法直接可以得到转速N和输出电压的特性曲线,直观,但也有很多不足,比如在高速和低速情况下实际输出偏离理想特性。

数字检测技术:即通过分析数字信号产生的一系列脉冲间接获取电机转速。

如光电旋转编码器是将检测圆盘划分为等距的三个同心圆,最外环和次外环分别用等距的黑白条纹分开,且最外环和次外环的缝隙位置相位差为90度,用于判断电机的转速,最内环只有一个黑条纹,用作定位脉冲或者是复位脉冲,利用光电编码器输出的脉冲可以计算转速,具体的又可分为M法,T法和M\T法。

第1章参数计算本课题选用55CY61直流测速发电机,参数如下:根据负载时测速发电机的输出电压公式:(1-1)知,直流测速发电机的输出电压与转速成正比,即U a=Cn。

采用55CY61时,最大转速2000r/min时最大输出电压为40v,因此C=50.由于ADC0809要求输入模拟电压信号在0~5v之间,因此需要有滑动变阻器进行电压范围调整,调整后输入到ADC0809的电压值缩小为原来的1/8。

MCS-51单片机电机转速控制及测速显示系统

MCS-51单片机电机转速控制及测速显示系统

MCS-51单片机电机转速控制及测速显示系统简介MCS-51单片机是一种广泛应用于嵌入式系统的单芯片微型计算机。

本文将介绍基于MCS-51单片机的电机转速控制及测速显示系统。

该系统通过对电机信号进行处理,实现了对电机转速的控制和测速。

系统组成该系统由电机、电机驱动电路、MCS-51单片机、显示模块等组成。

电机驱动电路:使用了L298N电机驱动芯片,可以为电机提供双向直流电源。

该电子板还添加了变阻器控制,通过调节电子板上的两个旋钮来改变电机的转速和方向。

MCS-51单片机:采用AT89S52芯片,主控为MCS-51单片机,在控制电机的同时,还可以测量电机的转速。

通过单片机与电机驱动电路的控制,来控制电机的转速。

显示模块:采用了LCD2004液晶显示模块,可实现对转速和程序运行状态的显示。

系统原理当电机启动时,读取电机反馈的信号,并将该信号传递给MCS-51单片机进行处理。

根据控制算法,单片机输出PWM(脉冲宽度调制)信号给电机驱动模块,从而改变电机的转速和方向。

同时,单片机还可以测量电机旋转的速度,将其显示在LCD2004液晶显示器上。

当用户需要改变电机的转速时,可以通过旋转电子板上的旋钮来改变电机的转速和方向。

同时,LCD2004显示器可以显示电机的当前实际速度和设定速度,帮助用户更好的控制电机的运转。

系统功能该系统具有以下功能:1.控制电机的转速和方向;2.测量电机的转速;3.显示电机的当前实际速度和设定速度。

系统优势该系统采用MCS-51单片机,具有代码量小、容易维护、功耗低等优势,适合于嵌入式系统中的电机转速控制应用。

此外,显示模块也可以提供对系统状态的及时监控和反馈,便于故障排除。

本文介绍了基于MCS-51单片机的电机转速控制及测速显示系统。

该系统通过对电机信号进行处理,实现了对电机转速的控制和测速。

该系统具有代码量小、容易维护、功耗低等优势,适合于嵌入式系统中的电机转速控制应用。

同时,显示模块也可以提供对系统状态的及时监控和反馈,便于故障排除。

单片机课程设计,电动机转速测量

单片机课程设计,电动机转速测量

一、设计题目与要求电动机转速测量1 . 4位数码管显示转速2. 用按键切换显示设计任务:利用光电接近传感器和单片机技术设计、制作一个显示电动机转速的速度测定系统。

测量范围约为750~3000r/s,尽可能地提高测量误差,用4位LED数码管显示速度。

二、方案选定1 、选择实现转速测量的方法(1)根据测量方法分类转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,速度测量的精度直接影响系统的控制情况,它是关系测控效果的一个重要因素。

不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。

在电机的转速测量中,影响测量精度的主要因素有两个:一是采样点的多少,采样点越多,速度测量结果越精确,尤其是对于低转速的测量。

二是采样频率,采样频率越高,采样的数据就越准确。

常用的数字测量方法电机转动速度的数字检测基本方法是利用与电动机同轴连接的光电脉冲发生器的输出脉冲频率与转速成正比的原理。

根据脉冲发生器发出的脉冲速度和序列,测量转速和判别其转动方向。

根据脉冲计数来实现转速测量的方法主要有:M 法(测频法)、T法(测周期法)和M/T法(频率/周期法)。

M法(测频法)在规定的检测时间内,检测光电脉冲发生器所产生的脉冲信号的个数来确定转速。

虽然检测时间一定,但检测的起止时间具有随机性,因此M法测量转速在极端情况下会产生士1个转速脉冲的误差。

当被测转速较高或电机转动一圈发出的转速脉冲信号的个数较大时,才有较高的测量精度,因此M法适合于高速测量。

T法(测周期法)是测量光电脉冲发生器所产生的相邻两个转速脉冲信号的时间来确定转速。

相邻两个转速脉冲信号时间的测量是采用对已知高频脉冲信号进行计数来实现的。

在极端情况下,时间的测量会产生士1个高频脉冲周期,因此T法在被测转速较低(相邻两个转速脉冲信号时间较大)时,才有较高的测量精度,所以T法适合于低速测量。

M/T法(频率/周期法)是同时测量检测时间和在此检测时间内光电脉冲发生器所产生的转速脉冲信号的个数来确定转速。

单片机转速测量程序

单片机转速测量程序
#include <reg52.h> sbit LED=P3^2; sbit FAL=P1^7;//HZ 输出计数标准,调节此处调整大小 sbit KEY_A=P1^0;//定义按键 sbit KEY_B=P1^1;//定义按键 sbit KEY_C=P1^2;//定义按键 sbit KEY_D=P1^3;//定义按键
fre=0; if(speed==9999)//最大转速,单位 0.1r/min
speed=0; if(display<2)//滤除第一次 {
play(1,0);
delay(3); play(2,0); delay(3); play(3,0); P0|=0x80;//打印小数点 delay(3); play(4,0); delay(3); } else//滤除后进行显示 { swiБайду номын сангаасch(chose) {
TH1=0x30;TL1=0xB0;//设置定时器 1 时间 50MS 初值,按照理论计算值为 D8F0,已经进行修正处理
ET1=1;//允许定时器 1 中断 EA=1;//允许所有中断 TR1=1;//开启定时器 1 计数 } void main(void) { init(); while(1) {
数值,然后退出 case 2:{P2=~0x40;P0=~smg[num]; break;} case 3:{P2=~0x20;P0=~smg[num]; break;} case 4:{P2=~0x10;P0=~smg[num]; break;} default : break; }
} /*延时 ms 函数,入口为 ms 延时时间*/ void delay(unsigned char ms) {
display=2; temp++;//转动圈数加 1 TR1=0;//关闭定时器 1 计数 time=TH1;//读取定时器 1 的数值 time=time<<8; time=time|TL1;//把数值装载为 16 位 freq fre=(unsigned int)irq*50+time/1000;//时间从定时器和缓冲中 提取出来 time=0x0000;//清零计数 irq=0x00;//清零中断进入个数 speed=(60*1000)/(fre/10);// 转速测量,1/(fre/1000)*60,放大 10 倍数,精度为 0.1 TH1=0x30;TL1=0xB0;//设置计数器 0 初值 TR1=1;//开启计数器 0 计数 } } else if(LED==1) { flag=0x01; } } /*定时器 1 初始化函数*/ void init(void) { TMOD=0x10;//设置 T1=定时器 TCON=0x00; /*T1=定时器*/

基于单片机的电机转速测量仪设计

基于单片机的电机转速测量仪设计

摘要本文讨论了以STC89C51单片机为核心的电机转速测量的硬件设计和软件设计,硬件主要由光电传感器、信号整形、LED数码管显示几局部组成。

详细介绍了利用光电传感器技术在电机转速测量中的实现及应用,以及对电机转速进展测量,并由数码管显示转速。

随着汽车及电子技术的开展,转速测量技术也在不断创新,各种转速测量仪在工业得到广泛应用,对电机的转速进展测量极大的提高了自动化程度。

关键字:单片机,光电传感器,信号整形,LED显示Design of Motor Speed Measurement InstrumentBased on MCUAbstractThis article discussed take STC89C51 monolithic integrated circuit as the core electrical machinery tachometric survey hardware design and the software design, the hardware mainly by the photoelectric sensor, t he signal shaping, the LED nixietube demonstrated that several parts compose. Introduced in detail the use photoelectric sensor technology and applies in electrical machinery tachometric survey's realization, as well as carries on the survey to the electri cal machinery rotational speed, and demonstrates the rotational speed by the nixietube. Along with the automobile and electronic technology's development, the tachometric survey technology unceasingly is also innovating, each kind of rotational speed measu ring instrument obtains the widespread application in the industry, carried on the survey enormous enhancement automaticity to electrical machinery's rotational speed.Keywords:Monolithic integrated circuit,Photoelectric sensor,Signal shaping,LED demonstrated目录1 绪论41.1设计题目41.2课题背景42 转速测量系统的设计52.1 转速测量方法及比拟52.1.1测频原理62.1.2.测周原理72.1.3.计数器原理72.2测量方案设计92.2.1 转速测量原理92.2.2 系统原理93 硬件电路设计103.1 电源模块103.1.1 LM2596开关电压调节器113.1.2 单片机和显示供电电路123.1.3 电机电源供电电路133.2单片机模块133.2.1 复位电路143.2.2 晶振电路153.2.3 单片机系统163.3 显示模块213.4 红外模块224 软件设计244.1 软件设计概述244.2 软件设计方案244.3 系统主程序254.4 显示子程序264.5 中断子程序275 系统调试285.1硬件调试285.2 软件调试295.3系统综合调试30结论31附录32参考文献40致411 绪论1.1设计题目题目:转速测量仪要求完成技术指标:1. 测量电机转速围0——9999转/分;2.通电就开场测量,按键后复位;3.八位数码管显示,误差<5%;1.2课题背景目前,在工程实践中,经常会遇到各种需要测量转速的场合。

自动化单片机系统中的电机转速测量电路设计

自动化单片机系统中的电机转速测量电路设计
t1的取值必须保证在采样期间内,自动化单片机系 统中的自动计数器脉冲输入有1次以上,而电机的实际 转速超过了很多次,在这种状态下应取电机转速1s即 可,即1秒乘以60。进行采样时,在保证计数器在一个 采样周期内完整输出时,控制脉冲的下降方向,再重新 设定计数器的输出[6]。
首先更新处理程序,确定下一个采样周期之前的 计数器数据处理时间t2。再由自动单片机重复扫描计数 器,定期连续地执行程序任务。完成全部任务后,系统 每收到一个指令,只能完成该任务一次。因此,充分考 虑了程序采样的数据处理要求,确保扫描周期大于工作 程序周期。电动机转动惯量时,由工作程序的长度决定 扫描周期长度,由此可设置数据处理时间,计为t2≥t1。 2.2 程序实现
【90】 第43卷 第7期 2021-07
สҾ⍻䙏ਁ⭥ᵪ⍻䟿⭥䐟



‫ ٿ‬ ᐞ




‫ ٿ‬ ᐞ

‫ ٿ‬ ᐞ

สҾ‫⸱⭥ݹ‬ ⴈ⍻䟿⭥䐟
㠚ࣘॆঅ⡷ ᵪ⍻䟿㌫㔏
ᒿਧ
图5 三种系统转速测量误差对比分析
第43卷 第7期 2021-07 【89】
现漏电情况。 配合以上仪器,设计实验步骤: 开启电机端盖,拆下定子绕组,检查线圈间距,匝
数,周长,线径,线圈绕线,垫槽绝缘,电机下线。试 验绕组对地绝缘电阻测试、测台对机测试,观察其是否 能正常工作、测三相空载电流、分析故障问题。
3.2 转速测量误差验证分析 分别使用基于测速发电机测量电路、基于光电码
3 实验
为了验证自动化单片机系统中的电机转速测量电路 设计合理性,进行实验验证分析。 3.1 实验设备及使用步骤
实验过程中所使用的设备仪器包括以下几种: 1)万用表 万用表负责检查电路的连接情况,将万用表调到蜂 鸣档位置,测试接线情况,当红黑表笔与线圈接头连接 出现蜂鸣声,则说明电路完好连接。 2)2000V兆欧表 兆欧表是以兆欧为单位,检查绝缘电阻,保证线路 工作正常,避免发货时能意外情况。 3)电机装置 电机装置依据电磁感应定律传递电磁,该装置用来 进行空载测试,依据传递电磁情况检测电机装置是否出
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.摘要测速是工农业生产中经常遇到的问题,学会使用单片机技术设计测速仪表具有很重要的意义。

要测速,首先要解决是采样的问题。

在使用模拟技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。

使用单片机进行测速,可以使用简单的脉冲计数法。

只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数,即可获得转速的信息。

2.系统结构本文主要针对电机的转速进行测量,然后用数码管把电机的转速显示出来!本装置主要有两部分构成。

1光电测速部分。

2测得的脉冲处理处理和显示部分!光电测速部分主要由光电传感器构成!脉冲处理部分主要经施密特触发器对接收到的脉冲进行波形校正,由单片机的T1口输入,经80C51处理后显示输出电机的转速下面我们来了解一下光电测速部分!。

3、脉冲信号的获得可以有多种方式来获得脉冲信号,这些方法有各自的应用场合。

下面逐一进行分析。

3.1霍尔传感器霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。

如图1所示是CS3020的外形图,将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。

此主题相关图片如下:1.jpg图1 CS3020外形图使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。

如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。

在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。

这种传感器不怕灰尘、油污,在工业现场应用广泛。

3.2.光电传感器光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、反射式等,基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。

以透射式为例,如图2所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。

为此,可以制作一个遮光叶片如图3所示,安装在转轴上,当扇叶经过时,产生脉冲信号。

当叶片数较多时,旋转一周可以获得多个脉冲信号。

图2光电传感器的原理图此主题相关图片如下:3.jpg图3遮光叶片3.3.光电编码器光电编码器的工作原理与光电传感器一样,不过它已将光电传感器、电子电路、码盘等做成一个整体,只要用连轴器将光电传感器的轴与转轴相连,就能获得多种输出信号。

它广泛应用于数控机床、回转台、伺服传动、机器人、雷达、军事目标测定等需要检测角度的装置和设备中。

如图4所示,是某光电编码器的外形。

此主题相关图片如下:4.jpg图4 成品光电编码器这次课设我选的是光电传感器,采用穿透法测量电机转速。

光电传感器的原理上面有详细的介绍。

当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。

为此,可以制作一个遮光叶片如图3所示,安装在转轴上,当扇叶经过时,产生脉冲信号。

当叶片数较多时,旋转一周可以获得多个脉冲信号。

这里我们才用转10个孔的方式!在一分钟的时间内,假如产生了10000脉冲,则电机的转速就为1000r/min.4、硬件连接测速的方法决定了测速信号的硬件连接,测速实际上就是测频,因此,频率测量的一些原则同样适用于测速。

通常,可以用计数法、测脉宽法和等精度法来进行测试。

所谓计数法,就是给定一个闸门时间,在闸门时间内计数输入的脉冲个数;测脉宽法是利用待测信号的脉宽来控制计数门,对一个高精度的高频计数信号进行计数。

由于闸门与被测信号不能同步,因此,这两种方法都存在±1误差的问题,第一种方法适用于信号频率高时使用,第二种方法则在信号频率低时使用。

等精度法则对高、低频信号都有很好的适应性。

这里为简化讨论,仅采用计数法来进行测试。

如上图:因为光电传感器不好仿真,这里我们采用了555芯片构成一个施密特触发器,由光电传感器得到的脉冲由2,5脚输入,经3脚输出接到单片机的T1(P3.5).。

经89C51编程处理后由P1口输出通过数码管显示出转速!5、实验程序及分析测量转速,使用光电传感器,被测电机带动纸片旋转,我们在纸片上开了10小孔,电机每旋转一周就会产生10个脉冲,产生12个脉冲,要求将转速值(转/分)显示在数码管上。

实验程序如下:#include <REG52.H>#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define LED_DAT P1sbit LED_SEG0 = P0^3;sbit LED_SEG1 = P0^2;sbit LED_SEG2 = P0^1;sbit LED_SEG3 = P0^0;//sbit pin_SpeedSenser = P3^5; //光电传感器信号接在T1上#define TIME_CYLC 100 //12M晶振,定时器10ms 中断一次我们1秒计算一次转速// 1000ms/10ms = 100#define PLUS_PER 10 //码盘的齿数,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈#define K 100.0 //校准系数unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar data Disbuf[4];// 显示缓冲区uint Tcounter = 0; //时间计数器bit Flag_Fresh = 0; // 刷新标志bit Flag_clac = 0; //计算转速标志bit Flag_Err = 0; //超量程标志//在数码管上显示一个四位数void DisplayFresh();//计算转速,并把结果放入数码管缓冲区void ClacSpeed();//初始化定时器T0void init_timer0();//初始化定时器T1void init_timer1();//延时函数void Delay(uint ms);void it_timer0() interrupt 1 /* interrupt address is 0x000b */{TF0 = 0; //d定时器T0用于数码管的动态刷新//TH0 = 0xC0; /* init values */TL0 = 0x00;Flag_Fresh = 1;Tcounter++;if(Tcounter>TIME_CYLC){ Flag_clac = 1;//周期到,该重新计算转速了}}void it_timer1() interrupt 3 /* interrupt address is 0x001b */{TF1 = 0; //定时器T1用于单位时间内收到的脉冲数//要速度不是很快,T1永远不会益处Flag_Err = 1; //如果速度很高,我们应考虑另外一种测速方法,:脉冲宽度算转速}void main(void){Disbuf[0] = 0; //开机时,初始化为0000Disbuf[1] = 0;Disbuf[2] = 0;Disbuf[3] = 0;init_timer0();init_timer1();while(1){if(Flag_Fresh){ Flag_Fresh = 0;DisplayFresh(); // 定时刷新数码管显示}if(Flag_clac){ Flag_clac = 0;ClacSpeed(); //计算转速,并把结果放入数码管缓冲区Tcounter = 0;//周期定时清零TH1=TL1 = 0x00;//脉冲计数清零}if(Flag_Err) //超量程处理{//数码管显示字母'EEEE'Disbuf[0] = 0x9e; //开机时,初始化为0000 Disbuf[1] = 0x9e;Disbuf[2] = 0x9e;Disbuf[3] = 0x9e;while(1){ DisplayFresh();//不再测速等待复位i}}}}//在数码管上显示一个四位数void DisplayFresh(){P2 |= 0xF0;LED_SEG0 = 0;LED_DAT = table[Disbuf[0]];Delay(1);P2 |= 0xF0;LED_SEG1 = 0;LED_DAT = table[Disbuf[1]];Delay(1);P2 |= 0xF0;LED_SEG2 = 0;LED_DAT = table[Disbuf[2]];Delay(1);P2 |= 0xF0;LED_SEG3 = 0;LED_DAT = table[Disbuf[3]];Delay(1);P2 |= 0xF0;}//计算转速,并把结果放入数码管缓冲区void ClacSpeed(){uint speed ;uint PlusCounter;PlusCounter = TH1*256 + TL1;speed = K*(PlusCounter/PLUS_PER)/60;//K是校准系数,如速度不准,调节K的大小Disbuf[0] = (speed/1000)%10;Disbuf[1] = (speed/100)%10;Disbuf[2] = (speed/10)%10;Disbuf[3] = speed%10;}//初始化定时器T0void init_timer0(){TMOD &= 0xf0; //定时10毫秒/* Timer 0 mode 1 with software gate */TMOD |= 0x01; /* GATE0=0; C/T0#=0; M10=0; M00=1; */TH0 = 0xC0; /* init values */TL0 = 0x00;ET0=1; /* enable timer0 interrupt */EA=1; /* enable interrupts */TR0=1; /* timer0 run */}//延时函数void Delay(uint ms){uchar i;while(ms--)for(i=0;i<100;i++);}//初始化定时器T1void init_timer1(){TMOD &= 0x0F; /* Counter 1 mode 1 with software gate */ TMOD |= 0x50; /* GATE0=0; C/T0#=1; M10=0; M00=1; */TH1 = 0x00; /* init values */TL1 = 0x00;ET1=1; /* enable timer1 interrupt */EA=1; /* enable interrupts */TR1=1; /* timer1 run */}6.软件仿真:如上图:光电传感器测得脉冲由555的2或5脚输入,由555的三脚输出,接入AT9C51的P3.5口。

相关文档
最新文档