L298N双路驱动直流电机方案(支持PWM+正反转)

5 篇文章 2 订阅

目录

写在前面(吐槽吐槽) 

正文

最后


写在前面(吐槽吐槽) 

我想要驱动两个直流电机.

直流电机,说白了,就是那种小马达,小时候玩四驱车时那种没有正负极的马达,转速快,力矩小。

比如

 

我用它带一个扇叶,就能实现正反转以及通过PWM进行调速,问题在于,这样的一个马达驱动电流竟然达到了400ma,我是主控板(stm32F103ZET6正点原子精英版),在外接12v 1A的电源适配器后,提供的5v,3.3v的电源提供的负载的最大电流也只有1.2A,排除板子本身需要200ma以上,最大提供给负载也只有1A,为这电源我折腾了不少,什么dc电压扩展板,面包电源板等等,它们驱动一个电机还好,两个电机就不行了。

最后我找了我电信的同学,成功找到答案,用可充电锂电池组提供持久的放电,才真正意义上解决电源源头的问题。。

正文

本次用的是ST的L298N,就是淘宝是能找到的那种,双路直流电机驱动板

 

怎么用呢?它有个12v Power端口的电源输入口,实际上输入7-12v都可以,如果是在这一端输入电压,同时如果你想有一个让这个L298N提供5V电源以向外输出, 则把上图的5Venable 短接。

基于网上对这资料很杂且乱,我只能实践记录操作以验证真理。

在不拔使能A的调线帽时,测试s正转 2s截止  2s反转,为了简单测试,我用arduino来测试。


void setup(){

Serial.begin(115200);
pinMode(12,OUTPUT);
  pinMode(14,OUTPUT);
}


void loop(){

digitalWrite(12,HIGH);
  digitalWrite(14,LOW);  //正转
 delay(2000);
 digitalWrite(12,LOW);   //制动
  digitalWrite(14,LOW);
   delay(2000);
    digitalWrite(12,LOW);
  digitalWrite(14,HIGH);  //反转
     delay(2000);
   
  
  
 

}

 现象正确。

在不拔控制端  也就是上图中的A ENABLE的跳线帽的情况下实现PWM去控制。

测试一个方向上转速不断增大


int A=12;
int B=14;
void setup(){

Serial.begin(115200);
pinMode(A,OUTPUT);
  pinMode(B,OUTPUT);
}


void loop(){

 
 PWM_Run_x(A,50);
  PWM_Run_x(B,0);
  delay(2000);
  
     PWM_Run_x(A,75);
    PWM_Run_x(B,0);
   delay(2000);

    PWM_Run_x(A,95);
    PWM_Run_x(B,0);
   delay(2000);


       PWM_Run_x(A,125);
    PWM_Run_x(B,0);
   delay(2000);

        PWM_Run_x(A,165);
    PWM_Run_x(B,0);
   delay(2000);

     PWM_Run_x(A,205);
    PWM_Run_x(B,0);
   delay(2000);
   
   PWM_Run_x(A,0);
   PWM_Run_x(B,0);
   delay(2000);
   
  
  
 

}

void PWM_Run_x(int pin,int val){

  analogWrite(pin, val);
}

现象正确

然后拔了A ENABLE ,则直接就不转了。这与网上的资料是有出入。

比如以下查到的资料。

 

 

最后

今天是中秋节,各位中秋快乐。。。。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值