前言
電機控制單電阻采樣機制是在一個PWM波形內(nèi)采集兩相電流ADC數(shù)據(jù),但某些扇區(qū)邊界條件下只能獲得一路電流ADC數(shù)據(jù), 需要對PWM波形進行變形用于構造電流采樣區(qū)域。
背景介紹
根據(jù)電機控制拓撲結構,單電阻采樣在一個PWM控制周期內(nèi)可以取得兩相電流數(shù)據(jù):
在扇區(qū)邊沿無法獲得兩相電流信號。
波形產(chǎn)生
ST專利的方法是在波形的中間部分產(chǎn)生變形波形,在變形后的波形上就可以得到兩相電流ADC數(shù)據(jù);
當然還有目前比較流行的波形移位方法也可以做到相同效果。波形如下:
STM32系列單片機Timer有足夠的功能,可以產(chǎn)生上面兩種波形,機制如下:
PWM波中間變形
1. 設定CCR4的DMA通道,并且設定此時Timer1的preload為禁止狀態(tài);
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);
2. 在CCR4比較值部分產(chǎn)生DMA事件;
DMA_InitStructure.DMA_PeripheralBaseAddr= (uint32_t)(&(TIM1->CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr= (uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize= 2u;
….
TIM_DMACmd(TIM1,TIM_DMA_CC4,ENABLE);
3. 在1點上將CCR1數(shù)據(jù)直接修改為周期數(shù)據(jù)+1;
4. 在2點上將CCR1數(shù)據(jù)修改為CCR1’的數(shù)據(jù);
5. 時間計算上按照上面的圖示設定,中間凹陷時間為兩邊補充波形時間之和。
波形移位變形
1. 設定Timer1的update事件的DMA通道
DMA_InitStructure.DMA_PeripheralBaseAddr =(uint32_t)(&(TIM1->CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 2u;
……
TIM_DMACmd(TIM1,TIM_DMA_Update,ENABLE);
2. 在1點上更新CCR1數(shù)據(jù)為CCR1數(shù)據(jù);
3. 在2點上更新CCR1數(shù)據(jù)為CCR1’數(shù)據(jù);
4. 保證前后的移位時間相同。
-
電機控制
+關注
關注
3523文章
1848瀏覽量
268168 -
PWM
+關注
關注
114文章
5118瀏覽量
213164
原文標題:電機控制單電阻采樣PWM變形信號的產(chǎn)生
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論