基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计

这篇具有很好参考价值的文章主要介绍了基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

针对在软体机器人控制时 多电机协同控制过程中难度大 通用性差 协同性差等缺点 设计了基于 ARM FPGA 的软体机器人的控制器局域网络 ( controller area network CAN ) 总线运动控制器 采用 ARMCortex-M4 为内核的 STM32F407 开发板和 AX7102 FPGA 开发板设计一种基于 CAN 总线的软体机器人运动控制器 主要包括该系统的体系架构 硬件设计和软件设计等 该控制器利用 STM32作为控制核心和 FPGA 的高速处理能力来实现控制算法的运算 并用 CAN 总线技术来实现与上位机通信 经过试验操作 该控制器可以满足预定要求。
软体机器人有别于传统刚体机器人 其具有众多优点, 具有生物柔性 能够通过蠕动 爬行 扭动
穿过狭小的空间实现灵活避障或者实现柔顺抓取等操作, 在非结构化环境中应用前景广泛
1 于是 需要一种适用于软体机器人运动控制的运动控制器。 到目前为止, 通用的运动控制器从结构上可分为以下 3 大类 2-3
( 1 ) 标准总线式运动控制器 这种运动控制器大多是基于计算机标准总线的, 其相对于计算机是
独立的 具有开放式体系结构 其大多使用数字信号处理器( digital signal processor DSP ) 芯片或微机芯片作为处理器, 可实现运动规划 高速插补 、伺服滤波和电机驱动、I /O 通用接口等功能,并且用户可以使用其丰富的函数库,根据自己的需求,在不同平台下自行开发相应软件来组成控制系统。
( 2 ) 开放式运动控制器 这种运动控制器灵活性好, 将控制软件安装在计算机中 再加上伺服驱
动器 通用 I /O 接口等硬件电路 就可以在操作系统支持下, 利用开放式的运动控制器内核 开发所需要的各种类型的高性能运动控制系统, 因此它可以提供给用户更多的选择。 其优点是开发设计成本相对较低, 可以给用户提供更加个性化的开发平台
( 3 ) 嵌入式运动控制器 这种运动控制器能够 独立运行, 其特点是把计算机嵌入到运动控制器
而它们之间的通信则是依靠计算机总线 ,该总线实质上是计算机标准总线一种变化。对于标准
总线来说 其采用了更加通用的总线连接方式 在工业生产中有更广泛的应用。 在实际使用中 采用如控制器局域网络 ( controller area network CAN ) 总 线、 以太网 串口等现场通信接口来连接计算机或 控制面板以实现对该种运动控制器的上位机控制。 鉴于以 上 总 结 分 析, 对 基 于 STM32 FPGA ( field-programmable gate array ) 的嵌入式运动控制器 进行了研究和设计, 该嵌入式硬件架构能充分发挥 它们的优点, 可以同时控制多个电机 目前很少应用在软体机器人控制中。 对于二者之间的通信则 采用可变静态存储控制器 ( flexible static memory
controller FSMC ) 总线来实现数据信息的交换与传输, 并采用 CAN 总线来实现与上位机通信 该总线具有实现连接方便、 灵活度高 实时性强等特点
1 总体方案设计
控制 器 以 基 于 Cortex-M4 处理器为核心的STM32F407 芯片进行通信 数据处理等操作 它具
有多种集成功能 满足系统的设计要求 FPGA 作为该控制器的脉冲发生和数据采集机构, 则利用其 高速性和并行性进行速度控制、 位置确定和算法实现。 控制器的总体构造如图 1 所示
stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA
控制器主要由上位机 STM32 开发板控制模块、 FPGA 开发板脉冲发生模块 伺服驱动器等部分
组成 其中每个部分的组成和相应的作用是 : 上位机具有信息传输和 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
stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA
PD4 PD5 PG10 作为 FSMC 总线端口 除此以外 , STM32 还将部分端口配置为步进电机驱动器方向信号的输出端口, FPGA 的脉冲输出信号输入至步进电机驱动器。
2. 3 伺服驱动器
作为自动调速系统中的一部分 伺服驱动器是用来调节电动机的转速的[9] 采用的是 COPLEY 公司的 Accelnet 型伺服驱动器 该驱动器的组成部 分有电源电路、 继电器板 主控板 驱动板及功率器 件。 伺服驱动器的工作原理如图 6 所示 电源电路通过把外部输入的 20 ~ 55 V 直流电 转换为相应的直流电, 为继电器板 主控板 驱动板 和功率器件提供直流电源。 继电器板的作用包括 两个方面, 一方面是提供相应的直流电 另一方面 是完成控制信号、 转速检测信号和转子位置检测信 号之间的传递。 该伺服驱动器的核心部分是主控 板, 主控板则采用数字信号处理器作为控制核 心[ 10 功率器件采用智能 功率模块 ( intelligent power module, IPM ) 为核心的驱动电路 即主电路 , 采用三相全控桥式逆变电路, 在主回路中还加入软 启动电路, 以减小启动过程对驱动器的冲击
stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA

 stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA

 stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA

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 的波特率 计算如下 :
stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA
( 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 ) 即为
最终运动状态 由运动状态结果可以得到 开发板
在控制电机运动过程中整体运行平稳 运动速度有
变化 在按照设定的轨迹运动时运动精度较高
本实现了设想的功能 使得该实验成功实现
stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA

stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA

stm32+fpga运动控制方案,运动控制器,ARM+DSP+FPGA,fpga开发,机器人,单片机,STM32+FPGA文章来源地址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运动控制器定制化解决方案。

到了这里,关于基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32毕业设计——基于STM32+JAVA+Android的六足机器人控制系统设计与实现(毕业论文+程序源码)——六足机器人控制系统

    大家好,今天给大家介绍基于STM32+JAVA+Android的六足机器人控制系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 本设计主

    2024年01月16日
    浏览(64)
  • 基于STM32与PCA9685制作四足机器人(代码开源)

            前言: 本文为手把手教学 基于STM32的四足机器人项目 —— JDY-31蓝牙控制 ,特别地,本次项目 采用的是 STM32 作为 MCU 。 四足机器人的支架为 3D打印件 , SG90舵机 驱动机器人实现姿态运动。借助 PCA9685舵机驱动板 实现 12路PWM波 控制, 更多的舵机 可以实现机器人

    2024年02月03日
    浏览(73)
  • STM32机器人控制开发教程No.4 使用串口通信控制电机(基于HAL库)

    在机器人控制中,单片机(Arduino/STM32)与上位机(Raspberry Pi/NVIDIA Jetson nano)之间的通信经常采用串口通信的方式,那应该如何使用STM32的串口通信以及根据自己定义的协议来完成数据的接收与发送呢?在本篇文章中将给你演示如何通过自定协议来完成对电机的控制以及获取编码

    2023年04月25日
    浏览(57)
  • 78、基于STM32单片机学习型搬运机器人四自由度机械臂机械手遥感控制设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图  六、程序源码 七、资料包括  在当今大规模制造业中,企业为提高生产效率,保障产品质量,普遍重视生产过程的自动化程度,工业机器人作为自动

    2024年02月09日
    浏览(53)
  • 基于STM32F103控制舵机 仿真 简单二轴机器人逆运动学(20220615完成 正在处理三轴)

    本项目基于 正点原子精英(stm32f103zet6) 控制小舵机 模拟 二轴机器人逆运动学控制。 目录 概述: 1. 我的问题总结 2.stm32控制部分 与机械部分 2.1 对于二轴机器人设计 2.2 stm32 输出 pwm 2.3 舵机控制 3.正运动学 3.1 D-H建模下对姿态的描述 4.逆运动学 4.1 几何解法 4.2 代数解法 4.3 多重

    2023年04月20日
    浏览(63)
  • 有方机器人 STM32智能小车 项目学习笔记2

    今天是学习有方机器人课程的第二天,通过课程复习GPIO相关知识点,很有收获,老师讲的非常好! 处理器在日常工作时有两种功能,第一个是负责 基本的数据运算和逻辑运算 ,第二是 控制硬件外设。 对于处理器来说,正常工作时需要去运行程序,而处理器本身只能运行程

    2024年02月22日
    浏览(42)
  • 有方机器人 STM32智能小车 项目学习笔记1

    今天开始学习有方机器人--智能小车项目,正点原子部分的学习先放一放,还是小车更有吸引力哈哈。 目前常用的 STM32 的开发方式主要有基于寄存器编程、基于标准库函数编程、基于 HAL 库编程这三种。 寄存器版本---最高效,最直接,需要对STM32内部结构十分了解,难度系数

    2024年02月21日
    浏览(40)
  • stm32毕设分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月21日
    浏览(88)
  • 单片机毕业设计 stm32智能扫地机器人设计与实现

    Hi,大家好,学长今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于stm32的智能扫地机器人设计与实现 随着人口老龄化的到来和人民对提升生活品质的需要, 人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。 同时, 机电、 自动控制、

    2024年02月04日
    浏览(57)
  • STM32两轮差速/阿克曼转向机器人/小车电机驱动教程!

    01 前言 之前,我们出了一系列的STM32机器人控制开发教程,收到不少小伙伴的反馈,于是我们对教程进行了优化,并将增加新的内容和工具。 本教程使用的机器人控制板拥有4个带编码器的电机接口,4个舵机接口,串口通信接口、SWD下载调试接口、航模遥控接口、USB5V输出接

    2024年02月05日
    浏览(155)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包