游名:Stm32F0+TMC5130 Arduino接口42/57步进电机驱动参考原理图/...
本帖最后由 mmuuss586 于 2020-7-27 12:52 编辑基于Stm32F0+TMC5130 Arduino接口42/57步进电机驱动参考原理图/PCB图/教程/源码等开源分享资料下载见附件,电脑登入 公众号:游名开源
一、概述TMC5130芯片是一款集成式步进电机驱动器和运动控制器(定位控制)解决方案,适用于医疗、3D打印机、云台或其它自动化设备对性能有较高的场合应用和静音控制。该芯片具有集成的SixPoint斜坡控制器,微步进分度器,无传感器失速检测技术StallGuard2和完全无噪声的电流控制模式StealthChop,旨在驱动双极步进电机。输出驱动器模块由低RDSon N沟道功率MOSFET组成,配置为全H桥,以驱动电机绕组。 TMC5130能够从每个输出驱动高达2.5A的电流(具有适当的散热)。TMC5130的供电电压为5-46V。 该器件提供SPI接口,用于配置和诊断以及步进和方向接口。参数及特点:2A电流(2.5A峰值),电压范围4.75-46VDC,9x9mm2 TQFP48封装具有sixPoint斜坡的运动控制器SPI和单线UART和Step / Dir接口,编码器接口和2x参考开关输入每个完整步骤的最高分辨率256微步stealthChop用于极其安静的操作和平稳的运动spreadCycle高动态电机控制斩波器dcStep负载相关的速度控制stallGuard2高精度无传感器电机负载检测coolStep电流控制,节能高达75%集成电流检测选项,被动制动和续流模式,全面保护和诊断
二、硬件设计硬件设计接口上:支持SPI或UART或脉冲+方向控制原理图如下图所示:
主芯片部分:
补充说明:
SPI_MODE、SD_MODE:对应的J10、J11通过跳线帽选择高、低电平选择不同模式
VCC、VCC_IO电源:使用芯片内部5V输出电源,如果有外部5V电源可选择外部的,可降低芯片的发热和功耗;
电源及接电机接口部分如下图:
补充说明:
母线电容CE1选择:一般是1A对应100uF左右(有条件的尽可能大);
电源保护:有条件的最好加防反接、TVS保护、以及保险丝等
电机接口:如果对EMC要求较高的,最好加些滤波和保护,参考电路如下图
PCB图参考如下(最好是4层板):
补充说明:
芯片底部最好不要走其它线,保证地平面完整及散热;
电流取样电阻:5130不需要,5160外部MOS,要差分采样(开尔文接法);
三、软件说明
1、SPI接口速度模式
芯片引脚跳线连接:
SPI_MODE:接高电平(VCC_IO)
SD_MODE: 接低电平(GND)
J7:短接
CSN:PB6
SCK:PA5
SDI:MOSI-PA7
SDO:MISO-PA6
初始化程序如下参考:
//TMC5130 SET
sendData(0xEC,0x000100C3);
//CHOPCONF: TOFF=3, HSTRT=4, HEND=1, TBL=2, CHM=0 (spreadcycle)
sendData(0x90,0x00011601);
//PAGE33:IHOLD_IRUN: IHOLD=10, IRUN=22(31 max.current), IHOLDDELAY=1
sendData(0x91,0x0000000A);
//PAGE33:TPOWERDOWN=10:电机静止到电流减小之间的延时
sendData(0x80,0x00000004);
//PAGE27:EN_PWM_MODE=1,使能
sendData(0x93,0x000001F4);
//PAGE33:TPWM_THRS=500,对应切换速度35000=ca.30RPM
sendData(0xF0,0x000401C8);
//PAGE43:PWMCONF
sendData(0xA4,1000);
//A1=1000第一阶段加速度
sendData(0xA5,50000);
//V1=50000加速度阀值速度V1
sendData(0xA6,5000);
//AMAX=5000大于V1的加速度
sendData(0xA7,200000);
//VMAX=200000
sendData(0xA8,700);
//DMAX=700大于V1的减速度
sendData(0xAA,1400);
//D1=1400小于V1的减速度
sendData(0xAB,10);
//VSTOP=10停止速度,接近于0
2、SPI接口位置控制模式
芯片引脚跳线连接:
SPI_MODE:接高电平(VCC_IO)
SD_MODE: 接低电平(GND)
J7:短接
CSN:PB6
SCK:PA5
SDI:MOSI-PA7
SDO:MISO-PA6
初始化程序如下参考:
// TMC5130 SET
sendData(0xEC,0x000100C3);
//CHOPCONF: TOFF=3, HSTRT=4, HEND=1, TBL=2, CHM=0 (spreadcycle)
sendData(0x90,0x0006160A);
//PAGE33:IHOLD_IRUN: IHOLD=10, IRUN=22(31 max.current), IHOLDDELAY=6
sendData(0x91,0x0000000A);
//PAGE33:TPOWERDOWN=10:电机静止到电流减小之间的延时
sendData(0x80,0x00000004);
//PAGE27:EN_PWM_MODE=1,使能
sendData(0x93,0x000001F4);
//PAGE33:TPWM_THRS=500,对应切换速度35000=ca.30RPM
sendData(0xF0,0x000401C8);
//PAGE43:PWMCONF
///////////////////////////////////////////////////////////
sendData(0xA4,1000);
//A1=1000第一阶段加速度
sendData(0xA5,50000);
//V1=50000加速度阀值速度V
sendData(0xA6,5000);
//AMAX=5000大于V1的加速度
sendData(0xA7,200000);
//VMAX=200000
sendData(0xA8,700);
//DMAX=700大于V1的减速度
sendData(0xAA,1400);
//D1=1400小于V1的减速度
sendData(0xAB,10);
//VSTOP=10停止速度,接近于0
sendData(0xA0,0x00000000);
//PAGE35:RAMPMODE=0位置模式,使用所有A、V、D参数
3、DIR+STEP接口模式位置控制(无需SPI接口)
芯片引脚跳线连接:
SPI_MODE:接低电平(GND)
SD_MODE:接高电平(VCC_IO)
STEP:REFL-PB4,J2:短接
DIR: REFR-PB5,J5:短接
CFG6:DRV_ENN-PC5,通过杜邦线接到底板PC5脚
CFG5:ENCA-PC8,通过杜邦线接到底板PC8脚
CFG4:ENCB-PC6,通过杜邦线接到底板PC6脚
CFG3:CSN-PB6 ,J7:短接
CFG2: SCK-PA5
CFG1: MOSI-PA7
CFG0: MISO-PA6
初始化程序如下参考:
HAL_GPIO_WritePin(CFG0_GPIO_Port,CFG0_Pin, GPIO_PIN_SET); //PAGE:110 CFG0设置为高,TOOF:236Tclk
SubdivisionSet(16); //PAGE:111 细分设置为16
ISet(); //电流设置:PAGE:111
HAL_GPIO_WritePin(CFG4_GPIO_Port,CFG4_Pin, GPIO_PIN_SET); //PAGE:111 CFG4设置为高,chopper hysteresis斩波器滞后 设置为9
HAL_GPIO_WritePin(CFG5_GPIO_Port,CFG5_Pin, GPIO_PIN_SET);
//PAGE:111 CFG5设置为低,chopper blank time斩波器切换期间间隔时间设置为24
HAL_GPIO_WritePin(CFG6_GPIO_Port,CFG6_Pin, GPIO_PIN_RESET);
//PAGE:112 CFG6设置为低电机驱动使能,为高关闭
HAL_GPIO_WritePin(STEP_GPIO_Port,STEP_Pin, GPIO_PIN_SET); //STEP设置为高
4、UART模式
芯片引脚跳线连接:
SPI_MODE:接低电平(GND)
SD_MODE:接低电平(GND)
参考数据手册,通过MCU的UART接口发命令即可,类似SPI接口操作;
四、补充说明
1、上电顺序
电机驱动板(驱动芯片)先上电,底板控制板后上电;
2、电机
最好用42小电机测试,用86或57电机测试,会有丢不现象。
mark一下