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