Wesson 发表于 2018-9-4 17:27:21

谁用过TMC5160步进电机驱动芯片,求一个程序

本帖最后由 Wesson 于 2018-9-4 17:36 编辑

我在TMC官网下载的TMC5160_BOB,在嘉立创打板回来,买的元件焊接好了,现在就差一个程序测试了,谁使用这个芯片,求一个程序。测试一下这个芯片到底怎么样。我是用STM32F103C8T6做的一个底板,用SPI2和TMC5160通信。

lgg88 发表于 2018-9-4 18:51:48

自己写吧   哪里有现成的?

Wesson 发表于 2018-9-5 08:34:51

用过TMC的,给个类似的程序也可以。谢谢

picobox 发表于 2018-9-29 14:46:21

楼主搞定了吗

reflecter 发表于 2018-9-29 15:09:19

可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~

Wesson 发表于 2018-9-29 17:43:26

picobox 发表于 2018-9-29 14:46
楼主搞定了吗

能转动了起来了,感觉还不错。最近有点忙,具体很多设置东西还没研究。

study_hardware 发表于 2018-9-29 21:09:40

你们用在什么产品上感觉垂娜美的东西用的越来越多了

picobox 发表于 2018-9-30 17:43:31

Wesson 发表于 2018-9-29 17:43
能转动了起来了,感觉还不错。最近有点忙,具体很多设置东西还没研究。 ...

加企鹅 9542615 交流一下吧。我在深圳。

yaribe 发表于 2018-11-16 22:20:48

reflecter 发表于 2018-9-29 15:09
可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~

你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢

reflecter 发表于 2018-11-17 15:09:10

yaribe 发表于 2018-11-16 22:20
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢 ...

已消息。

yaribe 发表于 2018-11-17 19:52:15

reflecter 发表于 2018-11-17 15:09
已消息。

谢谢 已收到

picobox 发表于 2018-12-3 13:38:08

reflecter 发表于 2018-9-29 15:09
可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~

请告知 Tranamic技术支持大牛Amy姐 的联系方式,有需求。

Wesson 发表于 2019-2-20 18:24:57

reflecter 发表于 2018-11-17 15:09
已消息。

我也需要世建的 Tranamic技术支持大牛Amy姐的联系方式?求告知一下。

ronic 发表于 2019-2-20 19:19:25

amy_zhang5031,微信号

C1060825815 发表于 2019-7-10 13:31:51

楼主驱动程序怎么样了?能不能发一下你写的??我现在需求和你差不多{:lol:}

Wesson 发表于 2019-7-10 18:10:25

C1060825815 发表于 2019-7-10 13:31
楼主驱动程序怎么样了?能不能发一下你写的??我现在需求和你差不多 ...

http://blog.trinamic.com/2018/02/19/stepper-motor-with-tmc5160/
看这个,我按这个能转起来。

C1060825815 发表于 2019-7-11 07:56:00

Wesson 发表于 2019-7-10 18:10
http://blog.trinamic.com/2018/02/19/stepper-motor-with-tmc5160/
看这个,我按这个能转起来。 ...

谢谢!!!

lcmdw 发表于 2019-8-15 10:23:19

学习一下

lnso 发表于 2019-8-24 21:51:27

reflecter 发表于 2018-11-17 15:09
已消息。

你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系?最近也想在项目用一款TMC的步进电机驱动芯片

go2deathward 发表于 2019-10-26 12:23:18

yaribe 发表于 2018-11-16 22:20
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢 ...

同问,谢谢!!

yaribe 发表于 2019-10-28 23:03:02

go2deathward 发表于 2019-10-26 12:23
同问,谢谢!!

你楼上有跟帖 提供联系方式

ersha4877 发表于 2019-12-15 19:16:30

在网上找来找去,还是在坛里找到点有用的资料

ersha4877 发表于 2019-12-21 17:30:39

lnso 发表于 2019-8-24 21:51
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系?最近也想在项目用一款TMC的步进电机驱动芯片 ...

兄弟的驱动能用了吗,最近在玩TMC5160,还没有跑起来,不知可否给点提示,谢谢

ersha4877 发表于 2019-12-22 19:39:03

最近在玩TMC5160,楼主提供的链接进去,也把程序下来用了,还没有跑起来,不知可否给点提示,谢谢

C1060825815 发表于 2019-12-23 08:59:09

ersha4877 发表于 2019-12-22 19:39
最近在玩TMC5160,楼主提供的链接进去,也把程序下来用了,还没有跑起来,不知可否给点提示,谢谢 ...

最近刚玩过已经调好了,你可以把你的初始化程序,还有原理图发上来看看

ersha4877 发表于 2019-12-23 09:06:24

C1060825815 发表于 2019-12-23 08:59
最近刚玩过已经调好了,你可以把你的初始化程序,还有原理图发上来看看 ...

软件用的是vs2017+GDB 所以直接发C文件了

C1060825815 发表于 2019-12-23 09:17:49

        // MULTISTEP_FILT=1, EN_PWM_MODE=1 enables stealthChop™
        tmc5160_writeInt(MOTOR0, TMC5160_GCONF, 0x0000000C);

        // TOFF=3, HSTRT=4, HEND=1, TBL=2, CHM=0 (spreadCycle™)
        tmc5160_writeInt(MOTOR0, TMC5160_CHOPCONF, 0x000100C3);

        // IHOLD=10, IRUN=15 (max. current), IHOLDDELAY=6
        tmc5160_writeInt(MOTOR0, TMC5160_IHOLD_IRUN, 0x00080F0A);

        // TPOWERDOWN=10: Delay before power down in stand still
        tmc5160_writeInt(MOTOR0, TMC5160_TPOWERDOWN, 0x0000000A);

        // TPWMTHRS=500
        tmc5160_writeInt(MOTOR0, TMC5160_TPWMTHRS, 0x000001F4);

        // Values for speed and acceleration
        tmc5160_writeInt(MOTOR0, TMC5160_VSTART, 1);
        tmc5160_writeInt(MOTOR0, TMC5160_A1, 5000);
        tmc5160_writeInt(MOTOR0, TMC5160_V1, 26843);
        tmc5160_writeInt(MOTOR0, TMC5160_AMAX, 5000);   
        tmc5160_writeInt(MOTOR0, TMC5160_VMAX, 100000);
        tmc5160_writeInt(MOTOR0, TMC5160_DMAX, 5000);
        tmc5160_writeInt(MOTOR0, TMC5160_D1, 5000);
        tmc5160_writeInt(MOTOR0, TMC5160_VSTOP, 10);
        tmc5160_writeInt(MOTOR0, TMC5160_RAMPMODE, TMC5160_MODE_POSITION);


跟我用的初始化不太一样,我是按照上边这个初始化的,可以成功

嘀嘀 发表于 2019-12-23 09:24:16

ronic 发表于 2019-2-20 19:19
amy_zhang5031,微信号

搜微信号查不到
估计微信号加不了好友

ersha4877 发表于 2019-12-23 21:55:07

C1060825815 发表于 2019-12-23 09:17
// MULTISTEP_FILT=1, EN_PWM_MODE=1 enables stealthChop™
        tmc5160_writeInt(MOTOR0, TMC5160_GCONF, 0 ...

好的,谢谢今天没时间、明天试试感谢

ersha4877 发表于 2019-12-24 09:07:22

C1060825815 发表于 2019-12-23 09:17
// MULTISTEP_FILT=1, EN_PWM_MODE=1 enables stealthChop™
        tmc5160_writeInt(MOTOR0, TMC5160_GCONF, 0 ...

你好,这个配置我用过没有跑起来,你的驱动芯片是AO4882,底下的SA SB采样电阻多少大小,是75欧姆吗,我没有买到AO4882,用了WSP4886的了,谢谢

ersha4877 发表于 2019-12-24 09:29:32

本帖最后由 ersha4877 于 2019-12-24 09:36 编辑

C1060825815 发表于 2019-12-23 09:17
// MULTISTEP_FILT=1, EN_PWM_MODE=1 enables stealthChop™
        tmc5160_writeInt(MOTOR0, TMC5160_GCONF, 0 ...

可以了,WSP4886底下的两个采样电阻阻值用错了,要用0.1欧姆的,坑死,感谢了

lnso 发表于 2019-12-26 20:51:23

ersha4877 发表于 2019-12-21 17:30
兄弟的驱动能用了吗,最近在玩TMC5160,还没有跑起来,不知可否给点提示,谢谢
...

没有用TMC的芯片了,项目现在用的LV8731驱动了

ersha4877 发表于 2019-12-26 21:37:43

lnso 发表于 2019-12-26 20:51
没有用TMC的芯片了,项目现在用的LV8731驱动了

已经可以转起来了,谢谢

picobox 发表于 2019-12-26 21:39:26

ersha4877 发表于 2019-12-26 21:37
已经可以转起来了,谢谢

分享一下解决问题的经过

ersha4877 发表于 2019-12-27 08:11:08

picobox 发表于 2019-12-26 21:39
分享一下解决问题的经过

我上面有发原理图和程序的,都是正常的,只是WSP4886底下的采样电阻要用0.1欧的,我原来用了75欧的所以跑不起来,现在用10颗1欧的电阻并联在测试中

picobox 发表于 2019-12-27 16:47:50

ersha4877 发表于 2019-12-27 08:11
我上面有发原理图和程序的,都是正常的,只是WSP4886底下的采样电阻要用0.1欧的,我原来用了75欧的所以跑 ...

你说的WSP4886对应到原理图哪个地方?我打算照着你的板子做一个出来玩玩。

ersha4877 发表于 2019-12-27 17:14:45

picobox 发表于 2019-12-27 16:47
你说的WSP4886对应到原理图哪个地方?我打算照着你的板子做一个出来玩玩。 ...

直接拿去玩吧,JLC做的板,里面有标注0.1电阻的说明,原理图在上面的文件夹里

picobox 发表于 2019-12-27 17:27:49

ersha4877 发表于 2019-12-27 17:14
直接拿去玩吧,JLC做的板,里面有标注0.1电阻的说明,原理图在上面的文件夹里 ...

太好了,谢谢

bad_fpga 发表于 2020-3-16 17:56:25

MARK,TMC5160,步进电机驱动

cf5257 发表于 2020-3-22 17:15:45

现在论坛人气大不如前啊,10年前的时候可火啦

Yorha 发表于 2020-10-21 10:41:44

最近也在 看tmc5130 ,请问一下有什么坑吗

fbwcpu 发表于 2020-11-2 08:13:44

这芯片40元太贵了   没啥竞争力

Stm32Motor 发表于 2023-10-19 09:01:31

有量就便宜了。1K,给我的报价是15

Stm32Motor 发表于 2023-12-3 11:08:58

以下为初始化代码;
        TMC5160_WriteReg(TMC5160_GSTAT, 0);
        TMC5160_WriteReg(TMC5160_GSTAT, 0);
       
        if(TMC5160_Status.bitStatus.reset_flag)
        {
                TMC5160_WriteReg(TMC5160_GSTAT, 0x00000001);       
        }
       
        TMC5160_WriteReg(0x00, 0x0000000C);                 // writing value 0x0000000C = 12 = 0.0 to address 0 = 0x00(GCONF)
        TMC5160_WriteReg(0x03, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 1 = 0x03(SLAVECONF)
        TMC5160_WriteReg(0x05, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 2 = 0x05(X_COMPARE)
        TMC5160_WriteReg(0x06, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 3 = 0x06(OTP_PROG)
        TMC5160_WriteReg(0x08, 0x0000000C);                 // writing value 0x00000012 = 18 = 0.0 to address 4 = 0x08(FACTORY_CONF)
        TMC5160_WriteReg(0x09, 0x00010606);                 // writing value 0x00010606 = 67078 = 0.0 to address 5 = 0x09(SHORT_CONF)
        TMC5160_WriteReg(0x0A, 0x00080400);                 // writing value 0x00080400 = 525312 = 0.0 to address 6 = 0x0A(DRV_CONF)0x00080400
        TMC5160_WriteReg(0x0B, GlobalScaler);                 // writing value 0x00000000 = 0 = 0.0 to address 7 = 0x0B(GLOBAL_SCALER)
        TMC5160_WriteReg(0x11, 0x0000000F);                 // writing value 0x0000000A = 10 = 0.0 to address 9 = 0x11(TPOWERDOWN)
        TMC5160_WriteReg(0x13, 0x0000007C);                 // writing value 0x0000007C = 124 = 0.0 to address 10 = 0x13(TPWMTHRS)
        TMC5160_WriteReg(0x14, 0x000000C8);                 // writing value 0x00000062 = 98 = 0.0 to address 11 = 0x14(TCOOLTHRS) 0x00000062----- C8
        TMC5160_WriteReg(0x15, 0x00000010);                 // writing value 0x00000010 = 16 = 0.0 to address 12 = 0x15(THIGH)
        TMC5160_WriteReg(0x20, 0x00000000);                 // writing value 0x00000001 = 1 = 0.0 to address 13 = 0x20(RAMPMODE)
        TMC5160_WriteReg(0x21, 0x00000000);                 // writing value 0x1F02B316 = 520270614 = 0.0 to address 14 = 0x21(XACTUAL)
        TMC5160_WriteReg(0x23, 0x00000100);                 // writing value 0x00000000 = 0 = 0.0 to address 15 = 0x23(VSTART)
       
        TMC5160_WriteReg(0x24, 0x000003E8);            // writing value 0x00000000 = 0 = 0.0 to address 16 = 0x24(A1)
        TMC5160_WriteReg(0x25, 0x0000C350);            // writing value 0x00000000 = 0 = 0.0 to address 17 = 0x25(V1)
        TMC5160_WriteReg(0x26, 0x000001F4);            // writing value 0x00001394 = 5012 = 0.0 to address 18 = 0x26(AMAX)
        TMC5160_WriteReg(0x27, 0x00030D40);                   // writing value 0x003CBF10 = 3981072 = 0.0 to address 19 = 0x27(VMAX)
        TMC5160_WriteReg(0x28, 0x000002BC);           // writing value 0x00000000 = 0 = 0.0 to address 20 = 0x28(DMAX)

        TMC5160_WriteReg(0x2A, 0x00000578);        // writing value 0x00000000 = 0 = 0.0 to address 21 = 0x2A(D1)
        TMC5160_WriteReg(0x2B, 0x00000000);        // writing value 0x00000000 = 0 = 0.0 to address 22 = 0x2B(VSTOP)          0x0000000A-----
                       
               
        TMC5160_WriteReg(0x2C, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 23 = 0x2C(TZEROWAIT)
        TMC5160_WriteReg(0x2D, 0x00000000);                // writing value 0x00000000 = 0 = 0.0 to address 24 = 0x2D(XTARGET)       0xFFFF3800
        TMC5160_WriteReg(0x33, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 25 = 0x33(VDCMIN)
        TMC5160_WriteReg(0x34, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 26 = 0x34(SW_MODE)
        TMC5160_WriteReg(0x38, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 27 = 0x38(ENCMODE)
        TMC5160_WriteReg(0x39, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 28 = 0x39(X_ENC)
        TMC5160_WriteReg(0x3A, 0x00010000);                 // writing value 0x00010000 = 65536 = 0.0 to address 29 = 0x3A(ENC_CONST)
        TMC5160_WriteReg(0x3D, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 30 = 0x3D(ENC_DEVIATION)
        TMC5160_WriteReg(0x60, 0xAAAAB554);                 // writing value 0xAAAAB554 = 0 = 0.0 to address 31 = 0x60(MSLUT)
        TMC5160_WriteReg(0x61, 0x4A9554AA);                 // writing value 0x4A9554AA = 1251300522 = 0.0 to address 32 = 0x61(MSLUT)
        TMC5160_WriteReg(0x62, 0x24492929);                 // writing value 0x24492929 = 608774441 = 0.0 to address 33 = 0x62(MSLUT)
        TMC5160_WriteReg(0x63, 0x10104222);                 // writing value 0x10104222 = 269500962 = 0.0 to address 34 = 0x63(MSLUT)
        TMC5160_WriteReg(0x64, 0xFBFFFFFF);                 // writing value 0xFBFFFFFF = 0 = 0.0 to address 35 = 0x64(MSLUT)
        TMC5160_WriteReg(0x65, 0xB5BB777D);                 // writing value 0xB5BB777D = 0 = 0.0 to address 36 = 0x65(MSLUT)
        TMC5160_WriteReg(0x66, 0x49295556);                 // writing value 0x49295556 = 1227445590 = 0.0 to address 37 = 0x66(MSLUT)
        TMC5160_WriteReg(0x67, 0x00404222);                 // writing value 0x00404222 = 4211234 = 0.0 to address 38 = 0x67(MSLUT)
        TMC5160_WriteReg(0x68, 0xFFFF8056);                 // writing value 0xFFFF8056 = 0 = 0.0 to address 39 = 0x68(MSLUTSEL)
        TMC5160_WriteReg(0x69, 0x00F70000);                 // writing value 0x00F70000 = 16187392 = 0.0 to address 40 = 0x69(MSLUTSTART)
        TMC5160_WriteReg(0x6C, 0X00A10103);                 // writing value 0x00410003 = 4259843 = 0.0 to address 41 = 0x6C(CHOPCONF)
        TMC5160_WriteReg(0x6D, 0x017B0000);                 // writing value 0x017B0000 = 24838144 = 0.0 to address 42 = 0x6D(COOLCONF)
        TMC5160_WriteReg(0x6E, 0x00000000);                 // writing value 0x00000000 = 0 = 0.0 to address 43 = 0x6E(DCCTRL)
        TMC5160_WriteReg(0x70, 0xC40C011E);                 // writing value 0xC40C011E = 0 = 0.0 to address 44 = 0x70(PWMCONF)
       
        TMC5160_WriteReg(TMC5160_SWMODE,0x0C);

        //TMC5160_Set_Current(mId, 10, 10,20);
        uint32_t temp;
uint16_t delay=20;
        temp=delay;
        temp=temp<<8;
uint8_t iHold=6;
        uint8_t iRun=15;
        temp=temp|iRun;
        temp=temp<<8;
        temp=temp|iHold;
        TMC5160_WriteReg(TMC5160_IHOLD_IRUN,temp);
        TMC5160_WriteReg(TMC5160_RAMPMODE,0x00);//位置模式       

Stm32Motor 发表于 2023-12-3 11:10:53

以下为相对位置模式
#define Count_num            16777216U          //2^24

unsigned char sm_run_tmc5160(uint8_t mId,uint8_t dir,uint16_t acc,uint16_t speed,uint32_t steps)
{

        int32_t move_steps;
        if(acc == 0 || speed == 0 || steps == 0)
                return 0;
       

        uint32_t CalcSpeed;
        CalcSpeed=(uint64_t)speed*Count_num*256*200/(12000000);
        CalcSpeed=CalcSpeed/60;
       

        int32_t temppos=TMC5160_ReadReg(TMC5160_XACTUAL);
        if(dir & 0x01)
        {
                move_steps = temppos+steps;
        }
        else
        {       
                move_steps = temppos-steps;               
        }
       
       
        TMC5160_WriteReg(TMC5160_SWMODE,0x0C);
        TMC5160_WriteReg(TMC5160_RAMPMODE,0x00);
       
        TMC5160_WriteReg(TMC5160_VMAX, CalcSpeed);//写速度
        TMC5160_WriteReg(TMC5160_A1, acc);//写加速度
        TMC5160_WriteReg(TMC5160_AMAX, acc);//写加速度
        TMC5160_WriteReg(TMC5160_D1, acc);//写加速度
        TMC5160_WriteReg(TMC5160_DMAX,acc);//写加速度
        TMC5160_WriteReg(TMC5160_VSTART,0);
        TMC5160_WriteReg(TMC5160_VSTOP,10);//写加速度       
        TMC5160_WriteReg(TMC5160_XTARGET, move_steps);
bMotorIsRuning=1;
       
        return 1;
}

Stm32Motor 发表于 2023-12-3 11:11:16

以下为速度模式:
unsigned char sm_run_tmc5160_speed(uint8_t mId,uint8_t dir,uint16_t acc,uint16_t speed)
{

        uint32_t CalcSpeed;
       
CalcSpeed=(uint64_t)speed*Count_num*256*200/(12000000);
        CalcSpeed=CalcSpeed/60;
       
        TMC5160_WriteReg(TMC5160_SWMODE,0x0C);
       
        TMC5160_WriteReg(TMC5160_VMAX, CalcSpeed);//写速度
        TMC5160_WriteReg(TMC5160_A1, acc);//写加速度
        TMC5160_WriteReg(TMC5160_AMAX, acc);//写加速度
        TMC5160_WriteReg(TMC5160_D1, acc);//写加速度
        TMC5160_WriteReg(TMC5160_DMAX,acc);//写加速度
        TMC5160_WriteReg(TMC5160_VSTART,0);
        TMC5160_WriteReg(TMC5160_VSTOP,10);//写加速度       
        if(dir)
                TMC5160_WriteReg(TMC5160_RAMPMODE,0x01);
        else
                TMC5160_WriteReg(TMC5160_RAMPMODE,0x02);
       
        bMotorIsRuning=1;
       
        return 1;
}

Stm32Motor 发表于 2023-12-7 23:03:01

我接57步进电机,噪音很大,有大佬解决过不?
页: [1]
查看完整版本: 谁用过TMC5160步进电机驱动芯片,求一个程序