单片机控制步进电机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、步进电机的工作原理是什么?
  • 二、连线图
  • 三、程序
    • 1.参考程序
    • 2.实际测试
  • 四、开发板
    • 1.原理图
    • 2.实际连接图
    • 3.参考程序
    • 4.测试
    • 5. 思考
  • 五、步距角
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

之前学习了单片机控制直流电机,下一步我们一起来学习如何控制步进电机


提示:以下是本篇文章正文内容,下面案例可供参考

一、步进电机的工作原理是什么?

电机怎么控制转多少度!原理最容易理解的电机!步进电机的工作原理!

https://www.bilibili.com/video/BV1cN4y197TG/?spm_id_from=333.337.search-card.all.click

常用驱动器

一分钟学会控制步进电机

https://www.bilibili.com/video/BV11h4y1V7vK/?spm_id_from=333.337.search-card.all.click

51单片机控制步进电机输出一定的角度、转速和转向(可提供源代码)

https://www.bilibili.com/video/BV1Dq4y1E7Xj/?spm_id_from=333.337.search-card.all.click

在这里插入图片描述
ABCD A-AB-B-BC-C-CD-D-DA-A 有字母就是1 否则是0
1000 1100 0100 0110 0010 0011 0001 1001
0x80 0xc0 0x40 0x06 0x02 0x03 0x01 0x09
在这里插入图片描述

双四拍,一次给两个1: ABCD 1001 1100 0110 0011 ->1001
单四拍,一次只给一个1:ABCD 1000 0100 0010 0001 ->1000
单双八拍, 1001 1000 1100 0100 0110 0010 0011 0001 ->1001
根据我们看到步进电机的原理,电池很忙,才能让步进电机按照顺序转起来

从左往右给脉冲正转, 从右往左就是反转。

在这里插入图片描述

在这里插入图片描述

ULN2003绿色板资料下载链接:https://pan.baidu.com/s/1EqgUEpMWoq91wRWK6gaang
提取码:8888

ULN2003蓝色板资料下载链接:https://pan.baidu.com/s/1r9JF2EX3bA3JRBuEZfW5Gg
提取码:8888

二、连线图

在这里插入图片描述

在这里插入图片描述

三、程序

1.参考程序

代码如下(示例):


unsigned char ta[4]={0x01,0x02,0x04,0x08};void delay(unsigned char ms)
{//for(x=0;x<ms;x++){for(y=0;y<100;y++);}
}
void main()
{while(1){for(i=0;i<4;i++)//正转{P1=ta[i];delay(1);}for(i=0;i<4;i++)//反转{P1=ta[3-i];delay(1);}}}

2.实际测试

四、开发板

1.原理图

在这里插入图片描述

2.实际连接图

在这里插入图片描述

在这里插入图片描述

3.参考程序


#include <reg51.h>unsigned char ta[4]={0x01,0x02,0x04,0x08};void delay(unsigned char ms)
{//unsigned char x,y;for(x=0;x<ms;x++){for(y=0;y<100;y++);}
}
void main()
{unsigned char i;while(1){for(i=0;i<4;i++)//正转   一直再转{P1=ta[i];delay(10);}
//		for(i=0;i<4;i++)//反转
//		{
//					P1=ta[3-i];
//					delay(10);
//		}}}

4.测试

在这里插入图片描述

5. 思考

1.控制步进电机转速
2.控制步进电机方向
3. 控制步进电机转动指定角度

加入按键?

按键1 :控制正反
按键2: 速度
按键3:角度 90度

程序框架


#include <reg51.h>unsigned char ta[4]={0x01,0x02,0x04,0x08};void delay(unsigned char ms)
{//unsigned char x,y;for(x=0;x<ms;x++){for(y=0;y<100;y++);}
}void zhengzhuan()
{for(i=0;i<4;i++)//正转   一直再转{P1=ta[i];delay(10);}
}
void fanzhuan()
{for(i=0;i<4;i++)//反转{P1=ta[3-i];delay(10);}
}
void main()
{unsigned char i;while(1){if(key1==0){zhengzhuan();}else{fanzhuan();	//  num}if(key2==0){//num}if(key3==0)  //转动90度{zhengzhuan(90,);}}}

五、步距角

在这里插入图片描述
步距角: 5.625度
转360度: 360/5.625=64 , 64一圈
由于有减速箱:1/64
所以实际想要转一圈需要 : 64*64=4096个脉冲
在这里插入图片描述

在这里插入图片描述

实际计算:根据八拍来运行

步距角: 5.625度
转360度: 360/5.625=64 , 64一圈
由于有减速箱:1/32 (实际算得减速比是32)
所以实际想要转一圈需要 : 32*64=2048个脉冲

参考程序:

#include <reg51.h>/*
ABCD   A-B-C-D  
1000 0100 0010 0001  
0X80 0X40 0X20 0X01
*/
unsigned char ta[4]={0x01,0x02,0x04,0x08};  //  5.625*2=11.25unsigned char ta8[8]={0x80,0xc0,0x40,0x06,0x02,0x03,0x01,0x09};  //5.625
/*
ABCD     A-AB-B-BC-C-CD-D-DA-A      有字母就是1 否则是0 
1000 1100 0100 0110 0010 0011 0001 1001
0x80  0xc0  0x40  0x06  0x02  0x03 0x01 0x09*/
void delay(unsigned char ms)
{//unsigned char x,y;for(x=0;x<ms;x++){for(y=0;y<100;y++);}
}
void main()
{unsigned int i,j;
// 转一圈	for(j=0;j<256;j++)  //5.625   360/5.625=64   64*32=2048   2048/8=256 	{for(i=0;i<8;i++)//正转{P1=ta8[i];delay(5);}}while(1){}}

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266062.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭乘“低代码”快车,引领食品行业数字化转型全新升级

数字化技术作为重塑传统行业重要的力量&#xff0c;正以不可逆转的趋势改变着企业经营与客户消费的方式。 在近些年的企业数字化服务与交流过程中&#xff0c;织信团队切实感受到大多数企业经营者们从怀疑到犹豫再到焦虑最终转为坚定的态度转变。 在这场数字化转型的竞赛中&a…

Linux网络——高级IO

目录 一.五种IO模型 1.阻塞式IO 2.非阻塞式IO 3.信号驱动IO 4.多路转接IO&#xff1a; 5.异步IO 二.同步通信 vs 异步通信 三.设置非阻塞IO 1.阻塞 vs 非阻塞 2.非阻塞IO 3.实现函数SetNoBlock 四.I/O多路转接之select 1.初识select 2.select函数原型 3.socket就绪…

第 9 部分 — 内存增强 Transformer 网络:数学见解

一、说明 在顺序数据处理领域&#xff0c;传统的 Transformer 架构擅长处理短期依赖性&#xff0c;但在需要大量内存和长序列上下文保留的任务中表现不佳。在这篇综合博客中&#xff0c;我打算探索一种新颖的混合方法&#xff0c;将 Transformer 与显式长期记忆模块集成在一起。…

AX和A(T)X的区别是?

目录 1.快速了解的例子&#xff1a; &#xff08;1&#xff09;假设所有节点的初始特征都是[1, 0, 0] &#xff0c;那么AX的结果是&#xff1a; &#xff08;2&#xff09; 的结果是&#xff1a; (3) 总结&#xff1a; 2.计算结构系数的例子 &#xff08;1&#xff09…

Vue学习计划-Vue2--VueCLi(三)ref属性、mixins混入、插件、scoped样式

1. ref属性 被用来给元素或子组件注册引用信息&#xff08;id的替代者&#xff09;应用在html标签上获取的是真实DOM元素&#xff0c;应用在组件标签上是组件实例对象&#xff08;VC&#xff08;VueComponent&#xff09;&#xff09;使用方式&#xff1a; 打标识<h1 ref&q…

安装Anconda时出现Failed to extract packages的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 在win7安装Anconda的时候&#xff0c;出现Failed to extract packages 截图如下所示&#xff1a; 2. 原理分析 该版本过于新&#xff0c;无法兼容win7系统&#xff0c;要么更换系统 要么将anconda版本降低即可 3. 解决…

Axure简单安装与入门

目录 一.Axure简介 二.应用场景 三.安装与汉化 3.1.安装 3.2.汉化 四. 入门 4.1.复制、剪切及粘贴区域 4.2.选择模式 4.3. 插入形状 4.4.预览、共享 感谢大家观看&#xff01;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.Axure简介 Axure RP是一款专业的原型…

十五、机器学习进阶知识:K-Means聚类算法

文章目录 1、聚类概述2、K-Means聚类算法原理3、K-Means聚类实现3.1 基于SKlearn实现K-Means聚类3.2 自编写方式实现K-Means聚类 4、算法不足与解决思路4.1 存在的问题4.2 常见K值确定方法4.3 算法评估优化思路 1、聚类概述 聚类&#xff08;Clustering&#xff09;是指将不同…

跟着我学Python基础篇:06.列表

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 目录 往期文章1. 列表的基本…

人机交互——自然语言理解

人机交互中的自然语言理解是人机交互的核心&#xff0c;它是指用自然语言&#xff08;例如中文、英文等&#xff09;进行交流&#xff0c;使计算机能理解和运用人类社会的自然语言&#xff0c;实现人机之间的自然语言通信。 自然语言理解在人工智能领域中有着非常重要的地位&a…

docker的资源控制:

docker的资源控制&#xff1a; 对容器的使用宿主机的资源进行限制 cpu 内存 磁盘i/0 docker使用linux自带的功能cgroup control grouos是linux内核系统提供的一种可以限制&#xff0c;记录&#xff0c;隔离进程所使用的物理资源 control grouos是linux内核系统提供的一种可…

PyQt6 QDateEdit日期控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计39条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…