SKU__DRI0023_双路步进电机驱动扩展板_DRV8825_ - jimaobian/DFRobotWikiCn GitHub Wiki
步进电动机是一种将脉冲信号变换成相应的角位移(或线位移)的电磁装置,是一种特殊的电动机。一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入肘步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
现在步进电机应用的领域越来越多。你也想要用Arduino控制你的步进电机吗,那将会有许多有趣的应用,如绘画仪,3D打印机,自动窗帘..?然而,市面上很难找到能够驱动步进电机的Arduino扩展板。让很多Arduino爱好者无法使用这一功能强大,转动精确的电机。但是现在不同了!DFRobot隆重推出步进电机扩展板,让你的Arduino主控轻松驱动步进电机。该步进电机驱动扩展板子上拥有两块DRV8825步进电机驱动模块,可以接两路步进电机。
- 适用于两相四线步进电机
- 板上带两块DRV8825驱动芯片,并已安装散热片;
- 驱动芯片输入电压8.2-45V,输出电流1.6A;
- 通过六个数字I/O驱动2个步进电机;
- 驱动芯片使能引脚引出至两个数字口,可分别使能电机;
- 扩展板兼容Arduino UNO R3、Leonardo、Mega等控制器,具备完整端口扩展功能。预留XBee,XBee Wi-Fi,蓝牙和射频模块接口,保证您无线通信的需要。
- 具备6个模拟口,8个数字口和1个I2C接口。在连接方式上,按压式无螺丝接线柱能够轻松与电机连接。具体接线,请参考我们的产品资料库。
- 每个步进电机都有一个拨码开关设置步进分辨率。6种不同的步进模式:全,1/2,1/4,1/8,1/16,1/32步模式,具体调试说明请参考产品资料库。
- 板子Xbee接口角落上有一个wireless开关。PROG时停止无线模块工作,可用USB编程。RUN时能够用无线模块通信。
*电机连接引脚说明:
| Tips:不同步进电机的线序可能也各有不同,如何快速区分步进电机的两组引脚?
万用表直接测量阻值,相同的线圈是相互导通的
任意两根接线相连,当你发现输出轴被完全锁死时,相互接触的两根线为同一线圈的两端(其他接法均会出现转动的状态)。 |
细节说明: *无线编程开关:
-
- **RUN:**完成下载,运行无线模块
- **PROG:**下载代码时不用拔掉Xbee或蓝牙
-
3.3V EN 5V跳线帽:
- 当Arduino板io口电压为3.3V时,请将跳线帽连接3.3V与EN
- 当Arduino板io口电压为5V时,请将跳线帽连接5V与EN
-
两路电机分别引出使能端口,X方向电机使能引脚为D8,Y方向电机使能引脚为D12,低电平使能,真值表如下:
D8 | D12 | M1 | M2 |
Low | Low | ENABLE | ENABLE |
High | Low | DISENABLE | ENABLE |
Low | High | ENABLE | DISENABLE |
High | High | DISENABLE | DISENABLE |
*3位编码开关:用来设置步进电机微步分辨率,板子背面有相应设置说明,如下表;
MS1 | MS2 | MS3 | Microstep Resolution |
Low | Low | Low | Full step |
High | Low | Low | Half step |
Low | High | Low | 1/4 step |
High | High | Low | 1/8 step |
Low | Low | High | 1/16 step |
High | Low | High | 1/32 step |
Low | High | High | 1/32 step |
High | High | High | 1/32 step |
/*
This sample code is for testing the 2 stepper motors
The rotation velocity can be adjusted by the code switch
Microcontroller: Arduino UNO
*/
int M1dirpin = 4; //电机Y方向引脚
int M1steppin = 5; //电机Y驱动引脚
int M1en=12; //电机Y使能引脚
int M2dirpin = 7; //电机X方向引脚
int M2steppin = 6; //电机X驱动引脚
int M2en= 8; //电机X使能引脚
void setup()
{
pinMode(M1dirpin,OUTPUT);
pinMode(M1steppin,OUTPUT);
pinMode(M1en,OUTPUT);
pinMode(M2dirpin,OUTPUT);
pinMode(M2steppin,OUTPUT);
pinMode(M2en,OUTPUT);
digitalWrite(M1en,LOW); //低电平使能
digitalWrite(M2en,LOW); //低电平使能
}
void loop()
{
int j;
delayMicroseconds(2);
digitalWrite(M1dirpin,LOW);
digitalWrite(M2dirpin,LOW);
for(j=0;j<=5000;j++){
digitalWrite(M1steppin,LOW);
digitalWrite(M2steppin,LOW);
delayMicroseconds(2);
digitalWrite(M1steppin,HIGH); //上升沿步进
digitalWrite(M2steppin,HIGH); //上升沿步进
delay(1);
}
}
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |