|
本帖最后由 toofree 于 2018-9-14 08:45 编辑 【STM32电机培训】——6、任务4开放性实验转矩控制电机 任务目标:转矩控制电机,用STMStudio对变量进行监测,用ADC采样电位器电压,ADC采样值按比例间接控制电机转速。
按培训资料,使用转矩控制函数“MC_ProgramTorqueRampMotor1(Tuning_Iqref,1000);”,添加变量到STMStudio窗口
建立STMStudio工程,并将“.out”添加工程中。
电位器ADC采样函数“MC_ProgramRegularConversion(ADC_Channel_12,ADC_SampleTime_601Cycles5);”,以及读取ADC采样结果函数“MC_GetRegularConversionValue();”。 此处有重点,将右侧代码照着敲一遍,改巴改巴 ![]()
在STMStudio的VarViewer窗口中观察波形变化。
代码改起: 本贴代码在上一贴基础上更改。 【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”相关宏定义。
修改头文件“std_hal_missing_define.h”的目的,就是想使用这两个宏定义。或者还有其它隐藏的宏定义,反正修改、添加一下,一劳永逸。
工程主文件“main.c”中,添加相关头文件,并添加相关变量定义、宏定义。这里“MAX_TUNING_IQ”、“MIN_TUNING_IQREF”分别为2800、1000是实验得出来的。转矩太小电机低速会停机,1000是最低维持电机转动的转矩参数;2800是ADC值接近满量程时,电机才达到最大转速的转矩参数。
添加几个外部变量声明和函数声明
主循环中,只执行一条“ Open_Task();”函数,此函数便是照着培训资料码好的代码。
“ Open_Task()”中“Tuning_Iqref”增加了1000的偏置,与“MIN_TUNING_IQREF”差不多是一个意思。
复制出“ Open_Task()”源码供参考。(如果嫌麻烦的话,直接下载贴子最后的打包附件)
编译IAR工程。下载固件到开发套件中。 打开“Workbench”界面,并与目标板套件连接。
在“监控”窗口下,在打开“Plotter”绘图窗口。
电脑安装,并打开软件“STMStudio”。
将本实验IAR生成的.out,导入到“STMStudio”工程,并且添加监测变量到两个“VarViewer”窗口。为什么用两个窗口,因为ADC有采样值变化与转矩不在同一范围,如果在同一窗口,一个波形幅度太小。
运行程序后,在“Workbench”的“Plotter”绘图窗口观测电机速度,转到电位器,电机速度变化,相应波形显示有变化。
同时在“STMStudio”的窗口中也将观察到如下图变化波形。
至此,完成了开放性实验的转矩控制电机,并在“STMStudio”观察ADC、转矩任务。(之后,重开贴,整理一下“STMStudio”使用,其中会有一个小贴士分享。) 按照惯例,工程附上:
P-NUCLEO-IHM001_STMStudio.rar
(9 MB, 下载次数: 79)
|
![]() ![]() ![]() ![]() |
微信公众号
手机版