发作品签到
专业版

适用于比赛的一种通用小车控制器

工程标签

7.5k
0
0
11

简介

这是一款为了小车比赛设计的一款通用小车控制器,板载多种外设,对外有多种接口,体积小巧,可以实现控制多种常见结构的小车,并且兼容树莓派控制(螺丝孔M3),板载高精度惯导,以及减震措施,非常适合ROS控制

简介:这是一款为了小车比赛设计的一款通用小车控制器,板载多种外设,对外有多种接口,体积小巧,可以实现控制多种常见结构的小车,并且兼容树莓派控制(螺丝孔M3),板载高精度惯导,以及减震措施,非常适合ROS控制
复刻成本:70

开源协议

GPL 3.0

创建时间:2025-02-12 09:00:47更新时间:2025-03-17 02:40:29

描述

视频链接:

基于PID+前馈控制算法的平衡车效果展示(v4版本)https://www.bilibili.com/video/BV17T1MYgE42
基于轻量级菜单框架sLittleMenu的人机交互效果展示https://www.bilibili.com/video/BV1cv9cY7EPh

介绍

这是一款为了小车比赛设计的一款通用小车控制器,板载多种外设,对外有多种接口,体积小巧,可以实现控制多种常见结构的小车. 兼容树莓派控制(螺丝孔M3),板载高精度惯导,以及减震措施,非常适合ROS控制.

本控制器为四层板设计,基于STM32F405RGT6单片机,板载多种外设,对外有多种接口,体积小巧仅91*56mm,具有1MB的FLASH空间以及128+64KB的SRAM,180MHz运行频率,足够市面上常见的控制算法(PID,LQR,TinyMPC)运行.

板载FeRAM存储器,具有8KB的空间,可以保存一些掉电不丢失的数据.并且读写速度非常快,不需要等待,非常适合控制器的应用场景.

惯导部分使用高精度的惯导芯片独立成板,隔绝了干扰.

人机交互具有4个按键,一个Type-C串口,SWD调试接口,一个0.96寸OLED屏幕,结合我写的轻量级菜单框架sLittleMenu,非常适合需要调参的应用.对小白用户非常友好,创建一个菜单非常简单:

image.png

image.png

image.png

image.png

image.png

技术背景和设计目的

  1. 减少冗余工作:目前市面上的智能小车种类繁多,功能也多种多样,这些产品都需要一个控制器来控制它们的功能和行为。由于每辆小车的应用场景不同、面向人群不同,所以通常的解决方案是针对每一种情况来专门的设计研发一款“专一”的小车控制器。但是在此过程中,如果小车结构、功能大体上相似,以上的设计模式将会浪费较多的时间用来做重复的事情。

  2. 惯导精度差:市面上惯导通常采用基于MPU6050+HMC5883L的IMU模块+排针连接的设计,这种组合,性能差,精确度低,稳定性不好。

  3. 拓展接口不好用:通常来说,如果想要兼容更多的功能,那么控制器接口的”抽象层次“将会越高,体现在PCB设计上,就是会有很多”通用的”接口,例如I2C接口、GPIO口引出等。这些通用的接口确实可以适配更多的场景,但是会降低二次开发人员的开发时间。而接口的抽象层次越低,那么接口能适配的外置传感器、模块的数量就越少,同样减少了应用场景。此外,此控制器安装孔位可直接兼容市面上的树莓派孔位,提高了通用性。

设计方案

​ 针对学生学习、智能小车类比赛、快速原型开发、开发板场景,我设计了一款基于STM32F405RGT6的通用的小车控制器,采用四层板设计,来专门适配这一大类的控制场景进行控制,提升二次开发人员的开发效率。

​ 针对惯导问题,此款控制器板载集成了高精度的惯性导航器件ICM45686+LIS3MDLTR,可以用在需要高精度室内无GPS环境的定位,与上层SLAM导航配合可显著提升导航精度。惯导器件采用分体式设计+FPC软排线连接,保证系统在行驶过程中对电机产生的高频噪声以及外界扰动的敏感性下降,提升系统稳定性和抗噪声性能。

​ 针对接口问题,我设计的这款控制器,经过多次的版本更新以及技术迭代,对面向的人群而言,板载接口做到了既通用也方便使用的目的。

总体概览

本控制器从v1~v5.2 历经7代设计.在不断的迭代中,得到了最优的布局和硬件设计以及人机交互方式,非常适合电赛等小车类竞赛场景,也可作为学习用途或者算法验证等用途,快速搭建小车硬件环境.

结构框图:
1736433673240.png

供电方案:
1736652103090.png

技术创新点

如何实现通用

本控制器为四层板设计,基于STM32F405RGT6单片机,板载多种外设,对外有多种接口,体积小巧仅91*56mm,可以实现对市面上的多种常见的不同类型动力学的小车控制,具体说明(举出常用的结构例子,对于其他的结构如果接口够用也可以实现控制):

  1. 前、后阿克曼结构:阿克曼结构小车的底盘通常由控制转向的舵机和提供动力的后轮组成,转向舵机和动力轮以不同方式组合可以得到这些不同的结构,按下面的连接方式即可驱动小车并控制:
    1. 双前(后)轮转向+无差速双后轮
      1. 用控制器的舵机接口连接转向舵机
      2. 用控制器的双路电机驱动中的一路连接后轮提供动力的电机,如有需要可以连接对应的转速编码器接口,即可读取电机转速信息。
    2. 双前(后)轮转向+差速双后轮
      1. 用控制器的舵机接口连接转向舵机
      2. 用控制器的双路电机驱动中的L路连接左后电机,R路连接右后电机(电子差速器),如有需要可以连接L、R路的转速编码器接口,即可读取电机转速信息。
  2. 双轮平衡结构:对于两轮的自平衡小车,不需要转向舵机,依靠两个轮胎的差速即可实现转向,底盘只有两个轮胎,因此是自不稳定系统,需要程序算法控制,算法所需要的传感器数据信息来源硬件均已实现,按下面的连接方式即可驱动小车并控制:
    1. 用控制器的双路电机驱动中的L路连接左电机,R路连接右电机,如有需要可以连接L、R路的转速编码器接口,即可读取电机转速信息。
  3. 四轮差速转向结构:对于四轮的差速转向的结构,有四个轮胎(电机)但是同侧的两个电机的转速应该相同,因此可以使用一路的电机接口来驱动。虽然这种结构会造成较大轮胎的摩擦损耗,但是由于机械结构简单,因此在实验室、比赛场景下,依然有较多应用。本控制器也支持这种模式,不过需要两根分线器,把一路的电机信号分成两路驱动同侧的电机,按下面的连接方式即可驱动小车并控制:
    1. 把分线器1的一端连接控制器的L路电机驱动接口,分出来的另一端分别连接左上、左下电机
    2. 把分线器1的一端连接控制器的R路电机驱动接口,分出来的另一端分别连接右上、右下电机
  4. 三轮差速转向结构:对于这种结构,通常的配置是前轮为万向轮或者牛眼轮,后轮为两路电机驱动实现差速转向,按下面的连接方式即可驱动小车并控制:
    1. 用控制器的双路电机驱动中的L路连接左电机,R路连接右电机,如有需要可以连接L、R路的转速编码器接口,即可读取电机转速信息。

高拓展性接口

同时,控制器配备了各种接口,以适应多种常见工况:

  1. XH2.54对上层的串口,可以实现上位机控制,例如与上层ROS系统的数据传输,也可作为拓展串口,连接各种传感器和模块。1737457883218.png
  2. 板载小型GH1.25接口的串口,可以连接市面上常见的惯导模块,例如维特智能的JY系列惯性导航模块,也可以连接GPS模块,实现室外定位功能。1737457895501.png
  3. 拓展I2C接口,可以同时连接多路I2C传感器,实现数据采集的功能。1737457904033.png
  4. 拓展SPI接口,可以实现一个SPI传感器的连接,还可以连接寻迹模块或者PS2遥控手柄的接收器。1737457917044.png
  5. 拓展NTC接口,可以作为电池的NTC测温等场合的热敏电阻测温功能。1737457927225.png
  6. 拓展AD/DA接口,可以作为ADC实现读取模拟量传感器的信号或者作为DAC发生波形。1737457936718.png
  7. 功率LED灯接口,对于需要声光报警的场合可以控制一个大功率的LED灯,或者作为摄像头照明,实现PWM调光。1737457946885.png

控制器也有丰富的板载功能,来实现控制器通用的一些功能:

  1. 基于2xDRV8870的双路峰值3.6A的直流电机驱动:相较于市面上采用TB6612的传统有刷电机驱动芯片,基于DRV8870的方案具有多种保护:过流、过温保护,提高了系统的可靠性和驱动能力。
    1737457960644.png
  2. 电池电压电流采样+电子保险丝:采用了一个挂载在I2C总线上的电流电压检测芯片+电子保险丝芯片,省去了传统的ADC+分压电阻的模式+熔断式保险丝,简化了电路设计,提高了系统可靠性。1737457970469.png
  3. 板载5V供电,也可用于对外输出
    1737457993190.png
  4. 系统供电3.3V
    1737457984553.png
  5. 上层Linux主板供电以及USB外设:这里的Linux供电可以采用板载BUCK芯片供电,对于大功率而言可以外贴专用的降压模块实现5A的供电电流。1737457993190.png
  6. Type-C调试串口,相比于传统的MiniUSB/MicroUSB的连接方式,这里调试串口与电脑的连接采用Type-C的方式。1737458005020.png
  7. 基于铁电存储器的数据存储:相比于市面上采用传统EEPROM的方式,这里采用了FeRAM铁电存储器,这种存储器不需要任何等待,保存、读取速度非常快。
    1737458012596.png
  8. 人机交互部分,包含一个有源蜂鸣器和2个LED灯以及四个按键,一个SPI接口的OLED屏。相比较市面上的采用I2C进行MCU与OLED屏幕通信的模式,这里采用了SPI通信,这是为了降低系统刷新屏幕的时间成本,让系统能够把时间用在算法和数据处理上。
    1737458037226.png
  9. 单片机最小系统1737458025979.png

惯性导航

​ 控制器的惯性导航部分,采用市面上性价比很高,技术先进的ICM45686六轴IMU模块配合LIS3MDLTR磁力计芯片。得益于ICM45686芯片的优异性能,惯导数据的零偏、温度稳定性、非线性误差、非正交误差、尺度因子误差都是市面上基于MPU6050芯片的无可比拟的。

​ 在物理结构设计方面,惯导系统采用了IMU小板+EVA泡棉缓冲+FPC排线连接式设计,从物理上隔绝了部分高频噪声和来自控制器主板的热量传递,使得惯导系统的长时间漂移和零偏得到了部分提升。

​ 在数据通信方面,两个传感器都使用SPI与主板通信,并且配备中断与外部时钟连接口。相比于市面上使用I2C接口进行通信的方式,SPI的数据吞吐量更大(这里SPI最大可以达到10Mbit/s),使得MCU有更多时间去处理其他事务。引出了两个传感器的中断接口,软件可以配置为异步读取模式,当模块数据采集完成后立即进行读取事宜,然后把数据送到AHRS进行处理,这样可以尽可能的降低数据准备就绪到MCU读取的这个时间间隔,能获得延时更低的数据。并且MCU可以配置MCO 32.768KHz时钟输出,用于ICM45686的主时钟,这样可以使得模块的时钟稳定性从50000PPM提高到20PPM左右,可以提升陀螺仪的数据精确度。

​ 在工作原理方面,主控MCU可以通过SPI接口读取来自惯导模块的信息:三轴角速度、三轴加速度、三轴磁力计以及芯片温度数据。在AHRS里,通过Mahony互补滤波算法(为公知技术,不展开描述)结合观测器,或者EKF(拓展卡尔曼滤波)即可解算出控制器(小车)的姿态角度以及短时间内的速度信息,可用于ROS系统、平衡控制、室内导航、SLAM导航等多种用途。

1736651079918.png

1736651145627.png

惯导小板原理图和PCB:

1737459956482.png

1737459859776.png

1737459948614.png

调试困难

​ 市面上的小车控制器大多都存在调试困难的问题,本控制器具有多种调试设备、设备,方便新手调试。

  1. SWD调试接口
  2. 基于SPI接口的0.96寸OLED单色OLED屏
  3. 4个用户按键
  4. 一个有源蜂鸣器
  5. Type-C串口
  6. 一个LED灯

1736651361700.png

注意事项

  1. 关于v5.1和v5.2的区别如下:
    v5.1:有一路CAN总线接口,以及对应的PHY芯片和XH2.54 2PIN接口,无USB外设,对外5V 5A供电的Type-C口无通信功能
    v5.2 无CAN总线接口,对外5V 5A供电的Type-C口直连MCU的USB外设,可以传输数据.

  2. 惯导模块
    惯导模块焊接务必小心,请使用低温锡+钢网+加热台焊接或者回流焊,严格控制温度,温度一旦过高或者高温时间过长,ICM的性能将严重下降!表现为静态0偏很大,大于数据手册标注的0.3deg/s

image.png

image.png

image.png
惯导模块的ICM45686芯片也可以平替为ICM42688,只不过精度会没有那么好.
如果不需要磁力计LIS3MDLTR可以不焊接.

软件部分

此控制器软件部分非常完善,除去CAN和USB,所有驱动都已经编写完成,并经过检验.
有问题欢迎提交issue,或者与我交流讨论,一起学习,一起进步
QQ1583031618
已开源:https://github.com/JackTang543/sGCARCv5

image.png

2503016更新:
由于最近很多朋友单独加笔者好友,因此特地创建一个QQ群,欢迎大家感兴趣的加入,一起交流讨论,共同进步


Screenshot_20250316-133531.png

BySightseer. inHNIP9607 250227

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
6075f934957225997a4bea0f5749d572.mp4
137
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航