本帖最后由 eydj2008 于 2014-3-17 20:28 编辑
视频演示:
SPWM控制 L6205 已经含有死区
http://yonyon.taobao.com
请新手 没看懂的时候别乱拍砖,
老手 可以交流交流 ,
如果有兴趣的 可以交流交流 给大家一个步进电机开发平台。让大家走得更好 更远。
速度算法基于此
开源项目
1.FSMC +TFT
2.步进电机 多个步进电机控制算法 多线程概念
3.步进电机细分控制算法 速度控制算法
4.最关键的算法是矢量控制,需要时可以自己计算惯量。
|
18
|
|
|
|
void TIM6_IRQHandler(void) // 采样时间到,中断处理函数
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)//更新中断
{
frequency1=1000000/period_TIM4 ; //通过捕获的波形的周期算出频率
frequency2=1000000/period_TIM1 ;
frequency3=1000000/period_TIM2 ;
frequency4=1000000/period_TIM5 ;
/********PID1处理**********/
PID1.sum_error+=(incPIDcalc(&PID1,frequency1)); //计算增量并累加
pwm1=PID1.sum_error*4.6875 ; //pwm1 代表将要输出PWM的占空比
frequency1=0; //清零
period_TIM4=0;
/********PID2处理**********/
PID2.sum_error+=(incPIDcalc(&PID2,frequency2)); //计算增量并累加 Y=Y+Y'
pwm2=PID2.sum_error*4.6875 ; //将要输出PWM的占空比
frequency2=0;
period_TIM1=0;
/********PID3处理**********/
PID3.sum_error+=(incPIDcalc(&PID3,frequency3)); //常规PID控制
pwm3=PID3.sum_error*4.6875 ; //将要输出PWM的占空比
frequency3=0;
period_TIM2=0;
/********PID4处理**********/
PID4.sum_error+=(incPIDcalc(&PID4,frequency4)); //计算增量并累加
pwm4=PID4.sum_error*4.6875 ; //将要输出PWM的占空比
frequency4=0;
period_TIM5=0;
}
TIM_SetCompare(pwm1,pwm2,pwm3,pwm4); //重新设定PWM值
TIM_ClearITPendingBit(TIM6, TIM_IT_Update); //清除中断标志位
}
|
|
|
|
|
感谢楼主 ![](https://staticbbs.elecfans.com/static/image/smiley/default/loveliness.gif)
|
|
|
|
|
![](https://staticbbs.elecfans.com/static/image/smiley/default/smile.gif) ![](https://staticbbs.elecfans.com/static/image/smiley/default/smile.gif) 谢谢楼主
|
|
|
|
|
STM32F103VCT6+L6205 H桥 驱动步进电机+开源 感谢分享
|
|
|
|
|