使用2个步进电动机(Arduino)绘制一个圆圈



我想使用2个步进电动机(42H48)和2个驱动程序(TB6560)绘制一个圆圈。

硬件是这样的:

  (Y轴电机)       |       |----- | --------(X轴电动机)       |       |

现在,我只能控制这些电动机像钻石形状一样绘制。

// 1
digitalWrite(xAxisMotorDirection, HIGH);
digitalWrite(yAxisMotorDirection , HIGH);
for(i=0; i<12000; i++)
{
    digitalWrite( xAxisMotorPulse, HIGH);
    digitalWrite( yAxisMotorPulse , HIGH);
    delay(1);
    digitalWrite( xAxisMotorPulse , LOW);
    digitalWrite( yAxisMotorPulse , LOW);
    delay(1);
}
// 2
digitalWrite(xAxisMotorDirection, HIGH);
digitalWrite(yAxisMotorDirection , LOW);
for(i=0; i<12000; i++)
{
    digitalWrite( xAxisMotorPulse, HIGH);
    digitalWrite( yAxisMotorPulse , HIGH);
    delay(1);
    digitalWrite( xAxisMotorPulse , LOW);
    digitalWrite( yAxisMotorPulse , LOW);
    delay(1);
}
// 3
digitalWrite(xAxisMotorDirection, LOW);
digitalWrite(yAxisMotorDirection , LOW);
for(i=0; i<12000; i++)
{
    digitalWrite( xAxisMotorPulse, HIGH);
    digitalWrite( yAxisMotorPulse , HIGH);
    delay(1);
    digitalWrite( xAxisMotorPulse , LOW);
    digitalWrite( yAxisMotorPulse , LOW);
    delay(1);
}
// 4
digitalWrite(xAxisMotorDirection, LOW);
digitalWrite(yAxisMotorDirection , HIGH);
for(i=0; i<12000; i++)
{
    digitalWrite( xAxisMotorPulse, HIGH);
    digitalWrite( yAxisMotorPulse , HIGH);
    delay(1);
    digitalWrite( xAxisMotorPulse , LOW);
    digitalWrite( yAxisMotorPulse , LOW);
    delay(1);
}

使用脉冲绘制圆圈的好方法?

我搜索了" Bresenham算法",但我不知道如何使用Pulse实现此算法。

这只是一个概念,我尚未对其进行测试:

用X和Y对制作一个查找表。为了创建这个,空间100左右的值在0和2pi之间,并计算该设置和放置在表格中的罪和cos。

为x创建一个整数索引变量,一个为y创建一个。使用计时器或延迟来建立常规时间间隔。在每个时间间隔中,查看查找表中的下一个位置,并在适当的轴上进行步骤,以使中间的步进索引匹配该时间段的查找表。

示例:表[1] =(1,2)我的当前步进位置是(2,-1)这是该时间步上的任意,我将X步进1步,然后y向前3步。

我认为您需要远离延迟,因为您需要在时间间隔内执行步骤。在一个时间步骤中,您将确定自己的位置和需要的位置,但必须创建几个定时步骤才能到达那里。

我最大的担忧是您的草原可能不够快,而是IDK。最高较高的电流可以使步进速度更快。

相关内容

  • 没有找到相关文章

最新更新