標(biāo)題: 請(qǐng)教一下步進(jìn)電機(jī)問(wèn)題 [打印本頁(yè)]

作者: daiyu    時(shí)間: 2024-12-30 13:56
標(biāo)題: 請(qǐng)教一下步進(jìn)電機(jī)問(wèn)題
最近剛學(xué)習(xí)步進(jìn)電機(jī)驅(qū)動(dòng),用的一個(gè)drive8825,和a4988步進(jìn)電機(jī)驅(qū)動(dòng)器,驅(qū)動(dòng)器上2A,2B,1A,1B,是前兩個(gè)同相還是兩個(gè)a同相,然后我接線也感覺(jué)沒(méi)毛病,代碼用ai寫的,自己也檢查了一遍感覺(jué)也沒(méi)什么問(wèn)題,為什么不禁地耐吉就是沒(méi)反應(yīng),以下是代碼和接線圖,求救大佬
#include "stm32f10x.h"                  // Device header

#define STEP_PIN GPIO_Pin_0              // STEP 引腳
#define DIR_PIN GPIO_Pin_1               // DIR 引腳
#define ENABLE_PIN GPIO_Pin_2            // ENABLE 引腳
#define MOTOR_PORT GPIOA

void GPIO_Configuration(void);
void Delay_us(uint32_t us);

int main(void)
{
    SystemInit();                       // 初始化系統(tǒng)時(shí)鐘
    GPIO_Configuration();               // 配置 GPIO

    // 使能驅(qū)動(dòng)模塊
    GPIO_SetBits(MOTOR_PORT, ENABLE_PIN);  // 啟用驅(qū)動(dòng)模塊

    while (1)
    {
        // 正轉(zhuǎn)
        GPIO_ResetBits(MOTOR_PORT, DIR_PIN);
        for (int i = 0; i < 200; i++)    // 200 步
        {
            GPIO_SetBits(MOTOR_PORT, STEP_PIN);
            Delay_us(1000);              // 延時(shí) 1000 微秒(1 毫秒)
            GPIO_ResetBits(MOTOR_PORT, STEP_PIN);
            Delay_us(1000);              // 延時(shí) 1000 微秒(1 毫秒)
        }
    }
}

void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    // 使能 GPIOA 時(shí)鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置 STEP、DIR 和 ENABLE 引腳為推挽輸出模式
    GPIO_InitStructure.GPIO_Pin = STEP_PIN | DIR_PIN | ENABLE_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(MOTOR_PORT, &GPIO_InitStructure);

    // 初始化所有引腳為低電平
    GPIO_ResetBits(MOTOR_PORT, STEP_PIN);
    GPIO_ResetBits(MOTOR_PORT, DIR_PIN);
    GPIO_SetBits(MOTOR_PORT, ENABLE_PIN);  // 禁用驅(qū)動(dòng)模塊(初始狀態(tài))
}

void Delay_us(uint32_t us)
{
    volatile uint32_t i;
    for (i = 0; i < (SystemCoreClock / 1000000 * us); i++);
}


IMG_20241230_135301.jpg (3.46 MB, 下載次數(shù): 0)

IMG_20241230_135301.jpg

作者: ZSJM    時(shí)間: 2024-12-30 16:44
ENABLE , A4988和DRV8825 都是低電平有效. 你的代碼, 是輸出高電平, 主要問(wèn)題大概在這里.



作者: lkc8210    時(shí)間: 2024-12-30 18:46
用萬(wàn)用表檢查3個(gè)腳的電壓
正常的電壓是
EN=3.3V,DIR=0V,STEP=1.65V
作者: daiyu    時(shí)間: 2024-12-30 21:48
ZSJM 發(fā)表于 2024-12-30 16:44
ENABLE , A4988和DRV8825 都是低電平有效. 你的代碼, 是輸出高電平, 主要問(wèn)題大概在這里.

驅(qū)動(dòng)器上2A,2B,1A,1B,是前兩個(gè)同相還是兩個(gè)a同相
作者: daiyu    時(shí)間: 2024-12-31 10:27
我檢查了一下電壓應(yīng)該是沒(méi)問(wèn)題的enable是0v,dir是0v,step是1.6v
作者: ZSJM    時(shí)間: 2024-12-31 15:42
GPIO_SetBits(MOTOR_PORT, ENABLE_PIN);  // 啟用驅(qū)動(dòng)模塊
這行代碼是有問(wèn)題, 這個(gè)是拉高ENBALE, 不過(guò)你測(cè)量0V, 代碼修改了或原電路ENABLE接地.

關(guān)于哪一組,一般看第一個(gè)字符, 2A,2B,是一組

如果你買的是別人DIY的, 最好測(cè)量一下:
DRV8825,   5腳7腳是一組, 8腳和10腳是另一組.

A4988   1腳,26腳是一組,  21腳和24是另一組

2A,2B,應(yīng)該是A4988的標(biāo)法 OUT2A,OUT2B...

作者: daiyu    時(shí)間: 2025-1-5 11:47
我用了一個(gè)l298n驅(qū)動(dòng)步進(jìn)電機(jī),電機(jī)嗡嗡響是什么原因
作者: LhUpBJT    時(shí)間: 2025-1-6 09:37
daiyu 發(fā)表于 2025-1-5 11:47
我用了一個(gè)l298n驅(qū)動(dòng)步進(jìn)電機(jī),電機(jī)嗡嗡響是什么原因


電動(dòng)機(jī)發(fā)聲,可能是  磁場(chǎng)不對(duì)稱或換相有失誤,或者繞組安裝不牢固;而單片機(jī)控制的,大概是逆變器的換相邏輯吧。

作者: glinfei    時(shí)間: 2025-1-6 16:45
daiyu 發(fā)表于 2025-1-5 11:47
我用了一個(gè)l298n驅(qū)動(dòng)步進(jìn)電機(jī),電機(jī)嗡嗡響是什么原因

大部分是電機(jī)接錯(cuò)相或斷相,不過(guò)298N和4988程序完全不同哦。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1