完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、前言
DRV8889其实就是一款步进驱动器芯片,由大名鼎鼎的TI制造。这款步进驱动芯片体积相当小,比1元的硬币还要小一点。我用DRV8889设计了一款1托2的步进电机驱动器(使用两个DRV8889即可),整个项目的软件与硬件都自己完成,最后发现其效果还不错。值得注意的是,这个步进驱动芯片不集成步进电机的加减速算法。例如梯形速度曲线算法,S型速度曲线算法都需要自己实现。为什么需要速度曲线算法?说白了就是为了避免步进电机丢步。 后续我会更新梯形速度曲线算法的源代码与教程,还有S型速度曲线算法的源代码与教程。老实说,S型曲线算法比较复杂一些,大部分的应用使用梯形运动曲线即可。 这篇博文主要介绍使用我编写的DRV8889驱动代码(bsp_DRV8889.h与bsp_DRV8889.c),使得MCU与DRV8889通过SPI接口正常通讯,完成写入DRV8889的寄存器与读取DRV8889寄存器的功能,为驱动步进电机做好准备。以下是DRV8889-Q1的功能介绍。 Note : 并不是说有了DRV8889驱动代码就不需要看datasheet了,一定要多看datasheet(虽然是英文版,也要多看),尤其是寄存器章节。 二、硬件设计 简单介绍一下硬件设计。 2.1、PCB原理图设计 DRV8889提供了原理图的参考设计,直接使用就好了。
2.2、PCB Layout 电容尽量接近IC,还有注意一下IC底部散热孔的设计。 三、CubeMX 3.1、RCC 3.2、DEBUG 3.3、Clock Configuration 3.4、SPI 3.5、GPIO 3.6、TIM 先用定时器产生PWM波,控制步进电机转起来。 3.7、Project Manager 生成代码。 四、Keil 4.1、Target 我最近做项目都是使用V6.14,同学们也可以继续使用V5。Use MicroLIB一定要勾选!!!! 4.2、Output 4.3、C/C++(AC6) 我的优化等级一般选择3级,这个按大家的习惯来就好了。 4.4、Debug 4.5、添加DRV8889驱动代码 4.6、添加include路径 五、代码 我是使用MDK的中间件EventRecorder来重定向printf,也可以使用USART来重定向printf都可以的。一定要实现printf重定向。 5.1、main.h 5.2、bsp_DRV8889.c 一般情况下,用户只需要修改相电流,脉冲细分数,还有转向。 当前我设置相电流是18.75%,脉冲细分数1/8(最大支持1/255),电机正转(CW)。其实电机的转向是根据DIR引脚决定的,这里只是封装了一下。 5.3、tim.c 使用定时器17的定时器溢出来翻转STEP引脚,从而产生PWM脉冲给步进驱动器IC,当前使用的是一种调试手段,实际项目需要使用定时器的PWM模式输出PWM脉冲给步进驱动器IC。 5.4、main.c 六、DEBUG 6.1、观察实时变量 TRQ_DAC = 0x0D表示相电流设置了18.75%。 MICROSTEP_MODE = 0x05表示脉冲细分数为1/8。表示写入DRV8889寄存器成功了。 6.2、观测步进电机 步进电机在转动了。 |
|
|
|
只有小组成员才能发言,加入小组>>
3262 浏览 9 评论
2943 浏览 16 评论
3442 浏览 1 评论
8950 浏览 16 评论
4036 浏览 18 评论
1078浏览 3评论
558浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
551浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2286浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1846浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 00:26 , Processed in 1.237627 second(s), Total 50, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号