标题: STM32电机调速PID参考源程序 [打印本页]

作者: 絮桡梦境    时间: 2018-4-13 22:09
标题: STM32电机调速PID参考源程序
STM32电机调速PID程序参考

单片机源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "PWM.h"
  5. #include "stm32f10x_tim.h"
  6. #include "key.h"
  7. #include "pid.h"

  8. //捕获TIM4通道二PB7的频率和占空比
  9. //PA8输出PWM驱动脉冲
  10. //按键一设置初始转速为3000;按键二 增加1000转速 按键3 降低1000转速
  11. extern void TIM3_PWM_Init(u16 arr,u16 psc);
  12. extern void TIM4_PWMINPUT_INIT(u16 arr,u16 psc);
  13. extern u16 PWM0_TEMP;
  14. extern u16 period;
  15. extern u16 duty ;
  16. extern u8 CollectFlag ;
  17. float SetSpeed;            //定义设定值
  18. float ActualSpeed;        //定义实际值
  19. float err;                //定义偏差值
  20. float err_next;            //定义上一个偏差值
  21. float err_last;            //定义最上前的偏差值
  22. float incrementSpeed;
  23. float Kp,Ki,Kd;
  24. unsigned int rpm_set;
  25. //Mini STM32开发板范例代码8

  26. int main(void)
  27. {
  28.          u8 b,c;       
  29.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);       

  30.          PID_init();
  31.         KEY_Init();
  32.         SystemInit();
  33.         delay_init();                             //延时初始化
  34.         NVIC_Configuration();          //中断配置
  35.         uart_init(9600);                                //串口初始化
  36.         DIR_Init();
  37.         TIM4_PWMINPUT_INIT(0xffff,72-1);   //pwm输入初始化以1M的频率捕捉
  38.   TIM1_PWM_Init(1000-1,20);             //pwm频率调节
  39.   //TIM_SetCompare1(TIM1,2000);            //初始转速设定
  40.          delay_ms(300);
  41.          delay_ms(1000);
  42.          rpm_set=3000;                             //设转速给定
  43.    TIM3_Int_Init(50000,72-1);               //pid运算进中断速率设置
  44. //TIM_SetCompare1(TIM1,800);                  
  45.                 while(1)
  46.         {   
  47.                 b=KEY_Scan(0);
  48.                         delay_ms(100);
  49.                   if(1)
  50.                         { //USART_SendData(USART1,'a');
  51.                                 //USART_SendData(USART1,(u8)err);
  52. //                                printf("duty          = %d%% \r\n",duty*100/period);                                //打印占空比
  53. //                                printf("s         = %dr/min\r\n",3750000/period);//打印周期另一种叫法
  54.                        
  55.                                 if(period<1.0)
  56.                                         printf("#%f",0.0);
  57.                           else printf("n=%d\n",3750000/period);    //打印速度值
  58.                        
  59.                         }
  60.             if(b==1) rpm_set=3000;                  //设转速
  61.                        
  62.                         if(b==2) rpm_set=rpm_set+1000;
  63.                         if(b==3) rpm_set=rpm_set-1000;
  64.                         if(rpm_set>=9000) rpm_set=9000;
  65.                         if(rpm_set<=1000) rpm_set=1000;
  66.    
  67.         }         
  68. }


复制代码

所有资料51hei提供下载:
捕获.rar (289.75 KB, 下载次数: 729)



作者: 一沙鸥H    时间: 2018-5-25 14:11
好资料,51黑有你更精彩!!!

作者: 一波三折    时间: 2018-6-2 15:37
挺不错的
作者: lzts88    时间: 2018-6-2 20:50
谢谢分享         
作者: 929186136    时间: 2018-7-15 21:05
这个资料我正好需要,谢谢楼主
作者: 929186136    时间: 2018-7-15 21:06
谢谢楼主
作者: 梦幻2呱呱    时间: 2018-7-16 14:55
谢谢分享
作者: 55555ss    时间: 2018-7-17 14:23
不错谢谢楼主
作者: xuning0000    时间: 2018-7-28 21:28
太需要你这资料了
作者: 1464531300    时间: 2018-8-18 15:09
很好的资源
作者: 1464531300    时间: 2018-8-18 15:13
我很需要这个资源,求楼主发我邮箱1464531300@qq.com,学习学习PID控制,谢谢了!
作者: zhujiales    时间: 2018-8-21 11:29
不错不错,最近正需要这方面的东西
作者: fenglibo    时间: 2018-8-30 13:48
51黑好资料。求楼主发我邮箱837690912@qq.com,学习学习PID控制,谢谢了!
作者: baibaibai123    时间: 2019-3-24 20:10
对应的io接口可以说一下吗
作者: 我去123    时间: 2019-5-8 15:54
楼主可以给我发一份吗
作者: 51黑点子56    时间: 2019-5-10 11:35
请问资料里有上面那些头文件么
作者: z6509103    时间: 2019-5-18 14:55
感谢分享
作者: 辰宿列张    时间: 2019-5-23 10:17
正好需要,感谢楼主的分享
作者: LIGHTING006    时间: 2019-7-12 16:59
谢谢楼主
作者: lemonluilui    时间: 2019-7-20 20:38
谢谢
作者: ultra梦幻雨    时间: 2019-8-1 09:20
感谢分享
作者: 人之颠    时间: 2019-9-21 22:29
新人报道,下载来学习下
作者: hqgboy    时间: 2019-9-22 08:14
谢谢分享。。。。
作者: Liqipeng0822    时间: 2019-10-16 17:11
谢谢楼主分享
作者: witp1    时间: 2019-11-11 21:24
很好的资源
作者: puresilicon    时间: 2019-12-14 00:24
这是个单环pid,实际意义不大




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1