3相BLDC,带有3个霍尔传感器,120度,2极对下图显示了这种情况:
我在微处理器的XOR模式下设置了一个定时器。PSC为[19 - 1],计数器周期为[10000 - 1],而定时器时钟为80MHz。我的电机最高转速为3000RPM。计时器设置为XOR模式,每次转换都会生成一个事件。根据STM32F407参考手册,在这种模式下,每次转换都会将CCR寄存器复位为0.这意味着如果我将该寄存器加6次,我应该得到一个完整的“电气旋转”或半个“物理旋转”,因为电机是2极对。我的问题: 我刚刚随机选择了计时器PSC和计数器周期的数字......这些数字将如何影响我的测量?例如,这些数字可以覆盖1到3000 RPM的速度吗?我在XOR ISR中有以下代码......这段代码有意义吗?
- <font size="4">static uint32_t speed = 0;
- static uint32_t time = 0;
- static int isMeasuring = 0;
- void XOR_ISR() {
- uint8_t state = readHallStateFromGPIO();
- if(state == 0b101 && isMeasuring == 0) {
- time = 0;
- isMeasuring = 1;
- time += TIM4->CCR1;
- } else if(isMeasuring == 1 && state != 0b101) {
- time += TIM4->CCR1;
- } else if(isMeasuring == 1 && state == 0b101) {
- time += TIM4->CCR1;
- speed = time;
- isMeasuring = 0;
- }</font>
复制代码这里,速度(假设我的代码是正确的,应该为整个霍尔传感器的时间段加上定时器值)。然后我将通过将频率转换为时间并将其转换为RPM,并因为极对而乘以2。它是否正确?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>