[attach]7473[/attach] 概述 本文介绍如何构建一个非接触式转速表(设备用于计算每分钟旋转轴的革命),使用一个8051微控制器和接近传感器。 [attach]7474[/attach] 顾名思义,是什么使这个设备特殊,它可以非常精确地测量一个轴的转速,甚至不触摸。 时,与旋转轴直接接触,这是非常有趣的是不是一种选择,或将减少轴的速度,提供错误读数。 [attach]7474[/attach] 此设备是基于AT89S52单片机(AT89C52)微控制器,一个字母数字液晶显示模块和接近传感器检测旋转轴的速度正在测量。 [attach]7474[/attach] 600 mA.h镍镉电池提供几个月经常使用此设备之前,需要充电。 | |
主要特点: [attach]7473[/attach] 措施截至99 000 RPM [attach]7473[/attach] 瞬时测量 [attach]7473[/attach] 自动数据保持功能 [attach]7473[/attach] 液晶显示器 [attach]7473[/attach] 镍镉充电电池 |
大多数数字计数装置,频率计和转速表,背后的想法是一个微控制器,用来计数脉冲来自传感器或任何其他电子设备 。 在此转速表的情况下,计算正负来自接近传感器,将检测任何反光元素,通过它的盈方,并因此,会给每一个旋转轴的输出脉冲,作为显示图片。 这些脉冲将被输送到微控制器和计算。 要了解如何微 |
|
计数器复位为0。 微控制器现在可以采取的最后3个读数(C1,C2和C3保存)的平均计算每第五届第二个脉冲的平均数字,那么这个值乘以5,得到每秒的脉冲数,再乘以这个值60,这代表了测量转速每分钟的脉冲数。 计算平均阅读的唯一目的是,它将使以获得更多 |
|
图,显示它们是如何连接在一起。 您将有参照上述原理图的P1,P2,P3和P4主板,以及有关传感器的其他线路。 |
| 这张照片显示的传感器连接到主板是什么意思。 从主板分离传感器的原因,是允许更好的性能的传感器,或其他类型的传感器甚至可以连接到该设备。 在一般情况下,模块化设计的成本,但在原型阶段更有用的...... |
#包括 #包括中 无符号整型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; } } } |
欢迎光临 圣源电子制作 (http://bbs.syyyd.com/) | Powered by Discuz! X3.4 |