Arduino中电机程序——驱动电机芯片是HR8833,不是L298N

一、首先介绍下,HR8833电机驱动芯片,和L298N电机驱动芯片使用起来略有区别,但是HR8833电机驱动芯片价格比L298N要便宜很多。首先看看HR8833的电路连接,HR8833电机驱动芯片分为两路:A路和B路,输出分别为OUT1、OUT2和OUT3、OUT4,A路控制OUT1、OUT2,B路控制OUT3、OUT4,A路控制输出的IO口引脚为AIN1和AIN2,分别连接Arduino主芯片的数字口5和7,B路同样的原理,最初我在接触HR8833芯片时,受L298N芯片的影响,总认为OUT1、OUT2、OUT3、OUT4直接连接Arduino的IO口的引脚,结果找了半天,查阅资料,才知道HR8833和L298N芯片不同的地方就是,L298N芯片的4个输出引脚直接连接Arduino的数字IO口引脚,写程序时需要定义的几个IO口就是这四个输出所连接的IO口引脚;与L298N不一样的是,HR8833的OUT引脚不连接Arduino的IO口引脚,而是AIN1和AIN2和BIN1和BIN2连接Arduino的IO口,程序中定义时需要定义这四个引脚,设计的原理图中,分别连接的是D5和D7、D6和D8,以自己设计的原理图为例,HR8833控制电机转动的程序如下,

Arduino中电机程序——驱动电机芯片是HR8833,不是L298N_第1张图片

图1  HR8833电机驱动芯片电路连接

Arduino中电机程序——驱动电机芯片是HR8833,不是L298N_第2张图片

                  图2  Arduino主控芯片原理图

二、HR8833控制电机驱动程序

const int IA1=5;
const int IA2=7;
const int IB1=6;
const int IB2=8;
 
void setup() {
     pinMode(IA1, OUTPUT);
     pinMode(IA2, OUTPUT);
     pinMode(IB1, OUTPUT);
     pinMode(IB2, OUTPUT);
}

void loop() {
 MA1_Forward(200);
 delay(1000);
 MA2_Backward(200);
 delay(1000);
MB1_Forward(200);
 delay(1000);
 MB2_Backward(200);
 delay(1000);
}

void MA1_Forward(int Speed1)
{
     analogWrite(IA1,Speed1);
     digitalWrite(IA2,LOW);  
  }
 
void MA2_Backward(int Speed1)
{    
    int Speed2=255-Speed1;
    analogWrite(IA1,Speed2);
    digitalWrite(IA2,HIGH);
  }
 
void MB1_Forward(int Speed1)
{
     analogWrite(IB1,Speed1);
     digitalWrite(IB2,LOW);  
  }
 
void MB2_Backward(int Speed1)
{    
    int Speed2=255-Speed1;
    analogWrite(IB1,Speed2);
    digitalWrite(IB2,HIGH);   
  }                           





你可能感兴趣的:(程序日志)