智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 14822|回复: 5
打印 上一主题 下一主题

[硬件类] 关于无线模块HC_SR04测距工作原理的详细解释。。。。求

[复制链接]

5

主题

76

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1413
威望
829
贡献
472
兑换币
140
注册时间
2011-7-12
在线时间
56 小时
跳转到指定楼层
1#
发表于 2011-7-27 17:04:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
本帖最后由 战天变 于 2011-7-27 17:33 编辑

硬件如图所示

在trig端给一个至少10us的高电平信号,则该模块内部将循环发射8个40hz脉冲,检测若有回波信号,则在echo端会产生高电平回响信号,其持续

时间与所测距离成正比,所以只要测出持续时间就可以测出距离。

信号如图所示:


本人的问题是:1、如果没回响信号,也就是距离太大,会echo出现什么情况?
                    2、在产生回响信号后,是否会继续发射8个40hz脉冲?

求各位高手帮忙解答一下!
附件: 您需要 登录 才可以下载或查看,没有帐号?注册

最佳答案

查看完整内容

哦,忘了跟你讲,建立工程时注意选择带浮点型运算的。

1

主题

133

帖子

0

精华

高级会员

Rank: 4

积分
669

优秀会员奖章

威望
419
贡献
192
兑换币
0
注册时间
2010-11-20
在线时间
29 小时
2#
发表于 2011-7-27 17:04:17 | 只看该作者
哦,忘了跟你讲,建立工程时注意选择带浮点型运算的。
回复

使用道具 举报

1

主题

133

帖子

0

精华

高级会员

Rank: 4

积分
669

优秀会员奖章

威望
419
贡献
192
兑换币
0
注册时间
2010-11-20
在线时间
29 小时
3#
发表于 2011-7-31 16:17:57 | 只看该作者
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
float  Distance;
unsigned int n, shicha,cn0,cn1 ;
//-----时钟初始化程序--------//
void PLL_Init(void)           //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                            //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;                     //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));                 
  CLKSEL=0x80;                              
}
    /*IO口初始化*/   
void IO_Init(void)   
{   
    DDRA=0x02;    // A1输出     
}   
void DELAY(unsigned int loop_times)                 //延时10us程序
{
unsigned int loop_i,loop_j;
for(loop_i=0;loop_i<loop_times;loop_i++)
{for(loop_j=0;loop_j<38;loop_j++)
  ;
}
}
//===============PIT模块初始化==================//
void Pit_Init(void)
{
  PITCFLMT_PITE = 1; //使能PIT模块
  PITCE = 0X00;      //通道0,1 PIT模块禁止
  PITINTE = 0x03;    //通道0,1中断使能
  PITMUX = 0x00;      //16位定时通道0使用0号8位微计数器,16位定时器1使用1号微计数器
  PITMTLD0 =120-1;   //8位定时器初值设定。120分频,在24MHzBusClock下,为0.2MHz。即5us.
  PITLD0 =4000-1;   //16位定时器初值设定,即定时20ms
  PITCE = 0X01;      //通道0,1 PIT模块使能
}
//==============触发信号发生程序==========//
void Chufa(void)
   {
     PORTA_PA1=1;//PA1输出高电平
     DELAY(1);      //延时10us
    PORTA_PA1=0;//PA1输出低电平
   }  
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt 66 void PIT0(void)
   {
      PITTF_PTF0 = 1;
       Chufa();  
    }
void ECT0_Init(void)
     {
      TSCR2=0x06;     //禁止溢出中断,分频系数64     周期 2.67us
      TIOS=0x00;      //PT7为输入捕捉
      TCTL3=0xc0;     //输入捕捉7上升沿和下降沿均有效               
      TIE_C7I=1;      //通道7输入捕捉中断允许            
      TSCR1=0x80;     //使能定时器
      }
  void interrupt 15 Timer0_Onput(void)
    {           
    TFLG1_C7F=1;
     if(!(n%2)==0)
        {
           cn0=TCNT;
        }
     else  if(n%2==0)
     {
        cn1=TCNT;
        if(cn1>cn0)
          {
            shicha=cn1-cn0;
          }
        else if(cn1<cn0)
        {
          shicha=cn1+65535-cn0;
        Distance=shicha*2.67*0.017;   //单位cm
        }  
     }
  }                             
   //=======================主函数================================//
   void main(void)
   {
    PLL_Init();    //设置锁相环
    Pit_Init();     
    IO_Init();
    ECT0_Init();   
    EnableInterrupts;
     for(;;)
     {
     
     }
   }
回复

使用道具 举报

1

主题

133

帖子

0

精华

高级会员

Rank: 4

积分
669

优秀会员奖章

威望
419
贡献
192
兑换币
0
注册时间
2010-11-20
在线时间
29 小时
4#
发表于 2011-7-31 16:27:56 | 只看该作者
不好意思,上面写的文字没发出来
按照你给的这个模组的原理,模组在接收到回波时才会产生高电平,那没有回波就没有高电平喽。
接收到回响后,你要继续给触发信号它才能产生连续方波哦。
上面的这个程序是20ms产生一次中断去测量距离,Trig接A1,用于产生触发信号,T7接ECHO,用于捕捉回响信号的上升沿和下降沿,读取Distance的值就是距离。希望对你有帮助
回复

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
26
威望
94
贡献
22
兑换币
0
注册时间
2012-5-8
在线时间
0 小时
毕业学校
南京工业大学
5#
发表于 2012-5-8 10:44:32 | 只看该作者
请问为什么是回响信号持续的时间就是超声波传播的时间?谢谢
回复

使用道具 举报

0

主题

81

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1164
威望
589
贡献
377
兑换币
403
注册时间
2013-9-12
在线时间
99 小时
6#
发表于 2014-2-5 16:41:02 | 只看该作者
转角踩到屎 发表于 2011-7-31 16:17
#include  /* common defines and macros */
#include "derivative.h" /* derivative-specific definition ...

请问参数n是怎么变化的。。。
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 17:34 , Processed in 0.060172 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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