单片机之步进电机驱动篇(一)

2023-05-16

步进电机的简介:步进电机是一种将电脉冲转化为角位移的执行机构。当步进电机驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个步距角。通过控制脉冲来控制角位移量,也可以实现对电机的加减速和正反转的控制。常用的电机是28BYJ-48,如图所示:

28BYJ-48

步进电机的转动原理:改变绕组的磁场,就可以使步进电机正转和反转,改变磁场切换的时间间隔,就可以控制步进电机的速度。

步进电机的一些知识点:

1,相数:产生不同对极N,S磁场的磁线圈对数。

2,拍数:完成1个磁场周期性变化所需的脉冲数。例如由四相四拍,四相八拍。

3,步距角:对应一个脉冲信号,电机的转子转过的角位移。

单片机不能直接驱动步进电机,所以下面介绍下驱动电路ULN2003芯片

ULN2003是达林顿阵列,内部是一个“非门”电路,包含7个单元(16个引脚)具体引脚作用网上查找资料;

单片机与ULN2003的连接图:

 

 

 用单片机实现步进电机的运转(四相八拍)代码程序:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit A = P1^0;   //定义引脚
sbit b = P1^1;
sbit C = P1^2;
sbit D = P1^3;
void setmotor();
void motor_cs();
void Timer0Init();

u8 motorstep=0;  //步进电机步序
u16 Tim;
#define speed 12;
void Timer0() interrupt 1
{ static u16 count;
  TH0=0xfc;
	TL0=0x18;
	if(count -- ==0)
	{
	count=5;
		Tim=1;
	}
	
}
int main()
{
	Timer0Init();
   motor_cs();
	while(1)
	{
	setmotor();
	}
	
}

void motor_cs()
{
  A=1;
	b=1;
	C=1;
	D=1;
}

void setmotor()
{
   switch(motorstep)
	 {
		 case 0:   //a
			 if(Tim)
			 {
				 A=0;
	       b=1;
	       C=1;
	       D=1;
				 motorstep=1;
				 Tim=0;
			 }
			 break;
			case 1:   //ab
			 if(Tim)
			 {
				 A=0;
	       b=0;
	       C=1;
	       D=1;
				 motorstep=2;
				 Tim=0;
			 }
			 break; 
			 case 2:
			 if(Tim)
			 {
				 A=1;
	       b=0;
	       C=1;
	       D=1;
				 motorstep=3;
				 Tim=0;
			 }
			 break;
			 case 3:
			 if(Tim)
			 {
				 A=1;
	       b=0;
	       C=0;
	       D=1;
				 motorstep=4;
				 Tim=0;
			 }
			 break;
			 case 4:
			 if(Tim)
			 {
				 A=1;
	       b=1;
	       C=0;
	       D=1;
				 motorstep=5;
				 Tim=0;
			 }
			 break;
			 case 5:
			 if(Tim)
			 {
				 A=1;
	       b=1;
	       C=0;
	       D=0;
				 motorstep=6;
				 Tim=0;
			 }
			 break;
			 case 6:
			 if(Tim)
			 {
				 A=1;
	       b=1;
	       C=1;
	       D=0;
				 motorstep=7;
				 Tim=0;
			 }
			 break;
			 case 7:
			 if(Tim)
			 {
				 A=0;
	       b=1;
	       C=1;
	       D=0;
				 motorstep=0;
				 Tim=0;
			 }
			 break;
			
	      
	 }

}

void Timer0Init()   //定时器中断的初始化
{
  TMOD=TMOD|0X01;
	TH0=0xfc;
	TL0=0x18;
	ET0=1;
	EA=1;
	TR0=1;


}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机之步进电机驱动篇(一) 的相关文章

随机推荐

  • ArcGIS10.8保姆式安装教程,超详细;附安装包

    安装前请关闭杀毒软件 xff0c 系统防火墙 xff0c 断开网络连接 参考链接 xff1a 请点击 下载链接 xff1a 通过百度网盘分享的文件 xff1a ArcGIS10 8zip 链接 https pan baidu com s 1
  • Typora1.4.8保姆式安装教程,超详细;附安装包

    Typora是一款非常好用的Markdown编辑器和阅读器 xff0c 相信做技术的同学都不陌生 xff0c 其具有小巧 快速 实时预览等特点 xff0c 是一款提升生产力的工具 下载链接 xff1a 通过百度网盘分享的文件 xff1a T
  • C语言计算机二级/C语言期末考试 刷题(十三)数组专题二

    收集了一些经典C语言计算机二级和C语言期末考试题库 整理不易 xff0c 大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章 xff1a C语言计算机二级 C语言期末考试 刷题 xff08 一 xff09 C语言计算机二级
  • IDEA 2021/2022 修改启动画面及设置编辑器背景图片

    一 更换启动图片 1 xff09 进入IDEA 安装目录 找到 IntelliJ IDEA 2021 3 1 lib 文件夹 xff0c 找到 xff08 2021 xff09 platform impl jar xff08 2022 xf
  • C语言计算机二级/C语言期末考试 刷题(十四)指针专题

    收集了一些经典C语言计算机二级和C语言期末考试题库 整理不易 xff0c 大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章 xff1a C语言计算机二级 C语言期末考试 刷题 xff08 一 xff09 C语言计算机二级
  • 地理空间分析与建模课程设计--利用ArcGIS进行地统计分析,土地利用变化分析

    引言 ArcGIS地统计分析模块在地统计学与GIS之间架起了一座桥梁 xff0c 使得复杂的地统计方法可以在软件中轻易实现 xff0c 体现了以人为本 可视化发展的趋势 这种结合具有重要的开创性意义 xff0c 通过测定预测表面的统计误差
  • windows 安装 wsl 及 mate 桌面

    windows 安装 wsl 及 mate 桌面 步骤 1 安装 wsl 先打开 wsl 选项 打开终端执行指令 xff1a wsl list online span class token comment 查看可安装版本 span wsl
  • mysql 8.0设置密码 (doc命令)

    1 进入mysql内修改密码 alter user 名字 64 主机名 identified by 34 设置的新密码 34 xff1b 2 不进入mysql内进行修改密码 mysqladmin u用户名 p 旧密码 password 34
  • selenium获取某网站工作岗位信息(含火狐浏览器的驱动下载安装步骤)

    目录 一 说明 二 Firefox驱动下载并配置环境变量 2 1 下载火狐浏览器驱动 2 2 配置驱动环境变量 三 selenium概念 3 1 概念引入 3 2 一些函数 3 2 1 切换不同窗口 3 2 2 切换到不同iframe 3
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • 【VScode远程连接虚拟机(ubuntu)】

    VScode远程连接虚拟机 前言一 安装VScode二 安装中文插件三 安装其他远程连接插件1 C C 43 43 Extension Pack2 Live Preview3 Live Server4 Remote Development
  • (错误都已改正)AS608指纹+STM32串口通信录入或删除指纹

    目录 一 硬件使用分类 1 整体图展示 2 STM32F103RCT6单片机 3 AS608指纹模块 4 USB转TTL 二 软件设计 1 接线设计 2 程序设计 一 硬件使用分类 1 整体图展示 采用STM32F103RCT6作为主控制器
  • 基于Maix IDE的编程环境 K21O人脸识别+串口输出

    如果你想进行人脸识别首先要进行对K210的模型以及固件的配置 xff0c 在你去Maix官网去下载模型以及固件 目录 一 如何申请机械码 1 前往这个网站 xff0c 也就是Maix的官网 xff08 需要提前申请账号 xff09 2 要进
  • K210模型训练(物体分类)

    目录 一 打开Maix IDE 的官网找到需要训练模型的平台Maix Hub 模型训练的分类 xff1a 二 如何使用Maix Hub模型训练平台 数据集的采集 三 训练模型后的文件分类 一 打开Maix IDE 的官网找到需要训练模型的平
  • Openstack Swift 安装部署总结

    环境 硬件 这里只使用了一台服务器 xff0c 既作为Controller Node xff0c 也作为Storage Node 主机名IPOS磁盘文件系统sf dev10 202 127 4Centos 7 4 dev sdb dev s
  • 针对于esp8266-01的刷AT固件

    目录 1 esp8266 01的结构与引脚分布 1 1对应各引脚的功能分布 2 如何与USB转TTL接线进行刷固件 3 使用 FLASH Download Tool刷固件 3 1打开该文件 3 2按照此选项进行选择 3 3接着进行选择 3
  • 阿里云物联网平台如何进行云产品流转

    一 什么是云产品流转 简单来说就是如何将数据从这个设备发送到另一个设备中 二 如何在同一产品上的俩个设备之间进行数据转移 1 创建一个产品 xff0c 并添加两个设备 可以看到RP DPJ 与RP WX 都是属于RP WXX 产品上的俩个设
  • 本地包含与远程包含

    注意 xff1a 仅用于本人学习的笔记记录 xff0c 禁止进行传播分享 xff0c 一旦造成严重后果与本人无关 xff01 xff01 xff01 一 什么是文件包含漏洞 文件包含 xff1a 就是去其他的php文件读取源码来运行 xff
  • Linux下的shell

    NC反向shell 1 查看shell类型 echo SHELL chsh s 需要修改shell的类型 cat etc shells 查看存在哪些shell 然后反弹对应的shell xff08 正向连接 xff09 被控制端 nc lv
  • 单片机之步进电机驱动篇(一)

    步进电机的简介 xff1a 步进电机是一种将电脉冲转化为角位移的执行机构 当步进电机驱动器接收到一个脉冲信号 xff0c 它就驱动步进电机按设定的方向转动一个步距角 通过控制脉冲来控制角位移量 xff0c 也可以实现对电机的加减速和正反转的