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

【STM32电机培训】——6、任务4开放性实验转矩控制电机

[复制链接]
七哥 发布时间:2018-9-14 01:05
本帖最后由 toofree 于 2018-9-14 08:45 编辑

STM32电机培训】——6、任务4开放性实验转矩控制电机


任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。
01.jpg


按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
02.jpg


建立STMStudio工程,并将“.out”添加工程中。
03.jpg


电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。
此处有重点,将右侧代码照着敲一遍,改巴改巴
04.jpg




STMStudio的VarViewer窗口中观察波形变化。
05.jpg


代码改起:
本贴代码在上一贴基础上更改。
【STM32电机培训】——5、任务3电机状态切换、正反转
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617456&fromuid=307297
(出处: 意法半导体STM32/STM8技术社区)



搜索找到头文件“std_hal_missing_define.h”,将第4行的“#if 0”,改为“#if 1”。或者自己添加“ADC_Channel_12”和“ADC_SampleTime_601Cycles5”相关宏定义。
11.jpg


修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。
12.jpg


工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。
13.jpg


添加几个外部变量声明和函数声明
14.jpg


主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。
15.jpg


“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。
16.jpg


复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件)
  1. void Open_Task(void)
  2. {
  3.   pMctHdl = GetMCI(M1);
  4.   
  5.   /* Do regular adc convert */
  6.   if (MC_GetRegularConversionState() == UDRC_STATE_IDLE)
  7.   {
  8.     MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);
  9.   }
  10.   else if (MC_GetRegularConversionState() == UDRC_STATE_EOC)
  11.   {
  12.     /* Get ADC value */
  13.     Tuning_ACD = MC_GetRegularConversionValue();
  14.   }

  15.   if (Delay_Count == 0)
  16.   {
  17.      Delay_Count = HAL_GetTick();
  18.   }
  19.   else if (HAL_GetTick() > (Delay_Count + 1))
  20.   {
  21.     Delay_Count = 0;
  22.    
  23.     /* Get new Iqref */
  24.     //Tuning_Iqref = (Tuning_ACD + 1) * MAX_TUNING_IQ / 65536;
  25.     Tuning_Iqref = Tuning_ACD* MAX_TUNING_IQ / 65536 + 1000;
  26.     if (Tuning_Iqref < MIN_TUNING_IQREF)
  27.     {
  28.       Tuning_Iqref = MIN_TUNING_IQREF;
  29.     }
  30.    
  31.     /* Set new Iqref ramp */
  32.     MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);
  33.     MC_StartMotor1();  
  34.   }
  35. }
复制代码



编译IAR工程。下载固件到开发套件中。


打开“Workbench”界面,并与目标板套件连接。
21.jpg

“监控”窗口下,在打开“Plotter”绘图窗口。
22.jpg


电脑安装,并打开软件“STMStudio”。
23.jpg


将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。
24.jpg


运行程序后,在“Workbench”“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。
25.jpg


同时在“STMStudio”的窗口中也将观察到如下图变化波形。
26.jpg


至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。


按照惯例,工程附上:

P-NUCLEO-IHM001_STMStudio.rar (9 MB, 下载次数: 79)
收藏 2 评论1 发布时间:2018-9-14 01:05

举报

1个回答
kimbackkom 回答时间:2018-11-12 11:36:02

所属标签

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