关于正弦曲线的的sin值我用了公式法和采样点的方式,还没弄懂这两种的优劣,希望求解 首先我用一个时钟输出三路PWM 然后在时钟中断中改变占空比,因为需要相差120,所以就将三路PWM的起始占空比改变位正选线上相差为120的点,然后通过累加的方式,逐步改变占空比 TIM4->CCR1=((sin(2*3.1415926/NUM*PWMch1)+1)*times); TIM4->CCR2=((sin(2*3.1415926/NUM*PWMch2)+1)*times); TIM4->CCR3=((sin(2*3.1415926/NUM*PWMch3)+1)*times); 这是用公式改变的方式,其中NUM为采样点个数,PWMch1表示累加数(需要循环),times是倍数 我改变速度的方式 if(count%T==0&&flag==0) //每T次中断改变一次占空比 count是每次中断+1 在0和采样点数之间循环,T表示T次中断后改变一次占空比,我用这种方式条件速度,自己想的,不知道大家是怎么调节的,因为后面涉及到PID条件,我这种方式总决定有些问题,忘指教 |
兴许还有电机控制库,会支持更复杂的算法。