电机购买回来后,首先是要弄清楚电机上的接线,每根接线具有不同的功能,弄清楚每根接线的功能是前提。如下图是我购买的一款带霍尔编码的直流电机。
两侧的红白接线是电机的电源接线;
红色和蓝色接线是霍尔编码器的电源接线,蓝色接+5V,黑色接GND;
中间的绿色和黄色是霍尔编码器的输出端A和B。
下面我们讨论如何获取电机的转速?因为只有获取了转速才能对电机的转速进行调整。
电机转动时,霍尔编码器的输出端A和B分别输出相差90度的脉冲方波,如下图所示:
根据转动的快慢不同,每秒钟或者说在一定时间内A和B端输出的方波个数也就不同,最简单的考虑,就是能够检测到一定时间内,方波的数量,也就能够换算出电机的转动速度了。如果仅仅只要这点要求,其实,AB两端只要一端就够了。那为什么要用两个输出端呢?那是因为通过A与B输出波形的对比,可以检测出电机转动的方向。
那什么是正转什么时候是反转,如何确定呢?
如上图:A端输出的方波,由低电平向高电平上升时,B端输出的是高电平,我们可以认为电机是正转,反之,如果B端输出的是低电平,我们就认为电机是反转的。
那么,在arduino中如何计算这些脉冲方波的个数呢?这个就要用到arduino中断的概念。中断是当今计算机中的一个重要技术,正因为有了中断,我们才能够感觉到计算机进行多任务处理(注意,这里我们说的是感觉,其实还是单任务形式)。
什么是中断呢?CPU执行时原本是按程序指令一条一条向下顺序执行的。但如果此时发生了某一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务). 待CPU将事件B处理完毕后,再回到原来被中断的地方继续执行程序(中断返回),这一过程称为中断。
Arduino分为内部中断(如内部时钟中断)和外部中断(外部中断管脚获取中断信号)。我们这里是用到的外部中断。