资讯详情

使用Trinamic TMC2300步进驱动器做一个迪斯科灯项目

从RoadTest发布,Trinamic TMC2300-loT-REF步进驱动器 电机看起来很好,成为机电远程控制应用的理想选择。出于对评估其功能和建立迪斯科灯项目的兴趣,我申请了这个实验,我在这里展示了它。在申请硬件之前,我浏览了相关信息TMC这些文件非常详细,信息量很大。TMC2300中使用的所有技术都用方框图和波形很好地解释,非常有趣。因此,我认为这是一个学习和工作的好机会,一些很酷的电机。

为什么用TMC2300?

TMC2300是低压驱动器,最高可达1.2A RMS2相步进电机相步进电机StealthChop技术,StallGuard没有传感器,CoolStep节能,一切都有UART接口选项。

这是TMC2300-loT- ref,一款基于ESP32-PICO-D4的loT有启用板WiFi用蓝牙功能评估TMC最适合2300驱动芯片loT和手持设备,电池操作设备,玩具,家庭自动化或事实上任何电池供电的机电loT应用!

EVAL工具包附带:

步进电机连接器- 4针连接器,将TMC2300电机驱动器输出连接到电机相位。

USB-C用于微控制器编程和电池充电的连接器。

2针电池连接器-用于外部电池TMC2300芯片供电。

4针和10针-GPIOS。

我收到这个包裹时,它完好无损。很高兴看到它包含一个USB-C电缆。下面是一些刚从盒子里拿出来的照片。不知怎么的,电机连接器在板上与给定的电机不匹配,所以我把一个女人的头焊接到板上。修改了电池连接器,因为我没有匹配。

步进驱动的原理

步进电机逐步旋转轴,即按固定程度移动。这是通过电机的内部配置和启动线圈的顺序进行磁化/退磁,从而实现电机的精确无传感器操作。下图显示了根据电流流向不同驱动模式的不同位置,电机可以驱动半步、全步、波模、微步等模式。

TMC2300工作的原理

这是TMC2300- iot - ref Kit框图,外接电机,PC接口使用USB-C,外接电池驱动TMC2300芯片和步进电机。ESP32 Pico是具有BLE和WiFi终极接口功能loT使能器。从左侧开始,PC机通过CH340C串口转换芯片和板载ESP32 PICO通过微控制器联动USB接口与单板通信。

因此,固件可以直接闪现到微控制器。TMC2300使用单线UART接口与微控制器的高级配置选项。单片机通过电机的步长和方向GPIOS IO21和IO22上的STEP和DIR直接控制引脚。这就是TMC2300-IOT-REF如何通过内置WiFi和ESP32 PICO的BLE功能,通过对STEP和DIR的权限实现远程控制操作。电机采用4引脚接口,即从TMC2300驱动芯片引出A1, A2, B1, B二、板载专用连接器。

用于静音电机操作的StealthChop2.用于失速检测StallGuard4.用于智能电流控制CoolStep是TMC通过调试板和GUI(此处不包括)实时监控。Workshopshed在他早期的RoadTest其中一项研究是关于他的CoolStep美报。

迪斯科灯项目的开始

通过硬件手册和Trinamic的GitHub页面,使用TMC2300-IOT-REF很容易。我遇到过一些充电器IC过热问题,USB COM我将在测试过程中讨论更多这些问题,如端口无法识别等。

所有需要的启动都是TMC2300-IOT-REF任何带4针的模块JST-PH和USB-C步进电机和电缆PC接口。感谢一切RodTest由工具包提供的工具。哦,还需要额外的锂离子电池,没有它就不能驱动。

手册中提到的一些注意事项是:不超过最大额定电源电压(标准5)V USB和3.7V锂离子电池),以及不在单板上使用锂离子电池以外的其他类型的电池。也建议在电源关闭时开始(我认为这只是在向主板闪烁固件时)

首先,我试过机载LED闪烁,工作正常。这个功能和TMC2300 IC无关,而是ESP32的GPIO切换。因此,没有必要插入锂离子电池,但在固件加载后插入电池也会使LED闪烁。

下面是为ESP32 PICO编译的完整代码是1万ms间隔闪烁的LED加载。

/*Program to blink onboard LED18 in TMC2300-IOT-REF */  #define LED_STATUS 18                 // IO pin18 is connected to onboard LED    // the setup function runs once when you press reset or power the board   void setup()  {   // initialize digital pin LED_STATUS as an output.     pinMode(LED_STATUS, OUTPUT);   }       // this loop function runs over and over again forever   void loop()  {     digitalWrite(LED_STATUS, HIGH);    // turn the LED on by making voltage HIGH   delay(1000);                       // wait for a second     digitalWrite(LED_STATUS, LOW);     // turn the LED off by making the voltage LOW     delay(1000);                       // wait for a second   }

开始测试

真正的测试来了!首先,我插入USB在板上,并遵循Blynk的例子。我下载了Blynk应用程序,然后开始工作。闪现固件...没跑。你猜怎么着?电机嗡嗡作响,只有USB插上电源。之后,正如说明书所说,我插入了一块3.7V锂离子电池仍未启动。感觉热浪从TP4054充电器IC这个组件变得非常热。

就在感觉要抽烟的时候,我拔掉了外部电池和USB。只尝试下一次充电,USB与电池的情况没有变化,但当两者连接在一起时,充电器IC过热。. .还是没运气。只有嗡嗡声(它有一些电,可能没有足够的电流驱动电机),我认为这是远程控制Blynk连接与最大电流设置有关。

因此,我试图删除代码中的所有代码Blynk部分来绕过Blynk连接。Robertogp通过简化主要的例子来做了一个测试代码,并尝试它确实有效!利用ESP32的STEP和DIR控制能电机的信号。

//-------------TMC2300 Motor Control---------------------------  #include "include/Functions.h"   #include "include/TMC2300.h"   #include "include/CRC.h"    int  tmc_current = 20;   unsigned long memoMillis = 0;   int pin_enable = 32;   int pin_step = 21;   int pin_dir = 22;   int pin_led = 18;   int sec = 0;        void TMC2300_current(int currentInt)  {     Serial.print("New MaxCurrent set: ");     Serial.println(currentInt);     uint32_t value = 1 << TMC2300_IHOLDDELAY_SHIFT                    | ((currentInt << TMC2300_IRUN_SHIFT) & TMC2300_IRUN_MASK)                    | 8 << TMC2300_IHOLD_SHIFT;     tmc2300_writeInt(TMC2300_IHOLD_IRUN, value); }    void setup() {     Serial.begin(115200);     // Debug console     Serial1.begin(115200);    // TMC2300 IC UART connection        pinMode(pin_enable, OUTPUT);     digitalWrite(pin_enable,LOW);         pinMode(pin_step  , OUTPUT);     digitalWrite(pin_step,LOW);         pinMode(pin_dir   , OUTPUT);     digitalWrite(pin_dir,LOW);         pinMode(pin_led   , OUTPUT);     digitalWrite(pin_led,HIGH);         tmc_fillCRC8Table(0x07, true, 0);     // Initialize CRC calculation for TMC2300   TMC2300_current(tmc_current);        delay(1000);    Serial.println("GO!");     diitalWrite(32,HIGH);  
}  

void loop()
{  
   if ((millis() - memoMillis) > 1000) 
      { 
         memoMillis = millis();   
         Serial.println("LED");   
         digitalWrite(pin_led,!digitalRead(pin_led));   
         tmc2300_writeInt(TMC2300_CHOPCONF, 0x14008001);     // Re-write the CHOPCONF register periodically  
         sec += 1;
            
         if (sec > 5)                                       //direction changing time interval
         { 
          sec = 0 ; 
          digitalWrite(pin_dir,!digitalRead(pin_dir)); 
         }
      }  
   delay(1);   
   digitalWrite(pin_step, HIGH);   
   
   delay(1);   
   digitalWrite(pin_step, LOW);   
}

现在,电机动起来了。

TMC2300-一款电池供电的步进电机驱动器

现在,在电池完全充电后,我尝试了Blynk的草图,它工作了!

但是ESP32在程序模式下持续复位,插入闪烁固件时显示“USB设备不识别”。在尝试了几次之后,按住BOOT按钮使它回到程序状态并正常工作。

开始搞起迪斯科灯

现在,我的项目计划是将一个旧的LED灯转换为迪斯科灯,通过附加一个RGB LED和散光帽,它将与步进电机旋转。远程控制电机的速度和方向将使RGB光的美丽图案。让我们感觉到它!

闪现的是Blynk固件和各自的配置,设置是在移动应用程序中完成的。这是Ul外观与控制启用/禁用电机,电机方向,提供的最大电流和步进电机速度。

最后完工,来看看项目的项目

用TMC2300步进驱动器做一个迪斯科灯项目

总结

老实说,用TMC2300-loT-REF进行路测是一次非常棒的经历,我学到了很多。TMC2300数据表是我读过的最容易理解的数据表,在用户级别用漂亮的框图写东西。Trinamic还提供了结构良好的文档和示例,供您入门。

关于用电路板控制电机,它应该同时支持USB和电池(现在,充电器IC会过热,最终烧毁)。因为用户倾向于通过USB上传程序,从而看到电机在运动中修改参数,如方向,步骤,速度等,而不是拔下USB,用外部电池供电,检查,然后通过USB重新插入修改固件设置(这是真的,至少在我的情况下)。剩下的一切都很好,我能够使用TMC2300-loT-REF构建预期的迪斯科灯项目。

标签: 电力连接节能电缆线夹

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台