HyunYong_7782 发表于 2026-1-15 11:50:05

STC8H的无HALL例程疑问

参考了去年年底更新了的STC8H的无HALL例程带正反转
图中红箭头指出的数值是有参考源的吗?是有对应公式还是根据实际测试所调整的

HyunYong_7782 发表于 2026-1-15 11:52:07

angle数组索引我做单极倍频的单相变频模块VF恒定的时候用过
但是这里的角度不明确是所有都是这个方式 还是有什么可以参考计算得出 还是实际测试的数据
包括其他一些硬数字也是

梁工 发表于 2026-1-15 12:24:56

1、PhaseTime = StartTime *14;        //半个周期(3个换相时间)换相时间折算成us, PhaseTime = (StartTime/3) *42.667 ;
注释已经说得很清楚:PhaseTime = (StartTime/3) *42.667 = StartTime*14,不知道你的疑惑是什么?
2、delay_N_10us(PhaseTime/20-34); //30度角延时=PhaseTime/2/10, -34为修正8次采样时间340us
注释已经说得很清楚,不知道你的疑惑是什么?
3、angle = 4096-680;//第一次预定位位置为60度,360*680/4096=60
    同理,angle = 4096-340;//第2次预定位位置为30度
4、(PRE_STATE_TIME1*23) : 预定位时间(ms)*PWM频率(KHz)=脉冲数
5、angle = 0;//第3次预定位位置为0度

HyunYong_7782 发表于 2026-1-19 11:14:21

梁工 发表于 2026-1-15 12:24
1、PhaseTime = StartTime *14;      //半个周期(3个换相时间)换相时间折算成us, PhaseTime = (StartTime/3) *42 ...
主要的问题是这些硬数字的数据源
例如修正所使用的340us 估计是实际调试所得出的

包括三次预定位角度 应该是根据电机的实际情况

注释有的东西可以理解

HyunYong_7782 发表于 2026-1-19 11:17:41

梁工 发表于 2026-1-15 12:24
1、PhaseTime = StartTime *14;        //半个周期(3个换相时间)换相时间折算成us, PhaseTime = (StartTime/3) *42 ...

包括S曲线表的生成

梁工 发表于 2026-1-19 13:13:28

HyunYong_7782 发表于 2026-1-19 11:14
主要的问题是这些硬数字的数据源
例如修正所使用的340us 估计是实际调试所得出的



340us不是实际调试所得出的。
PWM周期为42.667,采样周期就是PWM周期,8次采样时间 = 42.667 * 8 = 341us,由于延时单位为10us,所以取340us。
6步换相,一步为60度,预定位就是让其从定位点线慢速启动一步,到0度。什么电机都一样操作,所以不是根据电机实际情况。

HyunYong_7782 发表于 2026-1-19 18:48:59

梁工 发表于 2026-1-19 13:13
340us不是实际调试所得出的。
PWM周期为42.667,采样周期就是PWM周期,8次采样时间 = 42.667 * 8 = 341us ...

{:OK:}
页: [1]
查看完整版本: STC8H的无HALL例程疑问