
本帖最后由 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”使用,其中会有一个小贴士分享。) 按照惯例,工程附上: ![]() |
![]() ![]() ![]() ![]() ![]() |