一、首先来介绍一下L298N板载位置的功能:
二、几种供电方式。
1、L298N供电驱动5V的小马达时:
供电: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 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--);
}
版权声明:本文为CSDN博主「最穷不过要饭、不死总会出头」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_59113542/article/details/121038048
暂无评论