找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

26万转:用最短代码,转最快电机

  [复制链接]
181#
 楼主| Angus 发表于 2024-10-22 10:01:10 | 只看该作者
为提高检过 0 的准确性,我们是在一个时间窗检过 0 的。如下图,每次检到过0后,延时 T0 时间换相,延时 T1 时间检过 0。检过 0 是图中斜线阴影时间。
而这个 T1 延时,是变化的,在起转时,稍长。起转成功后,每个周期前 80% 多的时间是不检过0的,只在实际过 0 附近检过0,所以滤除了很多干忧。




你若想验证这一点,可在main() 主循环中反转一个引脚的电平,因检过 0 是在 timer1 中断里,所以此引脚电平不反转时就是在检过0,这样就能看到检过 0 的时间窗了。

下图绿色是 main() 中反转引脚的波形,那些空缺是代码在 timer1 中检过0时间。
  



提高转速,会发现,无轮转速多快,都会在过 0 时间附近有这个空缺,只有这段时间检过0,其它时间是不检过 0 的


回复 支持 1 反对 0

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU