从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构建预期的迪斯科灯项目。