圣源电子制作

标题: 99000转的非接触式数字转速表 -89C52非接触红外测速制作-C程序-原理图-转载自国外网站 [打印本页]

作者: sydz    时间: 2011-12-23 13:02
标题: 99000转的非接触式数字转速表 -89C52非接触红外测速制作-C程序-原理图-转载自国外网站
配备液晶显示屏和自动数据保持功能


[attach]7473[/attach] 概述
本文介绍如何构建一个非接触式转速表(设备用于计算每分钟旋转轴的革命),使用一个8051微控制器和接近传感器。

[attach]7474[/attach] 顾名思义,是什么使这个设备特殊,它可以非常精确地测量一个轴的转速,甚至不触摸。 时,与旋转轴直接接触,这是非常有趣的是不是一种选择,或将减少轴的速度,提供错误读数。

[attach]7474[/attach] 此设备是基于AT89S52单片机(AT89C52)微控制器,一个字母数字液晶显示模块和接近传感器检测旋转轴的速度正在测量。

[attach]7474[/attach]
600 mA.h镍镉电池提供几个月经常使用此设备之前,需要充电。
(, 下载次数: 54)
主要特点:
[attach]7473[/attach]
措施截至99 000 RPM
[attach]7473[/attach]
瞬时测量
[attach]7473[/attach]
自动数据保持功能
[attach]7473[/attach]
液晶显示器
[attach]7473[/attach]
镍镉充电电池


[attach]7473[/attach] 联系较少测速的操作原则
大多数数字计数装置,频率计和转速表,背后的想法是一个微控制器,用来计数脉冲来自传感器或任何其他电子设备

在此转速表的情况下,计算正负来自接近传感器,将检测任何反光元素,通过它的盈方,并因此,会给每一个旋转轴的输出脉冲,作为显示图片。 这些脉冲将被输送到微控制器和计算。

要了解如何微
(, 下载次数: 56)
控制器计数脉冲,并推断这些脉冲的频率,请参考本教程中,有关建立一个频率计,阐述了频率计数的过程。

[attach]7474[/attach] 本教程有关转速表和频率米之间的主要区别是,我们需要在每分钟的脉冲(计数每分钟转速)阅读,但在同一时间,我们不希望等待前一个正确的整体分钟阅读。 因此,我们需要一些额外的处理来预测每分钟转数,在不到一秒钟

[attach]7473[/attach]
瞬时测量算法
为了可以推断出在不到一秒的RPM读数,同时不断改进阅读的准确性,一个简单的算法被开发,其中计数器和定时器使用计数器和定时器微控制器的内部功能,(如在本项目中使用的AT89C52的)的一部分,他们可以很容易通过编程配置
下面的示意图,定时器和计数器显示了如何使用此任务;计数器是连接我这样的方式来计数脉冲来自接近传感器,而定时器是用来正是饲料计值的微控制器,每一个藏污纳垢一秒钟,
计数器复位为0。 微控制器现在可以采取的最后3个读数(C1,C2和C3保存)的平均计算每第五届第二个脉冲的平均数字,那么这个值乘以5,得到每秒的脉冲数,再乘以这个值60,这代表了测量转速每分钟的脉冲数计算平均阅读的唯一目的是,它将使以获得更多
(, 下载次数: 58)
C1,C2和C3是用来存储最后3阅读
稳定的读数,并防止显示闪烁


[attach]7473[/attach]
电子电路
该装置是由电子电路2:传感器,这是略加修改的接近传感器,微控制器板,分析来自传感器的脉冲,处理和显示在液晶显示屏上的结果。

[attach]7474[/attach]
微控制器板:
(, 下载次数: 65)
电路的解释:

液晶连接的绿色阴影是,我唯一的功能是能够通过80C52单片机控制背光字母数字液晶显示器的最的标准。 液晶协议可以看起来很复杂一些,应该被释放的一篇文章来解释它很快。

蓝色阴影部分也是标准在任何的8051微控制器的电路,其中包括与晶体谐振器产生所需的时钟脉冲的复位电路。

淡红色的阴影调节电源 ,一个9V充电镍镉电池,还提供了一个非常简单的电池监控器,绿色和红色LED,显示电池是否需要充电或没有。

开关SW1,在上部的黄色圆圈所示,用于启用/禁用的测量或计数过程当按下开关,设备措施被测轴的转速,并不断更新的液晶显示屏上的读数,当开关被释放,最后读举行不变,在显示屏上,只要在设备上停留。 当再次按下开关,旧读是由新的取代

线连接P1,它是连接到传感器的输出,连接到单片机的引脚3.4,该引脚具有双重功能,这是传入的脉冲进行计数,并递增一个8,13或16位寄存器,根据定时器T0的配置

正如您可能已经注意到,这个原理图错过丝束的重要项目,被称为转速计:C代码加载到微控制器,这将在后面讨论,接近传感器,这将饲料要计数的脉冲

[attach]7474[/attach]
修改后的红外接近传感器:

(, 下载次数: 54)

本图显示对在此提出一个稍作修改的教程,这是事实,发射LED使用限流电阻更高的价值,允许它变成一个相当长的时间时期,因为在这个特定申请时,我们需要打开红外排放或关闭,但我们并不需要注入高电流达到高范围...... 我建议阅读的这篇文章 ,全面覆盖,这种传感器的所有方面

CTRL线,是一个来自微控制器( 线连接:P4)的输入,将IR发射和关闭,并OUT线,传感器的输出,这是美联储的微控制器 (电线连接:P1)。

分析主板,微控制器和传感器后,这里是一个简单
图,显示它们是如何连接在一起。 您将有参照上述原理图的P1,P2,P3和P4主板,以及有关传感器的其他线路。

(, 下载次数: 55)

(, 下载次数: 55) 这张照片显示的传感器连接到主板是什么意思。 从主板分离传感器的原因,是允许更好的性能的传感器,或其他类型的传感器甚至可以连接到该设备。 在一般情况下,模块化设计的成本,但在原型阶段更有用的......

[attach]7473[/attach] 该软件
以下是有关完整的C程序,这是编译HEX文件后加载到微控制器只有小部分这些代码的一部分,被选定为那些强调,在这样的应用程序的微控制器的主要目的。 举例来说,处理功能与LCD操作不包括在此说明。 在绿色的评论解释的程序完整的代码是在项目文件夹,在本文的底部下载。
#包括
#包括中

无符号整型clk_tmp clk_tmp2,clk_sec,clk_sec2;
无符号intex_pulses,RPS,rps_tmp,温度,rps_avg,rps_max;
无符号整型rps_his [5];
字符A,B,C,D,E;
无符号字符count1 count2;
无符号字符规模= 4;

延迟时间(Y){/ /一个功能,使软件延时
无符号整型我;
(I = 0 }setup_interrupts(){/ /这个函数初始化定时器和计数器
EA = 1; / /用于在trachometre
ET0 = 1; / /设置定时器/计数器0
TR0 = 1; / /使能定时器/计数器0计数
TMOD = 0X25; / /计数器模式1 0(16位计数器)
/ /定时器1在模式2(自动重装从TH1)
TH1 = 0; / /启动计数器从0
ET1 = 1; / /使能定时器1
TR1 = 1; / /使能定时器/计数器1计数
PT0 = 1; / /设置定时器1和定时器0的优先级,0给出了一个
PT1 = 0; / /更高的优先级。
}

无效int_to_digits(无符号整型数){/ /存储一个整数5位
浮动itd_a,itd_b; / /在变量A,B,C,D,E
itd_a = / 10.0;
E =地板((MODF(itd_a,itd_b)* 10)0.5);
itd_a = itd_b / 10.0;
D =地板((MODF(itd_a,itd_b)* 10)0.5);
itd_a = itd_b / 10.0;
C =地板((MODF(itd_a,itd_b)* 10)0.5);
itd_a = itd_b / 10.0;
B =地板((MODF(itd_a,itd_b)* 10)0.5);
itd_a = itd_b / 10.0;
A =地板((MODF(itd_a itd_b)* 10)0.5);
}

CLK()中断3 / /定时器1中断
{
clk_tmp + +; / /软件计数器,转速表读数的时间
clk_tmp2 + + / /软件计数器的显示刷新率
如果(clk_tmp2>(1236)){/ /更新显示
clk_tmp2 = 0;
rps_avg = FLOOR(((rps_his [0] + rps_his [1] rps_his [2] + rps_his [3] ____
___rps_his [4])/ 5)* 60);
}

(clk_tmp>(6584/scale)){/ /更新测量转速
clk_tmp = 0;
(P2_0 == 0){
RPS = TL0的;
TEMP = TH0中;
TEMP = TEMP * 256;
RPS(RPS + TEMP)*规模;
rps_his [4] = rps_his [3];
rps_his [3] = rps_his [2];
rps_his [2] = rps_his [1];
rps_his [1] = rps_his [0];
rps_his [0] = RPS;
}
将TL0 = 0;
TH0 = 0;
}
}

count_pulses()中断1 / /计数器0中断
{
如果(规模<10)/ /如果脉冲是如此之快,内部计数器
规模+ +; / /溢出,增加变量的“规模”,使
/ /使读数记录在更高的速度

无效的主要(){
规模= 10;
P3_3 = 0; / / INI接近传感器,关
P3_4 = 1; / / INI传感器输入
P1_1 = 0; / /关闭LCD背光
P2_0 = 1; / / INI计数/ HOLD键
ini_lcd(); / / INI的液晶
setup_interrupts();

(1){
P3_3 =倰2_0;
如果(P2_0 == 1){
规模= 4;
}
}
}

[attach]7474[/attach] 要了解这个源代码的运作,你必须具备一些基本的单片机和C语言技能。
[attach]7474[/attach]
规模变量是用来控制率在转速表读取和复位计数器。
[attach]7473[/attach] 转速表的房屋
的住房,是一个古老的软盘驱动器的情况下,转速表和电池非常适合在这里,那些几张照片是值得一个几千字。
点击图片放大

(, 下载次数: 58)
(, 下载次数: 56)
(, 下载次数: 53)
(, 下载次数: 56)


下载

(, 下载次数: 80)

(, 下载次数: 83)
作者: SengChuary    时间: 2012-7-12 11:26
有空整一个
作者: mirage    时间: 2015-8-24 21:11

有空整一个




欢迎光临 圣源电子制作 (http://bbs.syyyd.com/) Powered by Discuz! X3.4