
![]() STM32超声波跟随小车 本期带来的是基于STM32F1的超声波跟随小车的简介。 使用单发送双接收的超声波模块来判断发射端的角度和位置,以此来实现跟随。 01 基本原理 ![]() 在小车的两端各安装一个超声波(非收发一体),人手持一个超声波模块。这样左侧与右侧离人的距离就构成了一个三角形。 当小车正对着人时,装在小车上的2个超声波模块,距离A=B。 当人左拐时,A必定小于B,同理当人右拐时,A大于B。 当人向前走时,A和B的距离必定大于设定距离。我们只需要控制好这几个距离即可。 02 ![]() ![]() 具体制作方式 自动跟随小车硬件模块包括控制器模块、无线收发模块、超声波接收模块、电机及电机驱动模块、电源模块组成。 发送超声波模块只需要上电即可。发送超声波模块上电后,发送超声波模块上的 LED 会快闪,此时证明,发送超声波模块已经在正常工作了. 接收超声波模块:当发送超声波模块通上电之后。需要将发送超声波模块和接收超声波模块对准,此时接收超声波模块需上的 LED会快闪。此时证明接收超声波模块已经接收到发送超声波模块发射的超声波。此时接收超声波模块上接收到的数据即是发送和接收超声波的距离数据。值得注意的是,2 个超声波发射头需要对准,才会通信成功,发送超声波模块只需上电即可工作(发送上的LED 闪烁),此时只是证明了发送超声波模块已经成功发射出超声波,但并不能证明接收超声波模块会接收到数据,只有接收到发送超声波模块的声波后,接收超声波模块上的 LED 闪烁后,才能证明这两者已经通信成功。接收超声波模块才会有距离数据输出。 当接收超声波已经接收到发送超声波的数据后,接收超声波模块上的LED 灯会快速闪烁,会通过串口以 50Hz 的频率发送出距离数据。数据格式是:0XA5+两个字节数据(16 进制),距离的单位是 mm, 例如:返回数据是:A5 00 C8,意思就是:200mm。数据的含义是什么呢?0XA5 是帧头,另外 2 个是数据存储字节。A5 00 C8帧头 高八位数据存储字节 低八位数据存储字节如何解算:很简单,把 2 个字节数据移位然后逻辑运算即可。 4 a8 x! l9 K) _ 如下:distance_left = dat_left[1]<<8 |dat_left[2] 关于驱动,只需配置两路PWM和两个IO或四路PWM即可。 + p5 m5 u+ K5 N! `. ? 03 部分代码 初始化和电机驱动部分较简单,不单独展示,本代码只写出基本的跟随,建议读者使用时加入PID闭环以及滤波等。 注意:串口需配置为收发模式 ![]() ![]() ![]() ![]() 文章出处: QUST ROBOT |