| 控制方法 | 采用梯形波的120°交变 | 
| 转子位置检测 | 由电动机的感应电压来检测 | 
| 载频 | 20kHz | 
| 转速控制的范围 | 正转:500rpm~3000rpm (-33.3×2π至200×2πrad/s)  | 
| 反转:-500rpm~-3000rpm (-33.3×2π至-200×2πrad/s)  | |
| 误差检测 | 由于MCU起到了防止正相和负相同时处于运行状态的作用,因此有可能在上臂和下臂(布线分支)之间引起短路的波形将不会被输出。 | 
| IPM的FO信号(强制停机信号)是至MCU的NMI引脚的输入信号。因此,如果FO信号电平走低,则三相输出被强制停止,而且三相输出引脚被置于高阻抗状态。 | |
| 在正常操作期间,如果连续500ms未检测到来自编码器的Z信号,则认为电动机被锁定,而且三相输出引脚上的输出将被关断。 注:编码器的Z信号以这种方式来使用,旨在确保更高的安全性。不过,在电动机控制中并未采用Z信号。  | 
| 项目 | 说明 | 
| 转换模式 | 重复扫描模式0 | 
| 扫描引脚 | AN0~AN7(8个引脚) | 
| 触发器类型 | 软件 | 
| 转换定时 | 在完成了A/D转换的初始设置之后,A/D转换在重复扫描模式0中继续进行。 | 
| Vref的连接 | Vref被连接。 | 
| 分辨率 | 10位 | 
| A/D转换模式 | 利用采样及保持电路进行操作 | 
| A/D转换端口 | P10端口组 | 
| 频率 | fAD/2 | 
| A/D转换中断 | 未用 | 
| 项目 | 说明 | 
| 中断检测 | 两个脉冲边沿 | 
| INT中断 | 未使用中断。 通过中断请求位的轮询来检测INT中断(外部中断)  | 
|   模块名称  |   标签名称  | 参数  |   说明  | |
| 输入 | 输出 | |||
| 电动机控制主处理 | main_pwm_120slc20() | — | — | 用于通过120°交变来实现一个SPMSM的无传感器型驱动的主处理。 | 
| 初始化处理 | initial() | — | — | 设定A/D转换的初始值,感应电压过零点检测,以及三相PWM。 | 
| PWM中断处理 | pwm_int() | — | — | 调用停止、启动和正常处理功能。 | 
| 停止处理 | pwm_stop() | — | — | 关断三相PWM输出,并检查是否继续进行启动操作。 | 
| 启动处理 | pwm_kido() | — | — | 执行启动操作(将旋转速度命令和电压命令固定1秒的时间),并检查正常操作转换。 | 
| 正常处理 | pwm_tujo() | — | — | 执行无传感器型控制(感应电压过零点检测和输出模式转换)。 | 
| 实际转速计算处理 | cal_sub_wr_duty() | — | — | 计算实际转速和PWM占空比。 | 
| 转速命令计算处理 | cal_wr_ref() | UI16 AD5 输入值  | SI16转速命令 | 将A/D输入值转换为转速命令。 | 
| 总线电压计算处理 | cal_vdc_ref() | UI16 AD5 输入值  | — | 将A/D输入值转换为总线电压。 | 
| 电动机锁定检测处理 | motor_lock_chk() | — | — | 检测电动机锁定状态。 | 
| 停止检查处理 | stop_chk() | — | SI16停止检查结果 | 检查处理是由一个转速命令停止的还是由一个误差停止的。 | 
| 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |