A4988步进电机单片机驱动程序

发布者:Amy啊111111最新更新时间:2020-01-03 来源: 51hei关键字:A4988  步进电机  单片机驱动 手机看文章 扫描二维码
随时随地手机看文章

这是自己用4988步进电机驱动芯片做的,4988芯片一般用在3D打印机上,具有体积小等优点。下面有我的测试程序,希望可以给需要的人提供参考。

单片机源程序如下:

/***************************************************************

* 实 验 名 :步进电机实验

* 实验说明 :电机启动、停止、正转、反转

* 实验平台 :51单片机开发板

* 连接方式 :pulse接P10  DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14

* 注    意 :本例程使用了中断定时器,中断介绍会在下一实验中说明

****************************************************************************/


#include

#include


#define FOSC 11059200L //晶振设置,默认使用11.0592M Hz

//#define FOSC 12000000L //晶振设置,使用12M Hz

//#define FOSC 24000000L //晶振设置,使用24M Hz


#define TIME_MS 1 //设定定时时间 ms ,在11.0592M晶振下,不易超过60ms


//IO接口定义

sbit pulse = P1^0;//脉冲信号

sbit Dir   = P1^1; //正反转


sbit EN    = P1^2;

sbit MS1   = P1^3; 

sbit MS2   = P1^4; 

sbit MS3   = P1^5; 




sbit KEY1 = P2^0;  //启动

sbit KEY2 = P2^1;  //停止

sbit KEY3 = P2^2;  //正转

sbit KEY4 = P2^3;  //反转



//全局变量定义

unsigned char count=0;


/*******************************************************************************

* 函 数 名 :Delayms

* 函数功能 :实现 ms级的延时

* 输    入 :ms

* 输    出 :无

*******************************************************************************/

void Delayms(unsigned int ms)

{

        unsigned int i,j;

        for(i=0;i        #if FOSC == 11059200L

                for(j=0;j<114;j++);

        #elif FOSC == 12000000L

          for(j=0;j<123;j++);

        #elif FOSC == 24000000L

                for(j=0;j<249;j++);

        #else

                for(j=0;j<114;j++);

        #endif

}


/*******************************************************************************

* 函 数 名 :Timer0Init

* 函数功能 :定时器0初始化

* 输    入 :无

* 输    出 :无

*******************************************************************************/

void Timer0Init()

{

        TMOD=0x01; //设置定时器0工作方式为1

        TH0=(65536-FOSC/12/1000*TIME_MS)/256;

        TL0=(65536-FOSC/12/1000*TIME_MS)%256;

        ET0=1; //开启定时器0中断

//        TR0=1;        //开启定时器        

        EA=1;  //打开总中断

}



/*******************************************************************************

* 函 数 名 :main

* 函数功能 :主函数

* 输    入 :无

* 输    出 :无

*******************************************************************************/

void main()

{

        Timer0Init();

        EN=0;

        MS1=0;

        MS2=0;

        MS3=0;

        while(1)

        { 

  if(KEY1==0)  //判断是否按下键盘

        {

                Delayms(10); //延时,软件去干扰

                if(KEY1==0)   //确认按键按下

                {

      TR0=1;

                }

                while(KEY1==0);//按键锁定,每按一次count只加1.

        }

        if(KEY2==0)  //判断是否按下键盘

        {

                Delayms(10); //延时,软件去干扰

                if(KEY2==0)   //确认按键按下

                {

      TR0=0;

                }

                while(KEY2==0);//按键锁定,每按一次count只加1.

        }        

        

        if(KEY3==0)  //判断是否按下键盘

        {

                Delayms(10); //延时,软件去干扰

                if(KEY3==0)   //确认按键按下

                {

      Dir=0;

                }

                while(KEY3==0);//按键锁定,每按一次count只加1.

        }        

        

                if(KEY4==0)  //判断是否按下键盘

        {

                Delayms(10); //延时,软件去干扰

                if(KEY4==0)   //确认按键按下

                {

      Dir=1;

                }

                while(KEY4==0);//按键锁定,每按一次count只加1.

        }        

        

        

        }

}


/*******************************************************************************

……………………



关键字:A4988  步进电机  单片机驱动 引用地址:A4988步进电机单片机驱动程序

上一篇:简易一小时定时器 数码管显示
下一篇:51单片机扩展数据存储器RAM proteus仿真

推荐阅读最新更新时间:2024-11-11 23:09

STM32用PWM实现步进电机的正反转
2019年7月23日 做小车的第三天。 利用可调的PWM脉冲实现步进电机的正反转,思路大致是:利用TIM3(STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出)的两个通道输出两道PWM脉冲,控制电机的高低电平以实现电机的正反转。 代码如下: #ifndef __TIMER_H #define __TIMER_H #include “sys.h” /**************************************************** 在下面的宏定义中 作用是起一个连接语句的作用意思是用 IN(a) 代表后面的if else语句。 #define IN1(a) if (a) GP
[单片机]
STM32用PWM实现<font color='red'>步进电机</font>的正反转
让我们开启步进电机操作之旅吧!
步进电机操作之旅 芝识课堂已经带大家认识了步进电机的应用、特点和工作原理,现在朋友们应该跃跃欲试想动手让你的步进电机工作起来吧?别急,在驱动步进电机之前,让我们先学会步进电机的驱动方式并选择合适的步进电机驱动IC,从而让你第一次步进电机操作之旅更加美妙。 在上期内容中,我们知道步进电机作为能逐步驱动至指定旋转角度的电机,它的旋转是以固定的角度(称为“步距角”)一步一步运行的。步进电机的运行需要电子装置进行驱动,即步进电机驱动器。它把控制系统发出的脉冲信号转化为步进电机的角位移,或者可以说控制系统每发一个脉冲信号,驱动器就使步进电机旋转一步距角,所以步进电机的转速与脉冲信号的频率成正比。 步进电机的驱动需要专用的电机驱动
[嵌入式]
让我们开启<font color='red'>步进电机</font>操作之旅吧!
步进电机的机械原理
一、 步进电机分类 1.1、 反应式步进电机(VR):转子由软磁材料制成,结构简单、成本低、动态力学性能差、步距角可以很小; 1.2、 永磁式步进电机(PM):转子由永磁材料制成,转子级数少,步距角大,力矩大,动态性能好; 1.3、 混合式步进电机(HB):结合VR、PM电机优点,输出力矩大、步距角小、动态性能好,目前使用最为广泛,下述以该类电机为例进行介绍。 二、 两相混合式步进电机结构 2.1、 实物图如下所示,主要由定子、转子、端盖组成 2.2、结构示意图如下所示 2.3、剖视图分析(剖切转子S端) 定子有8个磁极,如下图所示,绿色绕线的为A相,洋红色绕线的为B相。转子有50个齿,均匀分布。定子每个磁极有6个
[嵌入式]
<font color='red'>步进电机</font>的机械原理
斯泰普步进电机三轴联动的快速加减速算法研究
  1 引言   步进电机具有快速启停能力强、精度高、转速容易控制的特点。但是,步进电机应避免转动速率的突变,而且从停止到开始转动有一个较低的起动频率,随后才可以平缓地过渡到较高的转速。相应地在步进电机制动时,也应该平缓过渡。如果由于启动和停止控制不当, 步进电机 会出现启动时抖动和停止时过冲的现象,从面影响控制系统的控制精度 。为避免这种情况的发生,要对步进电机进行加减速控制。步进电机加减速控制是数控系统的关键技术,对提高数控系统的精度及速度有重要的意义。加减速控制也得到了广泛的研究与应用。   目前国内外步进电机加减速控制曲线主要包括三种 :直线型加减速速度曲线(也称为梯形曲线)、指数型加减速曲线、S 型加减速曲线。控制算法主
[嵌入式]
AVR单片机驱动的LCD2004的源程序
/*======================================================= 20x4字符液晶主程序,编译软件(ICCAVR_6.31) CPU内部晶振8M 数据线B0~B7接PORTB, E=D7 RW=D6 RS=D5 ========================================================= 接线图如下: _______________ ______________ | --1|GND | | --2|+5V | | --3|V0 |
[单片机]
直线步进电机齿层比磁导的分析计算
直线步进电机分析时常采用场路结合的方法,它可以将场的计算精确性和路的计算简明性结合在一起,保证计算具有一定的精度,应用起来比较方便。场路结合法中,主要是齿层比磁导的计算,即认为齿层以外的部分磁密为均匀分布,将齿层区域单独划分出来,进行局部场域的求解。 在步进电动机的计算中,传统的气隙比磁导法模型假定铁心各部分中的磁密都为均匀分布:定子、动子铁心分别为等磁位面。而实际的步进电动机铁心表面都有齿槽,齿部磁密常处于饱和状态。因此,气隙比磁导法与实际情况不符,计算误差很大。20世纪80年代,国内学者提出了齿层比磁导法种方法能比较准确地反映出电机内部的磁场分布。 在齿层比磁导法模型中,定义一个齿距范围内,单位铁心长度为齿层单元,在定子、动
[嵌入式]
stm32单片机12864驱动
/**************************************************************** 【文 件 名 称】lcd12864.h 【功 能 描 述】lcd12864 头文件 【 作 者 】shifu *****************************************************************/ #ifndef __LCD12864_H #define __LCD12864_H //**************************************************************** #include stm32f10x_gpi
[单片机]
基于MSP430F149单片机实现的步进电机通用控制器
1.前言 基于步进电机的控制系统,除了步进电机一般还需要专门的驱动电源,驱动电源仅仅完成功率驱动部分,用户并不能使整个控制系统按预定的、期看的工作状态运行,必须对它的驱动电源予以控制,用户需要再次开发。 鉴于此,设计了基于MSP430F149单片机实现的步进电机通用控制器,可以满足大多数控制场合下的要求。控制器的主要功能为: ①可控制多套步进电机驱动系统;目前可同时控制3套系统。 ②工作方式灵活,可按设定的曲线运行,曲线最多达8段;可按外部检测到的控制信号运行;可按模拟调节测试功能运行; 2.系统的设计 2.1系统的结构 本控制器主要实现了多台步进电机在多段曲线上的运行控制。系统结构如图1所示。 图1系统结构
[单片机]
基于MSP430F149<font color='red'>单片机</font>实现的<font color='red'>步进电机</font>通用控制器
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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