步进电机按定子上绕组来分,有二相、三相和五相等系列。最受欢迎的是两相混合式步进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。该种电机的基本步距角为1.8°/步,配上半步驱动器后,步距角减少为0.9°,配上细分驱动器后其步距角可细分达256倍(0.007°/微步)。由于摩擦力和制造精度等原因,实际控制精度略低。同一步进电机可配不同细分的驱动器以改变精度和效果。
此篇文档以二相四线制步进电机演示
一、 效果演示

二、 单片机程序
写程序之前,先把前提工作做好了,本次用的是STC89C52RC芯片(用别的也行,改一下头文件),keil软件和烧写软件以及主板驱动CH340程序。
程序解读:
A:
1.0引脚是脉冲引脚
1.1引脚是使能引脚
1.2引脚是方向引脚
2.0引脚控制电机正转
2.1引脚控制电机反转
2.2引脚控制电机加速
2.3引脚控制电机减速
2.4引脚控制电机停止
2.5引脚控制电机步距角加
2.6引脚控制电机步距角减
2.7引脚控制电机以一定步距角转动

sbit CLK  = P1^0;
sbit ENA  = P1^1;
sbit DIR  = P1^2;         sbit P_TS  = P2^0;
sbit N_TS  = P2^1;
sbit P_ADJ = P2^2;
sbit N_ADJ = P2^3;
sbit StopStart  = P2^4;
sbit P_Step = P2^5;
sbit N_Step = P2^6;
sbit SS_Step = P2^7;

B:
初始化电机;调用定时器,初始化定时器;调用键控扫描程序

void main()
{ENA=1;CLK=0;DIR=0;         Init_time();   while(1){Key_scan();}
}

C:
初始化定时器,给T0装初值,打开中断

void main()
{ENA=1;CLK=0;DIR=0;         Init_time();   while(1){Key_scan();}
}

D:
进入定时器中断

void Enter_Timer0() interrupt 1
{TH0=(65536-CYCLE)/256; TL0=(65536-CYCLE)%256;CLK=~CLK;PWM_count++;if(PWM_count==(2*cy_count)&&CY_status){PWM_count=0;TR0=0;ENA=0;}
}

E:
控制步进电机正反转,以一定步距角转动,调速,调脉冲

void Key_scan()
{static char i=0,j=0;if(P_TS==0)                       {if(P_TS==0){while(!P_TS);            DIR=1;}}if(N_TS==0)                      {if(N_TS==0){while(!N_TS);            DIR=0;}}if(P_ADJ==0)               {if(P_ADJ==0){while(!P_ADJ);i--;if(i<1)i=0;CYCLE=Tspeed[i];     }}if(N_ADJ==0)                  {if(N_ADJ==0){while(!N_ADJ);i++;if(i>2)i=2;CYCLE=Tspeed[i];}}if(StopStart==0){if(StopStart==0){while(!StopStart);Run_Status=~Run_Status;if(Run_Status){ENA=1;        TR0=1;        }else{ENA=0;        TR0=0;         CY_status=0;  }}}if(P_Step==0){if(P_Step==0)       {while(!P_Step);j++;if(j>3)j=3;Step(StepAngle[j]);          }}if(N_Step==0)            {if(N_Step==0){while(!N_Step);j--;if(j<1)j=0;Step(StepAngle[j]);         }}if(SS_Step==0)   {if(SS_Step==0){while(!SS_Step);Step(StepAngle[j]);}}
}

F:
角度控制

void Step(unsigned int step_count)
{PWM_count=0;CY_status=1;cy_count=step_count;ENA=1;TR0=1;
}

单片机程序下载:
链接: https://pan.baidu.com/s/1uCTHYBnQcke1_4By6ps_WA
提取码:zplc
三、 实物接线

接线图如图所示
驱动器可采用共阳极接法或共阴极接法,但在这里我们选择共阳极接法
因为驱动器的接口是光驱动的,而选择共阴接法的话,就意味着我们得靠单片机I/0口的电流来驱动里面的发光二极管,我们都知道单片机I/O口的驱动能力非常小,查看手册可知I/O口的拉电流只有几uA根本不足以驱动发光二极管,共阳极接法的灌电流可达15mA,此时足以驱动发光二极管,这就是为什么要选择共阳接法。
Ps:拉电流是逻辑门输出为高电平时的负载电流。
外部电流通过芯片引脚向芯片内‘流入’称为灌电流
实物接线图:

细分:
就是驱动器的6个拨码,它提高了步进电机转角精度和运行平稳性。
不过细分怎么调呢?
下图是细分的调节方式,可以按照自己的需求响应的调整,具体可以参照步进电机驱动器说明书

说明书详情网站:
https://wenku.baidu.com/view/4e003934dcccda38376baf1ffc4ffe473368fd26.html

OK,51单片机控制二相四线制步进电机到这里就结束啦,您学废了吗?

51单片机控制二相四线步进电机相关推荐

  1. 51单片机控制步进电机-电路连接

    51单片机控制步进电机-电路连接 概要:本案例讲解的内容是51单片机控制步进电机硬件连接部分.后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 硬件清单: 1.51单片机控制板一个 2.二 ...

  2. 51单片机控制TB6600驱动器驱动42步进电机

    51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...

  3. 遥控51单片机控制42步进电机(TB6600驱动)控制方向、速度

    遥控51单片机控制步进电机控制方向.速度 控制开发板自带步进电机 遥控控制 控制42步进电机 大二在做srtp时做到了这部分内容,感觉C51控制起来挺简单的,之后有做关于MSP430的魂斗罗游戏和st ...

  4. 51单片机控制的数字温度计 PROTEUS 和51单片机教程

    51单片机控制的数字温度计 总览部分 MCU部分 显示部分 开仿真以后实时显示温度 因为这个程序比较简单,我就直接上代码了,有不明白的请看我以前的文章,谢谢哦! 参考代码如下: #include &q ...

  5. 51单片机控制LCD1602模块

    51单片机控制LCD1602模块 视频播放:LCD1602视频 (1)LCD1602概述 先来看看LCD1602什么意思?Liquid Crystal Display(LCD)表示液晶显示,1602 ...

  6. 89c52单片机控制两个步进电机正反转加减速(程序+仿真)

    89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...

  7. 51单片机控制DHT11温湿度传感器,并使用OLED屏幕显示

    目录 前言 一.MCU主控选型 二.DHT11温湿度传感器 1.模块介绍 2.软件实现 DHT11.c DHT11.h 三.OLED显示屏 1.模块介绍 2.软件实现 OLED.c OLED.h OL ...

  8. 基于51单片机驱动A4988实现步进电机逆时针转动

    基于51单片机驱动A4988实现步进电机逆时针转动 一.简介 二.接线 典型接线图 实际接线 三.部分代码 引脚定义 定时器初始化 主函数 四.实验现象 五.注意事项 一.简介 A4988 是一款完全 ...

  9. 二相四线步进电机的一种四拍驱动时序

    二相四线步进电机的一种四拍驱动时序 电极 1 2 3 4 A+ 1 1 0 0 A- 0 0 1 1 B+ 1 0 0 1 B- 0 1 1 0

最新文章

  1. php smarty csv,6个smarty小技巧
  2. linux服务之nagios
  3. User Experience Kit
  4. 去中心化索引协议The Graph将于12月上线主网
  5. github客户端与git使用指南
  6. html鼠标移动图片自动放大,当鼠标移动到图片上时跟随鼠标显示放大的图片效果...
  7. OFFICE与VISIO安装tips:版本不能并行、visio安装错误
  8. View的复用:viewHolder
  9. 开发一款APP软件,需要哪些技术支持呢?
  10. css方位,CSS 世界中的方位与顺序
  11. Android如何获取Wifi名称(SSID)
  12. Python cv2读取/存储图片中含中文路径失败的解决方法
  13. 密钥可以永久激活吗?
  14. 简述网桥的特点_网桥的工作原理和特点是什么呢?
  15. symmetric tree java_Symmetric Tree对称树
  16. 视频特效剪辑小技巧,给每个视频添加反相特效
  17. Cat.1、Cat.4、4G之间的区别
  18. 蓝桥杯——单片机设计与开发初学者必备资料
  19. RDS Mysql Single-AZ和Multi-AZ性能差异
  20. datagrip对Oracle支持不好,datagrip 连接oracle

热门文章

  1. Mac Xcode 各种缓存清理
  2. 华为nova5i计算机有计算记录吗,华为nova5i评测 值不值得买
  3. 说说如何安装与配置 jBPM4 开发环境
  4. COPY NAV导航网格寻路(4) -- 生成nav网格
  5. Google Earth Engine(GEE)提取不透水面的方法
  6. 基于S3C2440丛SD卡启动WinCE(或其它程序)的实现
  7. Covert Communication in Mobile Applications 手机应用中的隐秘通信
  8. 三菱Q系列PLC(内置以太网)与IFIX驱动IGS通讯测试 - TCPIP或UDP
  9. 「自动控制元件与线路」3 异步电动机及其控制
  10. 为什么abc三相电压加起来是0,而坐标变换之后在dq0坐标系中有值呢?——矢量控制中abc到dq0坐标系的坐标变换的思考