文档库 最新最全的文档下载
当前位置:文档库 › 51单片机PID调增量式光电编码器测速.

51单片机PID调增量式光电编码器测速.

51单片机PID调增量式光电编码器测速.
51单片机PID调增量式光电编码器测速.

编码器输出的A向脉冲接到单片机的外部中断INT0,B向脉冲接到I/O端口P1.0。当系统工作时,首先要把INT0设置成下降沿触发,并开相应中断。当有有效脉冲触发中断时,进行中断处理程序,判别B脉冲是高电平还是低电平,若是高电平则编码器正转,加1计数;若是低电平则编码器反转,减1计数。

基于51单片机的直流电机PID闭环调速系统原理详解与程序

(2013-08-04 01:18:15)

转载▼

标签:

分类:单片机

51单片

直流电

pid

pcf8591

基于51单片机的直流电机PID闭环调速系统

1.电机转速反馈:

原理:利用光电编码器作为转速的反馈元件,设电机转一周光电编码器发送N个PWM波形,利用测周法测量电机转速。

具体实现:将定时器0设置在计数模式,用来统计一定的时间T内接受到的脉冲个数M个,而定时器0置在计时模式,用来计时T时间。则如果T时间接受到M个PWM波形,而电机转一圈发出N个PWM波形,则根据测周法原理,电机的实际的转速为:real_speed=M/(N*T),单位转/秒。若将定时器1置在计数模式,则PWM波形应该由P3^3脚输入。

代码实现:

//定时器0初始化,用来定时10ms

void Init_Timer0(void)

{

TMOD |= 0x01; //使用模式1,16位定时器,且工作在计时模式

TH0=(65536-10000)/256; //定时10ms

TL0=(65536-10000)%6;

EA=1; //总中断打开

ET0=1; //定时器中断打开

TR0=1; //定时器开关打开

}

// 计数器1初始化,用来统计定时器1计时250ms内PWM波形个数

void Init_Timer1(void)

{

TMOD |= 0x50; //使用计数模式1,16位计数器模式

TH1=0x00; //给定初值,由0往上计数

TL1=0x00;

EA=1; //总中断打开

ET1=1; //定时器中断打开

TR1=1; //定时器开关打开

}

//定时器0的中断服务子函数,主要完成脉冲个数的读取,实际转速的计算和PID 控制以及控制结

//果输出等工作

void Timer0_isr(void) interrupt 1

{

unsigned char count;

TH0=(65536-10000)/256; //重新赋值 10ms

TL0=(65536-10000)%6;

count++;

if (count==25) //如果达到250ms,则计算一次转速并进行一次控制运算

{

count=0;//清零以便于定时下一个250ms

TR1=0;//关闭定时器1,统计脉冲个数

real_speed=(256*TH1+TL1)*4/N;//250ms内脉冲个数并由此计算转速

TH1=0x00; //计数器1清零,重新开始计数

TL1=0x00;

TR1=1;

OUT=contr_PID();//进入PID控制,PID控制子函数代码在后面给出

write_add(0x40,OUT);//进行DA转换,将数字量转换为模拟量,后面会介绍到 }

}

2.PID控制:

PID的基本原理在这里不作具体讲解,这里主要给出PID算法的实现,通过调节结构体中比例常数(Proportion)、积分常数(Integral)、微分常数

( Derivative)使得转速控制达到想要的精度。

试凑法:注意这里参数调节采用实验凑试法,试凑法也有其规律,下面做出讲解:

实验凑试法是通过闭环运行或模拟,观察系统的输出结果,然后根据各参数对系统的影响,反复凑试参数,直至出现满意的响应,从而确定PID控制参数。

实验凑试法的整定步骤为"先比例,再积分,最后微分"。

(1)整定比例控制

将比例控制作用由小变到大,观察各次响应,直至得到反应快、超调小的响应曲线。

(2)整定积分环节

若在比例控制下稳态误差不能满足要求,需加入积分控制。

先将步骤(1)中选择的比例系数减小为原来的50~80%,再将积分时间置一个较大值,观测响应曲线。然后减小积分时间,加大积分作用,并相应调整比例系数,反复试凑至得到较满意的响应,确定比例和积分的参数。

(3)整定微分环节

若经过步骤(2),PI控制只能消除稳态误差,而动态过程不能令人满意,则应加入微分控制,构成PID控制。

先置微分时间TD=0,逐渐加大TD,同时相应地改变比例系数和积分时间,反复试凑至获得满意的控制效果和PID控制参数。

代码实现

unsigned int Proportion=8;//比例常数 Proportional Const

unsigned int Integral=3;//积分常数 Integral Const

unsigned int Derivative=1;//微分常数 Derivative Const

unsigned int LastError=0;//Error[-1]

unsigned int PrevError=0;//Error[-2]

unsigned int Error=0;//Error[0]

int Out=0;//outcome

int contr_PID()

{

Error=expc_speed-real_speed;//计算偏差

//进行增量式PID计算

Out=Out+

Proportion*(Error-LastError)+

Integral*Error+

Derivative*(Error+PrevError-2*LastError);

//进行误差更新

PrevError=LastError;

LastError=Error;

//上下限幅处理

if(Out<0)

Out=0;//驱动电机的电压不可能小于零,故当输出小于零时,输出应该值为零

if(Out>255)

Out=255;//DA转换为8位,最大数值为255,故当大于255时,限制为255 return Out;

}

3.电机驱动:

原理:直流有刷电机既可以用模拟电压驱动,又可以用PWM驱动.如果用PWM驱动时,刚刚PID后的输出可以直接对应到PWM高电平持续的时间,PWM周期为T,则低电平对应为T-Out即可,这个实现比较简单。这里介绍利用DA将数字量Out 转化为模拟电压驱动电机的方法。

模拟电压驱动实现:将数字量转化为模拟量的最常用方法就是使用DA转换。在一般的使用中我比较喜欢的一款芯片是PCF8591。它内部集成了4路8位AD转换和1路8位DA转换,与单片机之间使用IIC通信方式。由于IIC通信只需要SDA 和SCL两根信号线,因此很省IO口,并且一个芯片AD,DA都有了,很方便。具体的PCF8591资料请参考其datasheet,这里直接给出其封装好的IIC通信代码,使用直接就可以了。这里面其他的函数不用管,因为它们最终在两个函数中被调用,即write_add()和read_add()中。前者实现DA转换,有两个参数,第一个参数是控制DA转换对应寄存器地址,取0x40,第二个是要转换的数据,即返回的OUT,使用时直接一句代码:write_add(0x40,OUT)就能将数字信号转换为模拟电压信号。后者实现AD转换,只有一个参数,就是选择AD转换的4个通道,通过宏定义可以定义出其四个通道:

#define AD_IN0 0x40

#define AD_IN1 0x41

#define AD_IN2 0x42

#define AD_IN3 0x43

使用时只需要一句代码:dat=read_add(AD_IN2)就能实现将第二个通道的模拟信号转换为数字信号。

代码实现:

//PCF8591.h

#define uchar unsigned char

//延时4us

void delay(void);

//iic初始化

void init(void);

// iic开始信号

void start(void) ;

// iic停止信号

void stop(void) ;

// iic应答相当于一个智能的延时函数

void respons(void) ;

// iic读一个字节数据

uchar read_byte(void) ;

//iic写一字节数据

void write_byte(uchar date) ;

// 控制DA转换

void write_add(uchar control,uchar date);

// 控制AD转换

uchar read_add(uchar control) ;

//PCF8591.c

#include

#include #define PCF8591 0x90 //默认为写,如果为读,则为0x91 sbit SDA=P2^0;

sbit SCL=P2^1;

//延时4us

void delay(void)

{

unsigned char i;

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

} // iic初始化

void init()

{

SDA=1;

delay();

SCL=1;

delay();

} // iic开始信号

void start()

{

SDA=1;

delay();

SCL=1;

delay();

SDA=0;

delay();

}

// iic停止信号

void stop()

{

SDA=0;

delay();

SCL=1;

delay();

SDA=1;

delay();

} // iic应答相当于一个智能的延时函数

void respons()

{

uchar i;

SCL=1;

delay();

while((SDA==1)&&(i<250))

i++;

SCL=0;

delay();

}

// iic读一个字节数据

uchar read_byte()

{

uchar i,k;

SCL=0;

delay();

SDA=1;

delay();

for(i=0;i<8;i++)

{

SCL=1;

delay();

k=(k<<1)|SDA;//先左移一位,再在最低位接受当前位

SCL=0;

delay();

}

return k;

} //iic写一字节数据

void write_byte(uchar date)

{

uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1; //左移一位移出的一位在CY中

SCL=0; //只有在scl=0时sda能变化值

delay();

SDA=CY;

delay();

SCL=1;

delay();

}

SCL=0;

delay();

SDA=1;

delay();

}

// 控制DA转换

void write_add(uchar control,uchar date)

{

start();

write_byte(PCF8591);

respons();

write_byte(control);

respons();

write_byte(date);

respons();

stop();

}

// 控制AD转换

uchar read_add(uchar control)

{

uchar date;

start();

write_byte(PCF8591);

respons();

write_byte(control);

respons();

start();

write_byte(PCF8591+1);//把最后一位变成1,读数据 respons();

date=read_byte();

stop();

return date;

}

主函数:主函数中主要是一些初始化工作,还有按键检测和实际转速和期望转速显示。关于显示部分可以用液晶或者数码管,这里不再具体讲解。

#include

#include

#include #define uint unsigned int

#define uchar unsigned char #define PCF8591 0x90 //默认为写,如果为读,则为0x91

#define AD_IN0 0x40

#define AD_IN1 0x41

#define AD_IN2 0x42

#define AD_IN3 0x43 #define KeyPort P1 #define CYCLE 100 //限定的最大转速

unsigned int Proportion=8;//比例常数 Proportional Const

unsigned int Integral=3;//积分常数 Integral Const

unsigned int Derivative=1;//微分常数 Derivative Const

unsigned int LastError=0;//Error[-1]

unsigned int PrevError=0;//Error[-2]

unsigned int Error=0;//Error[0]

int Out=0;//outcome unsigned int expc_speed=0; unsigned int real_speed=0; main()

{ unsigned char num;

Init_Timer0(); //初始化定时器0

Init_Timer1(); //初始化计数器1

lcd_init();

init();

while (1) //主循环

{

num=KeyScan(); //循环调用按键扫描

switch (num)

{

case 1:

{

if(expc_speed

expc_speed++;

}

break;

case 2:

{

if(expc_speed>0)

expc_speed--;

}

}

lcd_display(4,expc_speed);

lcd_display(5,real_speed);

}

} //按键扫描函数,返回扫描键值

unsigned char KeyScan(void)

{

unsigned char keyvalue;

if(KeyPort!=0xff)

{

delay_ms(10);

if(KeyPort!=0xff)

{

keyvalue=KeyPort;

while(KeyPort!=0xff);

switch(keyvalue)

{

case 0xfe:return 1;break;

case 0xfd:return 2;break;

case 0xfb:return 3;break;

case 0xf7:return 4;break;

case 0xef:return 5;break;

case 0xdf:return 6;break;

case 0xbf:return 7;break;

case 0x7f:return 8;break;

default:return 0;break;

}

}

}

return 0;

}

分享:

我个人对MCS-51单片机定时器和计数器区别的理解

2008-02-25 18:43:30| 分类:默认分类|字号订阅

在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这

几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。

在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。

计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。

在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。

在定时器计数器中,我们有个概念叫容量,就是最大计数量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。

在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,

但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。

在定时计数器中,这90滴水就是我们所谓的初始值。问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?

我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。

在这里计数初值有3个,假设有方式0:计数初值=8912(2的13次方)—100=8812。方式1:计数初值=65536(2的16次方)—100=65436。方式0:计数初值=256(2的8次方)—100=156。

根据所得的初始值,再将其转换为16进制或者2进制,就可以进行计数或者定时了。当然要让程序完全的运行起来还需要相应的寄存器进行设置。这些可以从各种单片机教程中找到。

以上是我个人对mcs51单片机定时和计数器的理解,希望指正点评。

编码器使用教程与测速原理

编码器使用教程与测速原理 我们将通过这篇教程与大家一起学习编码器的原理,并介绍一些实用的技术。 1.编码器概述 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到底位移或者速度信息。编码器从输出数据类型上分,可以分为增量式编码器和绝对式编码器。 从编码器检测原理上来分,还可以分为光学式、磁式、感应式、电容式。常见的是光电编码器(光学式)和霍尔编码器(磁式)。 2.编码器原理 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器是由光码盘和光电检测装置组成。光码盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,检测装置检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。 霍尔编码器是一种通过磁电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。霍尔编码器是由霍尔码盘和霍尔元件组成。霍尔码盘是在一定直径的圆板上等分地布置有不同的磁极。霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。

可以看到两种原理的编码器目的都是获取AB相输出的方波信号,其使用方法也是一样,下面是一个简单的示意图。 3.编码器接线说明 具体到我们的编码器电机,我们可以看看电机编码器的实物。 这是一款增量式输出的霍尔编码器。编码器有AB相输出,所以不仅可以测速,还可以辨别转向。根据上图的接线说明可以看到,我们只需给编码器电源5V供电,在电机转动的时候即可通过AB相输出方波信号。编码器自带了上拉电阻,所以无需外部上拉,可以直接连接到单片机IO读取。

基于51单片机的红外反射式光电传感器测速机的简易设计

光电传感器——基于红外反射式的测速机

引言 在工程实践中,经常会遇到各种需要测量转速的场合。转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。迄今为止,测速可分为两类:模拟电路测速和数字电路测速。随着微电子技术的发展,计算机技术的广泛应用,出现了以计算机为核心的数字测速装置。这样的速度测量装置测量范围宽、工作方式灵活多变、适应面广,具有普通数字测速装置不可比拟的快速性、精确性和优越性。 一:设计思路 用一个红外发光二极管和一个接受红外光的二极管组成一套光电管。当检测到物表面为黑色时,反射光很弱,接收端检测到的光线可以忽略,使接收端呈现一种状态,例如开关管截止;当被检测物表面为白色时,反射光强烈,发射端发射的红外线被接收端全部接收,使接收端呈现另一种相反的状态,例如开关管开通。这两种相反的状态表现在电路中,就是高低电平组成的脉冲信号。由此,我想到用一个比较器来比较两种接受到的信号,从而输出“0”“1”两种高低电平,并把两种信号传给单片机进行统计,然后利用设定算法进行计算,最后通过数码显示管显示计算结果。 二:所需模块 本测速系统共有两个模块构成,一个为光电传感器部分,用于接收光信号并转换为电信号,即高低电平信号;另一个为单片机部分,用于接收高低电平信号并通过内部计算,然后再通过数码显示管显示测出的结果。 (一)光电传感器部分 (1)LM339工作原理及管脚图: LM339类似于增益不可调的运算放大器。每个比较器有两个输入端和一个输出端。 两个输入端中的一个称为同相输入端,用“+”表示,另一个称为反相输入

编码器测速

飞思卡尔智能车舵机和测速的控制设计与实现 时间:2010-04-1411:53:10来源:电子设计工程作者:雷贞勇谢光骥五邑大学 2.1舵机工作原理 舵机在6V电压下正常工作,而大赛组委会统一提供的标准电源输出电压为7.2V,则需一个外围电压转换电路将电源电压转换为舵机的工作电压6V。图2为舵机供电电路。 舵机由舵盘、位置反馈电位计、减速齿轮组、直流动电机和控制电路组成,内部位置反馈减速齿轮组由直流电动机驱动,其输出轴带动一个具有线性比例特性的位置反馈电位器作为位置检测。当电位器转角线性地转换为电压并反馈给控制电路时,控制电路将反馈信号与输入的控制脉冲信号相比较,产生纠正脉冲,控制并驱动直流电机正向或反向转动,使减速齿轮组输出的位置与期望值相符。从而达到舵机精确控制转向角度的目的。舵机工作原理框图如图3所示。 2.2舵机的安装与调节 舵机的控制脉宽与转角在-45°~+45°范围内线性变化。对于对速度有一定要求的智能车,舵机的响应速度和舵机的转向传动比直接影响车模能否以最佳速度顺利通过弯道。车模在赛道上高速行驶,特别是对于前瞻性不够远的红外光电检测智能车,舵机的响应速度及其转向传动比将直接影响车模行驶的稳定性,因此必须细心调试,逐一解决。由于舵机从执行转动指令到响应输出需占用一定的时间,因而产生舵机实时控制的滞后。虽然车模在进入弯道时能够检测到黑色路线的偏转方向,但由于舵机的滞后性,使得车模在转弯过程中时常偏离跑道,且速度越快,偏离越远,极大限制车模在连续弯道上行驶的最大时速,使得车模全程赛道速度很难进一步提高。为了减小舵机响应时间,在遵守比赛规则不允许改造舵机结构的前提下,利用杠杆原理,采用加长舵机力臂的方案来弥补这一缺陷,加长舵机力臂示意图如图4所示。

测速编码器

测速编码器技术参数 电机的位置检测在电机控制中是十分重要的,特别是需要根据精确转子位置控制电机运动状态的应用场合,如位置伺服系统。电机控制系统中的位置检测通常有:微电机解算元件,光电元件,磁敏元件,电磁感应元件等。这些位置检测传感器或者与电机的非负载端同轴连接,或者直接安装在电机的特定的部位。其中光电元件的测量精度较高,能够准确的反应电机的转子的机械位置,从而间接的反映出与电机连接的机械负载的准确的机械位置,从而达到精确控制电机位置的目的。本文主要介绍高精度的光电编码器的内部结构、工作原理与位置检测的方法。 一.光电编码器的介绍: 光电编码器是通过读取光电编码盘上的图案或编码信息来表示与光电编码器相连的电机转子的位置信息的。根据光电编码器的工作原理可以将光电编码器分为绝对式光电编码器与增量式光电编码器,下面我就这两种光电编码器的结构与工作原理做介绍。 1、绝对式光电编码器 绝对式光电编码器如图所示,他是通过读取编码盘上的二进制的编码信息来表示绝对位置信息的。编码盘是按照一定的编码形式制成的圆盘。图1是二进制的编码盘,图中空白部分是透光的,用“0”来表示;涂黑的部分是不透光的,用“1”来表示。通常将组成编码的圈称为码道,每个码道表示二进制数的一位,其中最外侧的是最低位,最里侧的是最高位。如果编码盘有4个码道,则由里向外的码道分别表示为二进制的23、22、21和20,4位二进制可形成16个二进制数,因此就将圆盘划分16个扇区,每个扇区对应一个4位二进制数,如0000、0001、…、1111。 按照码盘上形成的码道配置相应的光电传感器,包括光源、透镜、码盘、光敏二极管和驱动电子线路。当码盘转到一定的角度时,扇区中透光的码道对应的光敏二极管导通,输出低电平“0”,遮光的码道对应的光敏二极管不导通,输出高电

【毕业设计】基于单片机自行车测速系统设计-精品

基于单片机自行车测速系统设计 摘要 随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。本论文主要阐述一种基于霍尔元件的自行车的速度里程表的设计。以 AT89C52 单片机为核心,A44E 霍尔传感器测转数,实现对自行车里程/速度的测量统计,采用 24C02 实现在系统掉电的时候保存里程信息,并能将自行车的里程数及速度用LED实时显示。文章详细介绍了自行车的速度里程表的硬件电路和软件设计。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。软件部分用汇编语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,完全符合设计要求。 关键词:里程/速度;霍尔元件;单片机;LED显示

Bike speed system design based on single chip ABSTRACT With the developing of people’s life, the bi cycle is not only the universal tool of transportation and substitute for walking, but becomes the first choice of entertainment and exercising. The bicycle mileage/speed can fulfill the basic need of people’s life, so that they can learn the speed and the mileage of the bicycle. In this paper, the bicycle mileage/speed design based on the Hall element is elaborated. By AT89C52 as kernel, using A44E Hall element to measure revolution, the measure and statistic are achieved. The range information is saved by 24C02 when the power is off, the bicycle speed can be displayed on LED. In this article, the hardware circuit and software design of bicycle mileage/speed instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language; the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meets the demand of design. . Keyword:Mileage / speed; Hall element; Single chip microcomputer; LED

飞思卡尔光电编码器测速程序

#include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIV ATIVE "mc9s12xs128" volatile uint speed_back=0,temp=0; void delay_ms(uint ms) { volatile uint x=0; while(ms--) { for(x=2800;x>0;x--) { _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop); } } } //注意外接16M晶体。 //飞思卡尔推荐配置,主频道50MHZ,速度更快! void Init_PLL(void) { CLKSEL = 0X00; //disengage PLL to system PLLCTL_PLLON = 1; //turn on PLL SYNR = (0xc0|0x18); //SYDIV=0X18=24 REFDV = (0x40|0x07); //REFDIV=0X07=7 POSTDIV = 0x00; //pllclock=2*osc*(1+SYDIV)/(1+REFDIV)=100MHz; _asm(nop); //BUS CLOCK=50M _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop); _asm(nop);

运动控制-M法T法测速单片机程序设计

M法、T法测速单片机程序设计 摘要 本设计为M法、T法测速的单片机程序设计。使用STC89C52单片机作为控制器,使用该单片机的外部中断和定时器对编码器的输出的脉冲进行采样来计算出电机的转速。可以使用按键输入来调整M法、T法测速法中Z、Tc和Tt等参数以及测速方法的选择,以此来增强本设计的适应性。参数选择结果和电机转速计算结果均显示在LCD1602上。 关键字:STC89C52,M法、T法测速,LCD1602,电机转速 Ⅰ

Abstract This design as m, t-law velocity measurement of single-chip computer programming. Using STC89C52 single-chip computer as the controller, using the microcontroller's external interrupts and timers for encoder output pulse is sampled to calculate the speed of the motor. Can be adjusted using touchtone m, t law Velocimetry parameters such as z, Tt and Tc, as well as in speed measurement method of choice, as a way to enhance the adaptability of this design. Parameter selection and calculation of motor speed results are available on LCD1602. Keywords:STC89C52,M、T method, the LCD1602, Motor speed Ⅱ

测速编码器说明书

BEN测速编码器在智能车舵机控制中的应用2.1 舵机工作原理 舵机在6 V电压下正常工作,而大赛组委会统一提供的标准电源输出电压为7.2 V,则需一个外围电压转换电路将电源电压转换为舵机的工作电压6 V。图2为舵机供电电路。 舵机由舵盘、位置反馈电位计、减速齿轮组、直流动电机和控制电路组成,内部位置反馈减速齿轮组由直流电动机驱动,其输出轴带动一个具有线性比例特性的位置反馈电位器作为位置检测。当电位器转角线性地转换为电压并反馈给控制电路时,控制电路将反馈信号与输入的控制脉冲信号相比较,产生纠正脉冲,控制并驱动直流电机正向或反向转动,使减速齿轮组输出的位置与期望值相符。从而达到舵机精确控制转向角度的目的。舵机工作原理框图如图3所示。 2.2 舵机的安装与调节 舵机的控制脉宽与转角在-45°~+45°范围内线性变化。对于对速度有一定要求的智能车,舵机的响应速度和舵机的转向传动比直接影响车模能否以最佳速度顺利通过弯道。车模在赛道上高速行驶,特别是对于前瞻性不够远的红外光电检测智能车,舵机的响应速度及其转向传动比将直接影响车模行驶的稳定性,因此必须细心调试,逐一解决。由于舵机从执行转动指令到响应输出需占用一定的时间,因而产生舵机实时控制的滞后。虽然车模在进入弯道时能够检测到黑色路线的偏转方向,但由于舵机的滞后性,使得车模在转弯过程中时常偏离跑道,且速度越快,偏离越远,极大限制车模在连续弯道上行驶的最大时速,使得车模全程赛道速度很难进一步提高。为了减小舵机响应时间,在遵守比赛规则不允许改造舵机结构的前提下,利用杠杆原理,采用加长舵机力臂的方案来弥补这一缺陷,加长舵机力臂示意图如图4所示。

51单片机PID调增量式光电编码器测速.

编码器输出的A向脉冲接到单片机的外部中断INT0,B向脉冲接到I/O端口P1.0。当系统工作时,首先要把INT0设置成下降沿触发,并开相应中断。当有有效脉冲触发中断时,进行中断处理程序,判别B脉冲是高电平还是低电平,若是高电平则编码器正转,加1计数;若是低电平则编码器反转,减1计数。 基于51单片机的直流电机PID闭环调速系统原理详解与程序 (2013-08-04 01:18:15) 转载▼ 标签: 分类:单片机 51单片 机 直流电 机 pid pcf8591 基于51单片机的直流电机PID闭环调速系统 1.电机转速反馈: 原理:利用光电编码器作为转速的反馈元件,设电机转一周光电编码器发送N个PWM波形,利用测周法测量电机转速。 具体实现:将定时器0设置在计数模式,用来统计一定的时间T内接受到的脉冲个数M个,而定时器0置在计时模式,用来计时T时间。则如果T时间接受到M个PWM波形,而电机转一圈发出N个PWM波形,则根据测周法原理,电机的实际的转速为:real_speed=M/(N*T),单位转/秒。若将定时器1置在计数模式,则PWM波形应该由P3^3脚输入。 代码实现:

//定时器0初始化,用来定时10ms void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,且工作在计时模式 TH0=(65536-10000)/256; //定时10ms TL0=(65536-10000)%6; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } // 计数器1初始化,用来统计定时器1计时250ms内PWM波形个数 void Init_Timer1(void) { TMOD |= 0x50; //使用计数模式1,16位计数器模式 TH1=0x00; //给定初值,由0往上计数 TL1=0x00; EA=1; //总中断打开 ET1=1; //定时器中断打开 TR1=1; //定时器开关打开 } //定时器0的中断服务子函数,主要完成脉冲个数的读取,实际转速的计算和PID 控制以及控制结 //果输出等工作 void Timer0_isr(void) interrupt 1 { unsigned char count; TH0=(65536-10000)/256; //重新赋值 10ms TL0=(65536-10000)%6;

编码器位置与速度检测

制作速度检测部件 实验报告 专业:机械设计制造及其自动化 姓名:xxx 学号:xxx 实验时间:2012-2013学年第2学期

制作速度检测部件 一、实验原理: 1.利用外部中断0对信号源在一定时间内产生的脉冲进行计数,并对外部中断0设置为跳变沿中断(IT0=1) 2.利用定时器0进行计时,并在中断程序中读取这段时间内产生的脉冲数,再利用脉冲数与路程之间的对应关系求得编码器的速度。 3. 光电开关的使用,如图: 测速方法: M 法测速 测取c T 时间内旋转编码器输出的脉冲个数1M ,用以计算这段时间内的平均转速,称作M法测速,图12所示。电机的转速为 r/min 601 c ZT M n = , M 法测速的分辨率: c c c ZT ZT M ZT M Q 60 60)1(6011= -+= M 法测速误差率: c T 1 M 图12 M 测速法原理图

% 1001%10060 ) 1(60 60%1111max ?=?-=M ZT M ZT M ZT M c c c δM 法测速适用于高速段, T 法测速 记录编码器两个相邻输出脉冲的间的高频脉冲个数M2,f0为高频脉冲频率,图13所示。 电机转速 r/min ZM f 60ZT 60n 2 t == T 法测速的分辨率: )1(6060)1(602202020-=--=M ZM f ZM f M Z f Q 或Zn f Zn Q -= 02 60 T法测速误差率: % 10011 %10060 60 )1(60%22 020 20max ?-=?-=M ZM f ZM f M Z f δ T 法测速适用于低速段。 M/T 法测速 把M 法和T 法结合起来,既检测TC 时间内旋转编码器输出的脉冲个数M1,又检测同一时间间隔的高频时钟脉冲个数M2,用来计算转速,称作M/T 法测速。采用M/T 法测速时,应保 2 M 2f M T t =图13 T 测速法 c T 1 M 2 M 图14 M/T 法测速原理图

M法与T法在编码器测速方面的区别和频率问题

编码器的测速原理:M/T法 大家都比较清楚在闭环伺服系统中,编码器的反馈脉冲个数和系统所走位置的多少成正比,但对于怎样通过编码器所反馈的脉冲个数来求得电机的旋转速度了解的人就不是很多了。 根据脉冲计数来测量转速的方法有以下三种:(1)在规定时间内测量所产生的脉冲个数来获得被测速度,称为M法测速;(2)测量相邻两个脉冲的时间来测量速度,称为T法测速;(3)同时测量检测时间和在此时间内脉冲发生器发出的脉冲个数来测量速度,称为M/T 法测速。以上三中测速方法中,M法适合于测量较高的速度,能获得较高分辨率;T法适合于测量较低的速度,这时能获得较高的分辨率;而M/T法则无论高速低速都适合测量。以下只对T法测速进行详细介绍。 T法测速的原理是用一已知频率fc(此频率一般都比较高)的时钟脉冲向一计数器发送脉冲,计数器的起停由码盘反馈的相邻两个脉冲来控制,原理图见图1。若计数器读数为m1,则电机每分钟转速为nM=60fc/Pm1(r/min) 图1 T法测速原理 其中P为码盘一圈发出的脉冲个数即码盘线数,m1为 相邻两个脉冲间高频脉冲个数。测速分辨率:当对应转速由n1变为n2时则分辨率Q的定义为Q=n2-n1,Q值越小说明测量装置对转速变化越敏感即分辨率越高。因此可以得到T法测速的分辨率为 Q=60fc/Pm1-60fc/P(m1+1)= n2M P/(60fc+ nMP) 由上式可见随着转速nM的降低,Q值越小,即T法测速在低速时有较高的分辨率。 MT法测速之定量分析 速度测量是工控系统中最基本的需求之一,最常用的是用数字脉冲测量某根轴的转速,再根据机械比、直径换算成线速度。脉冲测速最典型的方法有测频率(M法)和测周期(T法)。定性分析: M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。 T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。 M法、T法各且优劣和适应范围,编码器线数不能无限增加、测量时间也不能太长(得考虑实时性)、计时单位也不能无限小,所以往往候M法、T法都无法胜任全速度范围内的测量。因此产生了M法、T法结合的M/T 测速法:低速时测周期、高速时测频率。 定量分析:

单片机测速

用单片机设计动态输入范围的PWM A/D转换器 时间:2010-02-06 来源:未知编辑:电气自动化技术网点击:202次字体设置: 大中小 1 COP820CJ芯片介绍 COP820CJ是美国国家半导体公司生产的一款8位单片机,它内含64字节RAM和1k字节ROM,并带有24个I/O口,时钟频率为10MHz,工作电压为2.5~6.0V。COP820 CJ具有多输入唤醒(MIWU)、低压复位保护、片上模拟比较器和低电磁辐射设计等功能,其I/O口可编程为三态、推挽输出、弱上拉输入等类型。 COP820CJ的端口分为L/I/D/G四类。其中I口为4位输入端口,D口为4位输出端口,G口有6位I/O口和2位输入口,L口为8位I/O口。同时L口也是芯片的唤醒端口,其中L1和L2又是比较器输入口,L3又是比较器输出口。L口配有数据寄存器(LDATA[0DOH])和配置寄存器(LCONF [0D1H]),两寄存器可共同决定该端口的状态。具体关系见表1所列。 COP820CJ的片上RAM、端口、寄存器均可映射到00H~FEH的数据内存空间,其中C0~CFH段主要是唤醒及用看门狗控制寄存器,D0~DFH段有8 个端口类寄存器,E0~EFH段为计时器和系统寄存器。00~2FH及F0~FFH为RAM地址。其中,F0~FEH段可用作寄存器,并包括B地址寄存器[FCH]、X地址寄存器[FEH]和SP堆栈指针[FDH]三个专用寄存器。 2 COP820CJ的工作原理 2.1基本原理 利用COP820CJ的片上模拟比较器和脉冲宽度调制方式可以构成由软件调控且输入范围可变的A/D转换器。其工作原理图见图1所示。图中,L1和L2为比较器输入端,当电容电压小于输入电压时, L3端输出高电平脉冲。反之,L3输出低脉冲,并对低脉冲减1计数。电路中的输入电压可通过L1、L2之间并联的两个背向二极管对电容C1快速充放电,以使两者电位迅速接近。 比较器允许的输入电压为0.4V~V CC-1.5V(此时电容电压与充电、放电时间之间为近似线性关系),实 际输入电压范围可能要更小一些。因此,可以通过设定高低脉冲的参数使电容电压始终保持在测量范围之内。若电源为5V,时钟频率为10MHz,脉冲周期为24个,即2.4μs,输入电压范围是1.0V~3.3V。那么,可以设置高脉冲为先低8个时钟,再高16个时钟;设置低脉冲为先高5个时钟,再低19个时钟。这样,如果L3始终输出高脉冲,电容电压V H将近似为V CC×16/24=3.30V;如果L3始终输出低电平,电容电压V L则近似为V CC×5/24=1.04V。进行A/D转换时,L3可根据比较结果输出高低脉冲,当脉冲数足够多时,计数器的值即代表了输入的电压值,并可用下式表示: 其中,N TON为计数器的值,N TOTAL为总脉冲数。 2.2转换时间及分辨率 由于脉冲周期为2.4μs,若脉冲总数为100,那么,进行两次计数的转换时间近似为2.4×100×2=480μs。当输入为高速变化的信号时,只需减少脉冲总数即可。如脉冲总数为

基于51单片机的光电编码器测速报告

课程设计报告 课程名称:微机原理课程设计 题目:基于51单片机的光电编码器测速

光电编码器是高精度位置控制系统常用的一种位移检测传感器。在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。其计数的方法有多种,包括纯粹的软件计数和硬件计数。文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用80C51单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。本设计就是由单片机STC89C52RC芯片,光电编码器和1602液晶为核心,辅以必要的电路,构成了一个基于51单片机的光电编码器测速器。该系统有两个控制按键,分别用于控制每秒的转速和每分钟的转速,并将速度用1602液晶显示出来。该测速器测速精准,具有实时检测的功能,操作简单。 关键词:光电编码器,51单片机,C语言,1602液晶

一、设计任务与要求 (4) 1.1 设计任务 (4) 1.2 设计要求 (4) 二、方案总体设计 (5) 2.1 方案一 (5) 2.2 方案二 (5) 2.3 系统采用方案 (5) 三、硬件设计 (7) 3.1 单片机最小系统 (7) 3.2 液晶显示模块 (7) 3.3 系统电源 (8) 3.4光电编码器电路 (8) 3.5 整体电路 (9) 四、软件设计 (10) 4.1 keil软件介绍 (10) 4.2 系统程序流程 (10) 五、仿真与实现 (12) 5.1 proteus软件介绍 (12) 5.2 仿真过程 (12) 5.3 实物制作与调试 (13) 5.4 使用说明 (14) 六、总结 (15) 6.1 设计总结 (15) 6.2 经验总结 (15) 七、参考文献 (16)

51单片机计数程序

/**************程序说明********************* 硬件说明只需要将15脚接口接入外部的脉冲信号,15脚为定时器T1的外部信号输入引脚 通过定时器T0定时指定的时间来测取脉冲的个数并在1602液晶上显示出来 假设定时1s则数据变成为信号的频率 *************************************************** *****/ #include #include //定时器0负责定时30s 定时器1负责计数功能 #define uint unsigned int #define uchar unsigned char sbit RS=P2^6; //液晶的电路定义 sbit E=P2^5; unsigned char table[3]; unsigned int t0;

void delay_ms(uint z) //毫秒级延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /******液晶部分子程序*************************/ void write_com(unsigned char com) { //操作时序 RS=0; P0=com; delay_ms(5); E=1; delay_ms(5); E=0; } void write_data(unsigned char shuju) { //操作时序

RS=1; P0=shuju; delay_ms(5); E=1; delay_ms(5); E=0; } void LCDintial() { delay_ms(5); E=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); } /**********定时器初始化程序***************/ void T0T1_init() { EA=1;

基于51单片机的坦克循迹 计时测速程序

#include unsigned inti=0; sbit P36=P3^6; sbit P10=P1^0; //循迹口 sbit P11=P1^1; sbit P12=P1^2; sbit P14=P1^4; //电机口 sbit P15=P1^5; sbit P16=P1^6; sbit P17=P1^7; unsigned char j,time; unsigned intkop,dr; unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char c[4]={0xff,0xff,0xff,0xff},d[4]; void delay(unsigned char z) //延时子程序 { unsigned char j; while(z--) for(j=123;j>0;j--); } void main() { TMOD=0x15; // 打开定时器和计数器 TH0=0x00; TL0=0x00; TH1=0XFc; //1ms TL1=0X18; EA = 1; ET0=1; ET1=1; TR1 = 1; TR0 = 1; while(1) { if(P10==0&&P11==0&&P12==0) { TR0=0; //显示时间停 P0=d[0];

P2=0XFE; delay(1); P0=d[3]; P2=0XFB; delay(3); P0=d[2]; //显示测速停 P2=0XFD; delay(3); P0=d[3]; P2=0XF7; delay(3); P14=1;P15=1;P16=1; P17=1; } } } void timer1() interrupt 3 //中断服务程序 { unsigned intqq=0,ww=0; TH1=0XFc; TL1=0X18;//1ms i++; switch(i%4) { case 0:P0=c[0],P2=0XFE;d[0]=c[0];break; case 1:P0=c[1],P2=0XFD;d[1]=c[1];break; case 2:P0=c[2],P2=0XFB;d[2]=c[2]; break; case 3:P0=c[3],P2=0XF7;d[3]=c[3]; break; default:break; } P14=1;P15=1;P16=1; P17=1; if(P10==0&&P11==0&&P12==0) //全测到 dr=0; if(P10==1&&P11==0&&P12==1) //中间测到 dr=1; if(P10==0&&P11==1&&P12==1) //左边测到dr=2; if(P10==1&&P11==1&&P12==0) //右边测到dr=3; if(P10==0&&P11==0&&P12==1) //左两测到dr=4; if(P10==1&&P11==0&&P12==0) //右两测到dr=5;

基于51单片机的光电编码器测速

摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器。在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。其计数的方法有多种,包括纯粹的软件计数和硬件计数。文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用80C51单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。本设计就是由单片机STC89C52RC芯片,光电编码器和1602液晶为核心,辅以必要的电路,构成了一个基于51单片机的光电编码器测速器。该系统有两个控制按键,分别用于控制每秒的转速和每分钟的转速,并将速度用1602液晶显示出来。该测速器测速精准,具有实时检测的功能,操作简单。 关键词:光电编码器,51单片机,C语言,1602液晶

目录 一、设计任务与要求 (3) 1.1 设计任务 (3) 1.2 设计要求 (3) 二、方案总体设计 (4) 2.1 方案一 (4) 2.2 方案二 (4) 2.3 系统采用方案 (4) 三、硬件设计 (6) 3.1 单片机最小系统 (6) 3.2 液晶显示模块 (6) 3.3 系统电源 (7) 3.4光电编码器电路 (7) 3.5 整体电路 (8) 四、软件设计 (9) 4.1 keil软件介绍 (9) 4.2 系统程序流程 (9) 五、仿真与实现 (11) 5.1 proteus软件介绍 (11) 5.2 仿真过程 (11) 5.3 实物制作与调试 (12) 5.4 使用说明 (13) 六、总结 (14) 6.1 设计总结 (14) 6.2 经验总结 (14) 七、参考文献 (15)

深入浅出解析智能车测速部分

深入浅出解剖智能车测速部分 作者:IT民工在打滚 作者简介:笔者大一、二参加第三、四届智能车竞赛,大三担任校区实验 中心助理引导学校同学参加第五届智能车竞赛,荣获全国智能车竞赛电磁组竞 赛特等奖。自从大三开始到此刻一直从事运动控制系统开发,对运动控制了解 还算比较透切。在此,跟学弟们分享下他熟识的,望能对学弟们参加竞赛有所 帮助,让大家少走些弯路尽早走上自控的正轨,让咱们一起努力将咱们祖国自 控技术推向更高的台阶。当然更希望此文能抛砖引玉。文中有错漏地方还望各 位多多包涵。 智能车运动控制系统包含:运算处理器(MCU)、执行机构(有刷直流电机)、反馈机构(编码器或旋转变压器)。自动化行业里完成的运动控制系统 包含三环控制,三环控制分别为:电流环(转矩环),属于三环中的内环;转 速环,属三环中的中间环;位置环,属三环中的最外环。这三环运动控制算法 在不同系统有所取舍,有些系统只需用其中的一环或两环,例如:张力控制系 统只需用到电流环足以;智能车则需要电流环+速度环。据我了解几乎没有同 学上两环控制算法的,都是单单一个速度环(速度环PID)。要控制好电机应 该上两环控制,只有这样才能最好的发挥电机的驱动能力。这里稍微解析下吧,我们都知道当电机的力矩小于负载时,电机旋转速度将降低;电机输出的力矩 大于负载时,电机带动负载做加速运动;只有当电机输出力矩等于负载大小时,运动系统才进入匀速运行状态。当我们给小车一个速度值时,如比当前值大, 咱们得加大电机力矩,让车速尽快到达设定速度;如比当前速度小,则减少力 矩或者给反向力矩(刹车)。总言之,电流环是让车速尽快到达设定值。电流 环控制算法建议使用PI控制,信号处理频率10KHZ为宜(差点忘了提醒,上 电流环记得上电流取样电路哦,取样电路有霍尔取样或电阻取样两种方法,对 于智能竞赛上电阻取样法足以,此方法节约成本、电路简单)。速度环建议使 用PID控制算法、处理频率1KHZ就可以了。 上段讲解控制算法,接下来重点跟大家聊聊速度反馈部分。在工业自动化 上速度反馈传感器有编码器、旋转变压器两大类。旋转变压器输出模拟信号适 用于模拟量控制系统,其体积比较大,随着微处理器的发展其被选用得越来越少;编码器输出数字量抗扰性能较好、制造工艺简单、能很好与微处理器衔接,因此现代运动控制系统基本选用此传感器作为反馈单元。纵观各届竞赛同学们

M法与T法在编码器测速方面的区别和频率问题

编码器的测速原理: M/T法大家都比较清楚在闭环伺服系统中,编码器的反馈脉冲个数和系统所走位置的多少成正比,但对于怎样通过编码器所反馈的脉冲个数来求得电机的旋转速度了解的人就不是很多了。 根据脉冲计数来测量转速的方法有以下三种: (1)在规定时间内测量所产生的脉冲个数来获得被测速度,称为M法测速;(2)测量相邻两个脉冲的时间来测量速度,称为T法测速;(3)同时测量检测时间和在此时间内脉冲发生器发出的脉冲个数来测量速度,称为M/T法测速。 以上三中测速方法中,M法适合于测量较高的速度,能获得较高分辨率;T 法适合于测量较低的速度,这时能获得较高的分辨率;而M/T法则无论高速低速都适合测量。 以下只对T法测速进行详细介绍。 T法测速的原理是用一已知频率fc(此频率一般都比较高)的时钟脉冲向一计数器发送脉冲,计数器的起停由码盘反馈的相邻两个脉冲来控制,原理图见图 1。 若计数器读数为m1,则电机每分钟转速为nM=60fc/Pm1(r/min)图1 T法测速原理其中P为码盘一圈发出的脉冲个数即码盘线数,m1为相邻两个脉冲间高频脉冲个数。 测速分辨率: 当对应转速由n1变为n2时则分辨率Q的定义为Q=n2-n1,Q值越小说明测量装置对转速变化越敏感即分辨率越高。 因此可以得到T法测速的分辨率为Q=60fc/Pm1-60fc/P(m1+1)= n2M P/(60fc+ nMP)由上式可见随着转速nM的降低,Q值越小,即T法测速在低速时有较高的分辨率。

MT法测速之定量分析速度测量是工控系统中最基本的需求之一,最常用的是用数字脉冲测量某根轴的转速,再根据机械比、直径换算成线速度。 脉冲测速最典型的方法有测频率(M法)和测周期(T法)。 定性分析: M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。 速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。 如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。 T法是测量两个脉冲之间的时间换算成周期,从而得到频率。 因存在半个时间单位的问题,可能会有1个时间单位的误差。 速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。 如要增加速度测量的上限,可以减码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。 M法、T法各且优劣和适应范围,编码器线数不能无限增加、测量时间也不能太长(得考虑实时性)、计时单位也不能无限小,所以往往候M法、T法都无法胜任全速度范围内的测量。 因此产生了M法、T法结合的M/T测速法: 低速时测周期、高速时测频率。 定量分析: M/T法中的“低速”、“高速”如何确定呢?假定能接受的误差范围为1%、M 法测得脉冲数为f, T法测得时间为t。

最新基于单片机的测速仪设计

华北理工大学轻工学院 Qing Gong College North China University of Science and Technology 课程设计报告 课程名称:EDA辅助设计 项目名称:基于单片机的测速仪设计 专业班级: 学号: 姓名: 成绩:

一、项目说明 转速是工程中应用非常广泛的一个参数,其测量方法较多,而模拟量的采集和模拟处理一直是转速测量的主要方法,目前这种测量方法已不能适应现代科技发展的要求。随着大规模及超大规模集成电路的发展,使得全数字测量仪器越来越普及,其转速测量仪器也可以用全数字化处理。在测量范围和测量精度方面都有很大提高。因此,本次设计的目的是:对各种测量转速的方法加以分析,针对不同的应用环境,利用AT89S52系列单片机设计一种全数字化测速仪器。本设计在通电后就会开始运行进行测速,由数码管进行显示当前转速,按下S1将会重置。 二、项目原理图 1、原理图

图1 项目原理图 2、各部分说明 (1)电源部分 DC002插座是带有插入断开开关,中心脚为1脚,下面为2脚,侧面为3脚,插入时3脚断开。的一款给单片机提供5v电压的电源。 图2 电源 (2)STC89C52芯片 STC89C52是一个低功耗,高性能CMOS8位单片机,片内含具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDTC)电路,片内时钟振荡器。此外,STC89C52设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC 等三种封装形式,以适应不同产品的需求。

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