自动对焦变焦方案,TMC2300控制DSM(数控步进电机)马达

这篇文章介绍了Trinamic的TMC2300步进电机解决方案,它具备静音、小巧、高精度和低功耗特性,特别适合电池供电的设备,如IoT应用、POS机、打印机等。TMC2300利用尖端技术如StealthChop、CoolStep和StallGuard,显著降低能耗,提升设备性能和电池续航。
摘要由CSDN通过智能技术生成

TMC2300是电池供电的步进电机决方案,具有静音、体积小、精确、效率高等特点,待机电流消耗小于50nA,改变了便携式设备和IoT中电机的使用方式。

极低的功耗来自Trinamic的尖端的斩波专利技术StealthChop以及极低的RDSon。与CoolStep™结合使用,可延长电机运行时间并节省多达90%的能源,TMC2300非常适合IoT和电池供电的设备,如POS机,打印机,玩具,办公和家庭自动化,包括智能恒温散热器阀门,微型医疗设备等等。

Trinamic的创始人兼首席执行官Michael Randt解释说:“ 小型电机无处不在-在第四次工业革命期间,它们越来越多地进入我们的日常生活。现在是时候通过改变电动机在便携式设备中的使用方式来推动革命。TMC2300是全球最小的单芯片电机驱动器,具有StealthChop,StallGuard和CoolStep,可实现最低功耗,从而使步进电机与环境无缝融合,而不会影响性能。这是采用小封装的大型创新的理想低压解决方案。”

低压步进驱动器结合了Trinamic的最新技术(如StealthChop2™和StallGuard4™),使步进电机与周围环境融为一体,从而无需使用限位开关。这为便携式设备(包括医疗应用)提供了新的用例,使用户使用最先进的技术而不必纠结于电机细节。由于TMC2300不会影响性能,因此它也非常适合将一次性固定设备变成便于使用的便携式电池供电设备。

Trinamic的TMC2300使用最新的电流控制和诊断技术为步进电机提供低至1.8V的电池电压供电,从而使智能,更高效和完全静音的电池供电设备成为可能。

特点和优点:

  • 2相步进电机驱动器
  • 电流最高1.2A RMS (均方根电流)
  • 电池供电设备(至少2个AA / NiMh电池,或1-2个锂离子电池)
  • 电压范围为1.8V…11V DC
  • 待机电流消耗<50nA
  • 单线UART和Step / Dir接口
  • 高达256微步
  • StallGuard4™和StealthChop2™
  • CoolStep™节能和自动待机电流降低
  • QFN20(3×3)封装

TMC2300驱动电压2-11V,QFN3*3 20PIN。具有两种驱动方式(1.脉冲+方向引脚 2.单线串口),可实现无感负载测量,通过负载测量可实现电机的防丢步设计。

典型应用框图及引脚说明

STEP:  脉冲输入引脚    DIR :方向控制引脚  MODE:0:单线串口控制模式 1:脉冲+方向控制模式

AD0、AD1:在脉冲+方向模式下配置驱动细分,在单线串口模式下是硬件通讯地址。

DIAG:在单线串口模式下,可配置为脉冲输出,电机每步进一步输出一个脉冲。也可配置为丢步输出,当检测即将丢步时输出一个脉冲。

典型拓扑结构

通过配合TMC2300的AD0与AD1引脚,每个模拟开关后可以挂在4个驱动芯片。

重点寄存器说明

1.全局配置寄存器

 

2.速度设置寄存器(写入一个int型数据,int型数据的符号控制旋转方向)

   当速度写入0时,芯片可通过外部脉冲实现速度控制。即使在串口模式下,DIR方向控制引脚依然起作用。

3.负载寄存器,共10位有效位,但第0、第9位始终为0。当负载越大时该寄存器里的值越小。

 4.恒流斩波配置寄存器

mres0-3共4位用于步进电机的驱动细分配置,0-9分别对应256/128/64/32/16/8/4/2细分、整步

PCB原理图

 

 

部分代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

uint8_t TMC2300_ReadWrite_buf[8] = { 0 };

void tmc2300_writeInt(uint8_t chip_address,uint8_t reg_address, int32_t value)

{

        TMC2300_ReadWrite_buf[0] = 0x05;

        TMC2300_ReadWrite_buf[1] = chip_address;

        TMC2300_ReadWrite_buf[2] = reg_address | 0x80;

        TMC2300_ReadWrite_buf[3] = (value >> 24) & 0xFF;

        TMC2300_ReadWrite_buf[4] = (value >> 16) & 0xFF;

        TMC2300_ReadWrite_buf[5] = (value >> 8 ) & 0xFF;

        TMC2300_ReadWrite_buf[6] = (value      ) & 0xFF;

        swuart_calcCRC(TMC2300_ReadWrite_buf, 8);

        HAL_UART_Transmit_DMA(&huart2, TMC2300_ReadWrite_buf, 8);

}

void tmc2300_readInt(uint8_t chip_address,uint8_t reg_address)

{

    TMC2300_ReadWrite_buf[0] = 0x05;

    TMC2300_ReadWrite_buf[1] = chip_address;

    TMC2300_ReadWrite_buf[2] = reg_address;

    swuart_calcCRC(TMC2300_ReadWrite_buf, 4);

    HAL_UART_Transmit_DMA(&huart2, TMC2300_ReadWrite_buf, 4);

}

void swuart_calcCRC(uint8_t* datagram, uint8_t datagramLength)

{

    int i,j;

    uint8_t* crc = datagram + (datagramLength-1); // CRC located in last byte of message

    uint8_t currentByte;

    *crc = 0;

    for (i=0; i<(datagramLength-1); i++)

    // Execute for all bytes of a message

        currentByte = datagram[i]; // Retrieve a byte to be sent from Array

        for (j=0; j<8; j++)

        {

            if ((*crc >> 7) ^ (currentByte&0x01)) // update CRC based result of XOR operation

            {

                *crc = (*crc << 1) ^ 0x07;

            }

            else

            {

                *crc = (*crc << 1);

            }

            currentByte = currentByte >> 1;

        // for CRC bit

    // for message byte

}

欢迎私信交流!  

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值