查看: 3496|回复: 10

[分享] [我为LPC代言] 实验十 LPC824采用HD-SR04超声波传感器模块测距

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-12-21 22:00:59 | 显示全部楼层 |阅读模式
    实验十 LPC824采用HD-SR04超声波传感器模块测距
    实验如题,网传和下载资料,看手册,这款模块控制和应用非常简单,一共4个引脚:+V、GND、Trig、Echo。工作原理:外部用不小于10uS的高电平触发一下Trig,模块将自动发出超声波脉冲N个,同时Echo输出高电平;当接收到返回的超声波脉冲时,Echo高电平截止,单片机只需要开一个接收口检测此高电平的时长,就可以计算出来距离。
    下边我们计算一下,而后作些修正。
    测试距离=(高电平时间*声速(340m/s))/2。因为是往返。
    电源可以在3~5V,LPC824工作在3.3V,Ok,没有问题。以前做过IO口发出脉冲实验,稍稍改一下,作为Trig触发信号。以前做过中断接收脉冲检测实验,就用上沿触发来检测Echo高电平的时长。编程很简单,因为以前都做过,此处仅仅是拿来主义。
    测试高电平时长需要一个时钟,打开timer.h。timer.h中有mS、uS,因为世博速度接近340m/s,实际上测距不会超过10米,因此距离脉宽不会超过34mS,以uS来计时应该有富裕,从网上看到的精简公式为:
    测得的时间/57~59=距离米,需要精确到CM,再做换算。
    查看实例,创建一个时钟对象,下载main.cpp文件头部:
    Timer timer;
    定义一些变量来存放开始时间,结束时间,以及两个时间的差:
    float all,begin,end;
    用浮点数是为了得到小数点后的数据——CM厘米。
    以前的plusIn中断函数简单:
    void PlusIn8(void){wait(0.001f);if(P0_8) ps8++;}
    这次用P0_28口,为P0_27是脉冲输出,稍稍修改一下就可以了,里面加上获得开始时间:
    timer.start();
    begin=timer.read_us();
    再获得结束时间
    end=timer.read_us();
    最后计算出距离
    dis=(end-begin)/57;
    就可以了。实际测试,超过110CM就无法测试了,小于2CM,显示值就开始增加了。
    因此实际测试距离在2~110CM,如果换成5V电源,应该能达到2米或更多。
    结果见照片图A0-20CM测距,图A1-10CM测距,图A2-串口显示图。

    20CM测距

    20CM测距

    10CM测距

    10CM测距

    串口显示结果

    串口显示结果
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-12-22 09:57:40 | 显示全部楼层
    工程ARMmbed,程序代码:
    #include "mbed.h"
    #include "6903.h"

    Ticker tick;
    Timer timer;
    RawSerial prtOut(P0_16,P0_17);//TX,RX
    DigitalOut plus27(P0_27);
    DigitalOut myled0(P0_15);
    InterruptIn plusIn28(P0_28);

    //Define Avarible
    int32_t js;
    float all,begin,end;

    void tipInt(void){plus27=1;wait(0.000008f);plus27=0;}
    void PlusIn28(void){
    if(P0_28){
      timer.start();
      begin=timer.read_us();
      //plusIn28.fall(&PlusIn28);
      //plusIn28.rise(&PlusIn28);
      //myled0.write(0);
    }
    while(plusIn28){}
    end=timer.read_us();
    }
    //显示布局 6903
    void dispBase(void){
    c2l(0,0,19);c2l(1,0,28);//JS
    c2l(0,1,28);c2l(1,1,29);c2l(2,1,10);c2l(3,1,27);c2l(4,1,29);//start
    c2l(0,2,14);c2l(1,2,23);c2l(2,2,13);//end
    c2l(0,3,10);c2l(1,3,21);c2l(2,3,21);//all
    }
    //Display Test Data 6903
    void dispMes(void){
    c2l(3,0,(js/100000)%10);c2l(4,0,(js/10000)%10);c2l(5,0,(js/1000)%10);c2l(6,0,(js/100)%10);c2l(7,0,(js/10)%10);c2l(8,0,(js)%10);
    //c2l(6,1,int(begin/1000)%10);c2l(7,1,int(begin/100)%10);c2l(8,1,int(begin/10)%10);c2l(9,1,int(begin)%10);
    //c2l(4,2,int(end/1000)%10);c2l(5,2,int(end/100)%10);c2l(6,2,int(end/10)%10);c2l(7,2,int(end)%10);
    c2l(4,3,int(all/100)%10);c2l(5,3,int(all/10)%10);c2l(6,3,int(all)%10);c2l(7,3,36);c2l(8,3,int(all*10)%10);c2l(9,3,int(all*100)%10);
    }
    int main(){
    lcdInit();
    lcdClear();
    prtOut.baud(115200);
    myled0.write(0);
    dispBase();
    tick.attach(&tipInt,0.1f);
    plusIn28.rise(&PlusIn28);
    while(true){
      js++;
      myled0.write(1);
      all=(end-begin)/57;
      prtOut.printf("Begin=%6.2f end=%6.2f all=%6.2f\r\n",begin,end,all);
      dispMes();
    }
    }

    自己编的,可以自由发挥扩展使用。谢谢
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 2626 天

    [LV.Master]伴坛终老

    45

    主题

    5182

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    10671
    最后登录
    2024-4-24
    发表于 2016-12-21 23:45:52 | 显示全部楼层
    不错,赞一个。
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-7-14 14:05
  • 签到天数: 484 天

    [LV.9]以坛为家II

    8

    主题

    854

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1991
    最后登录
    2019-7-14
    发表于 2016-12-21 23:58:15 | 显示全部楼层
    作为一个伸手党,看到这么好的东西,我忍不住问一句,大佬能不能发下工程?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-12-22 06:54:37 | 显示全部楼层
    西窗雪 发表于 2016-12-21 23:58
    作为一个伸手党,看到这么好的东西,我忍不住问一句,大佬能不能发下工程? ...

    不要着急,整理好了发上。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    9 小时前
  • 签到天数: 1781 天

    [LV.Master]伴坛终老

    65

    主题

    7539

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    12751
    最后登录
    2024-4-24
    发表于 2016-12-22 08:19:09 | 显示全部楼层
    这个什么屏啊,很不错的样子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-12-22 09:49:33 | 显示全部楼层
    wudianjun2001 发表于 2016-12-22 08:19
    这个什么屏啊,很不错的样子

    这是一款早起买的日产屏,为了省电将里面的9个串联背光LED改成保留中间3个并联,这样整体耗电只有1mA多一点点,此屏分辨率102X64,比5110、3110、1602、等显示的多,但比128X64的少一点,因此字符点整是6X8的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:16
  • 签到天数: 191 天

    [LV.7]常住居民III

    11

    主题

    664

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1722
    最后登录
    2017-10-15
    发表于 2016-12-22 10:09:40 | 显示全部楼层
    谢谢分享                     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-7-14 14:05
  • 签到天数: 484 天

    [LV.9]以坛为家II

    8

    主题

    854

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1991
    最后登录
    2019-7-14
    发表于 2016-12-22 11:52:15 | 显示全部楼层
    zhjb1 发表于 2016-12-22 06:54
    不要着急,整理好了发上。

    好嘞
    拜谢大佬
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-4-4 11:28
  • 签到天数: 351 天

    [LV.8]以坛为家I

    141

    主题

    8054

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5740
    最后登录
    2022-4-4
    发表于 2016-12-24 18:49:23 | 显示全部楼层
    标记,没有宝藏
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 19:45 , Processed in 0.141973 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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