2017-08-29 677 views
0

我想用2个步进电机(42H48)和2个驱动器(TB6560)绘制圆。使用2个步进电机(Arduino)绘制圆形

硬件是这样的:现在

 
    (y-axis motor) 
     | 
     | 
--—--- |-------- (x-axis motor) 
     | 
     | 

,我只能控制这些马达绘制像钻石形状。

// 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算法”,但我不知道如何使用脉冲来实现这个算法。

+0

sry您的电机有多少步骤? –

+0

1.8度步角 – Vfire

回答

0

这只是一个概念,我没有测试它:

做一个查找表x和y对。为了创建这个,空间100左右的值在0和2pi之间,并计算该集合的sin和cos值并放置在表格中。

为x创建一个整数索引变量,为y创建一个整数索引变量。使用定时器或延迟建立一个固定的时间间隔。在每个时间间隔上,查看查找表中的下一个位置,并在适当的轴上执行步骤,以使中间的步进器索引与该时间步骤中的查找表匹配。我的当前步进位置是(2,-1)这是任意的在那个时间步我会把我的x步进回步1步,我的y向前3步。

我认为你将需要远离延迟,因为你需要在时间间隔内执行这些步骤。在某个时间步骤中,您将确定自己的位置和需要的位置,但之后必须创建多个定时步骤才能到达目的地。

我最大的担心是你的踏步机可能不够快,但是,idk。高达一个更高的电流可以实现更快的步进。