核心内容摘要
扑克牌局的“心跳”:当策略遇上激情
闭环伺服步进电机磁编码器全套方案 步进电机 闭环控制器 42步进电机 包含说明文档AD工程文件Keil源代码固件双主控支持 闭环步进参数 主控芯片航顺HK32F030C8T6(软硬件完全兼容STM32F030C8T
驱动芯片两颗东芝TB67H450最大电流
5A 编码器芯片麦歌恩超高速零延时AMR编码器MT6816 高速光耦东芝双通道TLP2168 工作电压
V推荐24V 工作电流额定2A(42步进)
5A57步进最大
5A 控制精度小于
08度 电子齿轮
4、
8、
32可任意设置这闭环步进方案有点东西主控直接拿航顺HK32F030当大脑驱动部分两颗东芝TB67H450并联输出实测带42步进电机能飙到
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,
; //20kHz PWM 32细分 Encoder_SPI_Init(); //MT6816 SPI接口配置 __enable_irq(); //全局中断必须开 }注意PWM频率怼到20kHz可不是随便定的东芝驱动芯片的最佳工作频率就在
kHz之间高了MOS管发热感人低了电机啸叫能当警报器用。
电子齿轮的实现贼有意思核心就是个分频器void Set_Elec_Gear(uint8_t ratio) { TIM_SetAutoreload(MOTOR_TIM, (200 * ratio) -
; //每转200步×电子齿轮比 CurrentGear ratio; }这骚操作直接改ARR寄存器实现不同步距角实测切换齿轮比时电机响应时间10ms。
不过记得在改参数前先关PWM输出否则驱动芯片可能抽风。
闭环伺服步进电机磁编码器全套方案 步进电机 闭环控制器 42步进电机 包含说明文档AD工程文件Keil源代码固件双主控支持 闭环步进参数 主控芯片航顺HK32F030C8T6(软硬件完全兼容STM32F030C8T
驱动芯片两颗东芝TB67H450最大电流
5A 编码器芯片麦歌恩超高速零延时AMR编码器MT6816 高速光耦东芝双通道TLP2168 工作电压
V推荐24V 工作电流额定2A(42步进)
5A57步进最大
5A 控制精度小于
08度 电子齿轮
4、
8、
32可任意设置MT6816的数据采集必须上DMASPI时钟拉到10MHz才够劲uint16_t Read_Encoder(void) { SPI_DMA_Enable(ENCODER_SPI); //启动DMA传输 while(!DMA_Flag_Get()); //等待传输完成 return (SPI_Rx_Buffer[0]
| SPI_Rx_Buffer[1]; }但要注意这个磁编每次上电需要做自检校准官方手册里藏着的小技巧——先让电机空转两圈再进闭环模式角度误差能从±
1度缩到±
05度。
电流环控制部分两个驱动芯片的VREF引脚得分开调#define MOTOR1_VREF
2f //对应2A电流 #define MOTOR2_VREF
5f //对应
5A void Set_Current(float ref_voltage) { DAC_SetChannel1Data(DAC_Align_12b_R, (uint16_t)(ref_voltage*4096/
3.
); //12位DAC精度足够 }实际调试发现当工作电压超过24V时最好把VREF降低5%补偿温漂。
另外驱动芯片的衰减模式建议用混合衰减比纯快衰减模式省电30%以上。
最后说下那个双主控支持其实就是用SWD接口做在线调试时另一个MCU能接管控制权。
代码里加个互锁标志__IO uint32_t Control_Lock 0; void Switch_Controller(void) { if(Control_Lock
{ Control_Lock 1; //切换主控操作 } }实测主备切换时间控制在50μs内搞双机热备完全没问题。
但要注意两个MCU的时钟源必须同步否则电子齿轮参数会打架。