[STM32]

为啥我的步进电机不转呀

[复制链接]
1519|7
手机看帖
扫描二维码
随时随地手机跟帖
鞨谷歌由于该|  楼主 | 2024-11-23 20:31 | 显示全部楼层 |阅读模式
以下是proteus仿真图,看起来电没从ULN2003输出的感觉
941226741ca8273248.png
以下是主要的代码,挺简单的逻辑
void step(int dir)
{
    if(dir == 0)    // 正转
    {
        GPIO_SetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);
        
        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_SetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);
        
        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_SetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);
        
        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_SetBits(GPIOB, IN4_PIN);
        delay_ms(5);
    }
    else if(dir == 1)   // 反转
    {
        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_SetBits(GPIOB, IN4_PIN);
        delay_ms(5);
        
        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_SetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);

        GPIO_ResetBits(GPIOB, IN1_PIN);
        GPIO_SetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);

        GPIO_SetBits(GPIOB, IN1_PIN);
        GPIO_ResetBits(GPIOB, IN2_PIN);
        GPIO_ResetBits(GPIOB, IN3_PIN);
        GPIO_ResetBits(GPIOB, IN4_PIN);
        delay_ms(5);

    }

}
void StepMotor()
{
                                        SystemInit();
                                        StepMotor_Init();
                                        step(0);  // 正转
                                        step(0);
                                        step(0);
                                        step(0);

                                        delay_ms(500);

                                        step(1);  // 反转
                                        step(1);
                                        step(1);
                                        step(1);

                                        delay_ms(500);
}


使用特权

评论回复
评论
xch 2024-11-25 12:16 回复TA
能不能听见电机动静? 

相关帖子

qintian0303| | 2024-11-24 09:03 | 显示全部楼层
供电非常重要的,有的步进电机是有供电需要的,例如5V、9V、12V/24V 等等

使用特权

评论回复
丙丁先生| | 2024-11-24 10:48 | 显示全部楼层
好的,以下是对上述内容的总结:

### 1. 确认硬件连接
- **步进电机接线**:A+, A-, B+, B- 正确连接到ULN2003输出端。
- **ULN2003接线**:输入端正确连接到STM32的GPIO引脚,方向正确。
- **电源供应**:电压符合规格要求,电源连接正确。

### 2. 检查代码逻辑
- **GPIO初始化**:在`StepMotor_Init()`中正确初始化GPIO为输出模式。
- **延时函数**:确保`delay_ms()`工作正常。

### 3. 使用调试工具
- **示波器或逻辑分析仪**:检查ULN2003输入和输出波形,确定问题出在硬件还是软件。

### 4. 逐步测试
- **简化代码**:只运行一个方向的转动,观察电机反应。例如,只调用`step(0)`几次。

### 5. 检查Proteus仿真设置
- **组件型号和参数**:确认步进电机和ULN2003模型设置正确。

### 6. 考虑可能的错误
- **电源问题**:确保电压足够,电流能力满足需求。
- **驱动能力不足**:ULN2003可能无法提供足够的电流,尝试更换更强大的驱动器。
- **程序错误**:检查语法和逻辑错误。

通过这些步骤,你应该能够找到并解决步进电机不转的问题。如果问题仍然存在,提供更多电路图和代码细节以便进一步分析。

使用特权

评论回复
20062516| | 2024-11-25 11:23 | 显示全部楼层
没供电吧,驱动步进电机的电流哪里来的

使用特权

评论回复
xch| | 2024-11-25 12:06 | 显示全部楼层
电机内部啥电路怎么连接6根线

使用特权

评论回复
xch| | 2024-11-25 12:18 | 显示全部楼层
743886743fa9267dfc.png 这几个电源符号接哪里去了?

使用特权

评论回复
cooldog123pp| | 2024-11-25 13:46 | 显示全部楼层
proteus的 VCC和VDD都是要设置电压多少的,你就写VCCVDD系统也不知道你多少啊,改一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝