C#控制的步进电机

Posted

技术标签:

【中文标题】C#控制的步进电机【英文标题】:Stepper motor controlled by C# 【发布时间】:2014-08-16 18:28:53 【问题描述】:

我的步进电机有问题。我编写了 arduino 代码,它在从串行终端或 tera term 发送命令时工作。当我按下“R”时,步进电机连续旋转,当我按下“P”时,电机停止旋转。我的问题是为什么这些命令在从 C# 应用程序发送时不起作用?当我尝试步进电机时,只需转动一步。从串口监视器和 C# 应用程序发送命令有什么区别吗?

void loop()
  
   if (Serial.available() > 0)
   
      int command = Serial.read();
   

   if (command == 'R')
   
      do 
         stepper.runSpeed();
       while (Serial.available() == 0); 
      Serial.read();    
    
   else if (command == 'P')
   
      stepper.stop();
   

C#代码:

private void button5_Click(object sender, EventArgs e)

    serialPort.WriteLine("R");


private void button6_Click(object sender, EventArgs e)

    serialPort.WriteLine("P");

【问题讨论】:

查看波特率和端口名称是否选择正确。 我的 c# 应用程序连接良好。我几乎没有其他项目并且工作正常。问题是串行通信以及我如何从 c# 发送命令来连续旋转步进电机 【参考方案1】:

SerialPort.WriteLine() 添加"\r\n"\r 将立即终止接收端的 do ... while() 循环。

所以用

 private void button5_Click(object sender, EventArgs e)
 
     //serialPort.WriteLine("R");
     serialPort.Write("R");
 

【讨论】:

【参考方案2】:

使用命令serial.parseInt(); 代替serial.read 并从c# 发送一个字符串。

【讨论】:

以上是关于C#控制的步进电机的主要内容,如果未能解决你的问题,请参考以下文章

单片机远程控制步进电机LED灯和蜂鸣器

PID控制能否控制步进电机转速?如果想实现力控制可否用PID控制?

STM32的PWM控制步进电机,怎么实现精确控制输出脉冲数

stm32控制步进电机回零

42步进电机怎么用stm32控制加减速

控制步进电机C语言代码解释