单片机L298N电机驱动板的几种不同电压使用场景
时间:2023-06-19 22:37:00
L298N电机驱动版主要由两个核心部件组成
-
L298N 驱动芯片
-
78M05 稳压器
模块参数:
模块端口示意图:
这个板载5V与稳压模块有关的复杂,与稳压模块有关
稳压模块能否生效完全取决于5V能跳帽是否启用(取下禁用,插入启用,默认为板载连接),这里有两种情况,连接和不连接:
板载跳帽:
当电源小于或等于12V时,内部电路由稳压器供电,并且5V引脚作为微控制器供电的输出引脚,即:VCC作为7805的输入,5V它是7805的输出,可以为板载提供5v电压用于外部电路供电
拔掉跳帽:
当电源大于12V时,拔掉跳帽,并且应通过5V端子单独为内部供电,此时5V端为输入。即:VCC不作为7805的输入, 5v由外部电路提供,此时需要两个电源,VCC和 5V
注意事项:
**7V实际可接受的输入范围是 7-12V)为7V-12V可使能板载(即图中板载5)V使能)的5V逻辑电源,当使用板载5V供电之后,接口中的 5V不要输入电压供电。如果强制供电,可能会烧坏右侧的电容,但可以直接5V电压供外部使用,一般直接引出开发板供电,如:Arduino,51单片机
ps:上次没有用四节干电池驱动,原来电压不够。
**12V
总结U的范围:
U<7V:12V端口输入电压用于内部电路,缺点是12V输入电压可能不足,电机转速不足
(这种情况是我自己假设的,U<7V,理论上,内部电路仍由稳压器供电,)
7V
12V跳线帽,VCC不作为7805的输入。
电源引脚
VCC 电压范围为5~35V之间
GND GND是连接到电源负极的接地引脚
5V 如果安装了5个驱动芯片内部逻辑电源引脚V跳帽,这个引脚可以输出5V如果拔下5个电压,为微控板或其他电路提供电源V跳帽需要独立外接5V电源
控制引脚
-
IN1 & IN2 电机驱动A的输入引脚控制电机A的旋转和旋转角度
IN1输入高电平HIGH,IN2输入低电平LOW,对应电机A正转
IN1输入低电平LOW,IN2输入高电平HIGH,对应电机A反转
IN1、IN同时输入高电平HIGH或低电平LOW,停止转动相应的电机A
调速就是改变IN1、IN2高电平占空比(需要拔掉)ENA处跳帽) -
IN3 & IN4 电机驱动器B的输入引脚控制电机B的旋转和旋转角度
IN3输入高电平HIGH,IN4输入低电平LOW,对应电机B正转
IN3输入低电平LOW,IN4输入高电平HIGH,对应电机B反转
IN3、IN同时输入高电平HIGH或低电平LOW,停止转动相应的电机B
调速就是改变IN3、IN4高电平占空比(需要拔掉)ENB处跳帽)
输出引脚
- OUT1 & OUT2 电机驱动A的输出引脚,连接直流电机A或步进电机A 和A-
- OUT3 & OUT3 电机驱动器B的输出引脚,直流电机B或步进电机B 和B-
调速控制引脚
- ENA 电机A调速开关引脚,拔下跳帽,使用PWM电机A调速,插入电机A高速运行(占空间的100%)
- ENB 电机B调速开关引脚,拔下跳帽,使用PWM对于电机B调速,插入电机B高速运行(占空间的100%)
关于电机调速
采用PWM调速,其原理是就是开关管在一个周期内电的导通时间为t,在周期T中,电机两端的平均电压U=Vcc*(t/T)=a Vcc。其中a=t/T,又称占空比,Vcc是电源电压。电机转速与电机两端电压成正比,电机两端电压与控制波形的比例成正比。因此,电机的速度与比例成正比。比例越大,电机转速越快。详见文末:电机驱动原理调速PWM。
官方示例源码:
#include sbit IN1=P1^0; sbit IN2=P1^1; sbit ENA=P1^2; void delay(unsigned int z); void delay_us(unsigned int aa); /*******************?÷oˉêy**************************/ void main() {
while(1) {
/******************°′ò??¨???±è×a?ˉ************************/ //×a?ÖÜÆÚΪ20
unsigned int i,cycle=0,T=2048;
IN1=1; //Õýת
IN2=0;
for(i=0;i<200;i++)
{
delay(10);//PWMÕ¼¿Õ±ÈΪ50%£¬ÐÞ¸ÄÑÓʱµ÷ÕûPWMÂö³å
ENA=~ENA;
}
//ת¶¯ÖÜÆÚΪ40
IN1=0; //·´×ª
IN2=1;
for(i=0;i<100;i++)
{
delay(20);//PWMÕ¼¿Õ±ÈΪ50%£¬ÐÞ¸ÄÑÓʱµ÷ÕûPWMÂö³å
ENA=~ENA;
}
/******************×Ô¶¯¼ÓËÙÕýת************************/
//ÿ¸öPWMÖÜÆÚΪ2048us
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);
}
}
}
/******************zÃëÑÓʱº¯Êý*************************/
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************΢ÃîÑÓʱ******************************/
void delay_us(unsigned int aa)
{
while(aa--);
}
参考博文:
想看更加详细L298N芯片说明,点击这里