2017-08-29 44 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。高達一個更高的電流可以實現更快的步進。