最近,我和很多单片机和嵌入式初学者交流,发现他们常常对使用从未接触过的传感器感到困惑。 恰巧我最近使用了一个以前从未使用过的超声波测距传感器来开发新功能。 这里逐步详细介绍如何使用不熟悉的传感器。 如果您在项目开发过程中对使用不熟悉的传感器不了解,可以仔细阅读本文。 可以说,几乎所有传感器的开发流程往往都是相同的,所以阅读本文实际上可以对开发有一个清晰的认识。
项目设计项目介绍
本项目采用STM32作为MCU,使用485接口的超声波测距传感器实现测量距离的功能。
开发工具
keil 5:STM32程序开发平台
SSCOM:串口调试助手
硬件设计
使用目前主流的STM32F103C8T6作为MCU(编写程序时使用标准库)。
使用KS114超声波测距传感器,数据传输接口为485(传感器的型号和厂家并不重要,只要选择接口,如485或IIC,并提供说明书,即可完成开发(本文还将详细介绍陌生的传感器模块的开发过程)。
USB转TTL模块主要用于调试。 如果没有也没关系。
软件设计
STM32微控制器和超声波测距传感器之间需要建立通信。 因为是485,所以主要任务是写USART的数据发送和接收。
查询手册获取控制超声波传感器的控制指令,每隔250ms向超声波测距传感器发送一条控制超声波测距传感器测距的指令。
验证接收到的距离值,确保数据安全。
解析接收到的距离值并将其转换为米和厘米的组合。
注:当今常用的传感器通常是高度集成的。 我们实际上是利用传感器提供的接口来发送和接收数据并处理数据。 无非就是用什么通讯方式而已。
开发流程阅读手册
当我们使用一个不熟悉的传感器时,首先需要看一下它的功能概要。
2、然后我们需要检查传感器的电气性能参数。 例如,如果我们使用超声波测距传感器,我们可以看它的电源电压、束脚和工作功率。
3、使用传感器,必须了解传感器各个引脚的具体功能。 如正极、负极和485通讯引脚。
可以看到,图中给出了485-A、485-B的具体颜色以及正负极,我们在使用时可以连接相应的电线。
4、使用不熟悉的传感器时最关键的是看一下传感器的工作流程。
从上面的手册我们知道,使用这款超声波测距传感器的主要流程是:首先配置相关的波特率、串口地址等基本信息->向超声波测距传感器发送测距命令->接收超声波测距命令。
5、从说明书的工作流程我们知道,我们需要知道超声波的地址,然后开始查看说明书。
6、我们还需要知道检测命令是什么,然后还是需要查看手册。
7、如果我们要使用多个超声波传感器,一般需要在传感器发回给我们的信息中有相应的标识符。 传感器中的串口地址有此作用。 那么如何让它发回来,我们还是要检查一下。 手册已获得。
我们了解了如何配置此通信协议。
8、在手册的底部,我们看到了他关于如何快速上手的使用建议,这往往可以让我们的开发更快。
配置和测试传感器设置
注:每个传感器的配置过程和测试过程都不同。 这里我们仅以本次使用的超声波测距传感器为例来介绍一下通常的流程。 读者在开发时,仍应参考所使用的传感器手册。 您可以只粗略地浏览此部分,而无需深入了解细节。
首先我们使用USB转TTL模块,将485-A和485-B分别连接到超声波传感器的A和B,并将超声波测距传感器的正负极连接到电源上并开机。
使用传感器手册中给出的调试软件,根据手册中给出的串口信息进行设置。
连接成功后,我们可以向传感器发送控制指令,测试是否可以正常使用。
3.我们需要修改波特率,这里设置为9600。
修改波特率后,我们用新设置的波特率重新连接。
4.我们来修改一下地址,这里设置为ea。
5、最后我们修改通讯协议,选择我们在手册中找到的通讯格式对应的命令,然后进行设置。
6、最后一步是发送命令来测试是否符合我们的要求。
我们看到测试结果完全符合我们的预期,那么我们就可以继续进行MCU软件开发了。
软件开发
为了增强可读性,我们经常需要使用宏来定义一些数据,以增加代码的可读性。 我们可以宏定义传感器手册中使用的指令。
2.我们要开发MCU和超声波测距传感器之间的通信。 硬件方面,我们只需要连接485的A、B即可。下面主要讲一下软件的编写。 首先我们需要初始化串口。 相信大家都已经看过很多次相关的流程了。
然后写入串口发送。
最后编写串口接收函数,这里使用中断接收。
3、我们编写一个函数,向超声波发送相关指令,控制超声波执行相应的任务。
写这个函数的主要目的是将我们需要发送的指令放在一个数组中,然后调用串口发送函数进行发送。
这里我们也可以很明显的发现宏定义的好处,大大增强了这里的可读性。
4.当我们使用传感器时,最重要的当然是我们想要从传感器获得的数据。 我们一般需要编写一个函数来处理我们接收到的传感器数据,该函数也起到了数据处理的作用。
我们首先取出环形队列中的四个字节的数据,放入一个数组中。 然后我们进行数据验证。 验证方法可以在手册中找到。 当数据验证正确后,我们将超声波发送的数据中代表距离的数据放在一个全局变量中。 这样做的好处是,我们在任何函数中使用它都很方便。 至此,我们的主要需求其实已经满足了,项目的主体已经完成了。
5.最后一步是使用我们编写的程序。 因为每个人的需求不一样,这里就不放具体代码了。 但写入过程是:循环发送control_ultrasonic(Left_Address_cmd, Probe2_cmd); 和 control_ultrasonic(Right_Address_cmd, Probe2_cmd); 这样超声波传感器总是将测量的距离发送给MCU -> 调用processing_distance_data函数处理接收到的数据 -> 我们要使用这个数据时,直接读取Ultrasonic_distance全局变量数组来使用距离数据。
总结
上面已经详细描述了嵌入式软件工程师和微控制器工程师使用不熟悉的传感器的过程。 具体流程是先仔细阅读技术手册或使用说明书,然后使用配套软件或其他第三方软件设置所需的配置信息并进行一般的通信测试,然后编写程序,最后进行整体测试。 可以说,几乎所有的传感器都用到了这些步骤中。 你可以尝试一下。
跟进