完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在STM32F405上用L6470控制步进电机,发现两个问题,始终找不到原因:
1、L6470的计步寄存器ABS_POS(0X01),电机转动后去读取它的值,有时候会突然从很小的值窜到很大,例如: reg VMOTOR_ABS_POS [value] = 0x68b5 reg VMOTOR_ABS_POS [value] = 0x8247 reg VMOTOR_ABS_POS [value] = 0xb949 reg VMOTOR_ABS_POS [value] = 0x3fbe30 reg VMOTOR_ABS_POS [value] = 0x3ff849 验证过读写是完全正常的,不知道为何会突然计步器会出现阶跃性跳变。 2、电机转一圈需要多少个脉冲: 照规格来说,L6470是128细分的,我使用的电机是0.9度/步。转一圈不应该是360*128*10/9=51200步吗?而实际测量转完一圈大致走了270000步。 我配制的是128细分的:dSPIN_RegsStruct->STEP_MODE = 0x07; /* 设置到128微步模式 */ 上面两个问题有没有兄弟碰到过,第二个可能是我原理没理解,不知道这个步数是怎么算的。 |
|
相关推荐
1个回答
|
|
在STM32F405上使用L6470控制步进电机时,您遇到了两个问题。让我们逐一分析并尝试找到可能的原因和解决方案。
问题1:L6470的计步寄存器ABS_POS(0X01)在电机转动后读取时,有时候会突然从很小的值窜到很大。 可能的原因: 1. 通信干扰:在读取ABS_POS寄存器时,可能存在电磁干扰或其他通信干扰,导致读取到错误的值。 2. L6470内部错误:L6470内部可能存在某种错误,导致计步器的值突然跳变。 解决方案: 1. 检查通信线路:确保通信线路没有受到干扰,可以使用屏蔽线并保持线路尽可能短。 2. 使用软件滤波:在读取ABS_POS寄存器的值后,可以使用软件滤波算法(如中值滤波或卡尔曼滤波)来减少误差。 3. 检查L6470的固件:确保L6470的固件是最新的,以避免可能的固件错误。 问题2:电机转一圈需要多少个脉冲。 根据您提供的信息,L6470是128细分的。要计算电机转一圈所需的脉冲数,我们需要考虑以下几个因素: 1. 步进角:步进电机的步进角是每步移动的角度。对于大多数步进电机,步进角通常是1.8度。 2. 细分:L6470的细分是128,这意味着每个步进角被细分为128个更小的步进。 计算方法: 电机转一圈所需的总步数 = 360度 / 步进角 对于1.8度步进角的电机,总步数 = 360 / 1.8 = 200步 由于L6470是128细分的,每个步进角被细分为128个更小的步进,所以实际上: 总脉冲数 = 总步数 × 细分 总脉冲数 = 200 × 128 = 25600脉冲 所以,对于128细分的L6470,电机转一圈需要25600个脉冲。 希望这些信息能帮助您解决遇到的问题。如果问题仍然存在,请考虑与L6470的制造商联系,以获取更多技术支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 19:29 , Processed in 0.614483 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号