基于RT-Thread的CAN电机驱动板设计 (一)需求分析与硬件设计

本项目依托实验室机器人比赛,需要设计一个电机驱动板,控制8个CAN协议的伺服电机。为了锻炼我对RT-Thread的使用能力同时加快开发进度,减少花费在驱动代码上的时间,电机驱动板采用了RT-Thread操作系统。

资料连接

本项目的所有资料全部开源:

硬件工程https://lceda.cn/FranHawk/485tocan_motor_controller
软件工程https://github.com/FranHawk/RT-Thread-485toCAN

需求分析

  • PC上位机由串口通过485协议发送电机转矩电流指令到电机驱动板,电机驱动板对指令解码并通过CAN总线发送转矩控制指令
  • PC上位机由串口通过485协议发送状态查询指令到电机驱动板,电机驱动板对指令解码并通过CAN总线发送状态查询指令,电机通过CAN总线返回包括转矩电流和编码器位置在内的状态,由电机驱动板发送回上位机
  • 电机驱动板为电机供电,每个电机最大电流1.5A,则总共需提供最大12A的电流

协议分析

  • CAN是物理层与链路层协议,一般微控制器(MCU)均带有CAN链路层外设,需要在硬件上对CAN物理层的支持
  • 485是物理层协议,一般将UART作为链路层与微控制器(MCU)通讯,需在硬件上提供对485物理层的支持

    硬件设计

    硬件需求

  • 控制:微控制器
  • 通讯:485转UART芯片,CAN物理层芯片
  • 调试:SWD烧写接口,复位按键,晶振,调试串口,LED2,按键2
  • 电源:直流12V输入,提供3.3V,5V,12V供电。12V需满足电机最大电流要求。
  • 接口:CAN电机接口x8,485接口x2,12V电源接口

硬件选型

伺服电机

采用光毓机电的RMDL伺服电机,RMD-L 伺服电机是一款高集成度的动力输出模组。集成高性能 FOC 驱动器,高功率密度无刷电机,高精度绝对位置编码器三大功能部件。突破传统分布式设计,使得终端产品结构设计更加简洁,产品内部走线更加便捷,整机性能更稳定。

MCU

STM32F103RET6
由于开发时间比较短,我采用了我最常用的STM32F103RET6,它拥有一个CAN控制器,64kRAM,256kROM,满足需求,实际上RAM用不到这么大,毕竟现在芯片这么贵,其实完全可以采用相同功能但是RAM更小更便宜的芯片

485

SP3485
参照了正点原子战舰开发板上的设计

CAN

TJA1050
参照了正点原子战舰开发板上的设计,5V供电

12V供电

采用程控电源直接给电机驱动板提供12V供电,但是要保证电机驱动板可以通过足够大的电流,预计在PCB上采用开窗的方式加大电流承载量。

5V,3.3V供电

  • TPS5430开关电源将12V降至7.3V保证供电效率
  • AMS1117-5.0将7.3V降至5V
  • AMS1117-3.3将5V降至3.3V

硬件整体结构


采用了两个SP3485芯片,其实一片就够用了,为了提高硬件的可扩展性,又另外加了一片

硬件设计流程

采用免费的EDA软件立创EDA,可以直接从立创商城导入封装,同时可以采用浏览器编辑器,全部云端化处理,免去下载软件的麻烦。
完整硬件工程链接如下
https://oshwhub.com/FranHawk/485tocan_motor_controller
接下来展示各个硬件部分的原理图。

STM32主控部分


STM32调试部分

7.3V开关电源部分


  • 我参照了数据手册的参考设计,数据手册可以在立创商城上找。
  • 其中R1,R2的计算公式如上,R1为10k,R2为2k,计算得到输出电压为7.3V。
  • 这里设计的时候我设计出现了一个问题,板子到了后发现7.3V电压无法正常输出,通过查看数据手册发现ENA浮空就好了。

    5V电源部分

    3.3V电源部分

    485电路部分


    CAN电路部分

    12V及CAN接口电路部分


    PCB

硬件制作流程

采用嘉立创的PCB制版和SMT贴片,贴片的时候的BOM表和有极性的芯片贴片方向一定要仔细调整。从投板,贴片,到收到货总共花费5天时间。最终成品图如下。

正面图

背面图

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 张竞豪的小岛 All Rights Reserved.

UV : | PV :