A. 用单片机中断功能实现转速的测量
利用中断,中断触发后在中断程序里计数即可。
B. 求基于51单片机的转速测量的设计(代码),最好C语言实现的,给些指导也行!
测速得需要外部电路啊,单个单片机不行啊,如上图测电机转的速度就加了编码盘,和光电传感器测速啊。
C. 基于51单片机转速测量的程序,望高手帮我解释一下。
#include <reg51.h>
#include <INTRINS.H>
#define FOSC 11.0592
unsigned int speed;
unsigned char key;
unsigned char led_table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};
long speed_count,speed_count1;
unsigned char speed_check;
unsigned int second_flag;
unsigned char speed_table[4];
unsigned char speed_table1[10];
//定时器频率1000Hz
void timer1_init(void)
{
EA=0;
TMOD=0x10;
//TH1=1000*FOSC/12/256;
//TL1=(unsigned int)(1000*FOSC/12)%256;
TH1=254;
TL1=51;
TR1=1;
TCON|=0X04; //外部中断下降触发
EX1=1; //允许外部中断
ET1=1;
EA=1;
}
void int1_routine(void) interrupt 2
{
speed_count++;
P1^=0X02;
}
void timer1_routine(void) interrupt 3
//void timer1_routine(void)
{
TH1=254;
//TH1=0xf0;
TL1=51;
//speed_count++;
second_flag++;
}
void main(void)
{
unsigned int i,j,k;
// unsigned char sum;
unsigned speed_table[3];
long time_id;
timer1_init();
speed=0;
P2=0x0f;
P0=0xf0;
P3=0x08;
key=0;
P1=0x00;
speed_check=0;
while(1)
{
//P1^=0XFE;
j=1;
//speed=1234;
speed_table[0]=speed/1000;
speed_table[1]=speed%1000/100;
speed_table[2]=speed%100/10;
speed_table[3]=speed%10;
for(i=0;i<4;i++)
{
P2=j^0xff;
j<<=1;
P0=(led_table[speed_table[i]])&0xfe;
for(k=0;k<250;k++) ;
}
//speed=speed_count;
if(second_flag>=1000) /*中断1000次进入 */
{
second_flag=0;
time_id++;
speed_table1[time_id%10]=speed_count;/*外部中断量转存(是很聪明的方法学习了)*/
speed_count=0;
speed=(speed_table1[0]+speed_table1[1]+speed_table1[2]+speed_table1[3]+speed_table1[4]+speed_table1[5]+speed_table1[6]+speed_table1[7]+speed_table1[8]+speed_table1[9])*6; /*(10X6)10秒的外部中断量乘以6就是转速了*/
//speed=speed/2+(speed_table[0]+speed_table[1]+speed_table[2])*6;
}
}
}
D. 用51单片机控制直流电动机并测量转速
我这个是用pwm+adc做的
ADC EQU 35H
CLOCK BIT P2.4 ;定义ADC0808时钟位
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
PWM BIT P3.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
START: MOV TMOD,#02H ;
MOV TH0,#20
MOV TL0,#00H
MOV IE,#82H
SETB TR0
WAIT: CLR ST
SETB ST
CLR ST ;启动AD转换
JNB EOC,$ ;等待转换结束
SETB OE
MOV ADC,P1 ;读取AD转换结果
CLR OE
SETB PWM ;PWM输出
MOV A,ADC
LCALL DELAY
CLR PWM
MOV A,#255
SUBB A,ADC
LCALL DELAY
SJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808时钟信号
RETI
DELAY: MOV R6,#1
D1: DJNZ R6,D1
DJNZ ACC,D1
RET
END
E. 单片机测量电动机转速的原理是什么啊 能详细说说吗从开始数字信号变成脉冲信号一直到LED显示出转速
基本上,单片机采集的是转子产生的信号,这个信号的频率与转子的转速相关.
例如说,转子或转子轴的一侧粘贴了一面小镜子,使这个小镜子能随转子一起转动,然后在旁边固定一个光源对着镜子所在的位置,这样的话,转子每转过一圈,小镜子所反射的光线就会经过一次检测元件,转子转得越快,经过检测元件的光线就会越频繁,换言之就是光线被反射到检测元件上的频率越高.
那么,现在你已经知道转子每转一圈,检测元件就会检测到一次光线了,那如何换算成具体的转速呢,实际上,只要对检测元件的两次光照时间进行检测,或对一定时间内检测元件被光线照射到几次进行计数,然后再换算就可以了.
例如,每两次光照的间隔为1秒,那么就表示每秒钟这个转子转了一圈,那么一分钟就是60圈,这就是转速了.
若你需要更精确的检测,则这个1秒钟才一次的信号显然不够,你需要每秒钟有更多个脉冲,才能实现较为精确的测量,比如可以测量到1.05圈/秒,或者0.95圈/秒.而这就需要在转子上粘贴更多的镜子.
例如说,你在转子上均匀地粘了10面镜子,而所检测到的每两次光照的间隔为20mS,那么换算下来,1000mS÷20mS÷10=5,这个5就是每秒钟的转数,换算成一般的标法,就是300转/分了.
然而,如果被检测的电动机速度更快一些,并且这些"镜子"数量更多一些,对于慢速的单片机来说,再用检测光照时间的方法就可能忙不过来了,或者是精度要打折扣了,比如说你的单片机最短要10uS才能中断一次,而被检测的电动机所传过来的"光照"信号周期只有8uS,那么你可能就检测不到这个信号了,或者检测成错误的结果.
此时,你就可以将检测方法改为检测一定时间内的信号个数,比如说你可以用一个定时器来产生100mS的定时周期,再用另一个定时器来对信号进行计数,比如这个100mS你记录到了700次信号,按上面的例子,你已经知道转子每圈会有10个信号,那就是说,这个100mS内,转子转过了70圈,这样的话,就很好计算转速了,在这个例子中,100mS是十分之一秒,那么实际的转速就是10倍×70转=700转/秒,算成一般的标法那就是700转×60秒=4200转/分了.
知道这个转速之后,要显示出来就不用再多说了吧,hoho~~
希望对你有帮助~
F. 单片机直流电机转速测试
拿个圆盘,上面沿半径切一条缝,夹在一个红外收发器的凹槽中,红外收发模块的一端接地,一端接电阻接VCC,电阻和红外模块之间引一根线到单片机的外部中断P3.2或P3.3上。
另一边,单片机一个IO口接光耦一半的正极,光耦的另一半的正极接VCC负极接直流电机再接地。直流电机转轴插在圆盘圆心,保证能带动圆盘转动而不打滑。
编程思想如下:一个一秒定时器函数,一个外部中断函数,每中断一次计数一次。每当即时到时,计数器中的数就是转速
圈/S,然后清零。
至于控制转速则是由IO口输出PWM(占空比变化的方波)控制电流大小,以控制转速。转速通过上面说的程序测得,然后与设定值进行比较,快了就降低占空比,慢了就增加占空比。
程序由lilaozishiyan发到你邮箱,电路很简单就没画了,只有程序。
G. 单片机课程设计转速测量仪设计
这个你使用单片机P3.5脚的T1计数器功能就可以实现了,
不过注意一点,你所采集的信号要通过施密特反相器,否则有可能误判;
H. 单片机汽车转速测量怎么做
那就看你做什么咯。转速的直接面向控制设备是
仪表盘。
如果你是做仪表盘,那么转速信号就是从无到有咯,你就需要对转速传感器进行脉冲测量,而且得很清楚,多少脉冲对应多少圈数。
如果你是做一般控制器,那么只要对仪表盘输出的转速信号进行脉冲测量,同样也需知道,多少脉冲对应多少圈数。当然,你也可以直接找转速传感器,直接像仪表盘一样测量。
I. 求一篇基于单片机的转速测量的文献综述。。。。
绪言:单片机控制已广泛应用于工业控制和日常生产
与生活中,如机器的运转速度、车辆的行驶速度、风
扇转速、电机超速报警、洗衣机洗衣模式等。自动控
制系统中,转速的测量是系统的重要环节,也是智能
仪器和仪表的重要组成部分。在测量系统中,将所测
量到的信息准确地转换与传递给单片机进行下一步
的计算、判断、显示,并为接下来的自动控制提供准
确的数据。可以说转速的测量与显示是自动控制系统
的基础环节。本文介绍一种基于单片机AT89C2051、
用霍尔元件为转速传感器的转速测量、显示装置。……
J. 如何用单片机测量光电编码器的脉冲,以实现测量电机转速
你说的是增量型编码器,这种类型的编码器主要就是测量速度的,其A,B相,Z相可以通过接在计数器或者PLC上,来获取其脉冲个数,从而进行转换,变成速度测量。一般说来只要一相信号就够了,B相信号和A相信好相位相差90度,通过A超前还是B超前从而判定电机是正转还是反转。如果只是测速度,Z相信号用不到的。Z相是一个零点参考信号,每旋转一圈,会输出一个脉冲,一般用来测量位移的时候才会用到,不过增量编码器测位移会出现丢脉冲的现象,造成脉冲累积不准,从而出现位置偏差。最重要的是,供电类型一定要看准,如果是5v供电,你供24v,那就直接烧了,切记切记!