Arduino单片机超声波测距仪设计指南

文章目录

摘  要

1.课程设计任务

1.1课程设计题目

1.2设计的要求

2.设计总体方案

2.1初步设计方案

2.2各个单元电路的设计要求

2.3主要性能指标

2.4总体方案

3.单元模块设计

3.1显示模块

3.2超声波测距模块

3.3蜂鸣器模块

3.4电机模块

3.5 LED二极管模块

4.软件流程图

5.设计代码

5.1核心控制代码

5.2超声波测距代码

5.3代码设计总结

6.系统电路设计

6.1整体电路

6.2测试结果

7.系统调试

7.1系统整体测试方法

7.2出现的问题

7.3修改调整的方法

8.总结

8.1心得体会

8.2系统的优缺点

8.3设计的改进思路

参考文献


摘  要

Arduino单片机在自动控制领域里享有很高的价值,以其易用性和多功能性受到了广大电子设计爱好者的好评。本次设计主要是利用Arduino单片机、显示模块、超声波测距模块、蜂鸣器模块、电机模块、LED二极管模块完成测距报警系统的制作,以Arduino为主控芯片,利用超声波对距离的检测,将前方物体的距离探测出来,同时通过LCD显示出距离,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离小于设定值时,Arduino发出指令控制蜂鸣器报警、LED闪烁报警同时控制电机转速降低;当测得距离大于设定值时,Arduino发出指令控制蜂鸣器报警停止、LED闪烁报警停止同时控制电机转速升高。

关键词 Arduino;  超声波测距仪;  单片机。

1.课程设计任务

1.1课程设计题目

基于Arduino单片机超声波测距仪设计

1.2设计的要求

用控制器实现一个超声波测距仪,具体要求如下。

设计要求:

1、能在数码管上实时显示障碍物的实际距离;

2、所测距离大于5cm小于300cm,精度1mm;

3、距离过近时产生声光报警;

4、根据距离变化,控制电机以不同转速转动。

2.设计总体方案

2.1初步设计方案

按照系统总体要求,用功能模块框图表达整体功能,如图1所示。

图1 功能模块框图

        该系统由Arduino单片机、超声波测距仪、LCD液晶显示屏、电机、蜂鸣器、LED二极管等组成。其中,Arduino单片机:作为整个系统的核心控制器,接收来自超声波测距仪传感器的距离信号,并根据不同的距离变化,控制LCD显示屏、电机、蜂鸣器和LED二极管的状态;超声波测距仪传感器:通过发射超声波并检测其回波的时间来测量目标物体与传感器之间的距离;LCD液晶显示屏:用于实时显示测量到的距离值。它的作用类似于计算器的显示屏,可以显示数字和文字等信息;电机:可以根据距离变化以不同的转速旋转。在超声波测距仪中,电机主要用于产生震动或驱动其他机械设备;蜂鸣器:用于产生声音警报,当距离过近时,超声波测距仪可以发出警报以提醒用户注意安全;LED二极管:用于指示系统状态或警报状态等。在超声波测距仪中,LED可以用来指示系统是否正常工作或是否出现警报状态等。

        在该系统中,通过上述各个模块的协作,超声波测距仪可以实现实时测量距离、显示距离、控制电机转速、发出声光报警等功能。

2.2各个单元电路的设计要求

(1)超声波测距仪传感器电路:需要设计一个可以触发超声波信号的电路,并接收回波信号以计算距离。需要考虑电路稳定性和抗干扰性能,以确保测量精度和可靠性。

(2)Arduino单片机电路:需要提供足够的输入输出口以连接其他电路,并能够控制电机、蜂鸣器和LED等外围设备。需要考虑电路的可编程性、稳定性和实时性等因素。

(3)LCD液晶显示屏电路:需要提供足够的接口以与Arduino单片机进行通信,并可以显示数字和文字等信息。需要考虑电路的显示分辨率、显示速度和亮度等因素。

(4)电机驱动电路:需要提供足够的电流和电压以驱动电机,并可以根据距离变化以不同的转速旋转。需要考虑电路的效率、稳定性和精度等因素。

(5)蜂鸣器电路:需要提供足够的电流和电压以驱动蜂鸣器,并可以产生不同频率的声音。需要考虑电路的音质、音量和稳定性等因素。

(6)LED二极管电路:需要提供足够的电流和电压以驱动LED,并可以产生不同颜色的光。需要考虑电路的亮度、稳定性和色彩饱和度等因素。

2.3主要性能指标

在确定各单元电路的设计要求后,我们可以拟定以下主要性能指标:

(1)测量距离范围:大于5cm小于300cm。

(2)测量精度:1mm。

(3)显示屏分辨率:至少4位数码显示。

(4)电机转速变化范围:根据距离变化,转速至少分为两档。

(5)声光报警:当距离过近时,蜂鸣器发出声音警报,LED指示灯闪烁。

(6)可编程性:可以通过编程改变距离范围、测量精度和警报阈值等参数。

(7)电路稳定性:电路稳定性和抗干扰能力应该足够强,以保证系统的精度和可靠性。

2.4总体方案

该系统由Arduino单片机、超声波测距仪、LCD液晶显示屏、电机、蜂鸣器、LED二极管等组成。其中超声波测距仪模块将测得的距离数据通过数字信号传输给Arduino单片机模块。Arduino单片机通过程序对距离数据进行处理,然后控制LCD液晶显示屏模块、电机驱动模块、蜂鸣器模块和LED指示灯模块,以显示距离数据、控制电机转速、发出声音警报和指示设备状态。因此,各个模块之间的连接关系是相互依存、相互影响的。

3.单元模块设计

硬件电路的模块设计包括显示模块、超声波测距模块、蜂鸣器模块、电机模块、LED二极管模块。

3.1显示模块

LCD1602是一种16字符×2行的液晶显示屏,它使用液晶技术来显示文本和图形。其工作原理是通过液晶分子的旋转来控制光的透过和反射,从而实现图像和文字的显示。LCD液晶显示屏通过并行接口或串行接口与主控芯片进行通信,以实现图像和文字的显示。

图2 显示模块图

3.2超声波测距模块

超声波测距模块是一种能够通过超声波测量物体距离的电子装置。它通常由超声波发射器和接收器、微处理器和相关的电路组成。超声波发射器会发射高频的声波,声波会在空气中以固定的速度传播。当声波遇到物体时,一部分声波会被反射回来,被接收器接收到,超声波测距模块就会根据反射回来的声波的时间差来计算出物体到测距模块的距离。

超声波测距模块的优点是非接触式测量,可以测量不同材质的物体,精度高,测量距离远,使用方便,成本低等。因此,它在工业控制、机器人、车载导航、智能家居等领域得到了广泛的应用。同时,超声波测距模块的缺点是受环境影响较大,如温度、湿度等因素都会影响其测量精度。

 图3 超声波测距模块图

3.3蜂鸣器模块

        蜂鸣器是一种能够发出声音的电子元件,其工作原理是通过交替的电压信号来驱动蜂鸣器内部的振荡器,从而产生声音。在该系统中,蜂鸣器用于发出报警提示,增加了系统的实用性和用户体验。

图4 蜂鸣器模块图

3.4电机模块

        电机模块是一种常见的电子模块,通常由直流电机、电子驱动芯片、转子、叶片等组成。它通常被用于制作一些小型电子设备中,如手持电风扇、小型空气净化器等。

这种电机模块的特点是体积小、功耗低、噪音小、操作方便。它可以通过控制电路来改变电机的转速和转向,并可以直接连接到微控制器或单片机中。

需要注意的是,由于电机模块是一种电动设备,所以在使用时需要注意电压、电流等参数,以免对人身或其他设备造成伤害。同时,为了确保电机的正常使用寿命,还需要注意保养和维护。

图5 电机模块图

3.5 LED二极管模块

        二极管模块的特点是体积小、功耗低、稳定性好、使用寿命长。一些二极管模块还可以设置输出电压的大小,以满足不同的应用需求。同时,由于它采用模块化设计,因此在电路中使用起来非常方便。

在该系统中,二极管模块闪烁用于发出报警提示,增加了系统的实用性和用户体验。

图6 LED二极管模块图

4.软件流程图

软件是该系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。软件系统流程图见图8。

图8 软件流程图

初始化:系统启动时进行初始化,包括对所有模块的初始化操作,包括超声波测距仪模块、LCD液晶显示屏模块、电机驱动模块、蜂鸣器模块和LED指示灯模块。

超声波测距:超声波测距仪模块发出超声波信号,被测物体反射回来的信号由接收电路接收并处理,计算得到距离数据。将距离数据传输给Arduino单片机模块。

距离判断:根据测量得到的距离数据,判断距离是否超出安全距离,即是否大于10cm。

距离显示:将测量得到的距离数据发送给LCD液晶显示屏模块,使其实时显示障碍物的实际距离。

电机控制:将计算得到的电机转速发送给电机驱动模块,控制电机转速。

蜂鸣器控制:根据距离数据判断是否需要发出声音警报,如果需要,则向蜂鸣器模块发送警报控制信号,发出声音警报。

LED控制:根据距离数据判断是否需要发出光警报,如果需要,则向LED模块发送警报控制信号,发出光警报。

该系统的软件流程图主要描述了系统运行的流程,包括超声波测距、距离判断、距离显示、转速计算、电机控制、警报控制、LED控制和等待状态等环节,使系统能够实现超声波测距、距离显示、电机控制、声光报警等功能。通过该流程图,可以更好地理解系统的工作原理和各个模块之间的联系。

5.设计代码

5.1核心控制代码

这段代码是用于在LCD上显示超声波测距的距离,并根据距离的大小控制LED灯和蜂鸣器的报警、及马达转速功能。

  lcd.print(s);// 在LCD上显示超声波测距的距离s

  if (s>=10)// 如果距离s大于等于10cm,控制A2口LED灯亮起,马达以快速运转

  {digitalWrite(A2,LOW);// A2口LED灯亮

  digitalWrite(fast,HIGH);// 马达快速运转

  digitalWrite(slow,LOW);// 关闭马达慢速运转

  }

  if (s<10)// 如果距离s小于10cm,控制A2口LED灯闪烁,马达以慢速运转,蜂鸣器发出500Hz频率的声音

     {

      digitalWrite(A2,LOW);// A2口LED灯亮

      delay(100);

      digitalWrite(A2,HIGH); // A2为led报警

      digitalWrite(fast,LOW);// 关闭马达快速运转

      digitalWrite(slow,HIGH);// 马达慢速运转

      unsigned char i,j;// 声明变量i和j为无符号字符类型

      //蜂鸣器报警(500Hz)

      for(i=0;i<100;i++)

            {

            digitalWrite(buzzer,HIGH);// 蜂鸣器发出高电平信号

            delay(1); // 延时1ms

            digitalWrite(buzzer,LOW);// 蜂鸣器发出低电平信号

            delay(1);// 延时1ms

            }      

       }
5.2超声波测距代码

这段代码是用于通过触发超声波测距模块,获取回波时间,从而计算出距离。

//产生一个脉宽是10us的脉冲,触发超声波测距模块的TRIG引脚

digitalWrite(TrigPin, LOW); //TrigPin引脚输出低电平

delayMicroseconds(2); //延迟2us

digitalWrite(TrigPin, HIGH);//TrigPin引脚输出高电平

delayMicroseconds(10); //延迟10us

digitalWrite(TrigPin, LOW);//TrigPin 引脚输出低电平

//利用自身函数pulseIn,计算高电平的脉宽(us);获得回波时间,并换算成距离s(cm)

s = pulseIn(EchoPin, HIGH) / 58.0;

Serial.print(s); //通过串口输出距离值
5.3代码设计总结

本系统代码是一个基于Arduino的超声波测距系统的程序设计,主要涉及液晶显示、超声波测距、蜂鸣器报警、LED指示灯等功能。下面是这段代码设计的主要思路:

(1)引入LiquidCrystal库来驱动液晶显示器,定义lcd对象并设置其引脚。

定义TrigPin和EchoPin分别为超声波传感器的触发引脚和回波引脚,并设置buzzer、fast、slow和A2引脚作为蜂鸣器、电机速度控制和LED指示灯。

(3)在setup函数中,初始化串口通信并设置TrigPin为输出引脚,EchoPin为输入引脚。

(3)在loop函数中,使用pulseIn函数读取EchoPin引脚的高电平脉冲宽度并计算距离,将距离数据通过串口输出并在LCD上显示。

(4)根据距离值的大小,控制LED指示灯的亮灭和电机的转速,当距离小于10cm时,启动蜂鸣器和LED进行声光报警。

总体来说,这段代码的设计思路较为简单明了,结构清晰,通过对超声波传感器输出的脉冲进行计算来得到距离值,并通过LCD显示器和LED指示灯进行数据显示和警告提示。但该系统还存在一些问题,比如稳定性和可扩展性有待提高,代码注释和变量命名也需要进一步优化。

6.系统电路设计

6.1整体电路

图7 整体电路图

6.2测试结果

6.2.1能在数码管上实时显示障碍物的实际距离

该系统的核心功能是进行距离测量,而该测量结果将通过Arduino单片机模块进行处理,并发送到LCD液晶显示屏模块上进行实时显示。通过测试,可以确定该系统能够在数码管上实时显示障碍物的实际距离。这一功能是整个系统的重点,也是该系统能够实现基本设计要求的关键所在。

图8 测试结果一

6.2.2距离过近时产生声光报警

该系统的测试结果将会进行距离测量,当测量到的距离小于一定范围时,超声波测距仪模块将会触发蜂鸣器和LED二极管模块,从而产生声光报警的效果。这一功能的实现将为该系统提供更高的安全性和可靠性,保证了系统在距离过近时能够及时发出警报。因此,可以确定该功能是该系统测试结果的重点之一,也是该系统实现设计要求的关键所在。

图9 测试结果二

6.2.3根据距离变化,控制电机以不同转速转动。

该系统的测试结果将会通过Arduino单片机模块对距离进行处理,从而控制电机以不同转速转动。根据距离变化的不同,控制电机分为两档,以便更好地适应不同的使用场景。这一功能的实现将为该系统提供更高的灵活性和实用性,让系统在使用中更加方便和实用。因此,可以确定该功能是该系统测试结果的重点之一,也是该系统实现设计要求的关键所在。

图10 仿真结果三

7.系统调试

7.1系统整体测试方法

系统的整体测试方法可以分为以下几个步骤:

(1)对系统的硬件模块进行连线,确认电路连接是否正确。

(2)使用超声波测距仪模块对距离进行测量,观察LCD液晶显示屏模块上是否显示准确的距离数值。

(3)将距离调整至触发报警距离附近,观察蜂鸣器和LED二极管模块是否能够正常触发报警。

(4)对电机控制模块进行测试,观察电机转速是否符合距离变化的要求。

(5)对整个系统进行综合测试,检查各个模块之间的协调性和稳定性。

7.2出现的问题

系统电机无法正常转动或转速不符合要求可能出现以下问题:

(1)电机电源电压不稳定或电机驱动电路故障导致电机无法正常工作。

(2)电机转速错误或控制信号传输不稳定。

(3)电机与传感器之间存在干扰。

(4)控制算法错误或者误差过大导致电机转速不符合要求。

(5)电机本身故障或者连接不良。

7.3修改调整的方法

(1)检查电源电压稳定性,检查电机驱动电路是否正常工作,可更换电源或电机驱动电路。

(2)检查电机控制信号是否正确传输,检查电机转速控制逻辑是否正确。

(3)采取合适的屏蔽措施,如增加隔离器、滤波器等。

(4)检查控制算法的正确性和精度,进行参数调整,优化算法。

(5)检查电机是否损坏或连接不良,更换电机或重新连接。

我们在发现问题后,对问题进行定位,然后根据实际情况采取合适的措施进行调整,保证电机能够正常工作,并且能够按照要求控制电机的转速。我们在调试过程中,同时也注意安全性和稳定性,避免损坏电路或其他元件,确保系统的稳定性和可靠性。

8.总结

8.1心得体会

在此次的课程设计中,我深刻认识到自身在编程和调试方面的不足,发现自己所学的知识还有很多需要补充和提高。经过资料的收集和文件的检索,我找到了解决问题的方法,顺利完成了此次课程设计的任务。通过实践,我不仅学到了许多新的知识,还深化了课堂上学到的理论,并增强了自己将理论与实际结合的操作能力。在这个过程中,我获得了宝贵的经验,例如理论必须与实践相结合才能得以应用,知识必须通过实践才能实现其价值。此外,我还提高了自己的动手能力,为今后的学习和工作奠定了良好的基础。

8.2系统的优缺点

该系统的组成使用了多种元件,包括Arduino单片机、超声波测距仪、LCD液晶显示屏、电机、蜂鸣器、LED二极管等组成其优缺点如下:

本系统的优点包括:

(1)测距准确度高:使用超声波传感器进行距离测量,能够实现毫米级的测距准确度。

(2)操作简便:用户只需通过LCD液晶屏幕观察测距结果和电机状态,并根据需要调整电机转速,使用方便。

(3)报警功能:系统能够在检测到距离过近时,及时发出声光报警,提醒用户注意安全。

(4)灵活性强:系统采用模块化设计,各模块间相互独立,可根据需要自由搭配组合,具有较大的灵活性。

但是,本系统也存在一些缺点:

(1)受环境干扰:由于超声波传感器的特性,系统容易受到环境因素的影响,如噪声、温度等,从而影响测距准确度。

(2)稳定性有待提高:系统电路和程序的稳定性有待提高,避免出现意外故障。

(3)可扩展性较弱:系统的功能受到预先设置的硬件和程序限制,功能扩展难度较大。

综上所述,本系统在实现基本功能的同时,仍有一些需要改进和完善的地方,以提高系统的稳定性和功能性。

8.3设计的改进思路

针对系统受环境干扰、稳定性有待提高、可扩展性较弱的缺点,可以考虑以下改进思路:

(1)抗干扰性增强:可以采用滤波器、扩展Kalman滤波等方法,对超声波传感器测量的距离数据进行处理,以减少环境干扰对测距精度的影响。

(2)系统稳定性提高:可以优化程序算法,改进系统的硬件设计,增强系统的自我修复能力和故障诊断能力,以提高系统的稳定性和可靠性。

(3)可扩展性改进:可以考虑采用模块化设计,将系统拆分为多个模块,以提高系统的可扩展性和可维护性,方便后续的系统扩展和升级。

总之,在该系统中,需要注意避免这些问题,采用合适的方式来提高系统的稳定性和功能性。

参考文献

[1]张晔,等.单片机应用技术[M].北京:高等教育出版社,2006,6.

[2]谭家玉,郑大宇,等.单片机原理及接口技术[M].哈尔滨:哈尔滨工业大学出版社,2003,5.

[3]周凤娥, 闫祖霞. 基于单片机的数字电子钟的设计与实现[J]. 计算机与数字工程, 2019, 47(10): 205-206.

[4]李海峰, 任杰. 基于单片机的数字电子钟的设计与实现[J]. 计算机与数字工程, 2018, 46(11): 184-186.

[5]王传博, 王威. 基于单片机的风力发电机控制系统的研究与设计[J]. 机电工程, 2019, 36(2):69-72.

[6]陈建强, 王志豪, 魏锋. 基于单片机的消防报警系统的设计与实现[J]. 消防科学与技术, 2019, 38(6):98-101.

[7]王荣华, 李想. 基于单片机的自动化化学分析仪的研究与设计[J]. 化学教育, 2019, 40(6):49-51.

[8]朱德杰, 陈鹏. 基于单片机的航空监控系统的研究与设计[J]. 航空制导技术, 2019, 38(3):78-82.

[9]李光辉, 赵淑贤. 基于单片机的自动售货机控制系统的研究与设计[J]. 电脑知识与技术, 2019, 15(14):48-51.

[10]张维, 杨强. 基于单片机的工业自动化系统设计与应用[J]. 机械科学与技术, 2019, 38(6):108-112.

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino单片机超声波测距仪设计指南

发表评论