谁用过TMC5160步进电机驱动芯片,求一个程序
本帖最后由 Wesson 于 2018-9-4 17:36 编辑我在TMC官网下载的TMC5160_BOB,在嘉立创打板回来,买的元件焊接好了,现在就差一个程序测试了,谁使用这个芯片,求一个程序。测试一下这个芯片到底怎么样。我是用STM32F103C8T6做的一个底板,用SPI2和TMC5160通信。 自己写吧 哪里有现成的? 用过TMC的,给个类似的程序也可以。谢谢
楼主搞定了吗 可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~ picobox 发表于 2018-9-29 14:46
楼主搞定了吗
能转动了起来了,感觉还不错。最近有点忙,具体很多设置东西还没研究。 你们用在什么产品上感觉垂娜美的东西用的越来越多了 Wesson 发表于 2018-9-29 17:43
能转动了起来了,感觉还不错。最近有点忙,具体很多设置东西还没研究。 ...
加企鹅 9542615 交流一下吧。我在深圳。 reflecter 发表于 2018-9-29 15:09
可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢 yaribe 发表于 2018-11-16 22:20
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢 ...
已消息。 reflecter 发表于 2018-11-17 15:09
已消息。
谢谢 已收到 reflecter 发表于 2018-9-29 15:09
可以联系下我们世健在沪的,Tranamic技术支持大牛Amy姐~
请告知 Tranamic技术支持大牛Amy姐 的联系方式,有需求。 reflecter 发表于 2018-11-17 15:09
已消息。
我也需要世建的 Tranamic技术支持大牛Amy姐的联系方式?求告知一下。 amy_zhang5031,微信号 楼主驱动程序怎么样了?能不能发一下你写的??我现在需求和你差不多{:lol:} C1060825815 发表于 2019-7-10 13:31
楼主驱动程序怎么样了?能不能发一下你写的??我现在需求和你差不多 ...
http://blog.trinamic.com/2018/02/19/stepper-motor-with-tmc5160/
看这个,我按这个能转起来。 Wesson 发表于 2019-7-10 18:10
http://blog.trinamic.com/2018/02/19/stepper-motor-with-tmc5160/
看这个,我按这个能转起来。 ...
谢谢!!! 学习一下 reflecter 发表于 2018-11-17 15:09
已消息。
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系?最近也想在项目用一款TMC的步进电机驱动芯片 yaribe 发表于 2018-11-16 22:20
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系? 我现在也在看 这芯片 谢谢 ...
同问,谢谢!! go2deathward 发表于 2019-10-26 12:23
同问,谢谢!!
你楼上有跟帖 提供联系方式 在网上找来找去,还是在坛里找到点有用的资料 lnso 发表于 2019-8-24 21:51
你好 请问世建的 Tranamic技术支持大牛Amy姐 如何联系?最近也想在项目用一款TMC的步进电机驱动芯片 ...
兄弟的驱动能用了吗,最近在玩TMC5160,还没有跑起来,不知可否给点提示,谢谢
最近在玩TMC5160,楼主提供的链接进去,也把程序下来用了,还没有跑起来,不知可否给点提示,谢谢 ersha4877 发表于 2019-12-22 19:39
最近在玩TMC5160,楼主提供的链接进去,也把程序下来用了,还没有跑起来,不知可否给点提示,谢谢 ...
最近刚玩过已经调好了,你可以把你的初始化程序,还有原理图发上来看看 C1060825815 发表于 2019-12-23 08:59
最近刚玩过已经调好了,你可以把你的初始化程序,还有原理图发上来看看 ...
软件用的是vs2017+GDB 所以直接发C文件了 // 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);
跟我用的初始化不太一样,我是按照上边这个初始化的,可以成功 ronic 发表于 2019-2-20 19:19
amy_zhang5031,微信号
搜微信号查不到
估计微信号加不了好友 C1060825815 发表于 2019-12-23 09:17
// MULTISTEP_FILT=1, EN_PWM_MODE=1 enables stealthChop™
tmc5160_writeInt(MOTOR0, TMC5160_GCONF, 0 ...
好的,谢谢今天没时间、明天试试感谢 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: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欧姆的,坑死,感谢了 ersha4877 发表于 2019-12-21 17:30
兄弟的驱动能用了吗,最近在玩TMC5160,还没有跑起来,不知可否给点提示,谢谢
...
没有用TMC的芯片了,项目现在用的LV8731驱动了 lnso 发表于 2019-12-26 20:51
没有用TMC的芯片了,项目现在用的LV8731驱动了
已经可以转起来了,谢谢 ersha4877 发表于 2019-12-26 21:37
已经可以转起来了,谢谢
分享一下解决问题的经过 picobox 发表于 2019-12-26 21:39
分享一下解决问题的经过
我上面有发原理图和程序的,都是正常的,只是WSP4886底下的采样电阻要用0.1欧的,我原来用了75欧的所以跑不起来,现在用10颗1欧的电阻并联在测试中 ersha4877 发表于 2019-12-27 08:11
我上面有发原理图和程序的,都是正常的,只是WSP4886底下的采样电阻要用0.1欧的,我原来用了75欧的所以跑 ...
你说的WSP4886对应到原理图哪个地方?我打算照着你的板子做一个出来玩玩。 picobox 发表于 2019-12-27 16:47
你说的WSP4886对应到原理图哪个地方?我打算照着你的板子做一个出来玩玩。 ...
直接拿去玩吧,JLC做的板,里面有标注0.1电阻的说明,原理图在上面的文件夹里 ersha4877 发表于 2019-12-27 17:14
直接拿去玩吧,JLC做的板,里面有标注0.1电阻的说明,原理图在上面的文件夹里 ...
太好了,谢谢 MARK,TMC5160,步进电机驱动 现在论坛人气大不如前啊,10年前的时候可火啦 最近也在 看tmc5130 ,请问一下有什么坑吗 这芯片40元太贵了 没啥竞争力 有量就便宜了。1K,给我的报价是15 以下为初始化代码;
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);//位置模式 以下为相对位置模式
#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;
} 以下为速度模式:
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;
} 我接57步进电机,噪音很大,有大佬解决过不?
页:
[1]