STM32增量式pid直流电机调速(内附源码)

这篇具有很好参考价值的文章主要介绍了STM32增量式pid直流电机调速(内附源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       

目录

一.

1.硬件组成

2.模块分析

        1.TB6612电机驱动模块

        2.直流减速电机

        3.电源稳压模块

二.接线

三.代码思路讲解(详见源码)

四.STM32cubmx配置

1.系统基础配置:(重要)

2.电机旋转方向引脚配置

3.TIM1每10ms触发一次的定时器中断

4.TIM4输出pwm

5.TIM3四倍频读取编码器电机脉冲

6.串口1配置

五.源码链接

六.总结


        本例程采用了HAL库进行项目开发(主要使用软件CubexMX和keil5),主控使用STM32F1.3c8t6,文章末尾会有代码开源,欢迎各位对文章进行指正和探讨。

        最后附有源码地址。

一.

1.硬件组成

        STM32f103c8t6单片机,TB6612电机驱动,稳压模块,直流电机(带霍尔编码器), 12v电池。

2.模块分析

        1.TB6612电机驱动模块

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

        1.模块可以驱动两路电机,AO1AO2,BO1BO2各连接一路

        2.STBY接高电平,TB6612使能能够驱动电机,STBY接低电平,电机全部停止

        3.VM:接12v以内电源

        4.VCC:接5v电源

        5.GND:接电源负极

        6.PWMA和PWMB负责结束PWM来控制电机速度

        7.AIN1AIN2和BIN1BIN2用来控制电机正反转,下面是驱动逻辑

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

        2.直流减速电机

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

1.电机线+和电机线-连接TB6612输出AO或者BO

2.编码器GND和编码器5V连接负极电源和电源5v用来给霍尔编码器供电用于在电机工作时测量电机脉冲.

3.编码器A相,编码器B相。测量电机的旋转速度以及选装方向,这里使用定时器的编码器模式读取AB相发出的脉冲

4.我的型号的电机线数为13减速比为30,也就是电机旋转一圈会发送13 * 30 = 390个脉冲,普通的直流电机一般情况下都是这个脉冲(以商品实际信息为主)

        3.电源稳压模块

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

 我这里面使用的电池电压为12v这里使用降压模块将12v降压为5v给TB6612供电

二.接线

        这里展示驱动一个编码器电机的示例。大家一定要认真接线,看清楚每一根线的作用,不要随便接线,一不小心就会冒香气(烧毁电机驱动或单片机)

        注意这里是我实际的接线,大家可以根据自己单片机的引脚资源合理进行分配。(注意单片机需要与电池共GND来同步电平标准)

TB6612 C8T6
STBY 高电平(+3.3V)
AIN1 PA3
AIN2 PA4
PWMA PB8 (TIM4-CH3)
AO1 电机电源+
AO2 电机电源-
VM 12V
VCC 3.3V
GND 和单片机共地

        编码器

编码器的A、B相 C8T6
A相 PA7 (TIM3-CH1)
B相 PA6 (TIM3-CH2)

        

三.代码思路讲解(详见源码)

1.定时器串口初始化等外设初始化

2.根据设定的期望脉冲通过每10ms触发一次的定时器中断来调用增量式pid函数来根据期望脉冲来调整输出的pwm,直到单片机读取到的脉冲和期望脉冲一致。

        初次进行实验时,我对pid期望速度有所疑问。具体疑问是单片机读取到的是电机发送过来的脉冲,我了解到可以使用M法测速将电机转速计算出来,但是无法将转速与pwm进行联系,后来我直接将期望速度改成了期望脉冲,根据期望脉冲的差值来控制pwm,直到达到我想要的效果。

四.STM32cubmx配置

1.系统基础配置:(重要)

RCC:

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

SYS:

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

clock configuration

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

配置只有电机回车即可

2.电机旋转方向引脚配置

首先设置配置AIN1--PA3, AIN2-PA4的输出引脚:

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

和TB6612的真值表做对比,电机反转(这里让电机正转或者反转都行)

3.TIM1每10ms触发一次的定时器中断

配置过程:

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

 STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

 开启定时器中断

4.TIM4输出pwm

使用TIM4的CH3输出pwm对应PB8引脚

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

5.TIM3四倍频读取编码器电机脉冲

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

6.串口1配置

我这里因为没有使用串口接收数据,只是作为发送数据使用,因此没有开启串口中断

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

到此基本配置已经完成,可以使用STM32cubmx生成代码了。

VOFA上位机查看数据:第一个数字为期望脉冲,第二个为实际脉冲,第三个为输出pwm,第四个为转速

STM32增量式pid直流电机调速(内附源码),stm32,单片机,嵌入式硬件

 

五.源码链接

链接:https://pan.baidu.com/s/1Ex-7BXWQoUminx9GFN6wjA 
提取码:etqp

六.总结

        这是我第一个基于pid的应用,最初做起来一脸迷茫,只知道原理,却不知道从哪里进行下手不知道如何将pid应用到实践中去,经过读过网上许多大佬的源码和博客,逐渐有了一定理解。文章来源地址https://www.toymoban.com/news/detail-599186.html

到了这里,关于STM32增量式pid直流电机调速(内附源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [proteus]STM32F103单片机直流电机PID算法PWM波电机调速正反转Proteus仿真

    1、实现功能: (1)、基于STM32F103单片机PID算法PWM控制直流电机正反转调速,LCD1602显示转速等。可通过“加速”、“减速”按键修改“目标转速”并实时测量“实际转速”送到LCD1602上显示。 (2)、“启动”按键控制电机启动,默认启动电机是正转(示波器上的黄色PWM波)。 (3)、“

    2024年02月06日
    浏览(38)
  • 【PID】基于Matlab实现增量式PID算法

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 增量式PID控制较常规PID更具优势,但有关其参数整定的方法很少,针对这种问题,介绍了增量式PID算法的原理及特点,基于MATLAB平台

    2024年02月14日
    浏览(33)
  • PID的增量式与位置式

    在刚接触到PID控制器的时候,我对增量式,位置式这些其实也是很懵的,然后又有什么速度环啊,位置环啊,电流环啊…巴拉巴拉一堆的,但是现在理解起来其实也就利用一些简简单单的离散数据运算出期望罢了。 首先假设我们已经知道了什么是Kp、Ki、Kd了(不知道的话那就

    2024年04月13日
    浏览(28)
  • STM32CubeMX 直流电机串级PID位置速度控制、HAL库、cubemx、PID、串级PID、位置控制、速度控制、双环控制

    提示:本文章的串级PID位置速度控制,是在前两篇文章速度控制,位置控制的基础上实现的,这一章节中不需要额外的cubemx的配置,只需要写简单的代码即可,复杂的地方在于串级pid的调试过程。 pid是我们在学习单片机中首先要学会的控制算法,而串级pid又是在单pid的基础上

    2024年02月14日
    浏览(43)
  • PID算法(位置式pid算法和增量式pid算法)

    PID 算法是闭环控制系统中常用的算法,PID 分别是 Proportion(比例)、Integral(积分)、 Differential(微分)的首字母缩写。它是一种结合比例、积分和微分三个环节于一体的闭环控 制算法,具体的控制流程如图 8.2.1 所示: u = Kp * e u ----- 输出 Kp ----- 比例系数 e ----- 偏差 以温度

    2024年02月16日
    浏览(48)
  • 我的PID学习历程---PID位置式和增量式

    前一篇文章实现了使用TB6612驱动电机及编码器测速,但是在实际测速的过程中,如果我们 人为给电机一个阻力,电机的速度将会下降,编码器接口获取到的脉冲数也会减少 。 但是如果要使电机 保持一个恒定的速度 ,即使遇到阻力它的速度也不会下降。这个时候就需要引入

    2023年04月09日
    浏览(66)
  • 位置式Pid和增量式Pid的定义及应用

    PID算法是一个典型的闭环控制系统。P、I、D,比例、积分、微分。 开环:输入量对输出量没有反馈作用; 闭环:输入量对输出量有反馈作用。 位置式Pid 位置式Pid就是位置闭环控制,位置闭环控制就是根据编码器的脉冲累加,测量电机的位置信息,并与目标值进行比较得到一

    2024年02月05日
    浏览(33)
  • PID控制器(位置式和增量式)

    PID控制:一种调节器控制规律为比例、积分、微分的控制。其中:P:比例(proportion)I:积分(integral)D:微分(derivative) 式子中Kp为比例系数,Ti为积分时间参数,Td为微分时间常数。 各参数的意义: Kp:比例系数。一般增大比例系数,将加快系数的响应。 Ti:积分时间常

    2024年02月16日
    浏览(40)
  • 博途PLC增量式PID和脉冲轴组合控制阀门开度(算法介绍)

    这篇博客我们以S7-1200PLC平台来举例,介绍我们的PID闭环控制器如何控制脉冲轴实现阀门角度控制。SMART PLC PID控制器控制伺服驱动器实现关节角度控制详细内容请参考下面文章: https://rxxw-control.blog.csdn.net/article/details/129658364 https://rxxw-control.blog.csdn.net/article/details/129658364 增量

    2024年01月21日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包