供电:L298N的12V和5V都接5V供电,GND不但要接驱动电源的GND(如果是和别的单片机或者其他系统连接在一起的时候,一定要从这里再引出一根GND和单片机或者系统的GND相连,使电压有参考电平)
逻辑输入:IN1和IN2为一组,对应OutA(输出A);
IN3和IN4为一组,对应OutB(输出B)。
以左边马达为例当IN1=0,IN2=1时为正转。IN1=1,IN2=0时为反转。待机则全为0,刹车则全为1
(不建议该方法,可能发生提供电压较小,电机转速不足的情况)
2、电源输入7~12V电压时,5v的位置不用接电源,该位置可输出一个5v,用于给单片机供电,L298N的GND接单片机的GND,( 否则没有参考电压,不能进行正常控制 )。
(强烈建议使用该方法)
3、当输入电压大于12v时,需要拔掉电源旁的跳线帽,5V端需要接入5v的电压,GND还是接GND
拔掉跳线帽原因:用5V电源给芯片供电。如果不断开板载使能跳线帽的话,可能会损坏内置的7805的稳压芯片。
三、L298n的驱动(以通道A为例)3.1 对于逻辑输入引脚IN1、IN2
控制电机的正反转,将其接在单片机的I/O口上控制即可。
3.2 对于ENA,通道使能引脚。
若不考虑电机的转速,可接为高电平或低电平控制接通还是关断,上图就是通过一个跳线帽接到高电平使能。
若需要控制电机的转速,可将其连接在PWM输出上,通过调节PWM的占空比,以此来达到控制转速的目的。
/*****************************************************//硬件连接:P1.0----IN1// P1.1----IN2// P1.2----ENA// 电机两端分别接OUT1和OUT2*****************************************************/ #include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit IN1=P1^0;sbit IN2=P1^1;sbit ENA=P1^2;uchar k;uint cycle=0,T=2048;void delay_ms(uchar z);void delay_us(uint n);/*******************主函数**************************/void main(){while(1){cycle=0;IN1=1; //正转IN2=0;for(k=0;k<200;k++){delay_ms(10);//PWM占空比为50%,修改延时调整PWM脉冲ENA=~ENA;}IN1=0; //反转IN2=1;for(k=0;k<200;k++){delay_ms(10);//PWM占空比为50%,修改延时调整PWM脉冲ENA=~ENA;}IN1=1; //自动加速正转IN2=0;while(cycle!=T){ENA=1;delay_us(cycle++);ENA=0;delay_us(T-cycle);}IN1=0; //自动减速反转IN2=1;while(cycle!=T){ENA=1;delay_us(cycle++);ENA=0;delay_us(T-cycle);}}}/******************毫秒延时函数*************************/void delay_ms(uchar z){uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}/****************微秒延时函数******************************/void delay_us(uint n){while(n--);}