我正在使用由drv8825驅動器驅動的幾個步進電機進行學校項目(實際上,它將是高架行駛起重機) ,與一個Arduino UNO。首先,我們沒有大量的錢花。 現在,問題在於:我們將通過MPU6050 acc + gyro使用PID控制來控制電機的速度(在運動期間負載應儘可能牢固),以及只有兩種方式來改變步進馬達的速度是:直流電機步進電機的速度控制步進電機(電機:NEMA 17;驅動器:drv8825)[頻率調節]
1)通過一個延遲的方法,例如:
for (i = 0; i<400; i++)
{
digitalWrite(StepPinB, LOW);
delayMicroseconds(500);
digitalWrite(StepPinB, HIGH);
delayMicroseconds(500);
}
使用這種方法,所述的Arduino將忙於所有的時間,所以我會不能連續檢查傳感器的值,以達到正確的速度。正因爲如此,我不能使用這種方法。 2)通過外部調節drv8825的時鐘頻率,例如使用「電壓 - 頻率轉換器」(可變電壓可以通過「Arduino PWM」+「低通濾波器」給出)或使用「非穩態多諧振盪器」(「非穩態振盪器」)和「數字電位器」來改變頻率。 我已經試過了「電壓 - 頻率轉換器」方法,但由於電路的噪音,它沒有工作。
我希望你能幫助我找出在程序中連續改變步進電機速度的更好方法(也可以找到更好的方法來產生可變頻率,如第2點所示) 。
這不是你如何附加到中斷。你只是調用'clockSignal()'並附加'void'。 –
@gre_gor發生這種情況時,當我嘗試提出建議(再次,應該是問題下的註釋)並使用我能找到的第一個示例(德語:http://playground.arduino.cc/Deutsch/HalloWeltMitInterruptUndTimerlibrary)。隨意編輯到正確的實施。但無論如何,背後的想法可能會有所幫助。 –
感謝您的回答,現在我將使用您的代碼進行一些嘗試,以驗證我是否仍然可以檢查傳感器而不停止電機。 – Jacopo