基于电机的应用制作一个8通道电机驱动器模块电路

描述

在本项目中,我们将为基于电机的应用制作一个 8 通道电机驱动器模块电路。在该电路中,我们设计了用于驱动直流或步进电机的PCB。通过使用此电机驱动板,我们可以一次操作 8 个直流电机或四个 4 线步进电机。在这块板中,我们使用了很少的三针螺钉接线端子和防盗尺,它们由相同的引脚连接,因此您可以使用防盗杆或电线来连接电机。在这里,我们使用了四个L293D电机驱动器IC来驱动电机。

所需组件:

电机驱动器IC L293D -4

104 电容器 -4

2 针螺钉接线端子 -8

3 针接线端子 -1

贴片发光二极管 -1

印刷电路板 (从JLCPCB订购) -1

电阻 1k -1

伯格棍男

电源

微控制器或 Arduino

连接线

电机驱动电路说明:

在本电机驱动器电路中,我们使用了四个L293D电机驱动器IC来驱动电机。该板能够一次驱动 8 个直流电机或 4 个步进电机。用户可以使用此板来构建基于直流或步进电机的项目,如机械臂、线路跟随器、土地强盗、迷宫跟随器和许多其他项目。该板可以使用微控制器进行控制。该板具有用于连接电机的螺丝端子和防盗器。在这里,我们使用盗斗将控制引脚连接到微控制器或Arduino。该板具有跳线引脚,用于选择硬件控制模式或软件控制模式,这意味着用户可以通过编程或使用跳线连接器将跳线放入硬件电机驱动板来控制这些引脚。该板具有 12v、5v 电源选项。还有一些通用孔可用于放置任何所需的组件。

PCB

我们设计了易于理解的电路板。用户可以通过读取引脚名称来了解连接(在PCB板上提及)。

工作和演示:

为了演示,我们使用Arduino板来控制2个直流电机和1个步进电机。我们已在 L293D 的 8、9、10 和第 11 个引脚(In21、In22、In23 和 In24 电机驱动器引脚)上连接步进电机,并且通过使用跳线连接器将 HIGH 置于硬件控制模式,将使能引脚(跳线)设置为硬件控制模式。

直流电机连接在 L293D 的第 3、4、5 和 6 引脚(IN11、IN12、IN13、IN14 电机驱动板引脚)上,使能引脚(跳线)设置为软件控制模式,连接在 2、3 引脚(1EN12 和 1EN34 电机驱动器引脚)。5V电源用于为电路和电机供电。

PCB

以下是我们用来演示此电机驱动器模块的Arduino代码:

#include

const int stepsPerRevolution = 200; 
Stepper myStepper(stepsPerRevolution, 10, 9, 8, 11);

#define _1EN12 2
#define _1EN34 3
#define IN11 4
#define IN12 5
#define IN13 6
#define IN14 7

void setup() 
{
pinMode(_1EN12, OUTPUT);
pinMode(_1EN34, OUTPUT);
pinMode(IN11, OUTPUT);
pinMode(IN12, OUTPUT);
pinMode(IN13, OUTPUT);
pinMode(IN14, OUTPUT);

digitalWrite(_1EN12, LOW);
digitalWrite(_1EN34, LOW);
}

void loop() 
{

stepperMotor();
delay(5000);

forwardFirstMotor();
startFirstMotor();
delay(5000); 

stopFirstMotor();
delay(2000);

forwardSecondMotor();
startSecondMotor();
delay(5000);

stopSecondMotor();
delay(2000);

startFirstMotor();
startSecondMotor();
delay(5000);

stopFirstMotor();
stopSecondMotor();
delay(2000);

reverseFirstMotor();
startFirstMotor();
delay(5000); 

stopFirstMotor();
delay(2000);

reverseSecondMotor();
startSecondMotor();
delay(5000);

stopSecondMotor();
delay(2000);

startFirstMotor();
startSecondMotor();
delay(5000);

stopFirstMotor();
stopSecondMotor();
delay(2000); 

forwardFirstMotor();
startFirstMotor();
startSecondMotor();
delay(5000);

stopFirstMotor();
stopSecondMotor();
delay(2000);

reverseFirstMotor();
forwardSecondMotor();
startFirstMotor();
startSecondMotor();
delay(5000);

stopFirstMotor();
stopSecondMotor();
delay(2000);
}

void forwardFirstMotor()
{
digitalWrite(IN11, HIGH);
digitalWrite(IN12, LOW);
}

void forwardSecondMotor()
{
digitalWrite(IN13, HIGH);
digitalWrite(IN14, LOW);
}

void reverseFirstMotor()
{
digitalWrite(IN11, LOW);
digitalWrite(IN12, HIGH);
}

void reverseSecondMotor()
{
digitalWrite(IN13, LOW);
digitalWrite(IN14, HIGH);
}

void stopFirstMotor()
{
digitalWrite(_1EN12, LOW);
}

void stopSecondMotor()
{
digitalWrite(_1EN34, LOW);
}

void startFirstMotor()
{
digitalWrite(_1EN12, HIGH);
}

void startSecondMotor()
{
digitalWrite(_1EN34, HIGH);
}

void stepperMotor()
{
for(int i=0;i<2000;i++)
{
myStepper.step(1);
delay(10);
}
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分