【Digikey得捷好物畅享】ADI MAX78000FTHR# 开发板使用TMC2209驱动步进电机

一、项目介绍
在前面驱动OLED项目的基础上,连接TMC2209电机驱动模块驱动12V的四线两项步进电机。
硬件构成:

名称 型号 作用
主控板 MAX78000FTHR# 加载驱动、控制显示内容
显示部件 0.96寸OLED 显示调试信息
电机驱动模块 TMC2209 接收主控板控制,驱动步进电机转动
电机 标准42步进电机

二、功能的实现
2.1、电气连接
线路连接如下:

2.2、设计思路
使用AIN3(P2.3)和AIN4(P2.4)模拟I2C接口的SCL和SDA,同时,使用板载的SW1和SW2按钮,以GPIO中断的方式,处理后面驱动步进电机时的控制转向和是否转动的动作。并通过OLED和板载的三个颜色的LED显示处理结果。

对象 作用
SW1 切换电机的顺时针转动或者逆时针转动。预定给TMX2209的DIR控制用。
SW2 通过标志变量。切换0/1状态,控制定时器3是否输出占空比为50%的PWM波。预定给TMX2209的STEP控制用。
红色LED 显示PWM波的输出状态。
绿色LED 步进电机顺时针转动状态下的指示灯。
蓝色LED 步进电机逆时针转动状态下的指示灯。
P2.7 切换步进电机的顺时针转动或者逆时针转动的实际输出控制。接TMX2209的DIR。
P2.6 输出控制步进电机步进用的脉冲输出。接TMX2209的STEP。

2.3功能的实现
程序参照前贴《【Digikey得捷好物畅享】ADI MAX78000FTHR# 开发板以软件模拟方式点亮 I2C接口OLED》。
三、测试效果
shun
ni

四、总结
TMC2209的引脚挺多,但最简单的驱动连接只需要DIR和STEP两个引脚。电机侧只需要连接对应的相绕组、电源即可。EN端直接接地,表示使TMC2209保持允许常态工作的状态。实际上这个引脚也可以连接MAX78000FTHR的一个GPIO,使用SW2间接控制,使马达允许转动或者停止转动。目前使用之前做好的程序,使用软件控制是否输出STEP步进信号来控制的,所以把EN接地了。
连接电机的时候,一定要注意两个相的绕组连线不要搞错。接错了,电机不一定会烧坏,但运转一定会出问题,不会按照与预想的那样正常地顺时针、逆时针步进。
源程序中对定时器的控制是输出2Hz的PWM信号,直接用于控制步进电机的STEP信号,会导致电机转动极慢,肉眼难以分辨,所以这里要修改一下,改成1000Hz。
#define Basic_FREQ 1000
使用TMC2209的效果,与其他步进电机驱动模块的区别确实明显,基本上听不到电机运转中产生的噪音。我用的电机工作电流标称200多毫安,电机转动一段时间后,触摸TMC2209的驱动核心,没感到有明显发热状况。TMC2209造价相比DRV8833、DRV8255之类的驱动芯片高,但标称的静音驱动,确实达到了,效果挺好。对工作场景有特殊要求的地方,选择这个静音驱动芯片,还是可以优先考虑的。