Arduino A4950 驱动直流电机

Arduino A4950 驱动直流电机

对于自己做车的大部份同学来说,我和大家一样,用的最多的就是L298N驱动器,这次在家想试着自己研究一个驱动能力更好的更加方便的电机驱动,而网上使用Arduino L298N 驱动小车的例子非常的多 A4950 的一篇也没有,那好吧,希望这篇文章能给L298N用腻了的同学提供一个更好更新的选项

1.实验准备

1.Arduino 系列单片机
2.直流电机
3.A4950驱动器

2.A4950芯片简介

在这里插入图片描述
一个A4950驱动器可驱动两个直流电机
驱动板工作电压范围:7.6V~30V

A4950引脚 对应引脚
VCC 单片机5V
GND 单片机GND
VM 驱动电源7.6~30V
AIN1 控制A电机的1号PWM引脚
AIN2 控制A电机的2号PWM引脚
AOUT1 电机A正极
ATOU2 电机A负极
BN1 控制B电机的1号PWM引脚
BIN2 控制B电机的2号PWM引脚
BOUT1 电机B正极
BTOU2 电机B负极

一个模块上有两组 VCC GND VM 至少接一组

单片机 A4950 驱动电源 记得共地

A4950 驱动是通过比较两个控制引脚输出PWM的大小关系来确定电机方向的
两个控制引脚输出PWM的差值决定电机的转速

3.程序设计

我们接下来的代码都已驱动一个电机为例,剩下一个如法炮制就可以了

3.1简易驱动板

unsigned int Motor_AIN1=2;       //控制A电机的PWM引脚  一定改成自己用的
unsigned int Motor_AIN2=3;       
char Motor_Order;                //定义一个字符型变量存储串口输入命令
void setup() 
{
    
    
  Serial.begin(9600);            //打开串口
  Serial.println("/*****开始驱动*****/");
  pinMode(Motor_AIN1,OUTPUT);   //设置两个驱动引脚为输出模式
  pinMode(Motor_AIN2,OUTPUT); 
}

void loop() 
{
    
    
 while(Serial.available()>0)    //检测串口是否有命令
  {
    
    
    Motor_Order=Serial.read();  //将命令存储在变量中
    switch(Motor_Order)
    {
    
    
      //发送字符1电机正转
      case '1' : analogWrite(Motor_AIN1,250); analogWrite(Motor_AIN2,0);Serial.println("/*****电机正传*****/");break;
      //发送字符2电机反转
      case '2' : analogWrite(Motor_AIN1,0); analogWrite(Motor_AIN2,250);Serial.println("/*****电机反转*****/");break;
      //发送其他字符电机停转
      default  : analogWrite(Motor_AIN1,0); analogWrite(Motor_AIN2,0);Serial.println("/*****停转****/");break;
    }
  }
}

烧录之后打开串口分别输入指令就可以了
在这里插入图片描述

总结

如果电机不转的的是驱动电压不够的问题,我用的12V的航模电池

猜你喜欢

转载自blog.csdn.net/chrnhao/article/details/112129949