目录
一、材料的购买
本题目作者使用Arduino的UNO开发板来完成
1.购买的是“全新微型电机365-14150电机带编码器电机平衡机器人电机DIY”根据商家的详细电机参数进行连线操作
2.“直流电机驱动板 2路电机驱动模块 DRV8833电机驱动模块 小体积”根据商家的详细DRV8833电机驱动模块参数进行连线操作
二、如下图连线
作者画得不太好请见谅。(连线很重要,如果连接不对的话就无法验证代码的准确性)
三、了解带编码器电机的基础知识
1.带编码器电机正常转动并且读取脉冲数(转速)
注意:由于驱动器没有PWM接线,则作者把驱动器的输入引脚IN1、IN2接到UNO开发板的PWM引脚,从而可以做到控制电机的转速。
电机的A、B相位是用来计算脉冲数的,每个电机每圈的脉冲数不同需根据自己的测量数据来计算转速。
- 2.电机的A、B相位是如何计算脉冲数的呢?
是由于电机转动带动霍尔元件转动产生磁场,通过A、B相位来接收磁场信号形成方形波通过方形波的计算来决定脉冲数。(小白可以去B站了解带编码电机转动形成的脉冲图像)
作者使用顺时针转动来计数(如上图则为电机顺时针转动产生的脉冲图像),并且使用二频法进行脉冲数计算(二频法是不够准确的,目前有一频法、二频法、四频法计算脉冲数,其中四频法最为准确)
四、代码部分
1.首先进行变量的定义:
2.其次进入Setup函数:
根据A、B相位高低电平的交替情况,使用中断的电平变化模式进行中断的书写。
3.最后进入loop函数:
设置定时器每400ms进行一次转速计算。
注意:脉冲数要及时归零,否则脉冲数将一直累加。
4.外部函数:
当2号引脚电平发生变化时脉冲数加1.
文章仅供参考,文章还有不足之处,请大佬们多多指点。