当前位置:首页 > 单片机 > 单片机
[导读]转是转了,但是不是感觉有点不太对劲呢?太慢了?别急,咱们继续。根据本章开头讲解的原理,八拍模式时,步进电机转过一圈是需要64个节拍,而我们程序中是每个节拍持续 2 ms,那么转一圈就应该是 128 ms,即1秒钟转7

转是转了,但是不是感觉有点不太对劲呢?太慢了?别急,咱们继续。根据本章开头讲解的原理,八拍模式时,步进电机转过一圈是需要64个节拍,而我们程序中是每个节拍持续 2 ms,那么转一圈就应该是 128 ms,即1秒钟转7圈多,可怎么看上去它好像是7秒多才转了一圈呢?

那么,是时候来了解“永磁式减速步进电机”中这个“减速”的概念了。图9-7是这个 28BYJ-48 步进电机的拆解图,从图中可以看到,位于最中心的那个白色小齿轮才是步进电机的转子输出,64个节拍只是让这个小齿轮转了一圈,然后它带动那个浅蓝色的大齿轮,这就是一级减速。大家看一下右上方的白色齿轮的结构,除电机转子和最终输出轴外的3个传动齿轮都是这样的结构,由一层多齿和一层少齿构成,而每一个齿轮都用自己的少齿层去驱动下一个齿轮的多齿层,这样每2个齿轮都构成一级减速,一共就有了4级减速,那么总的减速比是多少呢?即转子要转多少圈最终输出轴才转一圈呢?

图9-7 步进电机内部齿轮示意图

回头看一下电机参数表中的减速比这个参数吧——1:64,转子转64圈,最终输出轴才会转一圈,也就是需要6464=4096个节拍输出轴才转过一圈,2 ms4096=8192 ms,8秒多才转一圈呢,是不是跟刚才的实验结果正好吻合了?4096个节拍转动一圈,那么一个节拍转动的角度——步进角度就是360/4096,看一下表中的步进角度参数5.625/64,算一下就知道这两个值是相等的,一切都已吻合了。

关于基本的控制原理本该到这里就全部结束了,但是,我们希望大家都能培养一种“实践是检验真理的唯一标准”的思维方式!回想一下,步进电机最大的特点是什么?精确控制转动量!那么我们是不是应该检验一下它到底是不是能精确呢?精确到什么程度呢?怎么来检验呢?让它转过90度,然后量一下准不准?也行,但是如果它只差了1度甚至不到1度,你能准确测量出来吗?在没有精密仪器的情况很难。我们还是让它多转几个整圈,看看它最后停下的位置还是不是原来的位置。对应的,我们把程序修改一下,以方便控制电机转过任意的圈数。

#includevoidTurnMotor(unsignedlongangle);voidmain(){TurnMotor(360*25);//360度*25,即25圈while(1);}/*软件延时函数,延时约2ms*/voiddelay(){unsignedinti=200;while(i--);}/*步进电机转动函数,angle-需转过的角度*/voidTurnMotor(unsignedlongangle){unsignedchartmp;//临时变量unsignedcharindex=0;//节拍输出索引unsignedlongbeats=0;//所需节拍总数//步进电机节拍对应的IO控制代码unsignedcharcodeBeatCode[8]={0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6};//计算需要的节拍总数,4096拍对应一圈beats=(angle*4096)/360;//判断beats不为0时执行循环,然后自减1while(beats--){tmp=P1;//用tmp把P1口当前值暂存tmp=tmp&0xF0;//用&操作清零低4位tmp=tmp"BeatCode[index];//用|操作把节拍代码写到低4位P1=tmp;//把低4位的节拍代码和高4位的原值送回P1index++;//节拍输出索引递增index=index&0x07;//用&操作实现到8归零delay();//延时2ms,即2ms执行一拍}P1=P1|0x0F;//关闭电机所有的相}

上述程序中,我们先编写了一个控制电机转过指定角度的函数,这个角度值由函数的形式参数给出,然后在主函数中就可以方便的通过更改调用时的实际参数来控制电机转过任意的角度了。我们用了36025,也就是25圈,当然你也可以随意改为其它的值,看看是什么结果。我们的程序会执行258=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 的实际减速比,可以得出转过一圈所需要节拍数是6463.684≈4076。那么就把上面程序中电机驱动函数里的4096改成4076再试一下吧。是不是看不出丝毫的误差了?但实际上误差还是存在的,因为上面的计算结果都是约等得出的,实际误差大约是0.000056,即万分之0.56,转一万圈才会差出半圈,已经可以忽略不计了。

那么厂家的参数为什么会有误差呢?难道厂家不知道吗?要解释这个问题,我们得回到实际应用中,步进电机最通常的目的是控制目标转过一定的角度,通常都是在360度以内的,而这个 28BYJ-48 最初的设计目的是用来控制空调的扇叶的,扇叶的活动范围是不会超过180度的,所以在这种应用场合下,厂商给出一个近似的整数减速比1:64已经足够精确了,这也是合情合理的。然而,正如我们的程序那样,我们不一定是要用它来驱动空调扇叶,我们可以让它转动很多圈来干别的,这个时候就需要更为精确的数据了,这也是我们希望同学们都能了解并掌握的,就是说我们要能自己“设计”系统并解决其中发现的问题,而不要被所谓的“现成的方案”限制住思路。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

一直以来,步进电机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来步进电机的相关介绍,详细内容请看下文。

关键字: 电机 步进电机

伺服电机是一种能够精确控制位置、速度和加速度的电动机。它通过内置的反馈系统,能够根据控制信号实时调整输出力矩和转速,从而实现精确的运动控制。伺服电机广泛应用于机械制造、自动化设备、机器人等领域。

关键字: 伺服电机 步进电机

反应式步进电机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对反应式步进电机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 电机 步进电机 反应式步进电机

一直以来,电机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来电机的相关介绍,详细内容请看下文。

关键字: 电机 感应电机 步进电机

伺服电机和步进电机在控制精度、低频特性、矩频特性、过载能力、编码器类型等方面存在显著差异。

关键字: 伺服电机 步进电机 编码器

直流减速电机是一种常见的电机类型,它由直流电机和减速器组成。这种电机通常具有较大的启动转矩和较低的转速,适用于需要大扭矩和低转速的场合。直流减速电机的结构包括电机本体、减速器、输出轴和外壳。其中,电机本体是驱动力源,通过...

关键字: 直流减速电机 步进电机

步进电机控制器是一种用于控制步进电机运行状态的设备。步进电机是一种将电脉冲信号转换为角位移的电机,每个脉冲信号都会使电机转动一个固定的角度。步进电机控制器通过控制电机的转速和转向,实现对电机运行状态的精确控制。

关键字: 步进电机 电机控制

控制器是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。它由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,是发布命令的“决策机构”,即协调和指挥...

关键字: 控制器 步进电机

电动机是一种将电能转换为机械能的设备,它利用通电线圈(也就是定子绕组)产生旋转磁场并作用于转子(如鼠笼式闭合铝框)形成磁电动力旋转扭矩。电动机主要由定子与转子组成,通电导线在磁场中受力运动的方向跟电流方向和磁感线(磁场方...

关键字: 步进电机 普通电机

步进电机是一种将电脉冲转化为角位移的执行机构。通俗来说,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过...

关键字: 步进电机 控制脉冲
关闭
关闭