标题: stm32f103rct6单片机测量电机的正反转和速度,可以进行pid控制速度 源程序 [打印本页]

作者: wyyxz    时间: 2022-4-21 09:01
标题: stm32f103rct6单片机测量电机的正反转和速度,可以进行pid控制速度 源程序
使用stm32f103rct6测量电机的正反转和速度,可以进行pid控制速度

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "timer.h"
  5. #include "usart.h"

  6. uint16_t Qian_Count,Hou_Count;
  7. uint8_t flag;
  8. float speed;
  9. char str[100];
  10.   
  11. int main(void)
  12. {
  13.         //NVIC_Config();
  14.          TIM3_Init( 0xffff-1, 0x00);
  15.          TIM2_Init(999 , 7199);
  16.          
  17.         //TIM_Init();
  18.         delay_init();                     //延时函数初始化
  19.          uart_init(9600);         //串口初始化波特率为9600
  20.         LED_Init();                          //初始化与LED连接的硬件接口
  21.   while(1)
  22.         {
  23.                 sprintf(str,"speed :%.3f\r\n",speed);
  24.                 printf(str);
  25.                 delay_ms(100);        

  26.         }        

  27. }
  28. void TIM3_IRQHandler(void)
  29. {
  30.         if(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET)
  31.         {
  32.                  TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除标志位
  33.                         flag++;         
  34.         }
  35. }

  36. //定时器2的中断函数
  37. void TIM2_IRQHandler(void)
  38. {
  39.         if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
  40.         {
  41.                  TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除标志位
  42.         

  43.                 Qian_Count = TIM3->CNT;
  44.                 speed=(10*(flag*0xffff+Qian_Count-Hou_Count)/4)/210;

  45.                 flag = 0;
  46.                 Hou_Count=Qian_Count;         
  47.         }
  48. }
复制代码


那么问题来了,如何加入pid:
编码器.7z (191.15 KB, 下载次数: 61)


作者: 564988996    时间: 2023-7-14 16:31
如何加入pid




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