DRV8825步进电机驱动控制模块以及双轴平台

简 介: 实验研究了基于TI公司的DRV8825不仅电机驱动芯片模块,并利用它与原来存在的X-Y的平台构建了一个可以自动测量的平台 。

关键词 DRV8825X-Y平台

 

■ DRV8825简介


  款基于TI公司的 DRV8825 步进电机驱动芯片模块是由 优信电子出品 的。(TB:¥5.9), 它可以用于 RepRap 3D打印机开源项目 中的 StepStick

  由 DRV8825 数据手册可以知道该模块的基本应用数据:
  1. 具有嘴大32细分步骤;
  2. 工作电压可达45V;
  3. 输出最大电流2.5A(24V工作电压的时候)

▲ 应用示意图以及32细分输出电流波形

▲ 应用示意图以及32细分输出电流波形

 

01模块引脚说明


  DRV8825 数据手册中的管脚功能说明,分别确定模块管脚的功能,如下图所示:

  工作模式设定如下表所示:

 

02驱动模块设计[^52893]


  [^52893]:控制模块AD工程文件:AD\Tools\2020\DRV8825

1.电路设计[^52893]

2.MCU软件设计1

**◎ 蓝牙串口(COM2)命令 **
    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

 


■ 相关文献链接:


  1. MCU工程文件:C51\STC\Tools\2020\DRV8825AXES2\DRV8825AXES2.uvproj ↩︎

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值