环境

软件

  • uVision V4.02
  • ISIS Professional 7.8

芯片

  • AT89C51
  • ULN2803

实现效果

通过按钮控制电机顺时针或逆时针旋转

相关代码及资源

https://github.com/duganlx/DSP

操作小记

步进电机介绍

原理

步进电机是利用电磁铁原理,将脉冲信号转换成线位移或角位移的电机。每来一个电脉冲,电机转动一个角度,带动机械移动一小段距离

特点

  • 来一个脉冲,转一个步距角
  • 控制脉冲频率,可控制电机转速
  • 改变脉冲顺序,改变转动方向
  • 角位移量或线位移量与电脉冲数成正比

种类

通常按励磁方式分为三大类:

  • 反应式:转子无绕组,定转子开小齿、步距小。应用最广
  • 永磁式:转子的极数=每相定子极数,不开小齿,步距角较大,力矩较大
  • 感应子式(混合式): 开小齿,混合反应式与永磁式优点:转矩大、动态性能好、步距角小

我们以反应式为例来说明

结构


步进电机主要由两部分构成:定子转子。它们均由磁性材料构成。定、转子铁心由软磁材料或硅钢片叠成凸极结构,定、转子磁极上均有小齿,定、转子的齿数相等。其中定子有六个磁极,定子定子磁极上套有星形连接的三相控制绕组每两个相对的磁极为一相,组成一相控制绕组,转子上没有绕组。转子上相邻两齿间的夹角称为齿距角
注意:步进电机通的是直流电脉冲

工作方式

步进电机的工作方式可分为三相单三拍三相单双六拍三相双三拍

三相单三拍
  • 三相绕组联接方式:Y 型
  • 三相绕组中的通电顺序为
    • A相 --> B相 --> C相 --> A相
    • A相 --> C相 --> B相 --> A相
  • 工作方式

    结合上图,A相通电,A方向的磁通经转子形成闭合回路。若转子和磁场轴线方向有一定角度,则在磁场的作用下,转子被磁化,吸引转子,由于磁力线总是要通过磁阻最小的路径闭合,因此会在磁力线扭曲时产生切向力而形成磁阻转矩,使转子转动,使转、定子的齿对齐停止转动。即 A相通电使转子1、3齿和AA‘对齐

    B相通电,转子2、4齿和B相轴线对齐,相对A相通电位置转30o

    C相通电再转30o
    这种工作方式,因三相绕组中每次只有一相通电,而且,一个循环周期共包括三个脉冲,所以称三相单三拍
  • 特点
    • 每来一个电脉冲,转子转过 30o。此角称为步距角
    • 转子的旋转方向取决于三相线圈通电的顺序,改变通电顺序即可改变转向
三相单双六拍
  • 通电顺序为:A -> AB -> B -> BC -> C -> CA -> A共六拍
  • 工作过程如下:

    A相通电,转子1、3齿和A相对齐

    A、B相同时通电
    BB’ 磁场对 2、4 齿有磁拉力,该拉力使转子顺时针方向转动
    AA’ 磁场继续对1、3齿有拉力
    所以转子转到两磁拉力平衡的位置上。相对AA’ 通电,转子转了15°

    B相通电,转子2、4齿和B相对齐,又转了15°
    总之,每个循环周期,有六种通电状态,所以称为三相六拍,步距角为15°
三相双三拍
  • 通电顺序:AB -> BC -> CA -> AB共三拍
  • 工作过程如下:

    以此类推,每通一个电脉冲,转子转过30°
以上三种工作方式,三相双三排和三相单双六排较三相单三拍稳定,因此较常采用

步距角

步进电机通过一个电脉冲转子转过的角度,称为步距角

转速

每分钟转过的圆周数,即转速为:

步距角一定时,通电状态的切换频率越高,即脉冲频率越高时,步进电动机的转速越高。脉冲频率一定时,步距角越大、即转子旋转一周所需的脉冲数越少时,步进电动机的转速越高

矩阵特性

步进电动机的输出转矩控制脉冲频率之间的关系称为矩频特性

驱动

步进电动机的驱动电源主要由脉冲发生器脉冲分配器脉冲放大器(也称功率放大器)三部分组成

代码编写

引入库文件

#include<reg51.h>
#include<string.h>
#include<stdio.h>
#include<intrins.h>
#include<stdlib.h>

宏定义

#define INT8U unsigned char
#define INT16U unsigned int

全局变量

sbit FFW_KEY=P3^0;
sbit REV_KEY=P3^1;
sbit STOP_KEY=P3^2;//0000_0001 A->AB->B->BC->C->CD->D->AD
INT8U code FFW_ARR[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
//0000_1001 AD->D->CD->C->BC->B->AB->A
INT8U code REV_ARR[]={0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};
说明

延时函数

/**
*延时
*
*@param x 延时时间
*@return
*/
void delay_ms(INT16U x)
{INT8U t=120;while(x--)while(t--);
}

顺时针旋转函数

/**
*顺时针旋转
*
*@param n 旋转圈数
*@return
*/
void STEP_FFW(INT8U n)
{INT8U i,j;for(i=0; i<5*n; i++){for(j=0; j<8; j++) //8*9=72{P1=FFW_ARR[j];delay_ms(60);if(STOP_KEY==0) return;}}
}

逆时针旋转函数

/**
*逆时间旋转
*
*@param n 旋转圈数
*@return
*/
void STEP_REV(INT8U n)
{INT8U i,j;for(i=0; i<5*n; i++){for(j=0; j<8; j++){P1=REV_ARR[j];delay_ms(60);if(STOP_KEY==0) return;}}
}

主函数

void main()
{INT8U n = 1;while(1){if(FFW_KEY==0){P0=0xFE; // 1111_1110STEP_FFW(n);}else if(REV_KEY==0){P0=0xFD; // 1111_1101STEP_REV(n);}else{P0=0xFB; // 1111_1011}}
}
说明

正反转可控的步进电机相关推荐

  1. Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a18_正反转可控步进电机

    *本文及代码参阅彭伟<单片机C语言程序设计实训100例> 一,打开文件(可以随文下载放置在文档中打开).(如下图1所示) 图1 二,调整原理图大小,适合可视,另存工程文件.(如下图2,3, ...

  2. Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a17_正反转可控直流电机

    *本文及代码参阅彭伟<单片机C语言程序设计实训100例> 一,打开文件(可以随文下载放置在文档中打开).(如下图1所示) 图1 二,调整原理图大小,适合可视,另存工程文件.(如下图2,3, ...

  3. proe输入数字时成双出现_Proe/Creo步进电机正反转仿真详解

    本教程对步进电机正反转进行仿真,设顺时针为正转,逆时针为反转,步进电机驱动转盘,转盘正转一圈,停止,反转半圈,停止,反转半圈. 1. 新建组件,添加电机57HS22-a,在默认位置装配,如下图: 2. ...

  4. 用STM32和ULN2003控制28BYJ-48步进电机正反转固定角度

    在我们平时做一些小项目的时候,需要用到步进电机驱动某一部件转动某一固定角度或者是走过固定长度. 比如自制一个具有扫风功能的小风扇,由于风扇自身尺寸偏小,使用如图1所示传统的复杂机械结还构去实现扫风功能 ...

  5. 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速-萌新入门

    ** 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速 ** 分享一个萌新入门小工程 一.原件连接: 第一种直接用51开发板 第二种用最小单元加unl2003驱动 二.开发板电路 ...

  6. 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制

    [Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...

  7. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制

    [Proteus仿真]Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制 Proteus仿真演示 功能说明 正反转采用2和3 引脚外部中断,3和4引脚调节加减速. 示例程序代码 ...

  8. C语言步进电机自动加减速,步进电机正反转和加速减速c源程序

    这是一个群里朋友发给我的步进电机实现正转反转和加速减速的单片机c语言源程序,这里给大家共享下,有需要的朋友直接复制到keil里编译就可以了,程序已测试成功. /******************** ...

  9. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...

最新文章

  1. MySQL优化配置之query_cache_size
  2. python 输出大文本文件
  3. 第4章 利用三层交换机实现VLAN间路由lan配置
  4. 【C/C++】等分或指定行数把txt文档拆分成多份
  5. Angular之filter学习
  6. Java中的NIO非阻塞编程
  7. Windows 下 C/C++ 多线程编程入门参考范例
  8. 2019年7月9日星期二(C语言)
  9. [Java] 蓝桥杯ALGO-151 算法训练 6-2递归求二进制表示位数
  10. JVM类加载的各阶段过程(加载、验证、准备、解析、初始化)
  11. date比较大小 mybatis_面试官:给我说说你使用Mybatis的过程中遇到过哪些坑?
  12. 计算机图片组合快捷键,Windows电脑常用的10个Win组合快捷键功能,看看你都知道吗?...
  13. 弹簧管压力表设计报告
  14. APS先进规划与生产排程系统--介绍
  15. 保温杯市场前景分析及行业研究报告
  16. 诡辩六论——微信陌陌如何话题不断的聊天
  17. 爬取服务器主机信息,魔兽世界怀旧服,基于WclPlayerScore数据二次爬取的各服务器分层人口普查及精英玩家比例...
  18. java计算机毕业设计物流站环境监测系统源码+系统+数据库+lw文档+mybatis+运行部署
  19. 自己的IP地址可以被随便查到吗?
  20. 2014华中首届手游创意大赛

热门文章

  1. 电脑无法启动,电源灯一直闪烁,风扇不转!
  2. openid无效什么意思_发送微信模板消息,返回OpenId无效
  3. javax.naming.NamingException: No naming context bound to this class loader
  4. 【java】在线编程网站推荐
  5. 查看无线网络信道的方法
  6. opensuse15.3 基本操作
  7. 阿尔法无线充电线圈有哪些?
  8. 服务器的垃圾清扫系统指令,求win10清除系统垃圾的几个命令
  9. 算法竞赛进阶指南——兔子与兔子【哈希】
  10. R语言-HTML 基础与R语言解析