news 2026/2/18 15:39:42

闭环伺服步进电机(磁编码器)全套方案 步进电机 闭环控制器 42步进电机 包含说明文档,AD工...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
闭环伺服步进电机(磁编码器)全套方案 步进电机 闭环控制器 42步进电机 包含说明文档,AD工...

闭环伺服步进电机(磁编码器)全套方案 步进电机 闭环控制器 42步进电机 包含说明文档,AD工程文件,Keil源代码,固件,双主控支持 闭环步进参数: 主控芯片:航顺HK32F030C8T6(软硬件完全兼容STM32F030C8T6) 驱动芯片:两颗东芝TB67H450(最大电流3.5A) 编码器芯片:麦歌恩超高速零延时AMR编码器MT6816 高速光耦:东芝双通道TLP2168 工作电压:12-30V(推荐24V) 工作电流:额定2A(42步进)2.5A(57步进)最大3.5A 控制精度:小于0.08度 电子齿轮:4、8、16、32(可任意设置)

这闭环步进方案有点东西!主控直接拿航顺HK32F030当大脑,驱动部分两颗东芝TB67H450并联输出,实测带42步进电机能飙到3.5A峰值电流。重点说下MT6816磁编码器,这玩意儿采样速度飙到1MHz,比传统光电编码器快三倍不止,配合中断优先级骚操作,实测角度反馈延迟不到2微秒。

看这段电机初始化代码:

void Motor_Init(void) { GPIO_Mode_Config(MOTOR_EN_PORT, MOTOR_EN_PIN, GPIO_OUTPUT_PP); TIM_PWM_Init(MOTOR_TIM, 20000, 32); //20kHz PWM + 32细分 Encoder_SPI_Init(); //MT6816 SPI接口配置 __enable_irq(); //全局中断必须开! }

注意PWM频率怼到20kHz可不是随便定的,东芝驱动芯片的最佳工作频率就在16-24kHz之间,高了MOS管发热感人,低了电机啸叫能当警报器用。

电子齿轮的实现贼有意思,核心就是个分频器:

void Set_Elec_Gear(uint8_t ratio) { TIM_SetAutoreload(MOTOR_TIM, (200 * ratio) - 1); //每转200步×电子齿轮比 CurrentGear = ratio; }

这骚操作直接改ARR寄存器实现不同步距角,实测切换齿轮比时电机响应时间<10ms。不过记得在改参数前先关PWM输出,否则驱动芯片可能抽风。

闭环伺服步进电机(磁编码器)全套方案 步进电机 闭环控制器 42步进电机 包含说明文档,AD工程文件,Keil源代码,固件,双主控支持 闭环步进参数: 主控芯片:航顺HK32F030C8T6(软硬件完全兼容STM32F030C8T6) 驱动芯片:两颗东芝TB67H450(最大电流3.5A) 编码器芯片:麦歌恩超高速零延时AMR编码器MT6816 高速光耦:东芝双通道TLP2168 工作电压:12-30V(推荐24V) 工作电流:额定2A(42步进)2.5A(57步进)最大3.5A 控制精度:小于0.08度 电子齿轮:4、8、16、32(可任意设置)

MT6816的数据采集必须上DMA,SPI时钟拉到10MHz才够劲:

uint16_t Read_Encoder(void) { SPI_DMA_Enable(ENCODER_SPI); //启动DMA传输 while(!DMA_Flag_Get()); //等待传输完成 return (SPI_Rx_Buffer[0] << 8) | SPI_Rx_Buffer[1]; }

但要注意这个磁编每次上电需要做自检校准,官方手册里藏着的小技巧——先让电机空转两圈再进闭环模式,角度误差能从±0.1度缩到±0.05度。

电流环控制部分,两个驱动芯片的VREF引脚得分开调:

#define MOTOR1_VREF 1.2f //对应2A电流 #define MOTOR2_VREF 1.5f //对应2.5A void Set_Current(float ref_voltage) { DAC_SetChannel1Data(DAC_Align_12b_R, (uint16_t)(ref_voltage*4096/3.3)); //12位DAC精度足够 }

实际调试发现当工作电压超过24V时,最好把VREF降低5%补偿温漂。另外驱动芯片的衰减模式建议用混合衰减,比纯快衰减模式省电30%以上。

最后说下那个双主控支持,其实就是用SWD接口做在线调试时,另一个MCU能接管控制权。代码里加个互锁标志:

__IO uint32_t Control_Lock = 0; void Switch_Controller(void) { if(Control_Lock == 0) { Control_Lock = 1; //切换主控操作 } }

实测主备切换时间控制在50μs内,搞双机热备完全没问题。但要注意两个MCU的时钟源必须同步,否则电子齿轮参数会打架。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/16 3:30:47

基于单片机的数字时钟设计(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;CP-51-2021-048设计简介&#xff1a;本设计是基于单片机的数字时钟设计&#xff0c;主要实现以下功能&#xff1a;实现体力显示&#xff0c;24小时的时钟计…

作者头像 李华