历史上的今天
返回首页

历史上的今天

今天是:2025年10月13日(星期一)

正在发生

2022年10月13日 | STM32+ULN2003驱动28BYJ4步进电机(根据圈数正转、反转)

2022-10-13 来源:csdn

一、环境介绍

MCU: STM32F103ZET6


编程软件:  Keil5


二、硬件介绍

开发板采用STM32F103ZET6 最小系统板

电机驱动板采用的是ULN2003

步进电机采用的是28BYJ4  (5V 4相5线步进电机)

三、驱动代码

3.1 motor.c

#include "motor.h"

 

 

//步进电机正反转数组1

u16 PositiveSequence[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A   

u16 ReverseOrder[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D.

 

 

void motor_delay_ms(u32 ms)

{

 u32 i,j;

for(i=0;i for(j=0;j<112;j++);

}

 

void motor_stop(void)  

{  

    MOTOR_1=0;

    MOTOR_2=0;

    MOTOR_3=0;

    MOTOR_4=0;

}

 

void motor_init(void)

{

    RCC->APB2ENR|=1<<4;

    GPIOC->CRL&=0x00FFFFFF;

    GPIOC->CRL|=0x33000000;

    GPIOC->CRH&=0xFFFFFF00;

    GPIOC->CRH|=0x00000033;

// IN4: PC9   d

// IN3: PC8   c

// IN2: PC7   b

// IN1: PC6   a

}

 

void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)

{

  GPIOx->ODR = PortVal;

}

 

 

void motor_just(int speed)  //一个脉冲

{  

    uint8_t i;  

  

    for(i=0;i<4;i++)  

    {  

        GPIO_Write(GPIOC,PositiveSequence[i]);

        motor_delay_ms(speed);  

    }

}

 

 

void motor_back(int speed)  

{  

    uint8_t i;  

    for(i=0;i<4;i++)  

    {  

        GPIO_Write(GPIOC,ReverseOrder[i]);  

        motor_delay_ms(speed);  

    } 

 

}

 

 

//由于   *一个脉冲*   *输出轴*  转0.08789度(电机实转0.08789*64=5.625度),即步进角为5.625度。则转完A-B-C-D为  *8个脉冲*  

//,即0.08789*8=0.70312度。若称A-B-C-D为一个周期,则j为需要的转完angle角度所需的周期数。

//步进电机正转角度函数

void motor_just_angle(int angle,int speed)

{

int i,j;

j=(int)(angle/0.70312);

for(i=0;i {

motor_just(speed);

}

motor_stop();

}

 

 

 

//步进电机反转角度函数

void motor_back_angle(int angle,int speed)

{

int i,j;

j=(int)(angle/0.70312);

for(i=0;i {

motor_back(speed);

}

motor_stop();

}

 

 

//步进电机反转圈函数

void motor_back_circle(int ring ,int speed)

{

int i;

for(i=0;i {

        motor_back_angle(360,speed);

}

}

 

//步进电机正转圈函数

void motor_just_circle(int ring,int speed) //步进电机正转角度函数

{

int i;

for(i=0;i {

        motor_just_angle(360,speed);

}

}

 

 


3.2  motor.h

#ifndef _MOTOR_H

#define _MOTOR_H

#include "sys.h"

 

void motor_delay_ms(u32 x);//延时函数

void motor_init(void);  //步进电机初始化

void motor_just(int speed);    //步进电机正转函数

void motor_back(int speed);   //步进电机反转函数

void motor_just_angle(int angle,int speed);  //步进电机正转角度函数

void motor_back_angle(int angle,int speed); //步进电机反转角度函数

void motor_stop(void);  //步进电机停止函数

void motor_just_circle(int ring ,int speed); //步进电机正转圈函数

void motor_back_circle(int ring ,int speed);//步进电机反转圈函数

 

//IN

#define MOTOR_1  PCout(6)

#define MOTOR_2  PCout(7)

#define MOTOR_3  PCout(8)

#define MOTOR_4  PCout(9)

 

#endif


 


3.3 main.c

/*

ULN2003控制28BYJ-48步进电机接线:

ULN2003接线:

IN4: PC9   d

IN3: PC8   c

IN2: PC7   b

IN1: PC6   a

+  : 5V

-  : GND

*/

 

int main()

{

    u8 time_cnt=0;

    u8 key;

    LED_Init();

    KEY_Init();

    USART1_Init(115200);

    motor_init();  //步进电机初始化

    USART1_Printf("程序初始化.....rn");

    

while(1)

{

         //按键可以测试开锁和关锁

        key=KEY_Scan(0);

        if(key==1)

        {

            LED1=0;  //亮灯--表示开锁

            motor_just_circle(1,300);   //电机正转1圈

        }

        else if(key==2)

        {

            LED1=1;  //灭灯--表示关锁

            motor_back_circle(1,300);  //电机反转1圈

        } 

 

        DelayMs(10);

        time_cnt++;

        if(time_cnt>=50)

        {

            time_cnt=0;

            LED2=!LED2;

        }

}

}


推荐阅读

史海拾趣

Crystal Semiconductor Corp公司的发展小趣事

在快速发展的同时,Crystal Semiconductor Corp也注重可持续发展。公司积极推行环保理念,采用环保材料和工艺生产产品。同时,公司还加大了对教育和公益事业的投入,培养了一批批优秀的半导体人才。展望未来,Crystal Semiconductor Corp将继续秉承创新、务实、高效的理念,不断推动半导体行业的发展。

请注意,这些故事是虚构的,旨在展示一个半导体公司可能经历的发展阶段和挑战。如果您需要关于Crystal Semiconductor Corp的真实故事,建议您查阅相关公司资料或新闻报道。

Digilent公司的发展小趣事

作为电子行业的领军企业之一,DIALIGHT始终将技术创新作为公司发展的核心驱动力。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有创新性和竞争力的LED产品。同时,DIALIGHT还积极与高校、科研机构等合作,共同推动LED照明技术的进步和应用。

长园维安(CYGWAYON)公司的发展小趣事

长园维安始终关注环保和可持续发展。公司积极推行绿色制造和循环经济模式,降低生产过程中的能耗和排放。同时,长园维安还注重产品环保性能的研发和改进,为客户提供更加环保、节能的产品。这些努力使长园维安在电子行业中树立了绿色发展的典范。

Enovation Controls LLC公司的发展小趣事

长园维安自成立以来,始终坚持技术创新为核心竞争力。在早期发展阶段,公司投入大量资源研发新型线路保护元器件,如PPTC、CPTC等。这些产品凭借其卓越的性能和稳定性,迅速在通讯、汽车电子等领域获得广泛应用。通过不断创新,长园维安在电子行业树立了技术领先的形象。

COMPUTAR公司的发展小趣事

进入90年代,电动变焦镜头逐渐成为市场的新宠。CBC株式会社紧跟时代潮流,于1992年成功推出电动6倍系列镜头。这款镜头采用电动变焦设计,操作简便、速度快捷,极大地提高了拍摄效率。电动6倍系列镜头的全球上市,不仅进一步扩大了CBC的市场影响力,也为公司的未来发展奠定了坚实的基础。

通过以上五个故事,我们可以看到COMPUTAR公司(前身为CBC株式会社)在电子行业中的发展历程。从创立之初的艰苦创业,到逐步拓展国际市场;从手动变焦镜头的研制成功,到非球面高速镜头和电动6倍系列镜头的诞生与上市,每一步都凝聚着COMPUTAR人的智慧和汗水。正是这些不懈的努力和持续的创新,使得COMPUTAR在电子行业中脱颖而出,成为一家备受尊敬的企业。

E-Switch公司的发展小趣事

E-Switch公司始终坚持以客户为中心的经营理念,致力于为客户提供优质的服务和产品。公司建立了完善的客户服务体系,及时解决客户在使用过程中遇到的问题。同时,E-Switch还积极与客户保持沟通交流,了解市场需求变化,以便及时调整产品策略和生产计划。正是这种以客户至上的经营理念和持续发展的战略眼光,让E-Switch在电子行业中不断发展壮大。

问答坊 | AI 解惑

电赛 NEC的有关资料

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 电赛 NEC的有关资料  …

查看全部问答>

s3c6410+wince6.0+mt9d131摄像头

在三星原驱动的基础上修改摄像头驱动(应用程序几乎没改,应用BSP原来所带的demo),修改了相应的设置后,图像出来后结果是花屏,好像是把屏幕分成4块(从左往右),颜色也对。 将摄像头设置为斑马线测试格式输出时,出现的也不对,相差很多。 有 ...…

查看全部问答>

EBOOT下载到SDRAM DNW可以正常输出调试信息 用STEPLDR引导就出现乱码 麻烦帮忙看看

EBOOT下载到SDRAM DNW可以正常输出调试信息 用STEPLDR引导就出现乱码 附STEPLDR。NB1引导时DNW信息 Step ldr run to here   //加的DEBUG 22222222      //加的DEBUG Microsoft Windows CE Bootloader Common ...…

查看全部问答>

在用华恒6410做开发来传授点经验呗

我还是个学生,超级菜鸟,因为老师的项目,刚接触到这个开发板,现在遇到这样问题:我在VS2005里面做WIN CE6.0的一个模拟器,我从论坛里下了个WINCE6.0_CHS_SDK.msi,我单独做一个模拟器的时候就能能够运行,可是在华恒给的BSP上面调用的时候就一直 ...…

查看全部问答>

altium designer PCB设计中的全局编辑功能

网上很多网友都反映altium designer在某些方面还是优于10年经典版protel99se ,所以在空闲之余也下载了一个免安装绿化版的altium designer折腾了下。希望altium designer不要追究我使用了盗版的altium designer,只因个人财力有限。折腾不起正版。 ...…

查看全部问答>

大家看看下面的代码有问题吗??

module decoder_74LS138(G1,            G2A,            G2B,          &n ...…

查看全部问答>

2012年8月TI 微控制器研习班正式招募中

时间与地点 日期地点课程地址8月9日北京MSP430 LaunchPad北京市中关村科学院南路2号融科资讯中心A座518室8月16日深圳C2000 LaunchPad深圳市南山区华侨城兴隆街汉唐大厦19楼上海C2000 Concerto上海市浦东新区世纪大道1568号中建大厦32楼北京C2000 L ...…

查看全部问答>

编译时出现了一些问题,想请教各位大虾一下

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;           //设置为EXTI0 但是编译的时候却说“EXTI0_IRQChannel”没有定义,之后我吧其他的在固件库使用手册中给的中断的定义试了一下,都不行 ...…

查看全部问答>

基于sensortag的宿舍保姆系统

宿舍请个保姆是不可能的事情,不过我们可以通过蓝牙和单片机的结合设计一个电子宿舍保姆。早上系统闹钟会按时提醒我们起床,之后会通过该模块上的各种传感器给我们指出当前环境情况。再有单片机与继电器相连,很方便的通过蓝牙来遥控宿舍内电灯、风 ...…

查看全部问答>

低年级大学生如何查资料写论文

如果你输入3个关键字“电阻器”Baidu一下,你会发现很多与电阻器有关的信息。电阻器是一种最常用的元器件,虽然看起来简单,如果使用者对电阻器的了解不深入,势必将会影响到电路指标和产品质量。比如,设计一个高精度的温度采集器,则对电阻器的选 ...…

查看全部问答>