本文所用到的电机就是淘宝很常见的TT直流减速电机,对于这种电机做一般的课设是够了,需要好的性能可以去买那种金属的更好的电机。
电机驱动选用L298N驱动模块,此模块也是用得比较多的驱动模块,淘宝大概9元多一点一个。
那我们的代码是直接控制电机驱动IO口的。假如电机驱动分别是A0A1B0B1四个口子可以驱动两个电机,那么out口也是对应的,可以连接到电机的两个端子口。
代码中是两轮驱动的代码:有比较详细的注解可以看看。我会再更新PWM控制电机
/****************************************************************************
硬件连接
P1_6 接驱动模块ENA 使能端,输入PWM信号调节速度
P1_7 接驱动模块ENB 使能端,输入PWM信号调节速度
P3_4 接IN1
P3_5 接IN2
P3_6 接IN3
P3_7 接IN4
关于单片机电源:驱动模块内带稳压芯片,当电池输入最低的电压7V时候可以输出稳定的5V
分别在针脚标+5 与GND 。这个电源可以作为单片机系统的供电电源。
****************************************************************************/
#include<AT89x51.H>
#define Left_moto_go {P0_0=0,P0_1=1;} //P3_4 P3_5 接IN1 IN2 当 P3_4=0,P3_5=1; 时左电机前进
#define Left_moto_back {P0_0=1,P0_1=0;} //P3_4 P3_5 接IN1 IN2 当 P3_4=1,P3_5=0; 时左电机后退
#define Right_moto_go {P0_2=0,P0_3=1;} //P3_6 P3_7 接IN1 IN2当 P3_6=0,P3_7=1; 时右电机前转
#define Right_moto_back {P0_2=1,P0_3=0;} //P3_6 P3_7 接IN1 IN2当 P3_6=1,P3_7=0; 时右电机后退
void main(void)
{
while(1) /*无限循环*/
{
Left_moto_go;
Right_moto_go;
}
}
完整的PWM可调速循迹资源地址:http://download.csdn.net/download/weixin_40342500/10251732