3849|3

53

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

超声波测距SR04,测量距离有问题 [复制链接]

每次调试测试时,TH1总是在10以下,就是说不管多远,距离显示总是在10厘米以内,彻底无语了,求高手指点

先贴出程序
----------------------------------------------------------------------------------------
uint distance;
uchar num1,num2,num3,num4;                    

----------------------------系统初始化------------------------------------------
void init()
{
        Trig = 0;
        TMOD = 0x91;                 
        ET0 = 1;   
        ET1 = 1;                  

        TR1 = 0;
        TR0 = 0;       

        EX1 = 1;
        IT1 = 1; //下降沿触发方式

        EA = 1;                       
}


----------------------开启sensor------------------------------
void start_sensor()
{
        Trig = 1;
        TH0 = 0xff;
        TL0 = 0xf0;
        TR0 = 1;
}

---------------定时器0中断,用于产生10us高脉冲-------------------------
void timer0() interrupt 1          
{
        Trig = 0;
        TR0 = 0;
        TH1 = 0x00;
        TL1 = 0x00;
        TR1 = 1;
}


--------------记录ECHO的脉冲长度---------------------------由于时间没有这么长,这段程序基本不肯能执行
void timer1() interrupt 3                  
{
        TH1 = 0x00;
        TL1 = 0x00;
}

----------------根据脉冲长度计算距离-------------------------------------------
void out1_interrupt() interrupt 2               
{
        TR1 = 0;
        num1 = TH1;
        num2 = TL1;
        num3 = num1*256/1000*170;
        num4 = num2*340/2000;
        distance= num3 + num4;        //测量的实际距离

        TH1 = 0x00;
        TL1 = 0x00;       
}

-------------------------主函数-----------------------------------------------
void main()
{
        init();
        while(1)
        {
                i = i + 1;
                if(i >100)
                {
                        start_sensor();
                        i = 0;
                }
                display(distance);               
        }                                 
}



基本思路是:1、由 i 控制发射波的频率,由于display()大约10ms,故大约一分钟发射一次
            2、用定时器0来控制Trig启动信号的脉冲宽度,大约有16个us长度
            3、用定时器1和外部中断1共同控制计算Echo的脉冲长度,只计算第一个高脉冲的长度
            4、外部中断通过Echo的下降沿触发,取出Echo脉冲长度的信息,计算出距离


但是每次调试测试时,TH1总是在10一下,就是说不管多远,距离显示总是在10厘米以内,彻底无语了,求高手指点
此帖出自51单片机论坛

最新回复

你先看看电路吧,距离显示10cm以下说明换能器在开始工作600US的时间内收到了回波信号。  详情 回复 发表于 2012-4-22 09:26
点赞 关注
 

回复
举报

53

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
大神们,在哪里
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

142

TA的资源

版主

板凳
 
不要贴程序了,先用示波器看收发情况,排除硬件问题后再看软件。
此帖出自51单片机论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(中级)

4
 

你先看看电路吧,距离显示10cm以下说明换能器在开始工作600US的时间内收到了回波信号。

此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表