5226|3

379

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

基于R7F0C80212的超声波测距仪 [复制链接]

本帖最后由 wenyangzeng 于 2014-9-10 14:32 编辑

     感谢RENESAS赠送的EZ-CUBE套件,让我有机会接触瑞萨单片机。决定用它组成一台超声波测距仪。所用超声波发射接收头是HC-SR04普及型模块,我用的模块测距范围是30厘米的那种。给模块的触发端发送15-20uS的方波,模块自动根据反射回波的时间输出对应宽度的方波。
    利用定时器的“Input pulse high-/low-level width measurement”脉冲宽度捕捉功能,可以很方便地对超声回波的时间进行精确测量。该功能的输入在R7F0C80212的P1.37,将HC-SR04模块的ECHO直接接该脚,P0.1就作为TRIG触发。P0的剩余3个IO口用来驱动HT1621液晶模块。

    利用Cube Suite+的Code Generator功能可以快速配置软件环境参数,主要是将Timer Array Unit 的Channel 0配置为Input pulse high-/low-level width measurement,见附图。本例中的Measurement level select要配置成High level,以便在回波上升沿到来时触发捕捉功能开始计数。在回波下降沿到来时得到回波宽度值。

    由于R7F0C80212只有2KB的ROM空间,资源有限,要实现本例的功能有点吃紧,刚开始调试时就经常编译出错,被告知MEMORY使用超“标”。后来在添加的每个代码都要精打细算,最后还得把看门狗也关闭了,省下几个清看门狗的语句才够用。

    这个测距仪调试成功后工作效果还是令人满意的,LCD的4位读数显示的测距单位为厘米后加2位小数。在视频中你可以看到读数基本上是稳定的。只有小数点的第二位有所跳动,百分之几毫米的值。


uint8_t LCD[8],DispBuf[4];
void R_MAIN_UserInit(void);

void main(void)
{uint32_t i;
    R_MAIN_UserInit();
    R_TAU0_Channel0_Start();         //开启定时器
    Init_LCD();
    while (1U)
    {
            P0.1=1;                              //触发超声波启动
            for(i=0;i<20;i++)NOP();     //2KB的ROM,延时如果再调用子函数就挂了
            P0.1=0;
           WriteAll_1621(0,8);             //LCD显示
            for(i=0;i<30000;i++)NOP();
    }
}
//上下沿捕捉中断
__interrupt static void r_tau0_channel0_interrupt(void)
{
    if (1U == (TSR00 & _01_TAU_OVERFLOW_OCCURS))    /* overflow occurs */
    {            
        g_tau0_ch0_width = (uint32_t)TDR00L;
        g_tau0_ch0_width = (uint32_t)TDR00H * 0xFFU + g_tau0_ch0_width + 0x10000U;
    }
    else
    {
        g_tau0_ch0_width = (uint32_t)TDR00L;
        g_tau0_ch0_width = (uint32_t)TDR00H * 0xFFU + g_tau0_ch0_width;
    }
    AsciiConvert((uint32_t)g_tau0_ch0_width);         //调用LCD显示的数据转换函数
}

//定时器配置
void R_TAU0_Create(void)
{
    TAU0EN = 1U;    /* supplies input clock */
    TPS0 = _02_TAU_CKM0_FCLK_2 | _00_TAU_CKM1_FCLK_0;
    /* Stop all channels */
    TTH0 =_02_TAU_CH1_H8_STOP_TRG_ON;
    TT0 = _01_TAU_CH0_STOP_TRG_ON | _02_TAU_CH1_STOP_TRG_ON;
    /* Mask channel 0 interrupt */
    TMMK00 = 1U;    /* disable INTTM00 interrupt */
    TMIF00 = 0U;    /* clear INTTM00 interrupt flag */
    /* Mask channel 1 interrupt */
    TMMK01 = 1U;    /* disable INTTM01 interrupt */
    TMIF01 = 0U;    /* clear INTTM01 interrupt flag */
    /* Mask channel 1 higher 8 bits interrupt */
    TMMK01H = 1U;    /* disable INTTM01H interrupt */
    TMIF01H = 0U;    /* clear INTTM01H interrupt flag */
    /* Set INTTM00 low priority */
    TMPR100 = 1U;
    TMPR000 = 1U;
}

//IO配置
void R_PORT_Create(void)
{
    P0 = _01_Pn0_OUTPUT_1 | _02_Pn1_OUTPUT_1 | _04_Pn2_OUTPUT_1 | _08_Pn3_OUTPUT_1 | _10_Pn4_OUTPUT_1;
    P4 = _01_Pn0_OUTPUT_1;
    PMC0 = _00_PMCn1_DI_ON | _00_PMCn2_DI_ON | _00_PMCn3_DI_ON | _00_PMCn4_DI_ON | _E1_PMC0_DEFAULT;
    PM0 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT |
          _00_PMn4_MODE_OUTPUT | _E0_PM0_DEFAULT;
    PM4 = _00_PMn0_MODE_OUTPUT | _FE_PM4_DEFAULT;
}

接线图.JPG (44.73 KB, 下载次数: 0)

接线图.JPG

TIMER.JPG (19.2 KB, 下载次数: 2)

TIMER.JPG

CHANNEL.JPG (29.82 KB, 下载次数: 0)

CHANNEL.JPG

I-O.JPG (24.1 KB, 下载次数: 1)

I-O.JPG

DOG.JPG (15.85 KB, 下载次数: 1)

DOG.JPG

照片.jpg (469.07 KB, 下载次数: 0)

照片.jpg

最新回复

前辈,我想向您请教一些超声波测距仪的知识,是否可以加您好友?  详情 回复 发表于 2017-6-14 06:47
点赞 关注

回复
举报

3

帖子

1

TA的资源

一粒金砂(初级)

沙发
 
请问  楼主从寄存器里得出来的数据如何转换成距离的啊

点评

定时器捕获值g_tau0_ch0_width与距离成正比。  详情 回复 发表于 2015-8-5 11:59
 
 

回复

379

帖子

3

TA的资源

一粒金砂(高级)

板凳
 
ksimojie 发表于 2015-8-4 14:46
请问  楼主从寄存器里得出来的数据如何转换成距离的啊

定时器捕获值g_tau0_ch0_width与距离成正比。
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

4
 
前辈,我想向您请教一些超声波测距仪的知识,是否可以加您好友?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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