为了给大家些创作灵感,今天带来第九届立创电赛特等奖项目-《无线充电式手机遥控FOC轮足巡检机器人》案例分享!本文作者:瑞萨MCU杯第九届立创电子设计开源大赛选手@极电智翼Extreme Electric Wings,禁止商用,未经许可禁止转载。
本项目旨在开发一款集创新技术与实用功能于一体的无线充电式手机遥控轮足巡检机器人,适合居家、生产等场景,可以进行高效、灵活且自主的环境巡检工作。项目设计包含机械结构、软件控制、通信技术及无线充电,综合程度较高同时也十分有趣。
作为开源项目,我们精心整理了复刻本项目需要的所有附件资料,并在本文中介绍了系统架构、电路,机械结构、算法、程序框架、调试经验等,并在一些关键技术点上也有重点原理性的说明,期望和平台上的所有电子爱好者一起分享开源的乐趣,同时也邀请大家提出宝贵的建议来不断完善!
1.1 项目核心功能特点
机器人搭载”盛思锐 Sensirion“高精度环境监测传感器,能够实时采集周围温度、湿度等环境数据(具体传感器配置可根据需求定制,空气质量、光照强度等)。监测数据通过蓝牙实时传输至手机APP,用户可随时查看并分析环境变化趋势。
采用独特的轮足设计,结合轮式与足式机器人的优点,既能在平坦地面快速移动,又能跨越小障碍或楼梯,实现复杂地形的灵活适应。轮足使用永磁同步电机FOC控制,确保机器人在行走过程中的稳定性和平衡性,同时减少能耗,提高续航能力。
配套开发的安卓手机APP,用户可通过蓝牙连接机器人,实现远程无线操控。APP界面友好,操作简便,能实时反馈环境情况,进行运动控制(前进、后退、转向、停止等)以及速度调节。用户可直接通过APP控制机器人运动,满足不同场景下的灵活需求。
机器人底部集成无线充电接收模块,只需放置于设计的无线充电底座上,即可自动开始充电,无需人工插拔电源线,极大地方便了机器人的维护和充电操作。无线充电功能提高了机器人的安全性和便捷性,避免了传统有线充电可能带来的安全隐患和不便。
1.2 应用场景
1.3 项目技术优势与亮点
项目技术亮点描述:基于低成本单片机的复杂项目工程实现
本项目依托于STM32F103C8T6这款高性价比、资源丰富的入门级微控制器,成功实现了集无线充电、双轮足运动控制、蓝牙通信及环境监测于一体的复杂巡检机器人系统。
a. 高性能与低功耗:STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,具有出色的计算能力和能效比,能够在低功耗下完成复杂的运算任务,非常适合于需要长时间运行且对功耗有严格要求的巡检机器人项目。
b. 丰富的外设资源:该微控制器集成了多种外设接口,包括多个定时器、ADC(模数转换器)、DAC(数模转换器)、SPI、I2C、USART等,为项目中的无线充电管理、电机驱动、蓝牙通信及环境监测传感器接入提供了强有力的支持。
易用的开发环境:STM32F103C8T6支持多种开发工具链和IDE(如Keil MDK、IAR EWARM、STM32CubeIDE等),使得项目开发更加高效便捷。
a. 双轮足运动控制系统:
创新地使用了低成本单片机STM32F103C8T6,在单颗单片机芯片上完成了轮足机器人驱动。其资源被充分利用,实现了两个轮子的SVWPM的FOC控制以及轮足机器人的姿态三环控制。
b. 无线充电管理:
依托APP即可控制无线充电开关,硬件级设计实现充电状态的判断和管理,确保充电过程的安全性和高效性。
c. 蓝牙通信与APP开发:
利用STM32F103C8T6的USART蓝牙模块(如HC-05、HC-06等)实现与安卓手机的蓝牙通信。
开发配套的安卓手机APP,通过蓝牙接收来自机器人的环境监测数据,并发送控制指令给机器人。
d. 环境监测系统:
搭载”盛思锐“高精度环境监测传感器,通过STM32F103C8T6的ADC或I2C/SPI接口读取传感器数据。
对数据进行处理和分析,通过蓝牙或其他方式将监测结果实时传输给APP显示。
项目首次公开,原创设计,未参加其他比赛,非毕业/课程设计。
GPL3.0开源协议。项目核心功能全部开源。
4.1 系统整体方案
本作品是基于意法半导体的STM32F103C8T6微控制器作为主控制器。采用了三片STM32F103C8T6微控制器,分别完成轮足机器人控制,轮足机器人驱动,无线电能传输控制。其中通过STM32F103C8T6的USART实现轮足机器人控制和实时环境监测两个微控制器控制的统一,下面称为控制板。通过STM32F103C8T6的USART和蓝牙模块(如HC-05、HC-06等)实现与安卓手机的蓝牙通信,通过开发配套的安卓手机APP,通过蓝牙接收来自机器人的环境监测数据,并发送控制指令给机器人,实现机器人控制、无线充电、实时环境监测的功能。控制图为下:
除了图中的充电板、控制板和驱动板,还有机身结构板和编码器板一共5种PCB,全部由“嘉立创EDA(专业版)”绘制。下节分别介绍的硬件部分。
4.2 充电板硬件电路
电源输入及保护:
保险丝保证系统稳定性防止过流。
STM32单片机最小系统:
主要负责蓝牙连接和PWM输出。
辅助电源部分:
LDO给5v和3.3v,给蓝牙模块与单片机供电。
全桥逆变器:
无线电能传输逆变器,开关管选用英飞凌IRF540,驱动芯片为TI的UCC27211,输出交流。
LCC线圈补偿:
无线电能传输补偿拓扑,这个地方需要特殊设计Lf1=4.8μ,Cf1=258nF,C1=258nF,具体的参数设计放在下节。
蓝牙:
采用通用的蓝牙模块即可,HC-05/06等,性价比高,也可考虑将BC417芯片直接画板子上。
4.3 控制板硬件电路
全桥整流加S补偿:
采用二极管全桥整流,整流效率高,二极管应力低,无线电能传输补偿拓扑采用S补偿,电容参数为124nF。
BUCK降压电路:
采用TI的TPS54302芯片,为4.5V 至 28V 输入电压、3A 输出电流、EMI 友好型同步降压转换器。可保证在全功率范围内电池充电电压的稳定。
电池充电电路:
采用南京拓微的充电芯片TP5100,为2A开关降压 8.4V/4.2V锂电池充电器芯片。
TP5100是一款开关降压型双节8.4V/单节4.2V锂电池充电管理芯片。其QFN16超小型封装与简单的外围电路,使得TP5100非常适用于便携式设备的大电流充电管理应用。同时,TP5100内置输入过流、欠压保护、芯片过温保护、短路保护、电池温度监控。
TP5100具有5V-12V输入电压,对电池充电分为涓流预充、恒流、恒压三个阶段,涓流预充电电流、恒流充电电流都通过外部电阻调整,最大充电电流达2A。TP5100采用频率400kHz的开关工作模式使它可以使用较小的外围器件,并在大电流充电中仍保持较小的发热量。TP5100内置功率PMOS、防倒灌电路,所以无需防倒灌肖特基二极管等外围保护。
充电电流设置为1A。
单片机最小系统:
主要负责蓝牙连接,温湿度传感器信息采集和电量监测。
电压采样电路:
采用电阻分压,成本低,方便调节,ADC采样加稳压管保护。
接口:
分别为电池接口,串口,烧录口,温湿度传感器,蓝牙模块接口。
辅助电源部分:
ldo给5v和3.3v,给蓝牙模块与单片机供电。
电源保护:
稳压二极管保护单片机。
温湿度传感器:
采用"盛思锐Sensirion"的sht30,链接:SHT30-DIS-B-±2%数字温湿度传感器(10-90%RH)。外围电路参数配置也很简单,直接使用了模块,性价比高。
蓝牙:
采用通用的蓝牙模块即可,HC-05/06等,性价比高,也可考虑将BC417芯片直接画板子上
4.4 驱动板硬件电路
单片机最小系统:
主要负责连接控制板,采集编码器数据,采集电流控制两个电机,控制两个舵机。
电流采样:
采集电流,检测电机相电流。
电流基准:
给定电流基准。
电机驱动:
集成了三相全桥电路的驱动芯片,避免了电机分立驱动电路占据PCB的空间,并且电流输出能力也完美满足。
陀螺仪:
陀螺仪电路,经典的MPU6050,模块通常使用连接不稳定。驱动板集成了陀螺仪电路,更加稳定,也更加节省空间。
接口:
调试、电机、编码器接口,接口采用sh1.0系列4p。
电池保护:
保护电池,避免过充、过放。
BUCK:
将电池降压至5V。
BOOST:
给电机、驱动器供电。
3.3V电源:
给单片机、及其外设芯片供电。
编码器:
采集电机转子位置,用于FOC控制。
4.5 无线电能传输原理及参数设计
无线电能传输系统拓扑如下:
其中M表示互感,采用原副边相同线圈,感值9.7u左右,间距5mm,耦合系数约为0.6,因此设计Lf1=4.8μ,则Cf1=258nF,C1=258nF,C2=124nF
4.6 机器人机械结构
a. 机械结构尺寸设计
在轮足机器人的四杆机构中,具有四个铰接点,形成一个闭合的链条结构。如图所示,该机构的简化结构中,L4为与机身刚性连接的PCB,L1为大臂,L3为传动筋,L0和L2为一体的小臂。每个铰接点允许相邻杆之间进行相对旋转,从而实现灵活的运动。该结构的关键特性在于通过控制其中一个铰接点(如图中的L1和L4),可以影响整个机构的状态和位置,使机器人在行走时能够调节高度、倾斜角度以及转向能力。将这种四杆机构应用于轮足机器人,因为它有效提升了机器人的稳定性和灵活性,尤其是在应对复杂地形时。此外,四杆机构的设计相对简单,制造和维护成本较低,这也是其在机器人领域被广泛采用的原因之一。
在长度选择方面,需要考虑机体的稳定性。希望在铰链旋转时,机体的重心能够经过车轮轴,因此近似要求 L0 = L1。同时,L4 应大于 L2,以减弱角度 ∠φ 变化对 L4 角度的影响,从而在机身高度变化时,降低位于机身的陀螺仪的角度变化,提高控制的稳定性。此外,各个长度还需综合考虑机械结构的美观性以及实际运动中的干涉问题。最终选择的尺寸为:
机械结构示意图
名称 |
长度/mm |
L0 |
45 |
L1 |
45 |
L2 |
13 |
L3 |
45 |
L4 |
26 |
b. 轮电机选择
轮子使用3205B三相无刷电机,外转子设计,可以实现更高的转矩输出。3205B电机的详细参数如下:
Kv:260 RPM/V,电机每伏特施加的电压可产生260转/分钟的转速。
槽数 (n):12槽,定子绕组中的槽的数量。
极数 (p):14极,电机转子上的极对数量。
相电阻:约6.7欧姆,影响到电机在运行时的电流和热量产生。
电机采用FOC控制,这是一种高效的电机控制技术,适用于永磁同步电机(PMSM),具备良好的动态响应,特别适合需要精确控制的应用场景。FOC通过将三相电流(UVW)变换为两相坐标系(d-q轴)来实现速度和位置控制。电机自带径向磁铁,和磁编码器搭配使用,以获取实时转子位置,确保控制系统的准确性。
c. 关节舵机选择
舵机使用MG90S,金属齿轮版本,用来驱动关节L1和L4运动。MG90S是一款适合驱动关节运动的常用舵机,其主要优势在于金属齿轮提供了更高的耐用性和强度,适合高负载和频繁运动的应用。MG90S舵机体积小巧,易于集成到各种项目中,广泛应用于机械手臂和仿生机器人等领域。其具体的参数如下MG90S参数
重量 |
13.6G |
尺寸 |
22.8*12.2*28.5MM |
扭力 |
2.0KG(4.8V) |
速度 |
0.11S(4.8V) |
角度 |
180°C |
温度 |
0°-55° |
死区设定 |
5us |
插头类型 |
JR、FUTABA通用 |
产品结构材质: |
金属齿、空心杯电机、双滚珠轴承 |
MG90S舵机
MG90S连接示意图
APP基于MIT App Inventor平台开发,地址链接:appinventor.mit.edu
MIT App Inventor是麻省理工学院(MIT)计算机科学和人工智能实验室推出的一款图形化编程工具。平台提供了一组强大的组件和模块,用户可以利用这些组件构建丰富的交互式用户界面,并添加各种功能和特性。开发的App可以运行在手机、平板等Android或iOS设备上,具有广泛的兼容性
a. 软件工作流程
如图为设计的蓝牙APP,其工作流程:
下图为APP的设计流程图:
b. 软件部分设计内容
完成了以下工作:
1. 设计直观易用的主界面和子界面。
2. 在界面上设置清晰的按钮和提示信息,引导用户进行操作。
3. 根据用户操作生成相应的控制指令。
4. 将指令通过蓝牙发送给轮足机器人,并接收执行结果。
5. 在界面上显示控制结果和机器人状态。
6. 支持从状态界面跳转到控制界面,再从控制界面返回主界面的流畅操作。
7. 采用蓝牙通信模块,实现与轮足机器人的蓝牙连接、断开、数据收发功能。
8. 实时检测蓝牙连接状态,并在界面上显示。
9. 数据处理与显示模块接收来自轮足机器人的数据(如电量、温度、湿度等),并进行处理。
10. 在界面上以数字等形式实时显示这些数据。
11. 支持手动和自动更新数据功能。
需要完成蓝牙通信,PWM控制功能。
在STM32的开发环境中,引入相关的库文件,以便能够使用蓝牙通信功能。初始化串口,配置USART引脚和相关参数,如波特率、数据位、停止位和校验位等。通常,蓝牙模块的默认波特率为9600,但可以根据需要调整为更高的波特率,如115200。
启用STM32的定时器(Timer)模块,通过定时器来生成PWM信号。配置定时器TIM1的相关参数,有预分频器、自动重载值和计数模式等,以控制PWM信号的频率和占空比。选择142.857kHz和48%占空比,设置死区。将定时器的输出连接到PWM模式,并启用相应的PWM通道。
通过接收APP发送的指令,控制驱动信号启动和关断,以控制无线充电的开启和关闭。
单片机资源图:
代码框架:
下面为主要配置:
配置时钟:
配置定时器time1:
PWM配置,频率占空比:
设置死区:
UART1配置,波特率9600:
主函数先初始化即可通过接收数据控制无线充电是否开启:
5.3 控制板软件程序
需要完成蓝牙通信,温湿度传感器控制,电量检测,控制驱动板。
在STM32微控制器上集成蓝牙通信、通过I2C接口控制温湿度传感器、利用ADC接口检测电量,以及借助USART接口控制驱动板的功能,需要一系列连贯的配置步骤。
首先,针对蓝牙通信,需要选择合适的USART(或UART)端口,并配置其引脚为USART功能,设置与蓝牙模块相匹配的波特率、数据位、停止位和校验位。
对于温湿度传感器的控制,启用STM32的I2C接口,配置SCL和SDA引脚为I2C功能,并设置合适的I2C时钟速度。在I2C初始化完成后,通过发送启动信号和传感器地址来初始化传感器,并可能发送特定的初始化命令。之后,编写函数来定期从传感器读取温湿度数据,以供后续处理。
在电量检测方面,利用STM32的ADC接口,选择适当的ADC通道,并配置ADC的时钟源、预分频器、分辨率和采样时间。ADC初始化完成后,可以编写函数来启动ADC转换,并在转换完成后读取转换结果。根据电路设计,这个ADC值可以转换为电压值或电量百分比,用于监控系统的电量状态。
对于驱动板的控制,选择另一个USART端口进行配置,同样设置与驱动板相匹配的波特率、数据位、停止位和校验位。USART初始化完成后,可以编写函数通过USART发送控制命令给驱动板,并可选地接收驱动板的响应。这样,STM32就能够通过USART接口与驱动板进行通信,实现对其的控制。
在整个配置过程中,确保每个组件的初始化函数在主程序的合适位置被调用,并通过循环或中断服务程序来周期性地读取传感器数据、发送控制命令、处理蓝牙通信等。此外,为了增强系统的稳定性和可靠性,还考虑了错误处理机制,以便在出现异常情况时能够及时响应并采取相应的措施。
单片机资源图:
代码框架:
程序主要配置:
配置时钟:
配置ADC:
配置I2C:
UART1配置,波特率9600:
UART2配置,波特率115200:
sht3x.c中放置了传感器相关函数定义。
ADC采样封装函数:
温湿度传感数据接收封装函数:
主函数先初始化即可通过状态机接收蓝牙数据控制每个状态并发送至驱动板:
5.4 驱动板软件程序
驱动板负责轮足机器人的动作控制,并接受来自输入端的动作指令,以实现对机器人各个关节和电机的精确调节。
1、驱动板电机矢量控制
根据三相逆变电路开关状态,电路共有8种基本状态,如下图所示,对应的矢量为U0~7,其中六个非零电压矢量:
和两个零电压矢量:
以U4举例,此时的三相绕组的相电压为:
合成电压矢量图为:
得到矢量U4的幅值为:
类似地可以知道,六个基本矢量幅值也为UDC。
接下来是用8种基本状态合成任意方向的矢量。可以看到开关的不同状态实际上可以产生不同方向的磁场的,但是这些方向是离散的有限的。使用PWM技术,可以将这8种基本状态合成任意方向的矢量,是的磁场控制更加平滑。例如我们要合成一个位于扇区1(U4和U6)之间的一个矢量,利用U4和U6这两个基本状态,如图:
向量表示为:
利用正弦定理求解
最终得到:
整个周期T中,除T4、T6外,用没有效果的两个零矢量填充,两个零矢量的和是定值,具体的分配其实是任意的,仅仅为了对称(这样的好处是可以减小谐波),我们取:
总结一下:需要D4的U4,D6的U6,D0的U0,D7的U7。最后一步,我们将算的占空比转化为实际PWM的占空比。
A相在U4,U6,U7的时候都要为1,所以占空比为:
B相在U6,U7的时候都要为1,所以占空比为:
C相U7的时候要为1,所以占空比为:
以上就是在第一扇区求得的占空比,在其他扇区的过程类似。接下来还能得到具有一般性的公式:
当位于第二扇区时:角度θ变为θ+π/3,变为原来的需要θ-π/3。
当位于第n扇区时: 角度θ变为θ+(n-1)π/3,变为原来的需要θ-(n-1)π/3。
最终扇区起始矢量和结束矢量的占空比分别为:
然后根据所在扇区配置具体的DA、DB、DC。
同时还要关注能输入的最大Uref,在下图中,可以看出其范围是图中的六边形阴影区域,而在任意角度的可以表示最大控制电压为六边形的内接圆,最大的控制电压为:
这意味着在程序中,我们设定最大的控制电压不能超过0.866UDC。
2、驱动板机器人姿态控制三环原理
在软件部分,驱动板负责轮足机器人的动作控制,并接受来自输入端的动作指令,以实现对机器人各个关节和电机的精确调节。主控系统采用STM32F103单片机,具有强大的处理能力和灵活的外设配置,适合于实时控制任务。
连接了两个I2C编码器,这些编码器用于实时反馈电机转子的位置,提供必要的位置控制信息。为了控制轮足机器人的两个电机,系统使用定时器TIM2和TIM3来提供六相PWM信号,PWM的周期设置为25kHz。配置了四路ADC通道,用于实时采样电机相电流。TIM4用于生成驱动舵机的PWM信号,使得舵机可以实现精准的角度控制。通过软件I2C连接陀螺仪。TIM1被用于控制程序的精确的定时功能,确保各个控制任务能够在合适的时机触发,提高了系统的整体反应速度和协调性。
姿态控制的三环原理介绍
在轮足机器人的控制系统中,直立环、速度环和转向环是三个关键的控制环,它们分别负责不同的控制任务,以确保机器人的稳定性和灵活性。
直立环主要负责维持机器人的平衡和姿态稳定。该环的输入为角度给定,是让机器人保持稳定的姿态角度,一般取机械中值。通过实时读取陀螺仪和加速度计的角度反馈,和角度给定做差,经过PID控制得到FOC的控制电压,最中经过变换输出电机转矩。例如机器人倾斜,直立环会增大调整电机的输出转矩,机器人往偏移的一侧移动,改变角度,以确保机器人直立。
单独的直立环只能保证机器人不倒,但是无法使其保持原地静止,所以需要对其前后行进速度进行控制,引入速度环。速度环专注于控制机器人的运动速度,该环根据输入的速度给定和实际速度反馈,经过速度PID,得到角度补偿。引入速度PID,也可以看作原来直立环的角度给定从并不再是固定的了,而是考虑控制机器人速度的角度给定,从而更加灵活。对于本来的直立功能而言,引入速度环也能保持直立。举个例子,当速度给定为0,经控制机器人的轮子速度最终为0,这是机器人当然也是直立的。
直立和速度环已经可以让机器人的速度为零,但是实际上,因为两个轮子电机的固有参数差别,即使输入一样,电机的扭矩等参数也有差别,但是最终机器人的自转。转向环负责机器人在移动过程中的方向控制。和直立环类似,该环路通过读取陀螺仪数据,根据目标方向和实际方向之间的差异,调整FOC的输入差值,以实现转向控制。
通过这三个控制环的协同工作,轮足机器人能够实现稳定的直立姿态、平滑的速度变化和灵活的转向能力,从而适应复杂的行驶环境。
单片机资源图:
代码工程目录:
电源测试:
焊接电源部分:焊接两节电池保护S-8252AAC、8-12V的BOOST升压TPS55340RTER、8-5V的BUCJK降压TPS54302DDCR、5-3.3V的LDO,上电后观察电源指示灯是否亮起,用万用表测量电压是否准确。
FOC功能实现:
焊接驱动板其余电路,先不要连接其他外设。测试单片式是否工作。
连线接入编码器,下载外设测试代码,测试两个电机的编码器数据获取。
连线接入电机,下载SPWM测试代码,测试SPWM驱动的电机是否转动。
分别下载左、右电机的FOC代码,记录零电角度的校准值和编码器方向,并复制到当前以后的FOC程序中。
三环控制功能实现:
下载外设测试代码,测试MPU6050的数据是否正确,并记录大致的机械中值。
下载直立环pid控制代码,先调节Kp,后调节Kd,直至电机的输出转矩合理,直立功能大致实现。
下载直立环-速度环pid控制代码,速度设置为0,调节环pid控制代码,调节Kp和Ki,直至机器人静止,速度为0的速度环实现。
注:若您的项目涉及软件开发,请在附件上传对应的工程源码。这里可以详细说明您的软件流程图、功能模块框图、相关算法的解释或科普、源码结构、编译环境的搭建和配置、源码编译方法、程序烧录方法等。推荐图文并茂的形式向别人介绍您的想法。
电路板
无线充电板:
控制板:
驱动板:
机械结构物料
没有3D打印机的小伙伴,强烈建议使用“嘉立创3D打印服务’,价格便宜并且打印效果更好!如图是下单界面的价格:
注:项目涉及的BOM清单。在嘉立创EDA 生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。
充电板PCB:
充电板PCB实物:
控制板PCB:
控制板PCB实物:
驱动板PCB:
驱动板PCB实物:
机器人结构板PCB:
机器人结构板PCB实物:
MAX3485EESA+T/RS-485/RS-422芯片 | 5.99 | |
DS18B20+/温度传感器 | 4.38 | |
ADUM1201ARZ-RL7/数字隔离器 | 5.28 | |
ADM2483BRWZ-REEL/隔离式RS485/422收发器 | 9.36 | |
OPA2189IDR/精密运放 | 6.83 | |
STM32F103RCT6/单片机(MCU/MPU/SOC) | 6.5 | |
STM32F103VCT6/单片机(MCU/MPU/SOC) | 7.05 | |
STM32F103CBT6/单片机(MCU/MPU/SOC) | 5.75 | |
STM32F103ZET6/单片机(MCU/MPU/SOC) | 10.9 | |
AMC1311BDWVR/特殊功能放大器 | 4.95 |
60万+现货SKU
品类不断扩充中
科技智能大仓储
最快4小时发货
正品有保障
物料可追溯
明码标价节省时间
一站式采购元器件
您确定要删除此收货地址的吗?
您确定删除此收货地址吗?
content
content