你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32的超声波测距仪设计

[复制链接]
STMCU小助手 发布时间:2022-5-12 11:11
一.硬件方案; V( a* @. V& u1 M% d
本文介绍了一种基于单片机的脉冲反射式超声波测距模块。该模块以空气中超声波的传播速度为确定条件,利用反射超声波测量待测距离。主要是利用STM32单片机、超声波传感器完成测距报警系统的制作,以STM32单片机为主控芯片,利用超声波对距离的检测,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离小于设定值时,STM32发出指令控制蜂鸣器报警。& u9 `/ L& V7 m( U
主要由STM32单片机最小系统、超声波CH-SR04模块、LCD1602显示模块、按键模块,蜂鸣器声光报警模块和电源模块组成;如图:
. M' D% T* C/ z* N7 K
; [' \% C: p( @ 2B0_%6HDTIDATC%G$[BWWIJ.png ; H/ z" x+ x! V. _* `) i8 F  J

' i9 K' M! ?$ K- ^8 C+ \/ v二.设计功能
$ z; }" a3 ~; C/ ~6 a4 T(1)可设置报警距离,按下设置键后就可以再按加减键修改报警距离并具有掉电保存功能。# D  d# o# N& c1 {+ w+ x2 Y
(2)当超声波探测的距离小于设定的距离时蜂鸣器发出报警声。9 E, ^4 r3 b" F2 w( d) _% b
(3)测量范围:2cm–4m。# Z) B! p! d5 u5 P7 ~! |5 c( S* |, M! W

, K% T* H6 M; h: ~4 X) h3 g三.设计原理图
0 E) m+ T* R8 s1 S  G3 H5 g
(1)原理图主要采用AD软件进行设计,如图:
0 H3 Y6 `4 w- N& U9 }
! `* {& [( U$ N _N_F(WX3UA(2`]GCTP~67.png
* P+ P: R# ]2 @( e3 T+ B" |* _1 `4 s2 L( @' Y) O
(2)PCB图如下:
& y& u- u, |7 }! t7 X  n+ k' A# C( {! b4 n( A! L
MURB$}_VYRV@HXRK35TNKHT.png - W- S3 T4 r7 p3 G4 \
6 V1 k5 O; a/ |  J' H; s( e8 e
四.软件设计
6 i; ^! @# x2 w* @5 o主程序源码
$ p8 Q' o& H( o/ v: m! a
8 x( z/ n9 `& e9 {9 a' z
  1. int main(void)
    ) m* H3 ]  J2 p6 u# `) ~' Y
  2. {                ) B8 h, F9 F0 s" \
  3.         u16 datatemp[1];
    + Q/ }' E: _7 w' k$ I
  4.         BEEP_Init();0 Y5 n0 l2 A- l9 l& A
  5.         KEY_Init();
    1 r* m. N5 [, }1 a
  6.         delay_init();                     //延时函数初始化         
    / t! b  P) I* \2 u: O/ e/ H
  7.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    2 i/ Z8 B1 V3 r
  8.         uart_init(115200);         //串口初始化为1152001 O. x1 i5 C& O- Y
  9.         LED_Init();                             //LED端口初始化
    " s5 E0 N/ s+ y" S
  10.         UltrasonicWave_Configuration();  //初始化超声IO3 ]4 c: d- M& Y( l) R; W- H
  11.         TIM3_Cap_Init(1,72-1);        //以1Mhz的频率计数,第一个选项,最小只能是1
    ' h3 m4 P3 x7 I
  12.         LCD1602_Init();
    & w+ N, q* J" v( V5 i
  13.         STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,1);
    , N& }& l. ?; U- n
  14.         TL=datatemp[0];
    # L8 ?) @+ w+ Y# W
  15.         if(TL<5||TL>400)1 \! g6 P8 q  A/ z0 ~
  16.         TL=50;0 X3 J# l4 C$ _
  17.         ceju();* I7 ?3 e  P: G8 P7 o
  18.         printf("Distance"); //串口打印一下,调试用
    % \6 B8 `9 [, R, T3 ^* s/ r
  19.   while(1)
    + A' ?* R' R) B! ^! j
  20.         {/ U- L7 b9 x  {
  21.                 if(beep1==1) //如果蜂鸣器标志等于1,则开始滴滴叫,指示灯也是闪烁
    ; c( e& n* X( R- M, t( d
  22.                 {5 m2 R& U* s/ W* D9 \4 G* M0 _
  23.                         BEEP=!BEEP;
    0 A+ h! x  l8 |0 ~
  24.                         LED0=!LED0;6 n0 x8 W! G1 {( ]8 o- a. V
  25.                         
    . Z, o& i% ^% C$ N3 j3 W
  26.                 }
    : D# D% ~# s6 M* E: W. q
  27.                         else # W. g. i# D9 `( |) w
  28.                                 BEEP=0;  H# I' H0 w1 G6 M' I7 P; N7 h
  29.                 show();   //调用显示函数
    1 V- X/ a. s: v0 G6 Y! t# `. Q
  30.                 key();    //调用按键函数
    6 D7 t$ q7 u* W; i% l  @, v& D
  31.                 problem();//调用报警处理函数
    5 ?- d# Y  n6 p, [. m- C
  32.                 t++;      //变量自加,加到5的时候,对5取余会等于0,则启动一次测距函数
    , ?# l' d, ?/ G- p) X+ A
  33.                 if(t%5==0)+ B- ]7 B0 `' {# \9 O5 `5 Q
  34.                 {
    & y7 K* z1 d0 r, O
  35.                         t=0;
    8 B4 K# M4 X9 S: [. B/ K, Q7 U
  36.                         ceju();
    ' e  V1 |: W3 U; O$ ^
  37.                 }* `+ \& u# S& U
  38.         }
    # O3 g# F5 |5 h; r, X% B# k
  39. }
复制代码

" `1 b' y2 I2 G+ k% W$ ^# V9 E: }( x) v6 c  I
+ e1 p4 e- n! z2 `2 e+ B0 f; U

  A% ]( i; R! i$ j
收藏 评论0 发布时间:2022-5-12 11:11

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版