A. 单片机直流电机转速测试
拿个圆盘,上面沿半径切一条缝,夹在一个红外收发器的凹槽中,红外收发模块的一端接地,一端接电阻接VCC,电阻和红外模块之间引一根线到单片机的外部中断P3.2或P3.3上。
另一边,单片机一个IO口接光耦一半的正极,光耦的另一半的正极接VCC负极接直流电机再接地。直流电机转轴插在圆盘圆心,保证能带动圆盘转动而不打滑。
编程思想如下:一个一秒定时器函数,一个外部中断函数,每中断一次计数一次。每当即时到时,计数器中的数就是转速
圈/S,然后清零。
至于控制转速则是由IO口输出PWM(占空比变化的方波)控制电流大小,以控制转速。转速通过上面说的程序测得,然后与设定值进行比较,快了就降低占空比,慢了就增加占空比。
程序由lilaozishiyan发到你邮箱,电路很简单就没画了,只有程序。
B. 单片机测电机转速,
你的问题包括三个部分:
第一,测量转速信号的频率。
第二,将频率换算为转速。
第三,测量结果通过LED(你的板子是LCD)显示。
第二个问题属于比例运算,表面上很简单,不过用汇编语言实现的话,有一点点难度,建议用乘法运算,可下载一些多字节乘法的子程序。
第一个问题可到文库下载一些频率测量方面的文章,许多文章有程序的。
第三个问题可根据板子的LCD的型号,查阅厂家的相关资料,必要的话可质询厂家,一般而言,这类LCD接口有许多是类似的,网上也可以下载程序。
除了上述三个问题,还有一个很根本的问题就是熟悉你的板子的原理,上述所有程序或文献仅能供你参考。
还有,作为开发板,可想办法早一些开发板厂家提供的例程,如果你都能熟悉的话,相信经过简单裁减就可以得到你要的程序。
当然,最主要的还是要有耐心,最好自己弄明白,自己弄明白了,你收获的是知识和能力,别人帮你编程,你得到的仅仅是0、1组合,对你帮助不大。
C. 用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
D. 用51单片机通过霍尔元件AH44E检测直流电机转速的c程序
你好!
无需复杂计算。
霍尔传感器用于电机转速测量,根据需要可在电机转轴上均匀安装N个(N=1、2、3、4...)磁钢,N较大时,可直接用一个导磁材料制作的齿轮盘替代。
在T时间内对霍尔传感器的输出脉冲进行计数,当T超过设定值(如0.5S)时,记录计数值k。
转速n=60*k/(NT)。
希望对你有所帮助,望采纳。
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. 单片机测转速
这个简单,总体方案为:使用光电对管进行检测,当光电管检测到一个脉冲时自动加一,同时计时器也计时间,时间达到1S时,把所记录检测得到的脉冲个数显示在LED数码管上就可以啦
G. 基于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;
}
}
}
H. 单片机汽车转速测量怎么做
那就看你做什么咯。转速的直接面向控制设备是
仪表盘。
如果你是做仪表盘,那么转速信号就是从无到有咯,你就需要对转速传感器进行脉冲测量,而且得很清楚,多少脉冲对应多少圈数。
如果你是做一般控制器,那么只要对仪表盘输出的转速信号进行脉冲测量,同样也需知道,多少脉冲对应多少圈数。当然,你也可以直接找转速传感器,直接像仪表盘一样测量。
I. 用51单片机测电机的转速,,,,,谢谢各位。。
用一个转速传感器或者编码器,利用单片机引脚的脉冲沿捕获中断,1个计数器用于记录2相邻脉冲捕获时间间隔,一个计数器用于记录脉冲数。
然后计算1s时间内脉冲的个数就是频率啦,再通过换算的电机转速;
J. 如何用单片机测量光电编码器的脉冲,以实现测量电机转速
你说的是增量型编码器,这种类型的编码器主要就是测量速度的,其A,B相,Z相可以通过接在计数器或者PLC上,来获取其脉冲个数,从而进行转换,变成速度测量。一般说来只要一相信号就够了,B相信号和A相信好相位相差90度,通过A超前还是B超前从而判定电机是正转还是反转。如果只是测速度,Z相信号用不到的。Z相是一个零点参考信号,每旋转一圈,会输出一个脉冲,一般用来测量位移的时候才会用到,不过增量编码器测位移会出现丢脉冲的现象,造成脉冲累积不准,从而出现位置偏差。最重要的是,供电类型一定要看准,如果是5v供电,你供24v,那就直接烧了,切记切记!