找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20096|回复: 39
打印 上一主题 下一主题
收起左侧

STM32简易直流电机速度环PID闭环控制源码

  [复制链接]
跳转到指定楼层
楼主
ID:263862 发表于 2017-12-19 19:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

基于STM32开发简易运动控制卡
开发者:JasonLin
STM32定时器功能介绍
  
定时器
  
  
计数分辨率
  
  
计数类型
  
  
预分频系数
  
  
DMA请求
  
  
捕获/比较通道
  
  
编码器
  
接口
  
  
PWM
  
生成
  
  
TIM1
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM8
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM2
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM3
  
  
16
  
  
up/down/
  
both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM4
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM5
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM6
  
  
16
  
  
up
  
  
1-65536
  
  
yes
  
  
0
  
  
no
  
  
no
  
  
TIM7
  
  
16
  
  
up
  
  
1-65536
  
  
yes
  
  
0
  
  
no
  
  
no
  
TIM1TIM8为高级定时器
TIM6TIM7为基本定时器
TIM2TIM3TIM4TIM5为通用定时器
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
STM32定时器的通道/引脚分配
  
定时器
  
  
TIM1
  
  
TIM2
  
  
TIM3
  
  
TIM4
  
  
TIM5
  
  
TIM8
  
  
CH1引脚
  
  
PA8
  
  
PA0
  
  
PA6
  
  
PB6
  
  
PA0
  
  
PC6
  
  
CH2引脚
  
  
PA9
  
  
PA1
  
  
PA7
  
  
PB7
  
  
PA1
  
  
PC7
  
  
CH3引脚
  
  
PA10
  
  
PA2
  
  
PB0
  
  
PB8
  
  
PA2
  
  
PC8
  
  
CH4引脚
  
  
PA11
  
  
PA3
  
  
PB1
  
  
PB9
  
  
PA3
  
  
PC9
  
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
STM32定时器的通道/引脚重映射
file:///Z:\TEMP\msohtmlclip1\01\clip_image002.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image004.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image006.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image008.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image010.jpg
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM1TIM8定时器的功能包括:
16位向上、向下、向上/下自动装载计数器
16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为165535之间的任意数值
4个独立通道: 输入捕获 输出比较 PWM生成(边缘或中间对齐模式) 单脉冲模式输出  
死区时间可编程的互补输出
使用外部信号控制定时器和定时器互联的同步电路  
允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器  
刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态
如下事件发生时产生中断/DMA 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) 输入捕获 输出比较 刹车信号输入  
支持针对定位的增量(正交)编码器和霍尔传感器电路  
触发输入作为外部时钟或者按周期的电流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM2TIM3TIM4TIM5定时器功能包括:  
● 16
位向上、向下、向上/向下自动装载计数器  
● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为165536之间的任意数值  
● 4个独立通道:输入捕获输出比较 ─ PWM生成(边缘或中间对齐模式)─ 单脉冲模式输出  
使用外部信号控制定时器和定时器互连的同步电路  
如下事件发生时产生中断/DMA更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获输出比较  
支持针对定位的增量(正交)编码器和霍尔传感器电路  
触发输入作为外部时钟或者按周期的电流管理 165536之间的任意数值  
使用外部信号控制定时器和定时器互连的同步电路  
触发输入作为外部时钟或者按周期的电流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM6TIM7定时器的主要功能包括:   
● 16位自动重装载累加计数器  
● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为165536之间的任意数值分频  
触发DAC的同步电路   :此项是TIM6/7独有功能
在更新事件(计数器溢出)时产生中断/DMA请求
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
开发目标1TIM14个通道生成PWMCH1PWM1  CH2PWM2  
                                     CH3PWM3  CH4PWM4
           TIM84个通道生成PWMCH1PWM5  CH2PWM6  
                                      CH3PWM7  CH4PWM8
注:PWM1PWM2 为一组,控制直流减速电机1
PWM3PWM4 为一组,控制直流减速电机2
PWM5PWM6 为一组,控制直流减速电机3
PWM7PWM8 为一组,控制直流减速电机4
PWM1PWM3PWM5PWM7作为电机正向脉冲输出,占空比为万分比)
PWM2PWM4PWM6PWM8作为电机反向脉冲输出,占空比为万分比)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
开发目标2TIM7作为定时器中断,产生固定的时间间隔,便于计算电机及落地码盘的速度(单位时间间隔脉冲增量)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
开发目标3TIM2TIM3TIM4TIM5作为编码器接口,读取编码器的旋转产生的脉冲数
TIM2CH1作为编码器1A相的输入,CH2作为编码器1B相的输入
TIM3CH1作为编码器2A相的输入,CH2作为编码器2B相的输入
TIM4CH1作为编码器3A相的输入,CH2作为编码器3B相的输入
TIM5CH1作为编码器4A相的输入,CH2作为编码器4B相的输入
(由于TIM2TIM5CH1CH2共用引脚PA0PA1,所以需要把TIM2
CH1CH2重映射到引脚PA15PB3)
(PA15PB3JTAG接口中的两只引脚 ,重映射前先把JTAG口关闭
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)//关闭JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, DISABLE)//打开JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ,ENABLE);//关闭JTAG
同时打开SWD
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
开发目标42.3TFT液晶显示屏显示电机或码盘的速度(单位时间间隔的脉冲增量)和码盘脉冲总数
未完待续、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

电机转速控制
单片机源程序如下:
  1. /***********************************************************************************
  2. Author     :JasonLin
  3. version           :V1.1
  4. Date       :2014/8/2
  5. Description:Based on the STM32 Micro Control Unit design simple movement controller  
  6. ************************************************************************************/
  7. #include "stm32f10x.h"
  8. #include "stm32f10x_conf.h"
  9. #include "UserConfiguration.h"
  10. #include "UserFunction.h"
  11. #include "UserDelay.h"
  12. #include "lcd.h"
  13. #include "led.h"

  14. extern s32 CNT2,CNT3,CNT4,CNT5,V2,V3,V4,V5,rcnt2,rcnt3,rcnt4,rcnt5;

  15. int main(void)
  16. {        
  17.           SystemInit();

  18.         UserNVIC_Configuration();

  19.         UserTIM_Configuration();   

  20.         UserLed_Configuration();

  21.         UserDelay_Configuration();

  22.         while(1)
  23.         {                                                               
  24.            delay_ms(200);LED1=!LED1;delay_ms(200);//LED1提示系统正常运行
  25.         }        
  26.         
  27.         
  28.          
  29. }

复制代码

所有资料51hei提供下载:
基于战舰STM32开发简易直流电机速度环PID闭环控制.rar (477.73 KB, 下载次数: 865)


评分

参与人数 5黑币 +36 收起 理由
songhetai + 21 很给力!
shybody001 + 5
emmmmm + 5 赞一个!
1512 + 3
lzts88 + 2 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏21 分享淘帖 顶12 踩
回复

使用道具 举报

沙发
ID:228357 发表于 2018-5-21 19:38 | 只看该作者
好东西,没有人评论下?
回复

使用道具 举报

板凳
ID:88919 发表于 2018-5-22 23:04 | 只看该作者
好东西 下来学习玩玩
回复

使用道具 举报

地板
ID:228452 发表于 2018-5-26 04:53 | 只看该作者
Display the speed of the motor or encoder would be nice
回复

使用道具 举报

5#
ID:197515 发表于 2018-5-26 19:41 | 只看该作者
厉害了。流明
回复

使用道具 举报

6#
ID:218529 发表于 2018-6-2 17:16 | 只看该作者
学习啦 顶一个个
回复

使用道具 举报

7#
ID:160072 发表于 2018-6-21 10:36 | 只看该作者
很厉害哦 学习了
回复

使用道具 举报

8#
ID:320670 发表于 2018-7-20 16:38 | 只看该作者
值得参考
回复

使用道具 举报

9#
ID:320670 发表于 2018-7-20 16:38 | 只看该作者
值得参考
回复

使用道具 举报

10#
ID:347083 发表于 2018-7-26 00:10 | 只看该作者
已下载,谢谢
回复

使用道具 举报

11#
ID:382485 发表于 2018-8-3 14:44 | 只看该作者

好东西,我来好评
回复

使用道具 举报

12#
ID:375234 发表于 2018-8-6 22:00 | 只看该作者
感谢分享,下下来看看
回复

使用道具 举报

13#
ID:284462 发表于 2018-8-8 11:56 | 只看该作者

感谢分享,下下来看看
回复

使用道具 举报

14#
ID:286687 发表于 2018-8-8 13:58 | 只看该作者
想知道楼主PID怎么调的 最近调四轴的PID调得想死
回复

使用道具 举报

15#
ID:77604 发表于 2018-8-8 16:16 | 只看该作者
赞  赞  赞  楼主厉害  
回复

使用道具 举报

16#
ID:380389 发表于 2018-8-8 19:04 来自手机 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

17#
ID:387516 发表于 2018-8-18 11:36 | 只看该作者
厉害哦 学习了
回复

使用道具 举报

18#
ID:365823 发表于 2018-9-16 18:57 | 只看该作者
下载来看看
回复

使用道具 举报

19#
ID:15170 发表于 2018-10-12 09:22 | 只看该作者
正在做这方面的,下来学习。谢谢分享
回复

使用道具 举报

20#
ID:405591 发表于 2019-2-26 13:32 | 只看该作者
谢谢分享,急需的资料
回复

使用道具 举报

21#
ID:409126 发表于 2019-3-3 21:35 | 只看该作者
楼主你好,请问是增量式还是位置式的PID调速呢
回复

使用道具 举报

22#
ID:255946 发表于 2019-3-7 13:10 | 只看该作者
谢谢分享
回复

使用道具 举报

23#
ID:428273 发表于 2019-3-9 22:29 | 只看该作者
不错!赞一个
回复

使用道具 举报

24#
ID:390701 发表于 2019-3-9 23:06 | 只看该作者
赞一个
回复

使用道具 举报

25#
ID:479685 发表于 2019-3-13 17:41 | 只看该作者
是完整的代码吗
回复

使用道具 举报

26#
ID:481460 发表于 2019-3-19 10:35 | 只看该作者
学习参考下
回复

使用道具 举报

27#
ID:499146 发表于 2019-3-29 09:28 | 只看该作者
赞一个
回复

使用道具 举报

28#
ID:495814 发表于 2019-5-15 19:15 | 只看该作者
好东西 下来学习玩玩
回复

使用道具 举报

29#
ID:544118 发表于 2019-5-21 19:54 | 只看该作者
不错哦,学习
回复

使用道具 举报

30#
ID:439204 发表于 2019-7-15 23:42 | 只看该作者
6666值得学习
回复

使用道具 举报

31#
ID:589372 发表于 2019-7-24 09:50 | 只看该作者
感谢楼主
回复

使用道具 举报

32#
ID:565203 发表于 2019-8-25 12:26 | 只看该作者
感谢楼主
回复

使用道具 举报

33#
ID:565203 发表于 2019-8-25 12:30 | 只看该作者
赞一个
回复

使用道具 举报

34#
ID:593904 发表于 2019-8-30 06:24 来自手机 | 只看该作者
不完整
回复

使用道具 举报

35#
ID:542711 发表于 2019-10-18 02:36 来自手机 | 只看该作者
好资料,谢谢
回复

使用道具 举报

36#
ID:567424 发表于 2019-11-19 22:14 | 只看该作者
下载学习一下
回复

使用道具 举报

37#
ID:657619 发表于 2019-12-6 15:36 | 只看该作者
学习一下
回复

使用道具 举报

38#
ID:239620 发表于 2019-12-10 14:51 | 只看该作者
不错的资料,用来学习,谢谢!
回复

使用道具 举报

39#
ID:660878 发表于 2019-12-10 18:42 | 只看该作者
值得学习一下
回复

使用道具 举报

40#
ID:868710 发表于 2020-12-27 12:57 | 只看该作者
不错的例程学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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