51单片机控制二相四线步进电机
步进电机按定子上绕组来分,有二相、三相和五相等系列。最受欢迎的是两相混合式步进电机,约占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单片机控制二相四线步进电机相关推荐
- 51单片机控制步进电机-电路连接
51单片机控制步进电机-电路连接 概要:本案例讲解的内容是51单片机控制步进电机硬件连接部分.后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 硬件清单: 1.51单片机控制板一个 2.二 ...
- 51单片机控制TB6600驱动器驱动42步进电机
51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...
- 遥控51单片机控制42步进电机(TB6600驱动)控制方向、速度
遥控51单片机控制步进电机控制方向.速度 控制开发板自带步进电机 遥控控制 控制42步进电机 大二在做srtp时做到了这部分内容,感觉C51控制起来挺简单的,之后有做关于MSP430的魂斗罗游戏和st ...
- 51单片机控制的数字温度计 PROTEUS 和51单片机教程
51单片机控制的数字温度计 总览部分 MCU部分 显示部分 开仿真以后实时显示温度 因为这个程序比较简单,我就直接上代码了,有不明白的请看我以前的文章,谢谢哦! 参考代码如下: #include &q ...
- 51单片机控制LCD1602模块
51单片机控制LCD1602模块 视频播放:LCD1602视频 (1)LCD1602概述 先来看看LCD1602什么意思?Liquid Crystal Display(LCD)表示液晶显示,1602 ...
- 89c52单片机控制两个步进电机正反转加减速(程序+仿真)
89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...
- 51单片机控制DHT11温湿度传感器,并使用OLED屏幕显示
目录 前言 一.MCU主控选型 二.DHT11温湿度传感器 1.模块介绍 2.软件实现 DHT11.c DHT11.h 三.OLED显示屏 1.模块介绍 2.软件实现 OLED.c OLED.h OL ...
- 基于51单片机驱动A4988实现步进电机逆时针转动
基于51单片机驱动A4988实现步进电机逆时针转动 一.简介 二.接线 典型接线图 实际接线 三.部分代码 引脚定义 定时器初始化 主函数 四.实验现象 五.注意事项 一.简介 A4988 是一款完全 ...
- 二相四线步进电机的一种四拍驱动时序
二相四线步进电机的一种四拍驱动时序 电极 1 2 3 4 A+ 1 1 0 0 A- 0 0 1 1 B+ 1 0 0 1 B- 0 1 1 0
最新文章
- php smarty csv,6个smarty小技巧
- linux服务之nagios
- User Experience Kit
- 去中心化索引协议The Graph将于12月上线主网
- github客户端与git使用指南
- html鼠标移动图片自动放大,当鼠标移动到图片上时跟随鼠标显示放大的图片效果...
- OFFICE与VISIO安装tips:版本不能并行、visio安装错误
- View的复用:viewHolder
- 开发一款APP软件,需要哪些技术支持呢?
- css方位,CSS 世界中的方位与顺序
- Android如何获取Wifi名称(SSID)
- Python cv2读取/存储图片中含中文路径失败的解决方法
- 密钥可以永久激活吗?
- 简述网桥的特点_网桥的工作原理和特点是什么呢?
- symmetric tree java_Symmetric Tree对称树
- 视频特效剪辑小技巧,给每个视频添加反相特效
- Cat.1、Cat.4、4G之间的区别
- 蓝桥杯——单片机设计与开发初学者必备资料
- RDS Mysql Single-AZ和Multi-AZ性能差异
- datagrip对Oracle支持不好,datagrip 连接oracle
热门文章
- Mac Xcode 各种缓存清理
- 华为nova5i计算机有计算记录吗,华为nova5i评测 值不值得买
- 说说如何安装与配置 jBPM4 开发环境
- COPY NAV导航网格寻路(4) -- 生成nav网格
- Google Earth Engine(GEE)提取不透水面的方法
- 基于S3C2440丛SD卡启动WinCE(或其它程序)的实现
- Covert Communication in Mobile Applications 手机应用中的隐秘通信
- 三菱Q系列PLC(内置以太网)与IFIX驱动IGS通讯测试 - TCPIP或UDP
- 「自动控制元件与线路」3 异步电动机及其控制
- 为什么abc三相电压加起来是0,而坐标变换之后在dq0坐标系中有值呢?——矢量控制中abc到dq0坐标系的坐标变换的思考