搜索
首页运维安全如何实现28BYJ-48步进电机迁移转变精度及深化剖析

转是转了,然则不是觉得有点不太对劲呢?太慢了?别急,我们持续。依据本章扫尾解说的道理,八拍形式时,步进电机转过一圈是需求 64 个节奏,而我们程序中是每一个节奏继续 2ms,那么转一圈就应当是 128ms,即 1 秒钟转 7 圈多,可怎样看上去它仿佛是 7 秒多才转了一圈呢?
那么,是时分来理解“永磁式加速步进电机”中这个“加速”的概念了。图 9-7 是这个28BYJ-48 步进电机的拆解图,从图中可以看到,位于最中间的谁人白色小齿轮才是步进电机的转子输入,64 个节奏只是让这个小齿轮转了一圈,然后它带动谁人浅蓝色的大齿轮,这就是一级加速。人人看一下右上方的白色齿轮的构造,除电机转子和最终输入轴外的 3 个传动齿轮多是如许的构造,由一层多齿和一层少齿组成,而每个齿轮都用本人的少齿层去驱动下一个齿轮的多齿层,如许每 2 个齿轮都组成一级加速,一共就有了 4 级加速,那么总的加速比是若干呢?即转子要转若干圈最终输入轴才转一圈呢?

如何实现28BYJ-48步进电机迁移转变精度及深化剖析
图 9-7  步进电机外部齿轮表示图


回头看一下电机参数表中的加速比这个参数吧——1:64,转子转 64 圈,最终输入轴才会转一圈,也就是需求 64*64=4096 个节奏输入轴才转过一圈,2ms*4096=8192ms,8 秒多才转一圈呢,是不是跟方才的试验后果正好吻合了?4096 个节奏迁移转变一圈,那么一个节奏迁移转变的角度——步进角度就是 360/4096,看一下表中的步进角度参数 5.625/64,算一下就晓得这两个值是相等的,一切都已吻合了。
关于根本的掌握道理本该到这里就全体完毕了,然则,我们愿望人人都能培育一种“理论是磨练真谛的独一规范”的思想方法!回忆一下,步进电机最大的特色是什么?准确掌握迁移转变量!那么我们是不是应当磨练一下它究竟是不是能准确呢?准确到什么水平呢?怎样来磨练呢?让它转过 90 度,然后量一下准禁绝?也行,然则假如它只差了 1 度乃至不到 1 度,你能精确丈量出来吗?在没有精细仪器的状况很难。我们照样让它多转几个整圈,看看它最初停下的地位照样不是本来的地位。对应的,我们把程序修正一下,以便利掌握电机转过恣意的圈数。

			#include <reg52.h> void TurnMotor(unsigned long angle); void main(){ TurnMotor(360*25); //360 度*25,即 25 圈 while (1); } /* 软件延时函数,延时约 2ms */ void delay(){ unsigned int i = 200; while (i--); } /* 步进电机迁移转变函数,angle-需转过的角度 */ void TurnMotor(unsigned long angle){ unsigned char tmp; //暂时变量 unsigned char index = 0; //节奏输入索引 unsigned long beats = 0; //所需节奏总数 //步进电机节奏对应的 IO 掌握代码 unsigned char code BeatCode[8] = { 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 }; //盘算需求的节奏总数,4096 拍对应一圈 beats = (angle*4096) / 360; //判别 beats 不为 0 时履行轮回,然后自减 1 while (beats--){ tmp = P1; //用 tmp 把 P1 口以后值暂存 tmp = tmp & 0xF0; //用&操作清零低 4 位 tmp = tmp | BeatCode[index]; //用|操作把节奏代码写到低 4 位 P1 = tmp; //把低 4 位的节奏代码和高 4 位的原值送回 P1 index++; //节奏输入索引递增 index = index & 0x07; //用&操作完成到 8 归零 delay(); //延时 2ms,即 2ms 履行一拍 } P1 = P1 | 0x0F; //封闭电机一切的相 }

上述程序中,我们先编写了一个掌握电机转过指定角度的函数,这个角度值由函数的方式参数给出,然后在主函数中就可以便利的经过更改挪用时的实践参数来掌握电机转过恣意的角度了。我们用了 360*25,也就是 25 圈,当然你也可以随便改为其它的值,看看是什么后果。我们的程序会履行 25*8=200 秒的工夫,先记下输入轴的初始地位,然后上电并耐烦等它履行终了,看一下,是不是有误差?怎样回事,哪儿出成绩了,不是说能准确掌握迁移转变量吗?
这个成绩其实是出在了加速比上,再来看一下,厂家给出的加速比是 1:64,不论是哪个厂家消费的电机,只需型号是 28BYJ-48,其标称的加速比就多是 1:64。但实践上呢?经由我们的拆解盘算发现:真实精确的加速比并不是这个值 1:64,而是 1:63.684!得出这个数据的办法也很复杂,实践数一下每一个齿轮的齿数,然后将各级加速比相乘,就可以得出后果了,实测的加速比为(32/9)*(22/11)*(26/9)*(31/10)≈63.684,从而得出实践误差为 0.0049,即约为百分之 0.5,转 100 圈就会差出半圈,那么我们方才转了 25 圈,是不是就差了八分之一圈了,也就是 45 度,看一下方才的误差是 45 度吧。那么依照 1:63.684 的实践加速比,可以得出转过一圈所需求节奏数是 64*63.684≈4076。那么就把下面程序中电机驱动函数里的 4096 改成4076 再试一下吧。是不是看不出涓滴的误差了?但实践上误差照样存在的,由于下面的盘算后果多是约等得出的,实践误差大约是 0.000056,即万分之 0.56,转一万圈才会差出半圈,曾经可以疏忽不计了。

那么厂家的参数为什么会有误差呢?岂非厂家不晓得吗?要说明这个成绩,我们得回到实践使用中,步进电机最平日的目标是掌握目的转过必定的角度,平日多是在 360 度之内的,而这个 28BYJ-48 最后的设计目标是用来掌握空调的扇叶的,扇叶的运动规模是不会超越 180度的,所以在这种使用场所下,厂商给出一个近似的整数加速比 1:64 曾经足够准确了,这也是合情合理的。但是,正如我们的程序那样,我们纷歧定是要用它来驱动空调扇叶,我们可以让它迁移转变许多圈来干其余,这个时分就需求更为准确的数据了,这也是我们愿望同窗们都能理解并控制的,就是说我们要能本人“设计”零碎并处理个中发现的成绩,而不要被所谓的“现成的计划”限制住思绪。

以上是如何实现28BYJ-48步进电机迁移转变精度及深化剖析的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中