最近参加研究生电赛开始拾起来老本行,开始鼓捣单片机。长时间不动这东西都快忘光了,还是有笔记好捡起来。调试了两天终于把做的东西调通。真的是越努力越幸运,研一入学来一直在做脑电信号的特征提取和分类算法,做来做去发现若没有好的数学功底不是大牛,搞机器学习貌似出路不大,也难怪学长学姐发完小论文后,不搞机器学习。确切的说,对于生物电信号处理来说机器学习是个坑。因此发完小论文后还是打算做自己的老本行,坚持自己的初心,开始学习嵌入式操作系统。这可能是我的转折点。分享一下ardunio和L289N连接对直流电机进行PWM调速的原理和程序,以便初学者快速掌握。还是忍不住说一句开源万岁。大道之行,天下为公。
PWM调速:直流电机的PWM调速原理与交流电机调速原理不同,它不是通过调频方式去调节电机的转速,而是通过调节驱动电压脉冲宽度的方式,并与电路中一些相应的储能元件配合,改变了输送到电枢电压的幅值,从而达到改变直流电机转速的目的。它的调制方式是调幅。 这个不需要太理解,你只要知道利用ardunio的 analogWrite函数改变引脚的值即可进行PWM调速就可以。占空比越高直流电机的速度就越高。
如图所示在ardunio和驱动板连接时直流电机即使进行PWM调速ENA也要用跳线帽连接起来,在进行PWM调速时只需要把IN2引脚置低电平,IN1引脚接ardunio的带~引脚即可进行调速。我接的是9引脚。9引脚的值一直变化就可以进行PWM调速。还有一点需要注意的是L289N驱动板要和ardunio单片机共地(gnd接ardunio的gnd)将OUT1和OUT2和直流电机直接连接就可以进行PWM调速了。
下面是直流电极PWM调速的核心程序:
void motor(int val) { // val=attention; // for(;val<=255;val+=5) // { // digitalWrite(9,HIGH); // 电机前进 // digitalWrite(10,LOW); analogWrite(9,val); analogWrite(10,0); delay(50); // }