热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DRV8825步进电机驱动控制器与双轴稳定平台的集成应用

本研究基于TI公司的DRV8825步进电机驱动芯片,将其与现有的双轴稳定平台集成,开发出一种具备自动测量功能的新型平台。该平台通过精确控制步进电机,实现了高精度的定位和测量,适用于多种精密测量和自动化应用场景。关键词: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细分输出电流波形


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

 


01模块引脚说明



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

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

 


02驱动模块设计[^52893]



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


1.电路设计[^52893]


2.MCU软件设计1


**◎ 蓝牙串口(COM2)命令 **

if(strcmp("hello", (char *)STD_ARG[0]) &#61;&#61; 0)printf("%s is ready !\r\n", VERSION_STRING);else IFARG0("drvm1") {if(STD_NUM > 2) {sscanf(SDA(2), "%d", &nNumber);if(nNumber &#61;&#61; g_ucCommandFlag) return;g_ucCommandFlag &#61; nNumber;}sscanf(SDA(1), "%ld", &g_lnMotorStep1);if(g_lnMotorStep1 < 0) {g_lnMotorStep1 &#61; -g_lnMotorStep1;ON(DIR1_PIN);} else OFF(DIR1_PIN);if(VAL(DIR1_PIN)) { if(VAL(SW1_PIN) &#61;&#61; 0) {g_lnMotorStep1 &#61; 0;OFF(DIR1_PIN);}}} else IFARG0("drvm2") {if(STD_NUM > 2) {sscanf(SDA(2), "%d", &nNumber);if(nNumber &#61;&#61; g_ucCommandFlag) return;g_ucCommandFlag &#61; nNumber;}sscanf(SDA(1), "%ld", &g_lnMotorStep2);if(g_lnMotorStep2 < 0) {g_lnMotorStep2 &#61; -g_lnMotorStep2;ON(DIR2_PIN);} else OFF(DIR2_PIN);if(VAL(DIR2_PIN)) {if(VAL(SW2_PIN) &#61;&#61; 0) {g_lnMotorStep2 &#61; 0;OFF(DIR2_PIN);}}} else IFARG0("drvm12") {if(STD_NUM > 3) {sscanf(SDA(3), "%d", &nNumber);if(nNumber &#61;&#61; g_ucCommandFlag) return;g_ucCommandFlag &#61; nNumber;}sscanf(SDA(1), "%ld", &g_lnMotorStep1);if(g_lnMotorStep1 < 0) {g_lnMotorStep1 &#61; -g_lnMotorStep1;ON(DIR1_PIN);} else OFF(DIR1_PIN);if(VAL(DIR1_PIN)) {if(VAL(SW1_PIN) &#61;&#61; 0) {g_lnMotorStep1 &#61; 0;OFF(DIR1_PIN);}}sscanf(SDA(2), "%ld", &g_lnMotorStep2);if(g_lnMotorStep2 < 0) {g_lnMotorStep2 &#61; -g_lnMotorStep2;ON(DIR2_PIN);} else OFF(DIR2_PIN);if(VAL(DIR2_PIN)) {if(VAL(SW2_PIN) &#61;&#61; 0) {g_lnMotorStep2 &#61; 0;OFF(DIR2_PIN);}}} else IFARG0("drvorg") {ON(DIR1_PIN);ON(DIR2_PIN);g_lnMotorStep1 &#61; 500000;g_lnMotorStep2 &#61; 500000;if(VAL(DIR1_PIN)) {if(VAL(SW1_PIN) &#61;&#61; 0) {g_lnMotorStep1 &#61; 0;OFF(DIR1_PIN);}}if(VAL(DIR2_PIN)) {if(VAL(SW2_PIN) &#61;&#61; 0) {g_lnMotorStep2 &#61; 0;OFF(DIR2_PIN);}}}// else printf("Error command : %s !\r\n", STD_ARG[0]);
}

 


02控制双轴平台



  令示例&#xff1a;


  • zbcmd(b’drvm1 1000’) : 对于顶层移动&#xff1b;
  • zbcmd(b’drvm2 1000’)&#xff1a;对于底层驱动&#xff1b;
  • zbcmd(b’drvorg’) : 两个电机都回复的复位原点。

  当参数大于零时&#xff0c;平台原理步进电机&#xff1b;当参数小于0&#xff0c;平台移动到步进电机&#xff1b;

  移动参数&#xff1a; N&#61; 200000&#xff0c;移动距离&#xff1a;6.6mm
  因此&#xff0c;移动参数的参数&#xff1a;
Lstep&#61;6.6200000&#61;33nM&#61;0.033μML_{step} &#61; {{6.6} \over {200000}} &#61; 33nM &#61; 0.033\mu MLstep&#61;2000006.6&#61;33nM&#61;0.033μM

 



■ 相关文献链接:


  • DRV8825
  • 优信电子出品
  • RepRap 3D打印机开源项目
  • StepStick



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



推荐阅读
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中配置和使用Lex(Flex)与Yacc(Bison),包括软件的下载、安装以及通过示例验证其正确性的步骤。 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • C# 中创建和执行存储过程的方法
    本文详细介绍了如何使用 C# 创建和调用 SQL Server 存储过程,包括连接数据库、定义命令类型、设置参数等步骤。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 字符串中特定模式出现次数的计算方法
    本文详细探讨了如何高效地计算字符串中特定模式(如'pat')的出现次数,通过实例分析与算法解析,帮助读者掌握解决此类问题的方法。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
author-avatar
生活更美好YE
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有