主题中讨论的其他器件: MOTORWARE、 controlSUITE
工具/软件:Code Composer Studio
尊敬的所有人:
我正在为两个电机开发速度控制。 我将 LAUNCHXL-f28069m 与两个 BOOSTXL-DRV8305EVM 搭配使用。 我使用的程序是 motorware 的 proj_lab06e。
目标是通过模拟输入电压0–3.3V 在外部调节速度。 最大 速度为5krpm。
在源代码“proj_lab06e”中,提供了几个函数。
程序代码摘录:
(使用此代码、我得到的分辨率为1krpm。 即、我只有5种速度:1krpm、2krpm、3krpm、4krpm 和5krpm。)
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_14); //读取 ADC 设置值
pAdcData->DCBus =值;//保存 ADC 值
值=_IQmpy (gAdcData[HAL_MTR2].DCBus、_IQ (0.0012820512820513)); //最大值 速度= 5krpm、最大 ADC 值3900 -> 5/3900 = 0.00128205...
gMotorVars[HAL_MTR1].SpeedRef_KRPM =_IQ (值);
使用另一个代码脚本可以获得40rpm 的分辨率。 但该分辨率也太低。 (但我认为这不是正确的表示法)
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_14);
refvalue =_IQmpy (value、_IQ (8));
pAdcData->DCBus =_IQmpy (refvalue、_IQ (0.004));
refValue =_IQmpy (_IQ (1)、gAdcData[HAL_MTR2].DCBus);
gMotorVars[HAL_MTR1].SpeedRef_krpm =_IQmpy (_IQ (refValue)、gSpeed_Hz_TO_krpm_SF[HAL_MTR1]*1.31);
gMotorVars[HAL_MTR1].SpeedRef_KRPM =计算值;
我知道“值”是一种_IQ 类型,范围为127.999。 -128、分辨率约为0.000 000 060。
但我的怀疑是,我只能计算“整数”:
127 = 5krpm
126 = 4.96krpm
125 = 4.92krpm
因为我无法实现例如125.5 = 4.941krpm。 我出了什么问题?
要获得更高的分辨率(例如5rpm)、我需要做什么? 您能给我一个解决这个问题的建议吗?
我完全使用 proj_lab06e、基本上我更改了:
proj_lab06e.c >第713–749行
hal_2mtr.h >第681–710行
文件已附加。
此外、电机是我自己的电机-没有标准电机。 实际上连接了两个电机。 只会观察/测量一个电机、另一个电机获得与观察到的电机相同的参数和值。 因此、这很好。
提前感谢大家。