前言
電機(jī)控制單電阻采樣機(jī)制是在一個PWM波形內(nèi)采集兩相電流ADC數(shù)據(jù),但某些扇區(qū)邊界條件下只能獲得一路電流ADC數(shù)據(jù), 需要對PWM波形進(jìn)行變形用于構(gòu)造電流采樣區(qū)域。
背景介紹
根據(jù)電機(jī)控制拓?fù)浣Y(jié)構(gòu),單電阻采樣在一個PWM控制周期內(nèi)可以取得兩相電流數(shù)據(jù):
在扇區(qū)邊沿?zé)o法獲得兩相電流信號。
波形產(chǎn)生
ST專利的方法是在波形的中間部分產(chǎn)生變形波形,在變形后的波形上就可以得到兩相電流ADC數(shù)據(jù);
當(dāng)然還有目前比較流行的波形移位方法也可以做到相同效果。波形如下:
STM32系列單片機(jī)Timer有足夠的功能,可以產(chǎn)生上面兩種波形,機(jī)制如下:
PWM波中間變形
1. 設(shè)定CCR4的DMA通道,并且設(shè)定此時Timer1的preload為禁止?fàn)顟B(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點(diǎn)上將CCR1數(shù)據(jù)直接修改為周期數(shù)據(jù)+1;
4. 在2點(diǎn)上將CCR1數(shù)據(jù)修改為CCR1’的數(shù)據(jù);
5. 時間計算上按照上面的圖示設(shè)定,中間凹陷時間為兩邊補(bǔ)充波形時間之和。
波形移位變形
1. 設(shè)定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點(diǎn)上更新CCR1數(shù)據(jù)為CCR1數(shù)據(jù);
3. 在2點(diǎn)上更新CCR1數(shù)據(jù)為CCR1’數(shù)據(jù);
4. 保證前后的移位時間相同。
-
電機(jī)控制
+關(guān)注
關(guān)注
3526文章
1855瀏覽量
268370 -
STM32
+關(guān)注
關(guān)注
2266文章
10871瀏覽量
354789 -
PWM波形
+關(guān)注
關(guān)注
0文章
7瀏覽量
10206
原文標(biāo)題:電機(jī)控制單電阻采樣PWM變形信號的產(chǎn)生
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論