0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用FPGA实现一个直流有刷电机控制器

FPGA研究院 来源:FPGA之旅 2023-11-08 09:30 次阅读

一、简介

本篇文章将介绍如何使用FPGA实现一个直流有刷电机控制器,主要包括 速度控制 和 角度控制(好像在无刷电机控制中,习惯将其称为环,即速度环 和 角度环(位置环))。因此这是一个闭环系统,需要得到系统的反馈,实时得到电机的转速和角度,所以需要上篇中编码器模块的输出,作为控制器的反馈,通过PID进行调节。

二、控制器框图设计

在做设计之前,最好先将功能明确下来,然后绘制简单的流程框图,当然这里先将程序实现完了之后,再绘制的流程框图 ̄□ ̄||,框图如下,主要由三大模块组成(控制姿态就不包括在里面了),角度、速度和PID模块,下面将一一介绍各个模块的具体细节。

8b6d904c-7dc6-11ee-939d-92fbcf53809c.png

三、PID模块

PID的原理在之前的文章中有提到过,就不再继续提起了,本次实现的方式方式和之前实现的方式一样,将PID系数扩大100倍取整,然后相乘,将得到的结果再右移7位 加速 右移 9位,约等于除以了100。

四、速度控制器

速度控制器里面主要做期望速度的输出和电机运动方向切换的控制。期望速度主要由外部输入和方向切换来控制,如果说需要进行方向切换的话,为了保护电机,不能立马进行电机的转向,而要等待速度降低到安全速度后,再进行方向切换。

所以如果电机不需要转向,那么期望速度就是外部设置的速度。

如果需要转向的话,先将期望速度设置为0,待速度降低到安全速度后,例如5RPM,就切换方向 和 将期望速度设置为外部设置的速度。

module controller_Speed_loop(
  input        sys_clk_i        ,    //时钟输入
  input        sys_rst_n_i       ,    //复位输入


  input        c_speed_loop_en_i    ,    //速度环使能信号


  input        motor_spin_dir_i    ,    //设置旋转方向
  input[15:0]     motor_rpm_set_i     ,    //设置速度
  input        encoder_direction_i   ,    //电机实际的运动方向
  input[15:0]     encoder_speed_i     ,    //编码器速度


  output reg     c_speed_loop_dir_o   ,    //速度环方向输出
  output reg[15:0]  c_speed_loop_rmp_o       //速度环RPM输出
);

五、角度控制器

控制过程和速度控制过程一样,将当前角度值和期望角度值输入角度PID进行计算,然后将计算后的结果输入到速度PID进行计算,得到PWM的变化值。

这一控制回路是比较简单的,如果说需要在角度旋转的时候,还需要对速度进行控制的话,就会复杂一点点(串级),等后面有需求了再进行实现。

六、小结

本次实现的控制器 和 上次实现的 编码器,共同组成了一个简单的电机控制器,可用于对电机的速度 和 角度进行控制。

top层的控制信号如下,在速度模式下,只需要设置rmp的值,电机就可以进行转动,而在角度模式下,需要先设置旋转的角度值,然后在使能角度旋转,电机就会旋转对应的角度后,停止。

//控制信号
  .motor_mode_set_i        (   motor_mode_set       ),    //设置电机模式 2'b00 = 速度模式  2'b01 = 角度模式
  .motor_spin_dir_i        (   motor_spin_dir       ),    //电机运动方向控制 1'b0 正向  1'b1 反向
  .motor_rpm_set_i         (   motor_rpm_set        ),    //设置电机转速 RPM
  .motor_acc_set_i         (   motor_acc_set        ),    //设置电机加速度


  .motor_angle_en_i        (   motor_angle_en       ),    //角度旋转使能
  .motor_angle_ack_o        (   motor_angle_ack       ),    //角度旋转应答
  .motor_angle_set_i        (   motor_angle_set       ),    //设置电机旋转角度

本文转载自FPGA之旅

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21644

    浏览量

    601409
  • 控制器
    +关注

    关注

    112

    文章

    16149

    浏览量

    177192
  • PID
    PID
    +关注

    关注

    35

    文章

    1470

    浏览量

    85235
  • 无刷电机
    +关注

    关注

    57

    文章

    821

    浏览量

    45729
  • 直流有刷电机

    关注

    0

    文章

    46

    浏览量

    1468

原文标题:FPGA实现直流电机驱动(速度位置控制)

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    我的电机直流电机,配有AQMD2410NS的驱动,求推荐控制器控制

    我的电机直流电机,配有AQMD2410NS
    发表于 09-18 12:01

    如何去实现直流编码电机的驱动状态控制

    直流编码电机哪几个引脚?如何去实现直流编码
    发表于 07-30 07:48

    A4962三无直流(BLDC)电机控制器哪些应用

    A4962是什么?A4962无直流(BLDC)电机控制器哪些特色及优点?A4962三无
    发表于 08-13 06:19

    基于LabVIEW设计直流电机PID调试及控制助手

    基于LabVIEW的电机测试系统研究  本设计基于LabVIEW设计直流
    发表于 01-07 06:19

    使用dsPIC数字信号控制器实现直流电机控制技术的资料说明

    本文档的主要内容详细介绍的是使用dsPIC数字信号控制器实现直流电机控制技术的资料说明包括了:简述无
    发表于 04-28 08:00 6次下载
    使用dsPIC数字信号<b class='flag-5'>控制器</b><b class='flag-5'>实现</b>无<b class='flag-5'>刷</b><b class='flag-5'>直流电机</b><b class='flag-5'>控制</b>技术的资料说明

    使用FPGA实现直流伺服电机控制器的设计资料说明

    利用 VHDL 硬件描述语言在 FPGA 中设计直流伺服电机控制器。其含 4 路 PWM 控制器,每个
    发表于 05-11 08:00 13次下载
    使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>直流</b>伺服<b class='flag-5'>电机</b><b class='flag-5'>控制器</b>的设计资料说明

    基于FPGA直流电机控制器的研究与实现

    基于FPGA直流电机控制器的研究与实现
    发表于 05-28 10:50 9次下载

    基于FPGA直流电机控制器的研究与实现

    基于FPGA直流电机控制器的研究与实现(现代电源技术基础电子版杨飞)-该文档为基于FPGA直流电机
    发表于 08-04 15:56 9次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直流电机</b><b class='flag-5'>控制器</b>的研究与<b class='flag-5'>实现</b>

    基于FPGA直流电机控制器的硬件设计

    基于FPGA直流电机控制器的硬件设计(中远通电源技术开发有限公司)-该文档为基于FPGA直流电机控制
    发表于 09-23 13:20 16次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直流电机</b><b class='flag-5'>控制器</b>的硬件设计

    直流电机控制器与无

    BLDC 电机控制器使用半 H 桥电路的晶体管切换电流。晶体管的数量取决于控制器激励的相数或绕组数。三相无直流电机
    的头像 发表于 11-21 15:31 2662次阅读
    <b class='flag-5'>直流电机</b><b class='flag-5'>控制器</b>:<b class='flag-5'>有</b><b class='flag-5'>刷</b>与无<b class='flag-5'>刷</b>

    解决无直流控制器设计挑战

    直流 (BLDC) 电机已成为各种电池供电和线路供电设备与电器的默认电机选择。与
    的头像 发表于 12-26 10:16 697次阅读
    解决无<b class='flag-5'>刷</b><b class='flag-5'>直流</b><b class='flag-5'>控制器</b>设计挑战

    直流电机驱动电路

    的基本原理、应用领域、分类及其优劣势等,详细探讨其优点和缺点,以帮助人们更好地了解该电路的性能和特点。 、基本原理 直流电机驱动电路包
    的头像 发表于 08-29 10:06 2206次阅读

    用于驱动无电机的新型 2 A 峰值电流嵌入式电机控制器

    款新型嵌入式电机控制器,可以输出 2 A 峰值电流,用于驱动无直流电机(BLDC)和
    的头像 发表于 06-24 05:55 460次阅读
    用于驱动无<b class='flag-5'>刷</b>和<b class='flag-5'>有</b><b class='flag-5'>刷</b><b class='flag-5'>电机</b>的新型 2 A 峰值电流嵌入式<b class='flag-5'>电机</b><b class='flag-5'>控制器</b>

    直流电机控制器的工作过程

    直流电机(BLDC)控制器的工作过程是涉及电机控制
    的头像 发表于 09-03 10:30 330次阅读

    直流电机如何控制角度

    直流电机(DC Brushed Motor)是种常见的电机类型,它通过改变电流的方向来
    的头像 发表于 09-03 10:34 404次阅读