Image
Image

花间一壶酒sd

+ 关注

粉丝 2     |     主题 101     |     回帖 1219

stm32直流电机PID控制hal库(Cubemx)
2023-11-13 10:41
  • ST MCU
  • 78
  • 2800
  ......  
  随后在control.c文件中进行编写:  
  注意主函数中原来的代码 在中断服务函数(在it.c)中只打印现在的脉冲数,并加入Control_function(); 函数 ...  
  PI控制速度 简单验证并调试 在user文件夹下创建control.h和control.c并放入keil文件中 在main.c文件中加入 ...  
  在rpm=encoder_count/13.0/10.0/4.06000;中 13为旋转一圈所产生的脉冲数,即脉冲数/转(Pulse Per Revolutio ...  
  为了减少误差,以及防止引入浮点数等问题,我建议在底层层面上都使用脉冲数。 下面我们通过编写相关函数来 ...  
  然后将线连接在编码器的输出口: (保证此时电机是正传)此时串口打印出来的数据可能是很大数据,也可能是 ...  
  ......  
  主程序中保持不变,我们在it.c(中断文件),最下方找到void TIM3_IRQHandler(void) 函数我们将在这里写相关 ...  
  开启定时器以及编码器:  
  这里我们需要这个文件的上方加入#include 并在魔法棒里面包括微库:  
  ......  
  用户代码编写 由于用到了usart输出为了方便起见我们加入微库中的printf函数,我们为他重定义一下 在usart.c ...  
  霍尔编码器输出说明 在本实验中由于霍尔编码器的输出的高电平为5v为了保护单片机我们这里使用一个及其简单 ...  
  串口发送配置 由于我们现在需要通过串口打印出相应的代码,所以我们加入usart ...  
  这里我们这样配置是为了每10ms(及100HZ)检测速度;并且要打开中断(NVIC)  
  定时器中断配置 我们还需再打开一个定时器用来计时间隔  
  霍尔编码器会输出两路方波信号,如果只在通道A的上升沿计数,那就是1倍频;通道A的上升、下降沿计数,那就 ...  
  如图所示我们打开一个新的定时器(因为stm32是不允许同一个定时器又用到pwm输出功能和编码器功能,所以开一 ...  
  编码器encouder配置  
2
3
近期访客