DRV8825步进电机驱动控制模块以及双轴平台
简 介: 实验研究了基于TI公司的DRV8825不仅电机驱动芯片模块,并利用它与原来存在的X-Y的平台构建了一个可以自动测量的平台 。
关键词
: DRV8825,X-Y平台
■ DRV8825简介
这款基于TI公司的 DRV8825 步进电机驱动芯片模块是由 优信电子出品 的。(TB:¥5.9), 它可以用于 RepRap 3D打印机开源项目 中的 StepStick 。
由 DRV8825 数据手册可以知道该模块的基本应用数据:
1. 具有嘴大32细分步骤;
2. 工作电压可达45V;
3. 输出最大电流2.5A(24V工作电压的时候)
▲ 应用示意图以及32细分输出电流波形
01模块引脚说明
对照 DRV8825 数据手册中的管脚功能说明,分别确定模块管脚的功能,如下图所示:
工作模式设定如下表所示:
02驱动模块设计[^52893]
[^52893]:控制模块AD工程文件:AD\Tools\2020\DRV8825
1.电路设计[^52893]
2.MCU软件设计1
if(strcmp("hello", (char *)STD_ARG[0]) == 0)
printf("%s is ready !\r\n", VERSION_STRING);
else IFARG0("drvm1") {
if(STD_NUM > 2) {
sscanf(SDA(2), "%d", &nNumber);
if(nNumber == g_ucCommandFlag) return;
g_ucCommandFlag = nNumber;
}
sscanf(SDA(1), "%ld", &g_lnMotorStep1);
if(g_lnMotorStep1 < 0) {
g_lnMotorStep1 = -g_lnMotorStep1;
ON(DIR1_PIN);
} else OFF(DIR1_PIN);
if(VAL(DIR1_PIN)) {
if(VAL(SW1_PIN) == 0) {
g_lnMotorStep1 = 0;
OFF(DIR1_PIN);
}
}
} else IFARG0("drvm2") {
if(STD_NUM > 2) {
sscanf(SDA(2), "%d", &nNumber);
if(nNumber == g_ucCommandFlag) return;
g_ucCommandFlag = nNumber;
}
sscanf(SDA(1), "%ld", &g_lnMotorStep2);
if(g_lnMotorStep2 < 0) {
g_lnMotorStep2 = -g_lnMotorStep2;
ON(DIR2_PIN);
} else OFF(DIR2_PIN);
if(VAL(DIR2_PIN)) {
if(VAL(SW2_PIN) == 0) {
g_lnMotorStep2 = 0;
OFF(DIR2_PIN);
}
}
} else IFARG0("drvm12") {
if(STD_NUM > 3) {
sscanf(SDA(3), "%d", &nNumber);
if(nNumber == g_ucCommandFlag) return;
g_ucCommandFlag = nNumber;
}
sscanf(SDA(1), "%ld", &g_lnMotorStep1);
if(g_lnMotorStep1 < 0) {
g_lnMotorStep1 = -g_lnMotorStep1;
ON(DIR1_PIN);
} else OFF(DIR1_PIN);
if(VAL(DIR1_PIN)) {
if(VAL(SW1_PIN) == 0) {
g_lnMotorStep1 = 0;
OFF(DIR1_PIN);
}
}
sscanf(SDA(2), "%ld", &g_lnMotorStep2);
if(g_lnMotorStep2 < 0) {
g_lnMotorStep2 = -g_lnMotorStep2;
ON(DIR2_PIN);
} else OFF(DIR2_PIN);
if(VAL(DIR2_PIN)) {
if(VAL(SW2_PIN) == 0) {
g_lnMotorStep2 = 0;
OFF(DIR2_PIN);
}
}
} else IFARG0("drvorg") {
ON(DIR1_PIN);
ON(DIR2_PIN);
g_lnMotorStep1 = 500000;
g_lnMotorStep2 = 500000;
if(VAL(DIR1_PIN)) {
if(VAL(SW1_PIN) == 0) {
g_lnMotorStep1 = 0;
OFF(DIR1_PIN);
}
}
if(VAL(DIR2_PIN)) {
if(VAL(SW2_PIN) == 0) {
g_lnMotorStep2 = 0;
OFF(DIR2_PIN);
}
}
}
// else printf("Error command : %s !\r\n", STD_ARG[0]);
}
02控制双轴平台
命令示例:
- zbcmd(b’drvm1 1000’) : 对于顶层移动;
- zbcmd(b’drvm2 1000’):对于底层驱动;
- zbcmd(b’drvorg’) : 两个电机都回复的复位原点。
当参数大于零时,平台原理步进电机;当参数小于0,平台移动到步进电机;
移动参数: N= 200000,移动距离:6.6mm
因此,移动参数的参数:
L
s
t
e
p
=
6.6
200000
=
33
n
M
=
0.033
μ
M
L_{step} = {{6.6} \over {200000}} = 33nM = 0.033\mu M
Lstep=2000006.6=33nM=0.033μM
■ 相关文献链接:
MCU工程文件:C51\STC\Tools\2020\DRV8825AXES2\DRV8825AXES2.uvproj ↩︎
相关文章
- 计算一/二元一次方程的类(用于动画控制)
- Shell入门教程:流程控制(1)命令的结束状态
- 电脑控制手机的另一选择——android vnc server
- 流程控制
- Centos7安装部署openstack--Networking 网络服务(控制节点)
- 浅谈 Orbeon form builder 的权限控制
- Atititi ui之道 attilax著 v3 s11.docx 1. 概览2 1.1. 软件设计可分为两个部分:编码设计与UI设计2 2. 用户界面设计的三大原则是:置界面于用户的控制之下;
- s3c2440的IIC控制
- LabVIEW控制前面板对象
- 智能车学习(二十二)——浅谈速度控制
- 【Java面试】并发编程实战(线程控制操作详解)
- Java基础(14)-流程控制之break和continue
- Tcl 语言——流程控制篇
- Linux下CMake简明教程(六)动态库和静态库的编译控制