Arduino中电机程序——驱动电机芯片是HR8833,不是L298N
2018-03-18 22:05
417 查看
一、首先介绍下,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控制电机转动的程序如下,
图1 HR8833电机驱动芯片电路连接
图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);
}
图1 HR8833电机驱动芯片电路连接
图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);
}
相关文章推荐
- Arduino中电机程序——驱动电机芯片是HR8833,不是L298N
- 小型步进电机驱动芯片HR8833 介绍以及应用
- 关于电机驱动扩展板 L293D 马达板Arduino
- ST单片机C语言驱动电机程序
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-可以用软件自带NC工具驱动但是程序无法让电机转动怎么办
- C6678CSL芯片支持库:第八节 芯片驱动DSP程序
- 电机驱动芯片L9110
- L298N 电机驱动模块
- ADS1256芯片的驱动C程序
- arduino电机驱动例子
- 利用STC12C5A60S2单片机内容的PWM信号,驱动电机控制芯片MX214B实现小风扇的转动
- 【教程向】如何用L298N电机驱动模块与Arduino实现PWM调速
- ISD4004语音芯片资料说明及其应用实例(含程序驱动)
- 电机驱动芯片LMD18200原理及应用
- Tcar:智能车之基于L298N电机驱动芯片的驱动模块
- Arduino芯片下载烧录引导程序(bootloader)
- Arduino下的OLED模块驱动测试程序
- 【Arduino学习笔记】使用L298N电机驱动模块驱动直流电机
- 使用Arduino驱动基于ST7533芯片的TFT屏
- 不是Bug的bug-CUDA程序显卡驱动在2秒以后恢复