20201127调试
20201127 我当天主要的目的 是把VF控制调试的准确
第一个待解决的问题:
VF控制模式下 计算出当前设定转速Motor_VF_Spd 对应的换相步长 Motor_VF_StepPhaseF ?
令电机的机械给定速度为Motor_VF_Spd 为变量n 电机的极对数为2
电角度的变化率为 2n/min
每秒钟电角度的变化为 2n/60
那么10ms 电角度的变换为 2n/60/100=n/3000;
程序中 我大致设为 n/3000 如上图所示
(2)转速的计算
void Vol2Hall(void) 中函数对于扇区的变化是对HallEstTickW 进行计数,
为了保证分辨率,扇区的计算必须放在比较快的循环中 故扇区的变化放在motor_INT()函数中比较合理 。Motor_INT()中 当扇区发生变化的时候,增加1 当大于65535 清0
在10ms的电机管理循环中 每一把当前在motor_INT()中读到的数HallEstTickW 保存起来,赋予给局部变量A,然后减去上一次进入改分支计算出的全部变量N
若A小于N 则counter=(65536-N)+A
若A大于N 则 counter=A-N
假设 20us 扇区仅变化一次 对应的机械转速是
即20us是60度电角度 那么120us 是360度电角度
电角度的频率是
f=1/120us =8333 r/s
即可分辨出每秒变换8333的电转速。
每分钟可变化 499980r/min 的电转速
转子是两对极
即可分辨 250000r/min 的转速
那么最低的转速可以分辨到多少 ?
即65535个20us 时间间隔内 扇区状态未发生变化,
20us x65535= 1.31秒
360度对应7.8秒
即每秒钟 1/7.8 转
每分钟 1/7.8 * 60 =33r/min
转子两对极 机械转速 15r/min
(3) VF控制中的一些参数 是在motor_VF1ms 子函数中 更新 ,但是motor_VF()子函数确实20us 刷新一次,
即:一个参数需要执行500次后 才会刷新一次
(3) 速度闭环下 扇区的刷新 与 VF控制模式 下 扇区 的刷新 计算是不是一样? 是否有标志位区别 ?
重要:VF模式下 扇区的计算 与 速度闭环 下 扇区的计算在分支中是互斥的
此版本程序 在VF控制中 spdobj 是上位机给定的机械转速 因为是电机是两对极
而VF控制中实际直接控制的是换向 是电角度 于是需要
spdobj=spdobj/2;
增加了以后 VF 可以3000r/min 启动了