步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。步进电机必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。

技术指标:

(1)、相数-----------电机内部的线圈组数。电机相数不同,一般二相电机的步距角为0.9°/1.8°。

(2)、步距角--------表示控制系统每发一个步进脉冲信号,电机所转动的角度。二相四线步进电机步距角为0.9°/1.8°(表示 半步工作时为0.9°、整步工作时为1.8°),这个步距角称为“电机固有步距角”。

(3)、拍数-----------完成一个 磁场周期性变化所需要脉冲数或导电状态。

工作原理:

两相四线步进电机以8拍方式工作,则每个脉冲旋转0.9°,即每旋转一圈需要400个脉冲信号来励磁。步进电机的正、反转由励磁脉冲产生的顺序来控制,它的控制等效电路如图所示:

它有4条励磁信号引线1,2,3,4分别代表A,-A, B, -B。通过控制这4条引线上励磁脉冲产生的时刻,即可控制步进电机的转动。每出现一个脉冲信号,步进电机只走一步。因此,只要依序不断送出脉冲信号,步进电机就能实现连续转动。

一-二相励磁-----为一相励磁与二相励磁交替导通的方式。每送一个励磁信号,步进电机旋转0.9°。

励磁顺序表:

STEP              A            -A           B               -B

1                    1            0            0                0

2                    1            0            1                0

3                    0            0            1                0

4                    0            1            1                0

5                    0            1            0                0

6                    0            1            0                1

7                    0            0            0                1

8                    1            0            0                1

L298N引脚图:

逻辑输入IN1~IN4分别与单片机的控制引脚相连,输出A和输出B(OUT1~OUT4)分别与电机的A、-A、B、-B相连。

12V供电和GND使用稳压电源(可以电源适配器6-12V,我使用的是8.2V)。

注意:同时GND还要与单片机的GND相连接,这样才能控制。

最后STC89C51的步进电机控制代码代码:

其中IN1~IN4分别与P1.0~P1.3口连接。使用定时器T0实现准确延时。

//*********************************************
//Developer:Saber
//Project:Motor Control
//Time:2018/4/18
//*********************************************
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned intstatic unsigned int count;
static unsigned int endcount;
//八拍驱动方式正转表 A-B- --> B- --> B-A --> A --> AB --> B
// --> BA- --> A- --> A-B-
uchar upstep8_table[]={0x05,0x01,0x09,0x08,0x0A,0x02,0x06,0x04};//四拍驱动方式正转表 A --> B --> A- --> B-
uchar upstep4_table[]={0x08,0x02,0x06,0x01};void delay(uint ims);               //变量延时函数
void Interrupt0_Init();             //中断0初始化
void MotorSpeedOrDirection(uint var, uchar state);        //控制电机转速和方向
void ConStep(uchar var);            //步进控制器
void MotorStop(void);               //停止void main()
{unsigned int sum=0;P1 = 0x00;count = 0;Interrupt0_Init();while(1){MotorSpeedOrDirection(1, 0);}
}//******************************
//      步进电机停止函数
//作用:停止
//******************************
void MotorStop(void)
{P1 = 0x00;
}//******************************
//      外部中断0初始化函数
//作用:初始化外部中断
//******************************
void Interrupt0_Init()
{EA = 1;TMOD = 0x11;ET0 = 1;//   TH0=0xFF;
//  TL0=0x28;TH0=(65536-1000)/256;TL0=(65536-1000)%256;TR0=1;
}//******************************
//      中断处理函数
//作用:定时器0的中断处理
//******************************
void timeint(void) interrupt 1
{
//  TH0=0xFF;
//  TL0=0x28;   //216----234us
//  定时器定时1msTH0=(65536-1000)/256;TL0=(65536-1000)%256;count++;
}//******************************
//
//延时i ms
//******************************
void delay(uint ims)
{endcount=ims;count=0;do{}while(count<endcount);
}//******************************
//      步进电机驱动函数
//作用:通过变量var控制电动机的转速高低,通过变量state判断电动机的正反转
//          state:0 正转,state: 1 反转
//使用8拍能够实现比较平滑的转动,使用4拍时电机震动比较大。
//******************************
void MotorSpeedOrDirection(uint var, uchar state)
{uchar i=0;if(!state){for(i=0; i<8; i++){P1=upstep8_table[i];delay(var);}}else{for(i=7; i>0; --i){P1=upstep8_table[i];delay(var);}}
}//******************************
//      步进控制函数
//作用:通过变量var控制旋转圈速
//******************************
void ConStep(uchar var)
{uchar i=0,j=0,m=0,k=0;while(k++<var){for(i=0;i<20;i++){for(m=0;m<20;m++){P1=upstep8_table[j];j++;if(j>=8)             //每8次一个循环j=0;delay(1);}}}
}

基于STC89C51和L298N的42步进电机控制相关推荐

  1. 42步进电机控制入门

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.什么是42步进电机 二.步进电机驱动板 三.电路接线 四.实验室实验操作 总结 前言 随着考试结束回到老家,翻了一 ...

  2. 基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(七)基于CrossApp跨平台框架的MQTT客户端控制应用android版

    本文在前一篇基础上,详细介绍以CrossApp跨平台框架为基础,利用mosquito库和easySQLite库设计实现了基于MQTT协议的android版步进电机控制客户端. 一.开发环境的准备 编译 ...

  3. “S“型曲线加减速在42步进电机的位置控制和速度控制中的交叉应用

    "S"型曲线加减速在42步进电机位置和速度交叉控制应用 兴趣使然,兴趣使然-哈哈,花了一个多星期研究了一下S型曲线在步进电机的加速减速中应用,以及简单的结合了一下位置控制和速度控制 ...

  4. 基于ESP8266WiFi步进电机控制

    ■ 步进平台驱动模块 在 基于ESP8266WiFi控制的不仅升降机械平台 介绍了该机械平台的特性和支持命令,但还存在一下两部分内容需要改造: 在步进电机控制的升降平台运动过程中,两端的极限位置没有能 ...

  5. STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序

    STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...

  6. 步进电机的计算机控制系统设计,基于计算机并口的步进电机控制系统设计

    [摘要]本文提出了一种基于计算机并口的步进电机的控制方法,精确实现对步进电机旋转方向.转速及步距数的控制,用计算机并行口与步进电机进行通信,具有传输率高.低成本的特点.本文对步进电机控制系统的驱动电路 ...

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

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

  8. 【电机控制】Arduino mega 2560控制42步进电机接线

    Arduino mega 2560控制42步进电机接线图 ****TB6600驱动器与42步进电机接线图**** 接线: 12V电源适配器正负极分别接驱动器VCC和GND 步进电机黑绿红蓝线分别接驱动 ...

  9. 水位传感器c语言程序,基于STC89C51单片机的水位传感器控制系统设计.doc

    基于STC89C51单片机的水位传感器控制系统设计 摘 要 本设计简单.方便.成本低,采用的是比较优化的电路设计方案:以单片机STC89C51为核心控制水塔水位, 利用简易的水位传感器进行水位信号采集 ...

  10. 【arduino】arduino uno + A4988控制42步进电机

    http://blog.csdn.net/ling3ye/article/details/47001251 MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式) ...

最新文章

  1. DDoS高防(国际)子产品发布,替代原本在DDoS高防IP中的海外线路。
  2. 设计模式-行为-模板方法
  3. 不同权限访问详细细节
  4. Vue中mounted和created的区别
  5. 时序算法—AR、MA、ARMA和ARIMA模型以及Auto ARIMA
  6. 现代交换技术--交换概论
  7. 改手机为自动开机的车载导航仪
  8. 半导体物理学——(一)半导体中的电子状态
  9. python复数运算程序_python复数及计算法则
  10. 瑞幸咖啡砸10亿教育市场,会成为下一个“小黄车”吗?
  11. js闭包深入理解(Closure)
  12. ERROR o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).
  13. 东南大学计算机科学与技术夏令营,保研经验 | 排名第一,七项专利,拿到多个夏令营offer,成功上岸985!...
  14. 3.3.9 反相积分电路
  15. 《孙子兵法》【行军第九】
  16. ccproxy的缺省代理端口列表
  17. 警告:不能读取 AppletViewer 的属性文件解决
  18. Linus下EDB的安装
  19. 管壁式换热器cad图纸_关于换热器技术问答
  20. 5G核心网与核心网演进

热门文章

  1. tftp上传下载命令
  2. 人去楼空 暴风影音倒闭 今后将成为历史?
  3. 广东2022年下半年系统集成项目管理工程师上午真题及答案解析
  4. 一个商人应遵守的22条规矩
  5. CAD常用字体库大全
  6. Unity创建字体库给TextMeshPro
  7. 编码器计数原理与电机测速原理——多图解析
  8. 计算机一级有几套试卷,计算机一级B十五套试卷
  9. 洛谷oj---1036 选数
  10. #洛谷oj:P2024 [NOI2001] 食物链