本文记录嵌赛项目的开发过程和总结。
一、项目介绍
基于瑞萨多核异构FOC机械臂及逆运动学控制系统
二、硬件设计
2.1 主控芯片
项目采用了RZ/G2L(MPU)与RA6E2(MCU)作为主控。
一路无刷电机需要用到两路ADC,三路PWM,和一路IIC,单一主控引脚资源分配不来。
2.2 蜂鸣器报警的电路设计(我用的是PNP三极管)
2.3 BMS上MOS和三极管的测量经验
2.3.1 MOS管
导通档,红表笔接G极、黑表笔接S极:不响,通常正常;有阻值或蜂鸣,板上不能确定,低阻可能击穿。
导通档,红表笔接G极、黑表笔接D极:不响,通常正常;有阻值或蜂鸣,板上不能确定,低阻可能击穿。
二极管档,N沟道MOS红表笔接S极、黑表笔接D极:约0.3~0.8 V,通常正常;接近0 V或蜂鸣,可能击穿。
二极管档,N沟道MOS红表笔接D极、黑表笔接S极:显示OL,通常正常;接近0 V或蜂鸣,可能击穿。
二极管档,P沟道MOS红表笔接D极、黑表笔接S极:约0.3~0.8 V,通常正常;接近0 V或蜂鸣,可能击穿。
二极管档,P沟道MOS红表笔接S极、黑表笔接D极:显示OL,通常正常;接近0 V或蜂鸣,可能击穿。
2.3.2 三极管
二极管档,NPN三极管红表笔接B极、黑表笔接E极:约0.5~0.8 V, 通常正常;OL或接近0 V,可能异常。
二极管档,NPN三极管红表笔接B极、黑表笔接C极:约0.5~0.8 V, 通常正常;OL或接近0 V,可能异常。
二极管档,PNP三极管黑表笔接B极、红表笔接E极:约0.5~0.8 V, 通常正常;OL或接近0 V,可能异常。
二极管档,PNP三极管黑表笔接B极、红表笔接C极:约0.5~0.8 V, 通常正常;OL或接近0 V,可能异常。
导通档,红表笔接C极、黑表笔接E极,再反接:均不响,通常正常;任一方向蜂鸣或接近0Ω,可能击穿。
注意:板上有阻值不一定是器件损坏,无法确定时抬起一个引脚复测。
2.4 BMS硬件基础
三、软件设计
MPU的A核我跑的是CAN和LVGL,一开始是打算在M核跑CAN,但是不知道为什么就是跑不通。M核我用来跑了两样东西:无源蜂鸣器(其实也就只需要供电和一路PWM)和佬的BMS。A核与M核之间通过RPMsg相互通信,但我只写了A核向M核发送。之后我会详细单开两个菜单单独讲BMS和RPMsg。
1.系统流程
下面是海选时的演示视频,BMS为决赛添加
系统运行演示暂未配置视频地址。
2.线程与进程的区别
BMS_Task就属于线程,Linux上跑的程序叫进程。
进程是操作系统分配资源的基本单位,每个进程拥有相对独立的内存空间;线程是程序执行的基本单位,同一个进程中的多个线程共享代码、数据和文件等资源,但每个线程都有自己的栈和执行状态。
简单来说,进程之间相互独立,一个进程崩溃通常不会直接影响其他进程,但创建和切换进程的开销较大。线程之间共享资源,创建和切换开销较小,适合把一个程序拆分成多个同时执行的任务;但一个线程错误地修改共享数据,也可能影响同一进程中的其他线程。
四、FOC软件总结
1.电角度读取应该和电流环一个频率(电流环频率AI直接估算)
2.控制性能比较好的话电流环频率需要往10khz朝上走
3.电流环更新频率太低会导致无刷电机齿槽感严重
4.FOC力反馈旋钮的几种思路:直接电流环,根据读取电流设置阻尼;位置环模拟阻尼感
五、RPMsg和BMS软件总结
1.RPMsg
A核发送的RPMsg结构体需与M核接收的结构体一致
A核结构体:
M核结构体:
2.BMS
vTaskDelay()是当前任务进入阻塞状态,然后让出CPU;R_BSP_SoftwareDelay()是继续运行当前程序,纯在原地阻塞
让出CPU含义是当前任务暂时不再执行,把处理器的运行机会交给其他就绪任务。
六、遇到的问题
这里记录开发过程中遇到的问题。
七、项目总结
这里写收获和改进方向。