野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12149|回复: 6

步进电机只响不转是怎么回事,求解

[复制链接]
发表于 2016-3-12 11:28:46 | 显示全部楼层 |阅读模式
小弟最近刚学stm32,最近在尝试驱动步进电机,用的是ULN2003驱动模块和28byj48步进电机,驱动模块外接了5V的电压。
在网上看的资料或者代码都是大同小异的,但是下载程序之后步进电机只是里面在嗡嗡地响,并没有转动,尝试了很多方法都没有解决
不知道是不是驱动模块的电压不够,还是什么情况,故在此发一帖求教各位大神,代码如下:
/***stepmotor.h***/
#include "stm32f10x.h"

void SM_GPIO_Config(void);
void run(uint32_t circle);

#define IN1 GPIO_Pin_0
#define IN2 GPIO_Pin_1
#define IN3 GPIO_Pin_2
#define IN4 GPIO_Pin_3

/***stepmotor.c***/
#include "stepmotor.h"
//8,12,4,6,2,3,1,9
void SM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin =IN1;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=IN2;
GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin =IN3;
GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin =IN4;
GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_ResetBits(GPIOC,IN1|IN2|IN3|IN4);
}

void delay(uint32_t i)
{
uint32_t j;
for(j=0;j<i;j++);
}

void run(uint32_t circle)
{
uint32_t i;
for(i=0;i<circle;i++)
{
  GPIO_Write(GPIOC,8);
  delay(200);
  GPIO_Write(GPIOC,12);
  delay(200);
  GPIO_Write(GPIOC,4);
  delay(200);
  GPIO_Write(GPIOC,6);
  delay(200);
  GPIO_Write(GPIOC,2);
  delay(200);
  GPIO_Write(GPIOC,3);
  delay(200);
  GPIO_Write(GPIOC,1);
  delay(200);
  GPIO_Write(GPIOC,9);
  delay(200);
}
}

/***main.c***/
#include "stm32f10x.h"
#include "stepmotor.h"
int main()
{
SM_GPIO_Config();
while(1)
{
  run(1000);
}
}

回复

使用道具 举报

发表于 2016-3-12 13:37:14 | 显示全部楼层
步进电机各线有驱动顺序的,顺序不对就只转不响
回复 支持 反对

使用道具 举报

发表于 2016-3-17 09:25:15 | 显示全部楼层
你的延迟程序是多少?我测试过了,9V输入电压下,1ms左右的延迟基本是极限了,延迟再低导致频率太高电机转不起来,或者说扭矩不够
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-17 20:08:01 | 显示全部楼层
zachforyh 发表于 2016-3-17 09:25
你的延迟程序是多少?我测试过了,9V输入电压下,1ms左右的延迟基本是极限了,延迟再低导致频率太高电机转 ...

已经解决了,应该是延时的问题,把延时改一下就好了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 20:27:37 | 显示全部楼层
zachforyh 发表于 2016-3-17 09:25
你的延迟程序是多少?我测试过了,9V输入电压下,1ms左右的延迟基本是极限了,延迟再低导致频率太高电机转 ...

你好,我的步进电机12V的,用的A4988驱动   也是一直响  不转       不知道延时多长时间合适   请教一下
回复 支持 反对

使用道具 举报

发表于 2017-3-3 11:21:40 | 显示全部楼层
我用的是LV8549双H桥驱动步进电机,也是只响不转,不知道怎么回事,有没有大神来指点一下啊?
回复 支持 反对

使用道具 举报

发表于 2017-3-18 14:55:45 | 显示全部楼层
延时函数把200改成20000,因为STM32比51快得多,
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-4 07:34 , Processed in 0.033032 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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