直流电机学习

直流电机控制与TB6612FNG

1.直流电机原理

在这里插入图片描述

减速器

功能

1.降低电机速度
2.提高输出扭矩

分类

  • 齿轮减速器: 体积较小,传递扭矩大,但是有一定的回程间隙。
  • 蜗杆减速器: 具有反向自锁功能,体积较大,传动效率不高,精度不高
  • 行星齿轮减速器: 结构比较紧凑,回程间隙小、精度较高,使用寿命很长,额定输出扭矩可以做的很大,但价格略贵。

编码器

编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器。

测量位置(倒立摆)
测量速度(平衡小车)

光电编码器(光学式)
霍尔编码器(磁式)

原理

在这里插入图片描述

在这里插入图片描述

编码器软件的四倍频技术

常规

A相:接单片机中断输入引脚,触发方式为上升沿触发,只有上升沿时候计数

四倍频

测量AB相的上升沿和下降沿,即只要跳边沿都触发,是常规方式分辨率的四倍。

STM32

TIM1-TIM4的CH1、CH2都可以硬件计数(四倍频)

离散PID入门

  在我们的微处理器里面,因为控制器是通过软件实现其控制算法的,所以必须对模拟调节器进行离散化处理,这样它只需根据采样时刻的偏差值计算控制量。因此,我们需要使用离散的差分方程代替连续的微分方程

方法

假定采样时间很短时(比如10ms),可做如下处理:

  1. 用一介差分代替一介微分;
  2. 用累加代替积分。
    在这里插入图片描述

位置PID——使电机精准旋转特定角度

理论分析

位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。

公式

P w m = K p × e ( k ) + K i × ∑ e ( k ) + K d [ e ( k ) − e ( k − 1 ) ] P_{wm}=K_p\times e(k)+K_i \times \sum e(k)+K_d[e(k)-e(k-1)] Pwm=Kp×e(k)+Ki×e(k)+Kd[e(k)e(k1)]
e(k):本次偏差
e(k-1):上一次的偏差
∑e(k):e(k)以及之前的偏差的累积和;其中k为1,2,k;
P w m P_{wm} Pwm代表输出
在这里插入图片描述

C语言实现

一般在定时中断函数中进行调用不可以放在main.c函数中(因为积分和拆分都有严格的时序)

int Position_PID (int Encoder,int Target)
  { 	
   static float Bias,Pwm,Integral_bias,Last_Bias;
   Bias=Encoder-Target; //计算偏差
   Integral_bias+=Bias; //求出偏差的积分	     
   Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       
   Last_Bias=Bias;       //保存上一次偏差 
   return Pwm;           //输出
  }

位置PID控制参数整定

控制目标

  • 稳定性
  • 快速性
  • 准确性

评估控制系统的指标

  • 最大超调量是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;
  • 上升时间是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;
  • 静差是被控量的稳定值与给定值之差,一般用于衡量系统的准确性(常在比例控制和积分控制比较弱的情况下产生)

参数整定

P: 用于提高响应速度
I: 用于减小静差
D: 用于抑制震荡。(会导致变化变慢)对传感器敏感,对稳定性要求较高的系统不经常使用

速度闭环控制

速度闭环控制就是根据单位时间获取的脉冲数(这里使用了M法测速)测量电机的速度信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。

增量式离散PID公式(输出控制量增量)

P w m + = K p [ e ( k ) − e ( k − 1 ) ] + K i × e ( k ) + K d [ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) ] P_{wm}+=K_p[e(k)-e(k-1)]+K_i\times e(k)+K_d[e(k)-2e(k-1)+e(k-2)] Pwm+=Kp[e(k)e(k1)]+Ki×e(k)+Kd[e(k)2e(k1)+e(k2)]
e(k):本次偏差
e(k-1):上一次的偏差
e(k-2):上上次的偏差
P w m P_{wm} Pwm代表增量输出
在我们的速度控制闭环系统里面只使用PI控制,因此对PID控制器可简化为以下公式:
P w m + = K p [ e ( k ) − e ( k − 1 ) ] + K i × e ( k ) P_{wm}+=K_p[e(k)-e(k-1)]+K_i\times e(k) Pwm+=Kp[e(k)e(k1)]+Ki×e(k)

int Incremental_PI (int Encoder,int Target)
{ 	
  static float Bias,Pwm,Last_bias;
  Bias=Encoder-Target;                                  //计算偏差
  Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;   //增量式PI控制器
  Last_bias=Bias;	                                    //保存上一次偏差 
  return Pwm;                                           //增量输出
}

编码器

  There are up to 4 synchronizable general-purpose timers (TIM2, TIM3, TIM4 and TIM5) embedded in the STM32F103xC, STM32F103xD and STM32F103xE performance line devices. These timers are based on a 16-bit auto-reload up/down counter, a 16-bit prescaler and feature 4 independent channels each for input capture/output compare, PWM or onepulse mode output. This gives up to 16 input captures / output compares / PWMs on the largest packages.
  The general-purpose timers can work together with the advanced-control timer via the Timer Link feature for synchronization or event chaining. Their counter can be frozen in debug mode. Any of the general-purpose timers can be used to generate PWM outputs. They all have independent DMA request generation.
  These timers are capable of handling quadrature (incremental) encoder signals and the digital outputs from 1 to 3 hall-effect sensors.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值