利用机组末端的光电编码器获取转速信息
利用Brush-Less DC Motor的霍尔传感器信号获取换相码
对于换相码的获取,在TMS320F2812中,首先将对应的GPIO设置为捕获功能,要同时捕获霍尔传感器信号的上升沿和下降沿。当捕获到边沿信号后,在捕获中断服务子程序中将对应的管脚设置为GPIO功能,读取IO状态,获取换相码。退出中断服务程序之前恢复GPIO的捕获功能。
在利用TMS320F28335实现Brush-Less DC Motor控制时,对于霍尔传感器信号的捕获,该芯片的eCAP单元与TMS320F2812的捕获单元存在一定区别。TMS320F28335的捕获单元似乎更偏向于对捕获管脚输入信号变化时间的计算,我在手册中没有想到如何用TMS320F28335的捕获单元实现类似TMS320F2812捕获单元的功能。因此,我才用了GPIO外部中断方式获取换相字:
GPIO24 as source of XINT1 (source: GPIO0 ~ GPIO31) to capture Hall U
GPIO25 as source of XINT2 (source: GPIO0 ~ GPIO31) to capture Hall V
GPIO48 as source of XINT3 (source: GPIO32 ~ GPIO63) to capture Hall W
需要特别注意的是TMS320F28335的外部中断有7个:XINT1~XINT7,其中XINT1和XINT2只可以GPIO0 ~ GPIO31作为中断源,XINT3~XINT7只可以GPIO32 ~ GPIO63作为中断源。
还有一点需要注意,由于同一桥臂的一个开关管处于工作状态时,令一个开关管应处于关闭的状态,关闭开关管利用TMS320F28335 ePWM单元的AQCSFRC寄存器实现,该寄存器包含一个shadow寄存器,其装载条件由AQSFRC. RLDCSF(AQCSFRC Active Register Reload From Shadow Options)决定:
RLDCSF = 00 Load on event counter equals zero
RLDCSF = 01 Load on event counter equals period
RLDCSF = 10 Load on event counter equals zero or counter equals period
RLDCSF = 11 Load immediately
在代码中,应将RLDCSF设置为11,以避免出现同一桥臂两个开关管同时导通的现象。
以上观点欢迎大家指正。
利用TMS320F28335实现Brush-Less DC Motor控制的main函数源码如下:
以上代码截屏缺少的行为空行。
mangui zhang:
就当做学习啦 感谢分享
2812新产品不建议使用了