stm32+uln2003驱动步进电机程序(28BYJ-48)

发布者:chunying最新更新时间:2024-10-14 来源: cnblogs关键字:stm32  uln2003  驱动步进电机  28BYJ-48 手机看文章 扫描二维码
随时随地手机看文章

今天,接到一个任务,采用stm32驱动步进电机,已经有了驱动模块了。所以不再采用PWM方式,直接用软件编写。


我也是初学,仅供参考。


1、管脚接线
// IN4: PC9   d
// IN3: PC8   c
// IN2: PC7   b
// IN1: PC6   a
电源接开发板电源。地接地(简直是废话)。

2、定义正转反转数组
uint16_t phasecw[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A  
uint16_t phaseccw[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D

说明一下,数组里面的值,就是对应的GPIO口的地址。根据自己实际的接线方式填入。

3、子函数书写
3.1延时函数
void Delay_xms(uint x)
{
 uint i,j;
 for(i=0;i
  for(j=0;j<112;j++);
}

3.2电机初始化函数

void Moto_Init(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOC,&GPIO_InitStructure);
 GPIO_ResetBits(GPIOC,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 );

}

3.3电机正转函数
void Motorcw(void) 

    uint8_t i; 
 
    for(i=0;i<4;i++) 
    { 
        GPIO_Write(GPIOC,phasecw[i]); 
        Delay_xms(50); 
    } 
}

3.4电机反转函数
void Motorccw(void) 

    uint8_t i; 
    for(i=0;i<4;i++) 
    { 
        GPIO_Write(GPIOC,phaseccw[i]); 
        Delay_xms(50); 
    } 


3.5电机停止函数
void MotorStop(void) 

    GPIO_Write(GPIOC,0x0000); 
}

4主函数测试代码
int main()
{
 unsigned int i;
 Moto_Init();
   while(1)
  {
   for(i=0;i<500;i++)
   {
     Motorcw();
   } 
  }
}
    
如何控制转速呢,把正转反转函数里面的“50”改大就相当于调慢了脉冲速度,自然电机就慢了。当然你也可以根据现实开发自己设置变量去各种调节速度。有什么问题可以跟博主交流,我也是新手哦。但是我实际测出来的转速最快只有每分钟10转左右,o(︶︿︶)o 唉,太慢了。原因是这款步进电机内置1:64减速比装置,内部转64圈,外面才转1圈呢。具体的驱动原理大家网上可以随便搜搜的,其实就是一次脉冲,电机的旋转度数而已,很简单的。脉冲越快,转的越快。

5、总结  
好了,很多小伙伴肯定说博主直接给代码就行了。写那么多废话干嘛。但是我想说,一味的复制粘贴别人的代码是不对的。首先嵌入式程序要硬件接线一样才行,你首先得把线和博主接一样的才行吧。实际开发中,不是每个IO口都能给你用的,所以根据自己实际的接线方式,然后改数组里面的值就可以了。具体的方法(右键GPIO,跳到定义处,就能看到了。)

关键字:stm32  uln2003  驱动步进电机  28BYJ-48 引用地址:stm32+uln2003驱动步进电机程序(28BYJ-48)

上一篇:stm32+GPS定位
下一篇:正点原子STM32 USB读卡器代码分析

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved