D223的PWM电机控制:6路独立脉冲+加减速算法深度解析

发布时间:2026/8/14 4:20:15
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析 采集卡还能控制电机D223内置6路独立PWM输出支持脉冲计数和加减速控制可以直接驱动步进/伺服电机驱动器。本文从硬件到代码完整解析PWM电机控制方案。一、硬件基础达林顿开漏输出D223的PWM输出采用达林顿开漏输出架构与数字输出DO共用引脚[img_147]。电气特性如下参数规格通道数6路独立PWM输出类型达林顿开漏NPN型频率范围1Hz~10kHz最新固件优化后占空比精度0~100%可调分辨率0.1%脉冲数范围0~6553516位无符号驱动能力100mA/通道负载电压5-24V DC响应时间≤10μs注意PWM最近已优化到10kHz[note_259]。频率下限为10Hz防止电机运动到最后时刻速率太慢导致运动时间过长[word_5]。达林顿输出内部为NPN型外部需要上拉负载才能正常工作。PWM可以驱动步进或伺服电机驱动器用来发送脉冲控制电机[word_5]。重要提醒达林顿管内置续流功能但仍建议用户在继电器、电磁阀就近放置续流二极管达林顿只能辅助续流不能完全替代外部续流二极管[note_259]。二、PWM参数结构体D223固件中PWM参数存储在FRAM中结构如下[note_63]typedefstruct{u8 pwmEnable[6];// PWM使能6路u16 pwmFreq[6];// 目标频率u16 pwmDuty[6];// 占空比×10精度50% → 500u16 pwmPulseNum[6];// 脉冲数0连续输出u16 pwmAccUnit[6];// 加减速单位}pwmDatas;运行时变量[note_63][note_69]u16 presentFreq[6];// 当前实际频率u32 pwmPulseTick[6];// 已发送脉冲计数u16 pwmCalcDecPulse[6];// 减速点脉冲数u8 fineDecPulseFlag[6];// 减速点是否已确定u8 motorAccDiv;// 加减速分频计数器三、加减速算法详解3.1 算法触发周期PWM加减速计算在dio_tim_task()中执行该函数由1ms定时器调用。但加减速计算每100ms执行一次通过分频计数器实现[note_63]voiddio_tim_task(){// ... DIO刷新代码 ...motorAccDiv;if(motorAccDiv100){// 100ms执行一次motorAccDiv0;for(ch0;ch6;ch){// 加减速计算}}}3.2 三种工作模式每路PWM有三种工作模式[note_63][note_69]模式1未使能if(!pwmEnable[ch]){presentFreq[ch]10;// 最低频率10Hz}模式2脉冲数限制模式加减速这是最复杂的模式。算法将脉冲发送分为三个阶段|←—— 加速阶段 ——→|←—— 匀速阶段 ——→|←—— 减速阶段 ——→| 频率线性递增 保持目标频率 频率线性递减代码逻辑[note_69]if(pwmPulseNum[ch]!0){// 第一步确定减速点if(fineDecPulseFlag[ch]1){// 还没确定减速点if(presentFreq[ch]pwmFreq[ch]){// 已达到目标频率// 减速脉冲数 剩余脉冲数pwmCalcDecPulse[ch]pwmPulseNum[ch]-pwmPulseTick[ch];fineDecPulseFlag[ch]0;// 标记已确定}else{// 还在加速中暂设为总脉冲数的一半pwmCalcDecPulse[ch]pwmPulseNum[ch]/2;}}// 第二步频率调整if(pwmPulseTick[ch](pwmPulseNum[ch]-pwmCalcDecPulse[ch])){// 加速阶段频率递增presentFreq[ch]pwmAccUnit[ch];if(presentFreq[ch]pwmFreq[ch])presentFreq[ch]pwmFreq[ch];// 限幅}else{// 减速阶段频率递减if(presentFreq[ch]10)presentFreq[ch]-pwmAccUnit[ch];}// 第三步脉冲发送完毕if(pwmPulseTick[ch]pwmPulseNum[ch]){pwmEnable[ch]0;// 自动停止// 上报运动完成指令}}模式3连续输出模式无加减速if(pwmPulseNum[ch]0){// 脉冲数0表示连续输出不参与计数// 直接按最大频率输出presentFreq[ch]pwmFreq[ch];}3.3 加减速单位加减速单位pwmAccUnit表示每100ms频率的增加值[word_5]。例如设置为10则每100ms PWM频率增加10Hz时间频率0ms10Hz起始100ms20Hz200ms30Hz……达到目标频率后匀速四、PWM停止状态的特殊设计PWM在停止状态下TIM定时器仍在工作频率约为8.4Hz[word_5]。这个设计是经过权衡的不占用中断资源TIM硬件自动运行不需要CPU干预快速响应指令上位机发来的运动指令响应延时为8.4Hz周期约±60ms如果完全关闭TIM重新启动需要配置寄存器响应更慢五、运动完成自动上报当设置了脉冲数后脉冲数量发送完成时采集卡会自动上传一条运动完成指令到上位机取消PWM使能状态[word_5]。上位机也可以勾选自动回读功能定期刷新运动状态[word_5]。六、与其他型号的PWM对比型号PWM通道数频率范围加减速占空比精度DABL76064路1Hz~5kHz支持0.1%DABL76894路1Hz~5kHz支持0.1%DABL-G5117路1Hz~5kHz支持0.1%DABM-D2236路1Hz~10kHz支持0.1%D223在PWM方面的优势在于频率范围提升到10kHz最新固件优化后可以驱动更高速的电机[note_259][ppt_23]。七、资源调度PWM与采集的共存当PWM或DAC功能与在线采集同时工作时在线采集的采样率会被限制在30kHz以下[note_63]。这是D223固件层面的资源调度策略在多功能并行时主动降速确保系统稳定性优先。如果需要全速500KSPS采集建议关闭PWM和DAC功能。八、应用场景场景1步进电机精密定位设置脉冲数1000加减速单位10目标频率1000Hz。电机先加速到1000Hz发送完1000个脉冲后自动减速停止。场景2多轴同步运动6路PWM同时使能分别控制X/Y/Z轴步进电机实现多轴协调运动。场景3伺服电机速度控制脉冲数设为0连续模式直接以目标频率持续输出脉冲控制伺服电机转速。九、总结D223的PWM电机控制方案实现了6路独立PWM可同时控制6个电机轴脉冲计数控制精确控制步进电机移动距离加减速算法梯形速度曲线保护电机和机械结构自动完成上报脉冲发完后自动通知上位机10kHz频率最新固件优化后支持更高速度与DO共用引脚灵活的引脚复用设计下篇预告《D223的DIO数字接口边沿检测、外部触发与工业接线方案》