请选择 进入手机版 | 继续访问电脑版
搜索
查看: 4661|回复: 7

[原创] 【STM32电机培训】——3、任务1电机设定速度、定时启动停止

[复制链接]
  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2018-9-9 20:54:19 | 显示全部楼层 |阅读模式
    本帖最后由 toofree 于 2018-9-14 08:47 编辑

    【STM32电机培训】——3、任务1电机设定速度、定时启动停止

    目标任务:设定速度3000转,启动工作10秒,停止工作5秒;再启动,再停止,速度保持不变,如此往复。

    00.jpg


    在电机参数测试时,得到过电机的参数。
    【STM32电机培训】——1、实验电机参数测量及极数对解疑
    https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617371&fromuid=307297
    (出处: 意法半导体STM32/STM8技术社区)
    01.jpg

    本贴实验工程基于前一贴工程进行修改。前一贴链接:【STM32电机培训】——2、生成电机样例程序stmcx、ioc、IAR工程
    https://www.stmcu.org.cn/module/foru ... 7427&fromuid=307297
    (出处: 意法半导体STM32/STM8技术社区)

    将电机工程设置中的参数按照,之前测得的参数设置。
    02.jpg


    由于最大电流有变化,因此电机驱动管理中的启动参数也得对应做出改变,否则不能生成新的工程。
    03.jpg


    本实验,打算顺带闪个灯,从原理图看出,X-NUCLEO-IHM07M1板上的LED灯D11,使用的是PB2,高电平有效点亮。
    05.jpg


    对照NUCLEO-F302R8板原理图,确认是PB2无误。同时在NUCLEO-F302R8板上本身也有一路LED,用的是PB13,高电平有效点亮。
    04.jpg


    打开电机工程下的,stm32cubemx工程文件“SDK50x-P-NUCLEO-IHM001-BullRunning.ioc”
    06.jpg


    在IO管脚图中设置,PB2为输出,同时更改别名为“LED_Motor”,程序中使用更直观。
    07.jpg


    检查IO配置,确认LED_motor管脚模式设置正确无误。
    08.jpg


    重新生成IAR应用工程。成功生成后,打开工程。
    09.jpg


    在生成的工程中,main.h中可以找到,LED_motor的相关管脚宏定义。
    10.jpg


    程序中使用GPIO状态翻转,来闪灯。
    11.jpg


    找到设置电机速度参数的函数MC_ProgramSpeedRampMotor1()在mc_api.c中
    12.jpg


    在主函数main.c中包含进“mc_api.h”头文件,一定要放在“/* USER CODE BEGIN Includes */”与“/* USER CODE END Includes */”,否则重新生成工程文件时,将会被冲掉。
    13.jpg


    定义循环变量“i”。同上,用户添加内容,一定要放在“/* USER CODE BEGIN N */”与/* USER CODE BEGIN N */,之后同理。
    14.jpg


    添加电机转速参数设置函数“MC_ProgramSpeedRampMotor1(3000/6,1000);”。
    引入switch语句,来进行电机启动、停止控制。这样分时工作,可以使用LED正常闪灯。
    15.jpg


    编译IAR工程,并下载最新代码(Ctrl+D),全速跑程序(F5)。


    打开“Motor Profiler 5.0.3”软件,通过串口连接电机开发套件,打开“监控”窗口。
    20.jpg


    “监控”窗口下,在打开“Plotter”绘图窗口。可以看到,电机启动一段时间,停止一段时间。但是时间宽度好像有点问题,D11闪烁频率为1Hz。经查看,启动5秒,停止2.5秒。原因是SysTick的的基础时钟为500us。
    16.jpg


    修改代码,改为每隔2000个单位,一个节拍。修改后D11闪烁为0.5Hz,符合预期。
    17.jpg


    重新运行程序,查看“Plotter”绘图窗口波形,这次时间正确无误。
    18.jpg


    main.c中修改过的代码,贴入:
    1. #include "main.h"
    2. #include "stm32f3xx_hal.h"
    3. #include "motorcontrol.h"

    4. /* USER CODE BEGIN Includes */

    5. #include "mc_api.h"

    6. /* USER CODE END Includes */

    7. /* Private variables ---------------------------------------------------------*/
    8. ADC_HandleTypeDef hadc1;

    9. DAC_HandleTypeDef hdac;

    10. TIM_HandleTypeDef htim1;

    11. UART_HandleTypeDef huart2;

    12. /* USER CODE BEGIN PV */
    13. /* Private variables ---------------------------------------------------------*/

    14. /* USER CODE END PV */

    15. /* Private function prototypes -----------------------------------------------*/
    16. void SystemClock_Config(void);
    17. static void MX_GPIO_Init(void);
    18. static void MX_ADC1_Init(void);
    19. static void MX_DAC_Init(void);
    20. static void MX_TIM1_Init(void);
    21. static void MX_USART2_UART_Init(void);
    22. static void MX_NVIC_Init(void);

    23. void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
    24.                                 

    25. /* USER CODE BEGIN PFP */
    26. /* Private function prototypes -----------------------------------------------*/

    27. /* USER CODE END PFP */

    28. /* USER CODE BEGIN 0 */

    29. /* USER CODE END 0 */

    30. /**
    31.   * @brief  The application entry point.
    32.   *
    33.   * @retval None
    34.   */
    35. int main(void)
    36. {
    37.   /* USER CODE BEGIN 1 */
    38.   int i=0;
    39.   //int dir_flag = 0;         // 1正转,-1反转,0停止
    40.   //int run_cnt=0

    41.   /* USER CODE END 1 */

    42.   /* MCU Configuration----------------------------------------------------------*/

    43.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    44.   HAL_Init();

    45.   /* USER CODE BEGIN Init */

    46.   /* USER CODE END Init */

    47.   /* Configure the system clock */
    48.   SystemClock_Config();

    49.   /* USER CODE BEGIN SysInit */

    50.   /* USER CODE END SysInit */

    51.   /* Initialize all configured peripherals */
    52.   MX_GPIO_Init();
    53.   MX_ADC1_Init();
    54.   MX_DAC_Init();
    55.   MX_TIM1_Init();
    56.   MX_USART2_UART_Init();
    57.   MX_MotorControl_Init();

    58.   /* Initialize interrupts */
    59.   MX_NVIC_Init();
    60.   /* USER CODE BEGIN 2 */
    61.   MC_ProgramSpeedRampMotor1(3000/6,1000);
    62.    
    63.   /* USER CODE END 2 */

    64.   /* Infinite loop */
    65.   /* USER CODE BEGIN WHILE */  
    66.   while (1)
    67.   {
    68.   /* USER CODE END WHILE */

    69.   /* USER CODE BEGIN 3 */
    70.    
    71.     switch (i)
    72.     {
    73.       case 0:
    74.         MC_StartMotor1();
    75.         break;
    76.       case 10:
    77.         MC_StopMotor1();
    78.         break;
    79.       default:
    80.         break;
    81.     }
    82.    
    83.     i++;
    84.     i %= 15;   
    85.     HAL_Delay(2000);    //systick定时基准为500us,所以2000为1秒
    86.    
    87.     HAL_GPIO_TogglePin(LED_Motor_GPIO_Port, LED_Motor_Pin);

    88.   }
    89.   /* USER CODE END 3 */

    90. }
    复制代码


    对于电机参数设置、启动、停止操作,还是比较简单的。这主要得力于ST的工程师,把大量繁杂的代码打包,给用户的就是非常明了的控制函数。

    按照惯例,程序工程附上:
    P-NUCLEO-IHM001_StartStop.rar (8.98 MB, 下载次数: 66)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    29

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-11-6
    发表于 2018-11-2 17:29:22 来自手机 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    29

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-11-6
    发表于 2018-11-2 17:29:43 来自手机 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2018-11-28
    发表于 2018-11-13 23:16:53 | 显示全部楼层
    自动生成IAR工程文件的软件叫啥名啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
     楼主| 发表于 2018-11-14 00:04:19 | 显示全部楼层
    本帖最后由 toofree 于 2018-11-14 00:05 编辑
    惜缘1 发表于 2018-11-13 23:16
    自动生成IAR工程文件的软件叫啥名啊

    stm32cubemx 20181114000527.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    43

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2022-2-5
    发表于 2019-7-2 10:44:46 | 显示全部楼层
    好资料,非常感谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37

    主题

    551

    帖子

    62

    蝴蝶豆

    金牌会员

    最后登录
    2022-8-16
    发表于 2019-7-2 10:47:01 | 显示全部楼层

    好资料,非常感谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37

    主题

    551

    帖子

    62

    蝴蝶豆

    金牌会员

    最后登录
    2022-8-16
    发表于 2019-7-2 10:47:17 | 显示全部楼层

    好资料,非常感谢!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-3-29 22:11 , Processed in 1.189542 second(s), 40 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表