找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4156|回复: 12
打印 上一主题 下一主题
收起左侧

用红外测速度

[复制链接]
跳转到指定楼层
楼主
ID:260698 发表于 2018-1-3 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用到两个红外传感器,第一个检测到就开始计时,第二个红外检测到时就停止计时,目前主要问题是怎么计算这个时间的程序。传感器的信号下接到p2.0和p2.1。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97438 发表于 2018-1-3 17:15 | 只看该作者
//你要的计时最长时间是多少?还有计时的精度要是多少?这里给你写个简单的程序。
//有不懂可以一起讨论一下。
#include"STC15F2K60S2.H"
#define uint unsigned int
#define uchar unsigned char
sbit        SensorA        =P2^0;
sbit        SensorB        =P2^1;
uint        CNT=0;

void Timer0Init(void)                //1毫秒@12.000MHz                //计时精度1ms
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x20;                //设置定时初值
        TH0 = 0xD1;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
}

void time_r1_() interrupt 1
{
        CNT++;
        if(CNT==60000)                                                                //最大计时量60000ms
        {
                CNT=0;
        }
}

void main()
{
        uint Resust=0;
        Timer0Init();
        EA=1;
        while(1)
        {
                if(SensorA==1)                                                                //当传感器a检测到时
                {
                        CNT=0;                                                                                        //从0开始计时
                }
                if(SensorB==1)                                                                //当传感器B检测到时
                {
                        Resust=CNT;                                                                        //存储计数结果
                }

        }
}
回复

使用道具 举报

板凳
ID:97438 发表于 2018-1-3 17:16 | 只看该作者
测速度??和用霍尔传感器测速差不多。上面给你写的是计时的,不适合的话再说~~~
回复

使用道具 举报

地板
ID:7485 发表于 2018-1-3 18:59 | 只看该作者
检测到第一个红外传感器就开始计时(或启动定时器),检测到第二个传感器信号就停止计时,就可以读出过程时间了。如果是成品的传感器的输出是高低电平,可以直接作为单片机的输入信号,和按键的差不多。如果传感器的输出电压不是5V,可以分压再接入。
回复

使用道具 举报

5#
ID:260698 发表于 2018-1-3 21:24 | 只看该作者
luoluoluo136 发表于 2018-1-3 17:16
测速度??和用霍尔传感器测速差不多。上面给你写的是计时的,不适合的话再说~~~

谢谢你啊,计时时间大概0-5s。用手模拟。
回复

使用道具 举报

6#
ID:260698 发表于 2018-1-3 21:24 | 只看该作者
ahshmj 发表于 2018-1-3 18:59
检测到第一个红外传感器就开始计时(或启动定时器),检测到第二个传感器信号就停止计时,就可以读出过程时 ...

主要是程序不会写,51小白。
回复

使用道具 举报

7#
ID:260698 发表于 2018-1-3 21:30 | 只看该作者
ahshmj 发表于 2018-1-3 18:59
检测到第一个红外传感器就开始计时(或启动定时器),检测到第二个传感器信号就停止计时,就可以读出过程时 ...

对,传感器是高低电平,我需要程序得到时间再转换成速度(路程已经)
回复

使用道具 举报

8#
ID:266627 发表于 2018-1-5 18:25 | 只看该作者
设置一个函数,专门用于更新系统时间吧,每10ms中断一次,每次加1.

这样第一个传感器发生中断时,记录下时间T0,第二个传感器记录为T1。
两者相减,就是两者差。

这样好处是其他函数也可利用系统时间,不用时时想着定时器中断这些底层的事。
回复

使用道具 举报

9#
ID:290576 发表于 2019-1-17 21:10 | 只看该作者
楼主 可以把电路图分享下不?
回复

使用道具 举报

10#
ID:679068 发表于 2021-6-2 19:20 | 只看该作者
ahshmj 发表于 2018-1-3 18:59
检测到第一个红外传感器就开始计时(或启动定时器),检测到第二个传感器信号就停止计时,就可以读出过程时 ...

我写出来,似乎计算不了~~
回复

使用道具 举报

11#
ID:420836 发表于 2021-6-3 08:30 | 只看该作者
这将使用红外二极管对来模拟飞行时间测量。 它类似于两个接近开关。 当第一个开关被触发时,启动定时器,当第二个开关被触发时停止定时器。 两个开关之间的距离除以时间,你就得到了速度。
回复

使用道具 举报

12#
ID:775776 发表于 2021-6-3 17:51 | 只看该作者
精度是个问题 stm32有现成的 计算脉冲宽度的历程 精度是us
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表