组成
。
其中每个部分的组成和相应的作用是
:
上位机具有信息传输和 CAN
通信的作用
,
CAN
通信具 有大量 数 据 高 速 通 信 的 优 点,
通过上位机可向STM32 开发板发送指令
,
如实现电机的启动
、
停止
、 正反转等;
STM32
开发板控制模块与
FPGA
开发板脉冲发生模块,
通过
I /O
接口来进行两者之间的数 据发送和读取,
STM32
开发板根据上位机传输过来 的的不同命令和相关数据进行对应的数据分析和 处理,
然后传输给
FPGA
开发板
,
与此同时也要从FPGA 开发板上依次读取直流伺服电机在运动过程当中相应的速度和位置等参数;
伺服驱动器通过脉冲宽度调制来实现直流伺服电机的精确控制,
如正反转、
加减速
、
启动
、
停止等
。控制器采用直流有刷伺服电机,其具有成本较低、结构简单、控制方便、 启动转矩大、调速范围宽等优点,因此适合作为控制器的运动执行部分[4-5]。
2
硬件设计
在对控制器进行硬件设计时
,
其核心器件有 STM32 开发板
、
FPGA
开发板
、
伺服驱动器
、
CAN
通 信模块和外围电路等。
考虑到在制作和使用过程 中的成本和性能方面,
现对各个模块进行选型
,
以 达到合理与合适的效果。
其中
STM32
开发板选择 基于 Cortex-M4
内核
STM32F407IGT6
,
FPGA
开发 板则选用 Xilinx
公司的
AX7102
,
直流伺服电机选择
MAXON MOTOR RE30
。 每个开发板的最小系统能够正常运行是硬件
设计的基础
,
而每个最小系统都是由很多模块组成 的,
且都有对应的功能
。
电源模块为该系统提供电 源,
晶振模块为该系统提供基本的时钟信号
,
下载 模块则负责将程序下载到该系统中,
I /O
接口模块 是为了进行数据的输入和输出,
复位模块的作用是 使 CPU
恢复到原始状态
,
等等
。
不同的是
,
FPGA
的 最小系统中芯片外围滤波电路模块的功能是滤去 电压中的纹波、
配置电路模块以达到实现相应的功 能、
存储模块用以数据存储等
。
STM32
的最小系统 则还有通信模块以实现上位机与开发板之间的通 信。
下面就下载模块
、
接口模块
、
通信模块进行详 细描述[6]
。
2. 1 STM32
模块电路
2. 1. 1
仿真器接口模块
STM32
有
2
种 下 载 模 式
,
分别是串行调试( SWD
)
模式和联合测试工作组
(
JTAG
)
模式
。
本文
设计的系统采用
JTAG
模式
,
如图
2
所示
。
JTAG
作 为一种边界扫描技术,
主要被用来做芯片内部测 试。
控制系统设计时选用的
JTAG
调试口针数为 20 针
。
由于开发板预留的是
SWD
接口
,
则通过
STLink 实现
JTAG
与
SWD
的转换
,
这里
SWD
接口的 频率使用 4 MHz
。
在进行代码调试时
,
通过
ST-Link 将上位机与 STM32
微控制器开发板相连
,
进而烧写 程序。
2. 1. 2 CAN
通信模块
CAN
是一种异步通信
,
只有
CAN_High
和
CAN _Low 两条信号线
,
共同构成一组差分信号线
,
以差 分信号的形式进行通信。
由于上位机与
STM32
通 过 CAN
进行通信需要
USB
转
CAN
模块
[
7
]
,
这里选 用若比特公司的 USB2CAN
适配器
V2
,
其工作原理
如图
3
所示
。
STM32
开 发 板 具 有 内 置 的
CAN
控 制 器
,即bxCAN,它支持 CAN 协议 2. 0A 和 CAN 协议 2. 0B,具有 3 个发送邮箱,2 个 3 级深度的接收 FIFO( firstinput first output,先进先出) ,14 个可变位宽的过滤器组,波特率最高为 1 Mbit / s[8]。CAN 通信模块如图 4 所示。
2. 2 STM32
与
FPGA
接口模块
STM32
开发板与
FPGA
开发板的接口电路的作 用是实现二者之间的通信以及数据传输。
在控制
器设计过程中
,
控制信号
、
地址信号和伺服电机运 行参数是 STM32
开发板与
FPGA
开发板之间相互 传输的主要数据。
在输入
/
输出端口中有
4
组引脚 被使用到,
分别是
PD
、
PE
、
PF
、
PG
中的部分引脚
,
接口模块的具体设计如图 5
所示
。
在该设计中
,
FSMC
总线用来实现
STM32
开发板和 FPGA
开发板之间数据的传输
,
所以
PE0
、
PE1
、
PD4
、
PD5
、
PG10
作为
FSMC
总线端口
。
除此以外
, STM32 还将部分端口配置为步进电机驱动器方向信号的输出端口,
FPGA
的脉冲输出信号输入至步进电机驱动器。
2. 3
伺服驱动器
作为自动调速系统中的一部分
,
伺服驱动器是用来调节电动机的转速的[9]
。
采用的是
COPLEY 公司的 Accelnet
型伺服驱动器
。
该驱动器的组成部 分有电源电路、
继电器板
、
主控板
、
驱动板及功率器 件。
伺服驱动器的工作原理如图
6
所示 电源电路通过把外部输入的 20 ~ 55 V
直流电 转换为相应的直流电,
为继电器板
、
主控板
、
驱动板 和功率器件提供直流电源。
继电器板的作用包括 两个方面,
一方面是提供相应的直流电
,
另一方面 是完成控制信号、
转速检测信号和转子位置检测信 号之间的传递。
该伺服驱动器的核心部分是主控 板,
主控板则采用数字信号处理器作为控制核 心[
10
]
。
功率器件采用智能 功率模块
(
intelligent power module,
IPM
)
为核心的驱动电路
,
即主电路
, 采用三相全控桥式逆变电路,
在主回路中还加入软 启动电路,
以减小启动过程对驱动器的冲击
。
3
软件设计
在软件设计部分主要涉及
3
个模块
,
分别是STM32 与上位机通信模块
、
FPGA
与
STM32
通信模
块和直流电机运动中的加减速模块
,
如图
7
所示
。
3. 1 STM32
与上位机通信模块
关于
STM32
与上位机的
CAN
通信在硬件设计部分已经介绍过了,
这里只对软件设计进行详细介
绍
,
软件部分是基于
CAN
总线来实现
STM32
与上 位机的通信,
主要任务是只要进行
CAN
初始化和数 据发送即可。
本设计初始化模块中只需要对
CAN 工作方式进行配置,
而不需要对过滤器进行特殊的 配置,
部分初始化程序如下
。
/ * CAN register init
(
CAN
寄存器初始化
)
* /
CAN_DeInit
( ) ;
CAN_StructInit
(
&CAN_InitStructure
) ;
/ * CAN cell init
(
CAN
单元初始化
)
* /
CAN_InitStructure. CAN_TTCM = DISABLE
;
……
CAN_InitStructure. CAN_Mode = CAN_Mode_Normal
;
/ /
工作模式
选择
CAN_InitStructure. CAN_SJW = CAN_SJW_1tq
;
CAN_InitStructure. CAN_BS1 = CAN_BS1_5tq
;
CAN_InitStructure. CAN_BS2 = CAN_BS2_1tq
;
CAN_InitStructure. CAN_Prescaler = 6
;
/ /
波特率的设定
CAN_Init
(
&CAN_InitStructure
) ;
/* CAN filter init
(
CAN
过滤器初始化
)
* /
CAN_FilterInitStructure. CAN_FilterNumber = 0
;
……
CAN_FilterInitStructure. CAN_FilterActivation = ENABLE
;
CAN_FilterInit
(
&CAN_FilterInitStructure
) ;
其中波特率的配置在工作方式配置中是最主
要的
,
设计中使用的开发板中
CAN
是挂
APB1
时钟
上的
,
其频率为
42 MHz
。
由波特率的计算公式
,
波
特率
= 1 /
正常的位时间
,
正常的位时间
= 1
t
q
+
t
BS1
+
t
BS2
。
但是这样计算的为理论值
,
且难以计算和理
解
,
在实际设置中有简单公式
(
1
) ,
现欲得到
1 Mbit /
s
的波特率
,
计算如下
:
式
(
1
)
中
:
CANclock
为
APB
总线频 率
;
prescler
为
APB
总线时钟
6
分频
;
t
q
、
t
BS1
、
t
BS2
分别对应
1
个
、
5
个
和
1
个
t
can
时钟周期
3. 2 FPGA
与
STM32
通信模块
在硬件设计中已经介绍了
STM32
和
FPGA
使
用
I /O
口连接
,
软件设计采用
FSMC
总线实现二者
的数据信息的交换
。
STM32
和
FPGA
的通信既要完成
STM32
向
FPGA
下传数据的工作
,
还要达到
STM32
从
FPGA
中回读数据的目的
。
所以两者的通信包含了接收
数据和传送数据两个部分
。
在本文所设计的控制
系统中
,
为了能够实现同步控制多台步进电机
,
使
用了
FSMC
来 实 现
STM32
和
FPGA
两 者 之 间 的
通信
。
ST
公司为用户开发提供了完整
、
高效的工具和
固件库
,
STM32
固件库中拥有
FSMC
的
SRAM
控制
器相应的操作固件
,
其中含有
1
个数据结构和
3
个
函数
。
FSMC_NORSRAMInitStructure
;
/ /
调用库函数
;
RCC_Configuration
( ) ;
/ /
时钟选择
;
NVIC_Configuration
( ) ;
/ /
中断优先级
;
FSMC_GPIO_Configuration
( ) ;
/ /
连接
IO
口初始化
;
FSMC_SRAM_Init
( ) ;
/ /FSMC
配置
;
USART_Initial
( ) ;
/ /UART1
端口配置
。
本设计初始化模块中只需要对
FSMC
工作方式
进行配置
,
部分
STM32
初始化程序如下
:
FSMC _ NORSRAMInitTypeDefFSMC _ NORSRAMIni-tStructure
;
/ /
定义
FSMC
初始化的结构体变量
FSMC _ NORSRAMTimingInitTypeDefreadWrite-Timing
;
/ /
用 来 设
置
FSMC
读时序和写时序的指针变量
GPIO _ InitTypeDefGPIO _ InitStructure
;
/ /
初 始 化
FSMC
总 线 的
IO
口
。
部分
FPGA
程序如下
:
assign rd =
! (
csn & rdn
) ;
/ /
获取读脉冲
assign wr =
! (
csn & wrn
) ;
/ /
获取写脉冲
assign db = rd
?
indata
:
16' hzzzz
;
/ *
当不进行读写操作时
db =
indata
;
当进行写操作时
db = 16'hzzzz
;
当进行读操作时
db = indata* /
4
实验验证
为验证该运动控制器的控制效果和控制精度
,
现对其控制进行实验验证
。
实验验证是在自行设
计制作的运动平台上进行的
,
该运动实验平台运动
执行部分采用的是弹性比较好的弹簧
,
中间则是支
撑弹簧
,
其中
3
个电机与
3
根缆绳相连
,
缆绳的另一
端则连接在软体机器人的单个关节上
,
通过控制器
控制不同电机的启停运转
,
来实现该节弹簧的弯
曲
,
并可以实现弹簧在不同方向的运动
。
控制器以
基于
Cortex-M4
处理器为核心的
STM32F407
芯片和
Xilinx
公司的
AX7102
的
FPGA
开发板
,
进行通信
、
数据处理
、
位置确定和算法实现等操作
。
软体机器
人运动平台如图
10
所示
。
通过控制算法和对应的数据计算
,
在运动平台
按照预先设定的运动方式进行运动
。
通过同时控
制多个电机进行协同运动
,
其中电机转速为
2 r /
min
,
以中间支撑轴为原点
,
可以得到在最终运动状
态下机器人弯曲了约
45°
,
缆绳缩短约
5 cm
。
具体
运动实验过程如图
11
所示
。
图
11
仅展示机器人首节运动
,
其中图
11
(
a
)
记
为机器人起始状态
,
图
11
(
b
)
、
图
11
(
c
)
、
图
11
(
d
)
分别对应
5
、
15
、
30 s
时运动状态
,
其中图
11
(
d
)
即为
最终运动状态
。
由运动状态结果可以得到
,
开发板
在控制电机运动过程中整体运行平稳
,
运动速度有
变化
,
在按照设定的轨迹运动时运动精度较高
,
基
本实现了设想的功能
,
使得该实验成功实现
。
文章来源:https://www.toymoban.com/news/detail-646182.html
文章来源地址https://www.toymoban.com/news/detail-646182.html
5
结论
对于目前软体机器人运动控制难度大
、
精度
低
、
协同控制多电机难以实现同步性等问题
,
提出
采用基于
ARM
和
FPGA
的软体机器人的
CAN
总线
运动控制器
,
得到以下结论
。
(
1
)
实现
STM32
与
FPGA
接口通信
,
STM32
开
发板根据上位机传输过来的不同命令和相关数据
进行对应的数据分析和处理
,
然后传输给
FPGA
开
发板
,
与此同时也要从
FPGA
开发板上依次读取直
流伺服电机在运动过程中相应的速度和位置等参
数
;
伺服驱动器通过脉冲宽度调制来实现直流伺服
电机的精确控制
。
(
2
)
实现
STM32
开发板与上位机之间的通信
,
这里采用
CAN
总线
,
因为
CAN
总线可以进行大量
数据的高速通信
,
适合对多电机进行协同控制
,
并
可大量传输下位机采集到的数据
。
(
3
)
在加减速模块中
,
采用
S
型曲线加减速法
有利于减小电机的冲击
,
实现机器人整体平稳运
行
,
作用方法是通过改变运动过程中加速度的大
小
,
使其在不同阶段拥有不同的加速度
,
来大幅度
减小冲击力
。
(
4
)
根据自行设计加工的运动对软体机器人的
运动控制进行了实验验证
,
实验结果表明
,
该控制
器整体协同控制性能较好
,
能比较理想地实现预期
的运动
。
由于控制算法部分并没有介绍
,
在实际控制过
程中与控制算法中的仿真存在误差
,
所以下一步会
对控制算法和机械结构进行优化
,
以期望实现更理
想的运动
。
信迈提供STM32+FPGA运动控制器定制化解决方案。