931|0

223

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

【ADI TMC2208 步进电机评估板】第七篇:电脑上位机控制步进电机运动 [复制链接]

本帖最后由 Maker_kun 于 2024-9-6 23:59 编辑

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(National Instruments,简称NI)开发的一种图形化编程环境和工具。它主要用于数据采集、仪器控制和自动化测试等领域,通过可视化编程方法简化了复杂系统的开发过程。

LabVIEW的特点与应用 图形化编程:LabVIEW采用图形化编程方式,用户可以通过拖放控件和连接线来创建程序,而无需编写传统的代码。这种方式使得编程更加直观和易于学习。

虚拟仪器:LabVIEW中的程序被称为虚拟仪器(VI),这些VI可以模拟各种物理仪器的功能,并且具有高度的灵活性和可扩展性。

数据流编程:LabVIEW的核心概念之一是数据流编程,即通过数据流动来驱动程序的执行。这种编程方式强调了数据的流向和处理顺序,有助于提高程序的可读性和维护性。

优势:
快速原型开发:LabVIEW的图形化编程方式使得开发原型快捷高效,有助于加速深度学习等领域的研究和应用。
直观易用:LabVIEW采用图形化编程语言,可以通过图形化界面进行编程,而不是传统的文字化编程,使得编程更加直观、易于理解和调试。
虚拟仪器开发功能:LabVIEW提供了便捷的虚拟仪器开发功能,能够依据专家的经验对没有精确数学模型的系统进行良好的控制。
混合编程能力:LabVIEW可以与MATLAB进行混合编程,利用MATLAB强大的数据处理能力和LabVIEW便捷的虚拟仪器开发功能,实现优势互补。

一、开发上位机程序

安装labview后打开案例库,找到简单串口案例库文件

 

 

可以看到前面板和程序框架

 

在此基础上增加两个控制按键

 

界面设计如下:

 

添加事件结构,当按钮按下是=时触发相应事件

 当向前运动按钮按下发送0X41 十六进制串口"A"指令,当向后运动按钮按下发送0X42 十六进制串口"B"指令

 

程序附件: Simple_Serial-ESP32.vi (37.32 KB, 下载次数: 0)

第二部分:ESP32程序设计

打开Arduino IDE

 

程序代码

String inputString = "";      // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete
char inChar;

const int stepPin=13; //步进引脚
const int dirPin=12;  //方向引脚
const int enPin=14;   //使能引脚

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);

  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
  pinMode(enPin,OUTPUT);
  digitalWrite(enPin,HIGH); //关闭使能
  digitalWrite(dirPin,HIGH); //控制转动方向
}

void loop() {
int i;//控制转动步数
i=3000;

  // print the string when a newline arrives:
  if (stringComplete) {
    Serial.println(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
Serial.println(inChar);
    if(inChar=='A')
    {
      digitalWrite(enPin,LOW); //打开电机使能
      inChar='G';
      digitalWrite(dirPin,HIGH); //正转
      while(i)
      {
       i--;
       digitalWrite(stepPin,HIGH);
       delayMicroseconds(100);
       digitalWrite(stepPin,LOW);
       delayMicroseconds(100); 
       }
    }

  else if(inChar=='B')
    {
      inChar='G';
      digitalWrite(dirPin,LOW); //正转
      digitalWrite(enPin,LOW); //打开电机使能
      while(i)
      {
       i--;
       digitalWrite(stepPin,HIGH);
       delayMicroseconds(100);
       digitalWrite(stepPin,LOW);
       delayMicroseconds(100); 
       }
    }
  else
    {
    digitalWrite(enPin,HIGH); //关闭电机使能
    }


  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    
      stringComplete = true;
    
  }



}

程序流程图

 

实物展示

 

 

视频演示:

上位机控制电机正反转

 

 

点赞 关注(1)
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表