打印
[应用相关]

STM32和FPGA的多通道步进电机控制系统

[复制链接]
楼主: Diyer2015
手机看帖
扫描二维码
随时随地手机跟帖
21
Diyer2015|  楼主 | 2018-10-15 12:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

使用特权

评论回复
22
Diyer2015|  楼主 | 2018-10-15 12:40 | 只看该作者

使用特权

评论回复
23
Diyer2015|  楼主 | 2018-10-15 12:40 | 只看该作者

使用特权

评论回复
24
Diyer2015|  楼主 | 2018-10-15 12:40 | 只看该作者

使用特权

评论回复
25
Diyer2015|  楼主 | 2018-10-15 12:41 | 只看该作者

使用特权

评论回复
26
Diyer2015|  楼主 | 2018-10-15 12:41 | 只看该作者

使用特权

评论回复
27
Diyer2015|  楼主 | 2018-10-15 12:42 | 只看该作者
    模糊PID控制回路是本系统所采用的基本控制方式,如图2-3所示,其控制命令
信号由动态信号和静态信号叠加构成。命令信号发出后进入PID控制回路,电机实际
状态信息由FPGA进行光栅计数,并反馈给STM32送入模糊PID控制器(软件算法),
并通过FPGA输出脉冲信号由步进电机驱动器驱动电机。此过程实现对单通道步进电
机的闭环控制。
    本文设计的系统为8通道步进电机控制系统。由于STM32与FPGA运行速度非常
J决,所以在实际运行时可以先后依次启动所需要控制的电机,这样做和同时启动某几
台电机效果是一样的。本文通过对地址高三位进行译码,选用的是3-8译码器,实现
对8通道电机的同步或者异步控制。

使用特权

评论回复
28
Diyer2015|  楼主 | 2018-10-15 12:43 | 只看该作者
    STM32F407系列芯片采用了ARM 32位的Cortex-M4内核,工作频率最高可以达
到168MHzo STM32F407系列芯片拥有15个通讯接口、17个定时器、USB, CAN
另外,其还有着以太网接口,能够方便的扩展网络模块,完成网络通讯。STM32F407
系列芯片的Flash存储器达到了1M字节,SRAM存储器也有着196字节,存储器空间
比较大。

    FPGA居于整个控制系统的核心地位,其收到STM32发送来的各电机的相应控制
命令和参数之后,通过输出脉冲信号控制各个电机的运行。
    FPGA (Field-Programmable Gate Array,即现场可编程门阵列),与ASIC.. CPLD
SPLD等可编程逻辑器件相比,FPGA拥有可重编程的特性,用户能够依据自身实际需
求对其开发,并能够很方便得升级FPGA中的硬件电路[[37]。本系统中的FPGA芯片选
用EP2C8Q208C8完成分频和电机各个状态之间的改变。
    EP2C8Q208C8芯片属于Cyclone II系列中的中小规模器件,具有低成本的优势。
改芯片使用了TQFP封装,工作温度的范围是。C ^-850C,工作电压的范围是1.15V^}
3.465V o

使用特权

评论回复
29
Diyer2015|  楼主 | 2018-10-15 12:43 | 只看该作者

使用特权

评论回复
30
Diyer2015|  楼主 | 2018-10-15 12:44 | 只看该作者

使用特权

评论回复
31
Diyer2015|  楼主 | 2018-10-15 12:44 | 只看该作者

使用特权

评论回复
32
Diyer2015|  楼主 | 2018-10-15 12:45 | 只看该作者
(1)上位机部分
    1、完成对PC端上位机界面的开发;
    2、在上位机界面能够完成选择各电机通道,并可以完成设置如步数、初始速
      度等电机的各个参数,发送控制命令;
    3、可以在上位机人机交互操作界面将各个电机的运行参数实时显示出来;
    4、可以根据实际需要对各个电机的运行参数进行修改,如调整电机频率、步
        数。
C 2 ) STM32模块:
    1、将上位机发送来的各步进电机的相应参数转换处理,并发送给FPGA;
    2、将上位机发送的控制命令予以处理,并将处理后的命令发送给FPGA;
    J、将从FPGA读取到的各步进电机的实时状态参数予以处理,并发送回上位
        机进行显示;
    4、将FPGA传来的光栅传感器数据与控制命令对比,并FPGA一起对电机进
        行闭环控制。
3)FPGA模块:
  1、对SOMHz基频予以分频,以获取系统需求的其它频率的时钟。
  2、使用FPGA中状态机,控制各步进电机在启动、加速、稳定运行等状态间
      进行转换;
  3、对各步进电机当前的运行状态予以锁存,同时将状态信息发送给上位机;
  4、实例化FPGA,完成STM32发送来的控制信息,实现对各个步进电机的控
        制。

使用特权

评论回复
33
Diyer2015|  楼主 | 2018-10-15 12:45 | 只看该作者

使用特权

评论回复
34
Diyer2015|  楼主 | 2018-10-15 12:45 | 只看该作者

使用特权

评论回复
35
Diyer2015|  楼主 | 2018-10-15 12:46 | 只看该作者
    STM32需要进行配置及初始化的包括以下几个方面内容:管脚、中断、网口的软
硬件、FSMC总线读写初始化、LwIP协议的初始化、接收UDP数据包的初始化等。
    STM32和FPGA通过8位的双向I/O口完成的数据传输,然而上位机发送来的数
据达到了24位,所以进行程序设计时,需要先计数器联合体clk ini进行定义,它所起
的作用便是将数据进行分字节传输。
    对STM32和FPGA初始化之后,进入主循环。当定时器标志位Tim2_ flag为1时,
进入下位机回读数据程序。这个程序里,先调用函数Read DataArray_froyFPGA(),
读取FPGA中锁存的各个电机状态的信息,并将其保存至Read Data数组;接着调用
函数Change一 FPGAData to- up(),将存储到Reades Data数组中的步进电机状态信息加
以处理转换,然后调用SEND UDP一。_Computer(),将处理之后的状态信息数据划分
成3个字节传送给上位机。
    Tim2_flag为0时,判断网络层是否有数据接收,如果判断有接收到了数据,那么
调用函数LwIP一ktes Handle()初步处理接收到的LwIP数据包,接着调用函数
Updata change to_ down( ),对上位机发送来的参数信息和控制命令予以处理转换,最
后调用FPGA Control()向FPGA写入相关的数据信息。

使用特权

评论回复
36
Diyer2015|  楼主 | 2018-10-15 12:46 | 只看该作者

使用特权

评论回复
37
Diyer2015|  楼主 | 2018-10-15 12:47 | 只看该作者

使用特权

评论回复
38
Diyer2015|  楼主 | 2018-10-15 12:47 | 只看该作者

使用特权

评论回复
39
Diyer2015|  楼主 | 2018-10-15 12:47 | 只看该作者

使用特权

评论回复
40
Diyer2015|  楼主 | 2018-10-15 12:48 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则