zoukankan      html  css  js  c++  java
  • BLDC开发笔记5.过流保护时瞬时电流采样时刻点

    由于本人不是自动/电气专业,所以对这方面不太熟,希望了解的朋友可以指出错误。长期更新。

    TIM触发ADC的采样时刻

    电机的电流采样,在用于电流环时,有两种采样方式:

    1. 瞬时电流,采集真实的每个PWM周期上高电平到来时的电流,采集周期和控制周期短(us),响应快,程序较复杂。
    2. 平均电流,一直采集总线采样电阻上的电流,然后做平均处理,得到的结果基本和供电电源上电流一样,控制周期较长(ms),程序较简单。

    FOC驱动算法需要的就是实时采集真实的电流(瞬时电流),方波驱动做PID控制时,瞬时和平均都有人做,主要看控制对象和目的,选择合适就可以了。

    需要注意的是:

    过流保护是采的瞬时电流,因为开通和关断瞬间存在一个电流峰值,除此之外,如果电机短路,电机实际上就相当于一个很小的电阻(零点几欧~几欧),电流会非常大,假设这个时候mos管是打开的,因为这个过程是非常短的(ns-us),供电电源部分上的是平均电流,即使有保险丝,也可能反应不过来的,这个时间也是单片机根本处理不过来的(如果进行平均电流采样,由于要准确性可能采集多点进行平均,处理时间可能在ms级别),所以瞬时电流保护通常是纯硬件实现,然后给软件一个中断,告诉单片机,已经触发了瞬时电流保护,单片机再判断是下一个周期的时候让PWM再打开尝试,还是直接关闭PWM输出。

    这里主要讨论一下方波驱动时瞬时电流采样。

    瞬时电流的采样,并不能随机采样,一般是通过定时器去触发ADC进行采样,并且需要在特定的时间窗口进行采样。

    MCU输出PWM到裂变桥,是由延时的,我们可以用示波器比较出来。供参考的数值是大部分这个延时在2us左右。所以我们就不能用MCU的上升沿来采样,因为可能采到的是0。

    所以需要确定ADC的触发时刻。窗口时间的确定分为两个情况:
    在占空比大时候:

    1. 在MCU输出的控制PWM的高电平的中间进行采样。

      当PWM占空比比较大的时候,我们可以选择中间时刻采样,可以确保检流电阻上是流过电流的。这种方法本质就是延时一段时间,避开干扰区。在MOS开通瞬间有一个开通干扰,参考数值是干扰大概也在2us左右,所以需要等待一定时间,等电流稳定。需要避开干扰区测量。
      进行触发的定时器需要和输出PWM的定时器同步输出。

      在互补输出的时候,还有死区时间。采样窗口需要综合考虑干扰,死区时间与高电平时间的相对大小。

    2. 第二种方法,利用延时特性,在输出控制PWM的下降沿采样。

      简单,不需要根据MCU输出的PWM计算触发时刻,避开了干扰区,保证准确性。
      假设使用TIM1的CH4去触发ADC采样,因为这个CH4输出的PWM就是全时域的,所以需要初始就一直开着,初始化的时候给定一个很小的占空比即可(因为电机还没转起来),后面启动电机转动的时候再根据另外三个互补通道的占空比,更改CH4的占空比配置。
      以上两种方法都是在控制PWM的ON期间采样。规律:高电平时间越短,ADC采样窗口越往后靠。
      在占空比小时候:
      干扰区和高电平时间可以相提并论,加上系统延时,在PWM-ON期间可能都采不到检流电阻上波形。即使在下降沿采样,也可能采到干扰区,怎么办?
      在BLDC开发笔记8中提到,我们可以采集续流阶段相电流检流电阻上电流,此时方法就和占空比大的时候类似,但是是在输出控制PWM-off阶段检测。
      具体还是实际测试波形为准。

  • 相关阅读:
    HTTP协议基础
    MySQL必知必会总结(二)
    MySQL必知必会总结(一)
    微信小程序开发总结
    从零开始搭建物联网平台(8):邮箱通知服务
    使用CDN优化首页加载速度
    Django+Vue前后端分离项目的部署
    Docker命令
    Django中间件执行流程和CSRF验证
    golang 快速排序及二分查找
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13987077.html
Copyright © 2011-2022 走看看