簡體   English   中英

步進電機加速和中斷

[英]Stepper motor acceleration and break

我必須制作一個項目,我必須通過按鈕控制步進電機。 我使用 ATXMEGA256a3u 微控制器。 當我啟動電機時,它必須在幾秒鍾內加速到恆定速度,然后在序列結束時它必須減速並停止。 我編寫了一個代碼來初始化和啟動電機,但我不太熟悉使用步進電機。 我啟動電機的代碼是: void startMotor(void) { PORT_STEP.OUT |= (EN1 + STEP1 + DIR1); PORT_STEP.OUT &= ~(EN1); PORT_STEP.DIR |= (EN1 + STEP1 + DIR1);

    while (1)
    {
        PORT_STEP.OUT |= STEP1;
        delay_us(100);
        PORT_STEP.OUT &= ~STEP1;
        delay_us(100);
    }
}

這樣它就不斷地運行。 謝謝你的幫助。

好吧,看來您正在駕駛“步進/方向”步進驅動器。 這種驅動器為每個脈沖邁出一步。

為了達到不同的速度,您必須在同一時間內產生或多或少的脈沖,或者換句話說,改變周期中的延遲(您的 delay_us(100))。 使用兩個“delay_us(200)”,速度將減半,使用兩個“delay_us(50)”,速度將加倍。

為了提高速度,你從長時間的延遲開始,然后將它們減少到最終值; 要進行斜坡下降,您會產生越來越大的延遲,直到它們足夠長以完全停止以產生脈沖。 延遲變化的速度將調節斜坡斜率(加速度)。

最后一點:你使用了兩個延遲——它們不需要相等,可能你可以固定一個並在另一個上操作。 但即使改變兩者也不是問題(這取決於應用程序)。 如果您的驅動程序可以 select 不同的微步值(1/8192、1/4096 或其他)也可以使用這些值,那么可以簡化您的程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM