找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2131|回复: 8
收起左侧

请教一下步进电机问题

[复制链接]
ID:1113901 发表于 2024-12-30 13:56 | 显示全部楼层 |阅读模式
50黑币
最近刚学习步进电机驱动,用的一个drive8825,和a4988步进电机驱动器,驱动器上2A,2B,1A,1B,是前两个同相还是两个a同相,然后我接线也感觉没毛病,代码用ai写的,自己也检查了一遍感觉也没什么问题,为什么不禁地耐吉就是没反应,以下是代码和接线图,求救大佬
#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();                       // 初始化系统时钟
    GPIO_Configuration();               // 配置 GPIO

    // 使能驱动模块
    GPIO_SetBits(MOTOR_PORT, ENABLE_PIN);  // 启用驱动模块

    while (1)
    {
        // 正转
        GPIO_ResetBits(MOTOR_PORT, DIR_PIN);
        for (int i = 0; i < 200; i++)    // 200 步
        {
            GPIO_SetBits(MOTOR_PORT, STEP_PIN);
            Delay_us(1000);              // 延时 1000 微秒(1 毫秒)
            GPIO_ResetBits(MOTOR_PORT, STEP_PIN);
            Delay_us(1000);              // 延时 1000 微秒(1 毫秒)
        }
    }
}

void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    // 使能 GPIOA 时钟
    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);  // 禁用驱动模块(初始状态)
}

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


IMG_20241230_135301.jpg
回复

使用道具 举报

ID:1079566 发表于 2024-12-30 16:44 | 显示全部楼层
ENABLE , A4988和DRV8825 都是低电平有效. 你的代码, 是输出高电平, 主要问题大概在这里.


回复

使用道具 举报

ID:161164 发表于 2024-12-30 18:46 | 显示全部楼层
用万用表检查3个脚的电压
正常的电压是
EN=3.3V,DIR=0V,STEP=1.65V
回复

使用道具 举报

ID:1113901 发表于 2024-12-30 21:48 | 显示全部楼层
ZSJM 发表于 2024-12-30 16:44
ENABLE , A4988和DRV8825 都是低电平有效. 你的代码, 是输出高电平, 主要问题大概在这里.

驱动器上2A,2B,1A,1B,是前两个同相还是两个a同相
回复

使用道具 举报

ID:1113901 发表于 2024-12-31 10:27 | 显示全部楼层
我检查了一下电压应该是没问题的enable是0v,dir是0v,step是1.6v
回复

使用道具 举报

ID:1079566 发表于 2024-12-31 15:42 | 显示全部楼层
GPIO_SetBits(MOTOR_PORT, ENABLE_PIN);  // 启用驱动模块
这行代码是有问题, 这个是拉高ENBALE, 不过你测量0V, 代码修改了或原电路ENABLE接地.

关于哪一组,一般看第一个字符, 2A,2B,是一组

如果你买的是别人DIY的, 最好测量一下:
DRV8825,   5脚7脚是一组, 8脚和10脚是另一组.

A4988   1脚,26脚是一组,  21脚和24是另一组

2A,2B,应该是A4988的标法 OUT2A,OUT2B...
回复

使用道具 举报

ID:1113901 发表于 2025-1-5 11:47 | 显示全部楼层
我用了一个l298n驱动步进电机,电机嗡嗡响是什么原因
回复

使用道具 举报

ID:1100060 发表于 2025-1-6 09:37 | 显示全部楼层
daiyu 发表于 2025-1-5 11:47
我用了一个l298n驱动步进电机,电机嗡嗡响是什么原因


电动机发声,可能是  磁场不对称或换相有失误,或者绕组安装不牢固;而单片机控制的,大概是逆变器的换相逻辑吧。
回复

使用道具 举报

ID:844772 发表于 2025-1-6 16:45 | 显示全部楼层
daiyu 发表于 2025-1-5 11:47
我用了一个l298n驱动步进电机,电机嗡嗡响是什么原因

大部分是电机接错相或断相,不过298N和4988程序完全不同哦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表