驱动三相有感无刷直流电机

[复制链接]
972|2
 楼主| stm32xiaobai 发表于 2017-11-28 09:41 | 显示全部楼层 |阅读模式
谁能给点三相有感无刷直流电机的资料啊,做出来需要手转动一下,换了个57直流无刷有感电机也是一样的,多半是程序问题,可不知道出错在哪里。。。。。求大神科普下
 楼主| stm32xiaobai 发表于 2017-11-28 09:42 | 显示全部楼层
main函数
  1. #include "stm32f0xx.h"
  2. #include "delay.h"
  3. #include "led.h"
  4. #include "USART1.h"
  5. #include "PWM.h"

  6. void Motor_Turn_Config(uint16_t arr);                //µç»úת¶¯Æô¶¯ÏàÐòÉèÖÃ
  7. void Motor_TurnON(uint16_t arr);           //µç»úÆô¶¯
  8. int Motor_TurnON_flag=1;
  9. uint16_t    Hall_Input_Data=0;
  10. int main(void)
  11. {
  12. //  delay_init();
  13.   LED_Init();
  14.   USART1_Init();
  15. //        TIM3_Int_Init(239,29);        
  16.         TIM3_PWM_Init(239, 19);
  17.         TIM15_PWM_Init(239,9);
  18. //        Motor_TurnON(100);
  19.   while (Motor_TurnON_flag)
  20.   {        
  21.                 //USART_SendData(USART1,Hall_Input_Data);
  22.                
  23.                 Motor_Turn_Config(239);
  24.   }
  25. }
  26. void Motor_Turn_Config(uint16_t arr)
  27. {
  28.         Hall_Input_Data=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13) << 1) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11)<<2 );
  29.         switch(Hall_Input_Data)
  30.   {        
  31.                 case 2:  
  32.                         TIM_SetCompare2(TIM3,arr);
  33.                                                 TIM_SetCompare3(TIM3,0);
  34.                                                 TIM_SetCompare4(TIM3,0);
  35.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  36.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_12);
  37.                
  38.             break;
  39.     case 3:
  40.             TIM_SetCompare2(TIM3,arr);
  41.                                                 TIM_SetCompare3(TIM3,0);
  42.                                                 TIM_SetCompare4(TIM3,0);
  43.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  44.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_13);
  45.                
  46.             break;
  47.     case 1:
  48.             TIM_SetCompare2(TIM3,0);
  49.                                                 TIM_SetCompare3(TIM3,arr);
  50.                                                 TIM_SetCompare4(TIM3,0);
  51.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  52.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_13);
  53.                
  54.             break;
  55.     case 5:
  56.                                                 TIM_SetCompare2(TIM3,0);
  57.                                                 TIM_SetCompare3(TIM3,arr);
  58.                                                 TIM_SetCompare4(TIM3,0);
  59.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
  60.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_11);
  61.                
  62.             break;
  63.     case 4:
  64.                                                 TIM_SetCompare2(TIM3,0);
  65.                                                 TIM_SetCompare3(TIM3,0);
  66.                                                 TIM_SetCompare4(TIM3,arr);
  67.             
  68.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
  69.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_11);
  70.                
  71.             break;
  72.     case 6:
  73.             TIM_SetCompare2(TIM3,0);
  74.                                                 TIM_SetCompare3(TIM3,0);
  75.                                                 TIM_SetCompare4(TIM3,arr);
  76.             
  77.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  78.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_12);
  79.                
  80.             break;
  81.     default:
  82. //                                                GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  83. //                                                TIM_SetCompare2(TIM3,0);
  84. //                                                TIM_SetCompare3(TIM3,0);
  85. //                                                TIM_SetCompare4(TIM3,0);
  86.                                                 break;
  87.         }

  88. }

  89. void Motor_TurnON(uint16_t arr)
  90. {
  91.         Hall_Input_Data=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13) << 1) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11)<<2 );
  92.         switch(Hall_Input_Data)
  93.   {        
  94.                 case 2:  
  95.                         TIM_SetCompare2(TIM3,arr);
  96.                                                 TIM_SetCompare3(TIM3,0);
  97.                                                 TIM_SetCompare4(TIM3,0);
  98.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  99.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_12);
  100.             break;
  101.     case 3:
  102.             TIM_SetCompare2(TIM3,arr);
  103.                                                 TIM_SetCompare3(TIM3,0);
  104.                                                 TIM_SetCompare4(TIM3,0);
  105.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  106.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_13);
  107.             break;
  108.     case 1:
  109.             TIM_SetCompare2(TIM3,0);
  110.                                                 TIM_SetCompare3(TIM3,arr);
  111.                                                 TIM_SetCompare4(TIM3,0);
  112.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  113.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_13);
  114.             break;
  115.     case 5:
  116.                                                 TIM_SetCompare2(TIM3,0);
  117.                                                 TIM_SetCompare3(TIM3,arr);
  118.                                                 TIM_SetCompare4(TIM3,0);
  119.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
  120.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_11);
  121.             break;
  122.     case 4:
  123.                                                 TIM_SetCompare2(TIM3,0);
  124.                                                 TIM_SetCompare3(TIM3,0);
  125.                                                 TIM_SetCompare4(TIM3,arr);
  126.             
  127.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
  128.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_11);
  129.             break;
  130.     case 6:
  131.             TIM_SetCompare2(TIM3,0);
  132.                                                 TIM_SetCompare3(TIM3,0);
  133.                                                 TIM_SetCompare4(TIM3,arr);
  134.             
  135.                                                 GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  136.                                                 GPIO_ResetBits(GPIOB , GPIO_Pin_12);
  137.             break;
  138.     default:
  139. //                                                GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
  140. //                                                TIM_SetCompare2(TIM3,0);
  141. //                                                TIM_SetCompare3(TIM3,0);
  142. //                                                TIM_SetCompare4(TIM3,0);
  143.                                                 break;
  144.         }
  145. }





山东电子小菜鸟 发表于 2017-11-28 20:59 | 显示全部楼层
是不是启动堵转了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

905

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部