L298N、电机、单片机的线路连接

一、首先来介绍一下L298N板载位置的功能:

L298N、电机、单片机的线路连接_第1张图片

二、几种供电方式。

1、L298N供电驱动5V的小马达时:

供电:L298N的12V和5V都接5V供电,GND不但要接驱动电源的GND(如果是和别的单片机或者其他系统连接在一起的时候,一定要从这里再引出一根GND和单片机或者系统的GND相连,使电压有参考电平)

逻辑输入:IN1IN2为一组,对应OutA(输出A);

             IN3IN4为一组,对应OutB(输出B)。

以左边马达为例当IN1=0,IN2=1时为正转。IN1=1,IN2=0时为反转。待机则全为0,刹车则全为1

                            L298N、电机、单片机的线路连接_第2张图片

(不建议该方法,可能发生提供电压较小,电机转速不足的情况)

2、电源输入7~12V电压时,5v的位置不用接电源,该位置可输出一个5v,用于给单片机供电,L298N的GND接单片机的GND,( 否则没有参考电压,不能进行正常控制 )。

                   L298N、电机、单片机的线路连接_第3张图片

(强烈建议使用该方法)

3、当输入电压大于12v时,需要拔掉电源旁的跳线帽,5V端需要接入5v的电压,GND还是接GND

L298N、电机、单片机的线路连接_第4张图片

拔掉跳线帽原因:用5V电源给芯片供电。如果不断开板载使能跳线帽的话,可能会损坏内置的7805的稳压芯片。

三、L298n的驱动(以通道A为例)

L298N、电机、单片机的线路连接_第5张图片

3.1 对于逻辑输入引脚IN1、IN2

       控制电机的正反转,将其接在单片机的I/O口上控制即可。

L298N、电机、单片机的线路连接_第6张图片

3.2 对于ENA,通道使能引脚。

若不考虑电机的转速,可接为高电平或低电平控制接通还是关断,上图就是通过一个跳线帽接到高电平使能。

若需要控制电机的转速,可将其连接在PWM输出上,通过调节PWM的占空比,以此来达到控制转速的目的。

/*
****************************************************
//	硬件连接:P1.0----IN1
//			  P1.1----IN2
//            P1.2----ENA
//			  电机两端分别接OUT1和OUT2
****************************************************
*/ 
#include
#define uchar unsigned char
#define uint unsigned int
sbit 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--);	
}


你可能感兴趣的:(单片机,嵌入式硬件)