你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32电机培训】4 修改代码控制电机运转

[复制链接]
wenyangzeng 发布时间:2017-8-22 15:49
【STM32电机培训】4 修改代码控制电机运转


     通过参加电机培训,对STM32控制无刷电机控制技术有了进一步的理解。本次就针对STSW-STM32100\STM32CubeExpansion_SPN7_V1.1.0演示代码进行修改,达到让电机按照自己的要求运转。
    首先先关闭电位器调速功能。在MC_SixSetup_param.h文件中的“BASIC PARAMETERS”有对电机基本控制参数的定义,将#define POTENTIOMETER 从1 改成0.


MC_SixSetup_param.h
  1. <font size="3">/* ****************************************************************************
  2. ==============================================================================   
  3.                        ###### BASIC PARAMETERS ######
  4. ==============================================================================
  5. **************************************************************************** */   
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */


  10. /* **************************************************************************** </font>
复制代码



    接着在main_F302.c的主循环中添加代码,让电机以500转速运行5秒停止5秒,再以6000转速运行5秒。对电机的控制方法ST 官方在注释中写得非常清楚,改变电机运行参数很方便。




main_F302.c
  1. <font size="3">/* ****************************************************************************
  2. ==============================================================================   
  3.                        ###### BASIC PARAMETERS ######
  4. ==============================================================================
  5. **************************************************************************** */   
  6. #define NUM_POLE_PAIRS                       7      /*!< Number of Motor Pole pairs */
  7. #define DIRECTION                            0      /*!< Set motor direction CW = 0 and CCW = 1*/
  8. #define TARGET_SPEED                      3000      /*!< Target speed in closed loop control */
  9. #define POTENTIOMETER                        0      /*!< Enable (1)/Disable (0) the potentiometer */


  10. /* ****************************************************************************



  11.   ==============================================================================   
  12.             ###### How to use the 6Step FW Example project ######
  13.   ==============================================================================     
  14.   This workspace contains the middleware layer with Motor Control library to drive
  15.   a motor connected on X-Nucleo board performing a 6-step control algorithm
  16.   allowing the motor speed regulation through a potentiometer. The 6-step algorithm
  17.   is based on 1shunt current sensing mode and sensorless algorithm for bEmf detection.
  18.   The workspace is provided for STM32Fxx-Nucleo in four different configurations,
  19.   normal, demo, comm mode, boot mode. The "normal" mode waits the blue button event
  20.   to start the motor, the "demo" mode starts and stop the motor automatically, the
  21.   "comm" mode enables the communication protocol with external PC terminal and the
  22.   "boot" mode enables the FW for external boot loader.
  23.    
  24.    A list of APIs is provided to send command to 6Step lib, for instance:
  25.    
  26.     (#)  MC_StartMotor() -> Start the motor
  27.    
  28.     (#)  MC_StoptMotor() -> Stop the motor
  29.    
  30.     (#)  MC_Set_Speed(...) -> Set the new motor speed

  31.   The MC_SixStep_param.h contains the full list of MC parameters      

  32.   ==============================================================================   
  33.                        ###### USER SPACE ######
  34.   ==============================================================================      
  35.   *****************************************************************************/   
  36.       
  37.    
  38.   /****************************************************************************/   
  39.         //添加的代码
  40.         HAL_Delay(2000);
  41.         MC_Set_Speed(500);
  42.         MC_StartMotor();
  43.         HAL_Delay(5000);
  44.         MC_StopMotor();
  45.         MC_Set_Speed(6000);
  46.         </font>
复制代码


    本次实验是6步梯形模式,按照要求对IHM07M1板子上的条线进行相应设置。编译下载,通电运行,电机已经能够按照预定参数正确运行了。



http://player.youku.com/player.php/sid/XMjk4NDc1OTkyOA==/v.swf

收藏 3 评论21 发布时间:2017-8-22 15:49

举报

21个回答
czhuanqilai 回答时间:2017-12-23 11:29:06
wenyangzeng 发表于 2017-12-21 19:16
https://www.stmcu.org.cn/document/detail/index/id-218177
ST官方的电机培训资料,你可以参考 ...

谢谢!  这个我看过了,我手上没有ST的Noclude板子,有别的无刷驱动板,想要用ST的电机库配置一个适合自己的模板,现在这个文档里面没有教怎么使用  Workbench, 自己不会配。  不知道楼主有没有资料了,关于使用Workbench
wenyangzeng 回答时间:2018-7-12 13:17:34
syq217 发表于 2018-7-12 11:13
谢谢,我目前在驱动步进电机,我应该如何实现它的精准控制呢,需要哪些器件  ...

举个例子,数控线切割机床就是步进电机控制,每给一个脉冲,电机就转动1个角度。楼上应该去参阅步进电机相关资料,比如数控机床控制等等。本人也是门外汉。
花落莫相离 回答时间:2018-6-28 20:55:38

楼主,你用的电机是STM32F302吗?我这边想用STM32F302+IHM07M1驱动板上的电位器进行控制速度,我看您这个功能可能跟我这个有点相关,不知道您这边可以加个QQ交流一下吗?我的是625212098
czhuanqilai 回答时间:2017-12-18 14:42:35
你好,楼主,有程序代码么?   能发一份。。谢谢
wenyangzeng 回答时间:2017-12-18 16:08:42
czhuanqilai 发表于 2017-12-18 14:42
你好,楼主,有程序代码么?   能发一份。。谢谢

都是ST 官方的:
MotorControl.rar (15.19 MB, 下载次数: 720)
czhuanqilai 回答时间:2017-12-21 17:33:16

谢谢
czhuanqilai 回答时间:2017-12-21 17:38:12

只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板子是不一样的,,不知道能不能用 这个程序 了???
wenyangzeng 回答时间:2017-12-21 19:16:54
czhuanqilai 发表于 2017-12-21 17:38
只能用于ST官网的板子么?? 我手里有一块 无刷驱动板,MOS管的引脚连接的是TIM1的6个通道,和ST的驱动板 ...

https://www.stmcu.org.cn/document/detail/index/id-218177
ST官方的电机培训资料,你可以参考
sdkdwyb-321669 回答时间:2018-6-19 14:47:39
谢谢分享
wangxuewei 回答时间:2018-6-20 09:09:36
共同学习,共同进步
花落莫相离 回答时间:2018-6-28 20:58:00

楼主你这个工程是用的STM32CubeMX生成的工程吗?
wenyangzeng 回答时间:2018-6-29 07:27:11
花落莫相离 发表于 2018-6-28 20:58
楼主你这个工程是用的STM32CubeMX生成的工程吗?

我也只是班门弄斧而已。工程不是CubeMX生成的,是ST官方下载的。
https://www.stmcu.org.cn/module/forum/thread-613011-1-1.html
syq217 回答时间:2018-7-4 09:32:32
楼主,步进电机和无刷电机是不是一样的驱动方式?
wenyangzeng 回答时间:2018-7-4 09:46:46
syq217 发表于 2018-7-4 09:32
楼主,步进电机和无刷电机是不是一样的驱动方式?

步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。
syq217 回答时间:2018-7-10 13:37:52
wenyangzeng 发表于 2018-7-4 09:46
步进电机每给一个脉冲转动一个角度,与无刷电机应该还是有区别的。

那么 就精准度来说,哪种电机更好一点呢
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版