OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6948|回复: 7

我用STM32通过ULN2003驱动步进电机,只能正转,不能反转?

[复制链接]

48

主题

179

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2017-6-19
在线时间
90 小时
发表于 2020-12-10 14:43:53 | 显示全部楼层 |阅读模式
1金钱
如题,用STM32F103ZET6的战舰的板子通过ULN2003驱动步进电机,只能正转,不能反转,求解。PS:我是通过最简单的IO口电平切换来实现电机驱动,另外想问一下用ULN2003驱动步进电机是不是就不能通过PWM的方式驱动,

硬件连接如下
单片机:STM32F103ZET6
步进电机:28BYJ-48
驱动电路:ULN2003芯片的驱动板
引脚连接如下:
IN1:PC3
IN2:PC2
IN3:PC0
IN4:PC13

OUT1:步进电机4
OUT2:步进电机3
OUT3:步进电机2
OUT4:步进电机1

代码如下:

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "stm32f10x.h"
  5. int j;

  6. //单四拍
  7. u16 phasecw1[4] ={0x0008,0x0040,0x0001,0x2000};// 逆时针
  8. u16 phaseccw2[4]={0x2000,0x0001,0x0040,0x0008};// 顺时针


  9. //步进电机初始化函数
  10. void Motor_Init(void)
  11. {
  12.         GPIO_InitTypeDef GPIO_InitStructure;
  13.        
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启时钟
  15.        
  16.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3;
  17.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
  18.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  19.         GPIO_Init(GPIOC, &GPIO_InitStructure);

  20. //默认ULN2003四路输入低电平,输出高电平       
  21.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  22.         GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  23.         GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  24.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);       
  25. }

  26. ////步进电机正转函数
  27. void Motorcw1(void)
  28. {
  29.         {  
  30.                         uint8_t i;   
  31.                         for(i=0;i<4;i++)  
  32.                         {  
  33.                                         GPIO_Write(GPIOC,phasecw1[i]);  
  34.                                         delay_ms(6);
  35.                         }  
  36.         }               
  37. }
  38. ////步进电机反转函数
  39. void Motorcw2(void)
  40. {
  41.         {  
  42.                         uint8_t a;   
  43.                         for(a=0;a<4;a++)  
  44.                         {  
  45.                                         GPIO_Write(GPIOC,phaseccw2[a]);  
  46.                                         delay_ms(6);
  47.                         }  
  48.         }               
  49. }
  50. //电机停止函数
  51. void MotorStop(void)  
  52. {  
  53.     GPIO_Write(GPIOC,0x0000);  
  54. }


  55. int main(void)
  56. {
  57. //函数初始化
  58.         delay_init();
  59.         Motor_Init();
  60.        
  61. //电机循环执行
  62.         while(1)
  63.                 {
  64.                         Motorcw1();
  65.                 }
  66. }
复制代码



微信截图_20201210144026.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8465
金钱
8465
注册时间
2020-5-11
在线时间
3904 小时
发表于 2020-12-10 15:43:16 | 显示全部楼层
看起来没问题,加大延时到1秒看看。
专治疑难杂症
回复

使用道具 举报

48

主题

179

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2017-6-19
在线时间
90 小时
 楼主| 发表于 2020-12-10 15:48:57 | 显示全部楼层
LcwSwust 发表于 2020-12-10 15:43
看起来没问题,加大延时到1秒看看。

不知道你有没有用过这个电机和驱动器,如果延时太长或太短这个电机就转不起来,延时到1s还是不行。
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8465
金钱
8465
注册时间
2020-5-11
在线时间
3904 小时
发表于 2020-12-10 17:03:03 | 显示全部楼层
王大爷爱吃鱼 发表于 2020-12-10 15:48
不知道你有没有用过这个电机和驱动器,如果延时太长或太短这个电机就转不起来,延时到1s还是不行。

驱动器用过,电机可能不一样,原理都是一样的。
用示波器看看是不是VCC供电能力不足,使单片机复位或者VCC电压本来就不足。
再看看OUT上的波形是否受控。
专治疑难杂症
回复

使用道具 举报

48

主题

179

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2017-6-19
在线时间
90 小时
 楼主| 发表于 2020-12-10 20:15:38 | 显示全部楼层
LcwSwust 发表于 2020-12-10 17:03
驱动器用过,电机可能不一样,原理都是一样的。
用示波器看看是不是VCC供电能力不足,使单片机复位或者V ...

有可能是电压的原因,我是用的开发板上的5V供电,明天用外部电源和示波器看看
回复

使用道具 举报

10

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2021-7-11
在线时间
15 小时
发表于 2021-11-24 20:57:58 | 显示全部楼层
你好,请问你能分享一下控制程序吗?非常感谢
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2022-4-14
在线时间
5 小时
发表于 2022-4-21 17:45:49 | 显示全部楼层
你好,请问问题解决了吗,是开发板供电不够吗
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2020-1-10
在线时间
7 小时
发表于 2022-4-22 10:09:51 | 显示全部楼层
反着转的节拍不对吧,直接把正着转的数组调个顺序?感觉不对! 有点忘记了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 11:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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