资讯详情

基于STM32F4FreeRTOS的超声波测距仪的设计与制作

一 硬件电路的设计

手持式超声波测距仪有四个模块:STM32F407VET6主控板,HC-SR05超声波模块,JY61姿态传感器和0.96寸IIC通信的OlED显示屏。 

STM32F407VET6 RAM为192K,FLASH为512K,内核为ARM32位的Cortex-M4CPU最高168MHz工作频率。

HC-SR05超声波模块Trig引脚是发射引脚,至少给10us555定时器生成40个高电平信号KHZ脉冲信号添加到超声波探头的引脚上,使内部压电晶片产生共振,向外发射超声波。当物体反射回来时,晶体管和操作放大器LM324构成放大电路,接收信号放大后驱动继电器。Echo通过处理时间,可以产生一定时间的高电平。原理图如下:

JY61姿态传感器采用高精度陀螺加速度计MPU通过处理器读取6050MPU6050 测量数据,然后通过串口输出。内部电压稳定电路可与3兼容.3V/5V配合动态卡尔曼滤波算法,系统模块内集成了当前的姿态,可以在动态环境下准确输出模块。将模块发送到单片机的每帧数据分为加速度包、角速度包和角度包三个数据包。波特率115200 时每隔10ms 输出1 帧数据。数据是按照16 进制方式发送的不是ASCII 码。每个数据分为低字节和高字节,两者组合成符号short 类型数据。

本次使用的OLED通信协议为IIC通信,I2C协议规定,总线上数据的传输必须以一个起始信号为起始条件,以一个结束信号为停止条件。设备在SCL在线生成每个时钟脉冲的过程中SDA在线传输数据位,当字节按数据位从高到低的顺序传输时,然后从设备降低SDA线,回传到主设备的响应位置, 这时,我认为一个字节真的被传输了。I2C总线上的每个设备都对应着一个唯一的地址。主设备之间的数据传输是基于地址,即主设备应在传输有效数据之前指定设备的地址。地址指定的过程与数据传输过程相同。

二 软件设计

位于软件设计FreeRTOS在操作系统框架下完成,使用ST官方提供的HAL库函数,整个系统有四个任务,即系统运行状态异常检测任务、超声波测距任务、倾角检测任务和OLED下面介绍了整个系统设计的重要函数和四个任务的具体细节。

2.1重要函数

2.1.1 delay_us函数 因为操作系统的时钟是基于Systick滴答定时器的节拍控制,HAL不提供库函数us使用软件模拟等级延迟时IIC,微秒级延迟发射超声波。delay_us函数是基于TIM4的计数产生,设置计数一次的时间为1us,初始化后,当计时开始时,将首先TIM4的CNT寄存器的值清零,当CNT跳出函数大于计时时间。如下:

2.1.2 printf函数 printf它不仅是嵌入式领域的通信接口,也是一种调试工具,不亚于硬件仿真。当出现问题时,我们可以通过输出相应的值来观察变量,或者检查某个函数是否执行。它可以直观地让我们检查系统的运行状态。但是串口不能在任何地方使用。当某个函数对时间敏感时,不能添加print编码器产生的外部中段等函数。

2.2系统运行状态异常检测任务

当系统正常工作时,小灯D2会按照1Hz闪烁频率,这里最小化小灯的优先级,当其他任务卡住时,小灯不会闪烁,可以指示系统的运行状态,结合小灯和串口输出可以很容易地找到问题。小灯的引脚是连接的PA6,当PA六是低电平时,小灯亮着。

2.3超声波测距任务

超声波测距有三个函数,即超声波引脚的初始化,TIM3初始化和距离测量,初始化后,然后在循环中读取距离测量函数。当返回值正常时,将其赋值给全局变量Distance。首先在距离测量函数中拉高Trig电平一段时间,然后打开计时器等待Echo如果等待一段时间不返回高电平,函数返回异常。当有高电平返回时,计时器CNT当计时时间超出范围时,返回异常,否则计算获得的数字可以获得超声波测量的距离。其中公式为Distance=us*17/1000。

2.四倾角检测任务

首先,将波特率设置为115200和JY61波特率相同,字长为8位,一个停止位,没有奇偶校验。由于串口读取是在操作系统下完成的,因此无需设置串口中断,设置中断会影响操作系统任务之间的逻辑。当数据等于0时,数据等于0时,首先读取串口接收到的数据x55(即等于包头)再次判断下一个数据是否为0x53(即角度包),否则继续判断下一个数据是否为包头而不释放cpu进入阻塞状态,最多判断十次。当接收到的数据是角度包时,继续接受以下八个数据,即pitch,yall,roll和tempperture。每个值由两个八位的二进制组成,共同构成符号short类型的数。测距仪的当前角度可以通过公式准确读取,从而调整合适的角度。

2.5 OLED显示任务

使用此测距仪OLED通信方式为IIC通信,程序使用软件模拟IIC通过发送从机地址和命令,可以设置代码OLED通过发送数据位,显示模式可以在OLED不同的值显示在上面。显示的页面分为四部分,顶部有两条水平线;然后测量距离值,单位为cm;下面显示X轴的倾斜角度;最后显示Y轴的倾斜角度。

标签: jy2继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台