当前位置: 首页 > 成功案例

51单片机入门——步进电机

发布时间: 2024-11-14 发布人:成功案例

 

  电机的分类方式有很多,从用途角度可划分为驱动类电机和控制类电机。直流电机属于驱动类电机,这种电机是将电能转换成机械能,主要使用在在电钻、小车轮子、电风扇、洗衣机等设备上。步进电机属于控制类电机,它是将脉冲信号转换成一个转动角度的电机,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,主要使用在在自动化仪表、机器人、自动生产流水线、空调扇叶转动等设备。

  反应式步进电机:结构相对比较简单成本低,但是动态性能差、效率低、发热大、可靠性很难保证,所以现在基本已经被淘汰了。

  永磁式步进电机:动态性能好、输出力矩较大,但误差相对来说大一些,因其价格低而大范围的应用于消费性产品。

  混合式步进电机:综合了反应式和永磁式的优点,力矩大、动态性能好、步距角小,精度高,但是结构相对来说复杂,价格也相对高,主要使用在于工业。

  我们先来解释“4 相永磁式”的概念,28BYJ-48 的内部结构示意如图所示。先看里圈,它上面有 6 个齿,分别标注为 0~5,这个叫做转子,顾名思义,它是要转动的,转子的每个齿上都带有永久的磁性,是一块永磁体,这就是“永磁式”的概念。再看外圈,这个就是定子,它是保持不动的,实际上它是跟电机的外壳固定在一起的,它上面有 8 个齿,而每个齿上都缠上了一个线 个齿上的绕组又是串联在一起的,也就是说正对着的2 个绕组总是会同时导通或关断的,如此就形成了 4 相,在图中分别标注为 A-B-C-D,这就是“4 相”的概念。

  假定电机的起始状态就如上图所示,逆时针方向转动,起始时是 B 相绕组的开关闭合,B 相绕组导通,那么导通电流就会在正上和正下两个定子齿上产生磁性,这两个定子齿上的磁性就会对转子上的 0 和 3 号齿产生最强的吸引力,就会如图所示的那样,转子的 0 号齿在正上、3 号齿在正下而处于平衡状态;此时我们会发现,转子的 1 号齿与右上的定子齿也就是 C 相的一个绕组呈现一个很小的夹角,2 号齿与右边的定子齿也就是 D 相绕组呈现一个稍微大一点的夹角,很明显这个夹角是 1 号齿和 C 绕组夹角的 2 倍,同理,左侧的情况也是一样的。

  接下来,我们把 B 相绕组断开,而使 C 相绕组导通,那么很明显,右上的定子齿将对转子 1 号齿产生最大的吸引力,而左下的定子齿将对转子 4 号齿,产生最大的吸引力,在这个吸引力的作用下,转子 1、4 号齿将对齐到右上和左下的定子齿上而保持平衡,如此,转子就转过了起始状态时 1 号齿和 C 相绕组那个夹角的角度。再接下来,断开 C 相绕组,导通 D 相绕组,过程与上述的情况完全相同,最终将使转子2、5 号齿与定子 D 相绕组对齐,转子又转过了上述同样的角度。

  那么很明显,当 A 相绕组再次导通,即完成一个 B-C-D-A 的四节拍操作后,转子的 0、 3 号齿将由原来的对齐到下 2 个定子齿,而变为了对齐到左上和右下的两个定子齿上,即转子转过了一个定子齿的角度。依此类推,再来一个四节拍,转子就将再转过一个齿的角度,8 个四节拍以后转子将转过完整的一圈,而其中单个节拍使转子转过的角度就很容易计算出来了,即 360 度/(8*4)=11.25 度,这个值就叫做步进角度。而上述这种工作模式就是步进电机的单四拍模式——单相绕组通电四节拍。

  我们再来讲解一种具有更优性能的工作模式,那就是在单四拍的每两个节拍之间再插入一个双绕组导通的中间节拍,组成八拍模式。比如,在从 B 相导通到 C 项导通的过程中,假如一个 B 相和 C 相同时导通的节拍,这样一个时间段,由于 B、C 两个绕组的定子齿对它们附近的转子齿同时产生相同的吸引力,这将导致这两个转子齿的中心线对比到 B、C 两个绕组的中心线上,也就是新插入的这个节拍使转子转过了上述单四拍模式中步进角度的一半,即 5.625度。这样一来,就使转动精度增加了一倍,而转子转动一圈则需要 8*8=64 拍了。另外,新增加的这个中间节拍,还会在原来单四拍的两个节拍引力之间又加了一把引力,从而能够大大增加电机的整体扭力输出,使电机更“有劲”了。

  除了上述的单四拍和八拍的工作模式外,还有一个双四拍的工作模式——双绕组通电四节拍。实际上的意思就是把八拍模式中的两个绕组同时通电的那四拍单独拿出来,而舍弃掉单绕组通电的那四拍而已。其步进角度同单四拍是一样的,但由于它是两个绕组同时导通,所以扭矩会比单四拍模式大,在此就不做过多解释了。八拍模式是这类 4 相步进电机的最佳工作模式,能最大限度的发挥电机的各项性能,也是绝大多数实际工程中所选择的模式,因此我们就重点来讲解如何用单片机程序来控制电机按八拍模式工作。

  再重新看一下上面的步进电机外观图和内部结构图:步进电机一共有 5 根引线,其中红色的是公共端,连接到 5V 电源,接下来的橙、黄、粉、蓝就对应了 A、B、C、D 相;那么如果要导通 A 相绕组,就只需将橙色线接地即可,B 相则黄色接地,依此类推;再根据上述单四拍和八拍工作过程的讲解,能得出下面的绕组控制顺序表,如下表所示:

  表中给出的参数是≥550,单位是 P.P.S,即每秒脉冲数,这里的意思就是说:电机保证在你每秒给出 550 个步进脉冲的情况下,可以正常启动。那么换算成单节拍维持的时间就是s/550=1.8ms,为了让电机能够启动,我们控制节拍刷新时间大于 1.8ms 就可以了。有了这个参数,我们就可以动手写出最简单的电机转动程序了,如下:

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

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

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

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

  上述程序中,我们先编写了一个控制电机转过指定角度的函数,这个方面值由函数的形式参数给出,然后在主函数中就可以方便的通过更改调用时的实际参数来控制电机转过任意的角度了。我们用了 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 已经足够精确了,这也是合情合理的。然而,正如我们的程序那样,我们并不全是要用它来驱动空调扇叶,我们大家可以让它转动很多圈来干别的,这样一个时间段就需要更为精确的数据了,这也是我们大家都希望同学们都能了解并掌握的,就是说我们要能自己“设计”系统并解决其中发现的问题,而不要被所谓的“现成的方案”限制住思路。

  解决了精度问题,让我们再次回到我们的电机控制程序上吧。上面给出的两个例程都不是实用的程序,为什么?因为程序中存在大段的延时,而在延时的时候是什么其它的事都干不了的,想想第二个程序,整整 200 秒什么别的事都干不了,这在实际的控制管理系统中绝对不允许的。那么怎么改造一下呢?当然还是用定时中断来完成了,既然每个节拍持续间是2ms,那我们直接用定时器定时 2ms 来刷新节拍就行了。改造后的程序如下:

  程序还是最简单的,电机转动的启动函数 StartMotor 只负责计算一个需要的总节拍数beats,然后在中断函数内检测这个变量,不为 0 时就执行节拍操作,同时将其减 1,直到减到 0 为止。

  这里,我们要特别说明一下的是 StartMotor 函数中对 EA 的两次操作。我们大家可以看到对beats 的赋值计算语句是夹在 EA=0;EA=1;这两行语句中间的,也就是说这行赋值计算语句在执行前先关闭了中断,而等它执行完后,才又重新打开了中断。在它执行过程中单片机是不会响应中断的,即中断函数 InterruptTimer0 不会被执行,即使这时候定时器溢出了,中断发生了,也只能等待 EA 重新置 1 后,才能得到响应,中断函数InterruptTimer0 才会被执行。那么为何需要这么做呢?

  我们来想一下:在本书开始我们就曾提到,我们所使用的STC89C52 单片机是 8 位单片机,这个 8 位的概念就是说单片机操作数据时都是按 8 位即按1 个字节进行的,那么要操作多个字节(不论是读还是写)就必须分多次进行了。而我们程序中定义的 beats 这个变量是 unsigned long 型,它要占用 4 个字节,那么对它的赋值最少也要分 4 次才能完成了。我们想象一下,假如在完成了其中第一个字节的赋值后,恰好中断发生了,InterruptTimer0 函数得到执行,而这个函数内可能会对 beats 进行减 1 的操作,减法就有可能发生借位,借位就会改变其它的字节,但因为此时其它的字节还没有被赋入新值,于是错误就会发生了,减 1 所得到的结果就不是预期的值了!所以要避免这种错误的发生就得先暂时关闭中断,等赋值完成后再打开中断。而如果个人会使用的是 char 或 bit 型变量的话,因为它们都是在 CPU 的一次操作中就完成的,所以即使不关中断,也不可能会发生错误。问题分析清楚了,如何取舍还得根据真实的情况来,遇上这类问题的时候多多考虑考虑吧。关键字:引用地址:51单片机入门——步进电机

  电子设备可以分成两类:模拟设备和数字设备。模拟设备适用于连续变化的电压,数字设备则适用于表示电压采样点的离散的二进制数字。示波器可以按类似的方式来进行分类,分成模拟示波器和数字示波器,而数字示波器可以分成数字存储示波器(DSOs)、数字荧光示波器(DPOs)、混合信号示波器(MSOs)和数字采样示波器。 DSO:一般没有实时辉度等级,因此,它们不能表示实时信号中变化的辉度。DSO很适合重复率低的应用或单次高速多通道设计应用。 DPO:忠实地仿真模拟示波器的最佳显示属性,用三个维度显示信号:时间、幅度和幅度在时间上的分布,而且所有信息都是实时显示的。DPO扫清了模拟示波器技术与数字示波器技术之间的障碍。它们同样适用于观察高频

  具体实现功能 系统由STC89C52单片机+LCD1602液晶显示屏+ADC0832模块+蜂鸣器+DHT11温湿度传感器 +GP2Y1010AUOF粉尘传感器+LED+按键构成。 具体功能: 1、LCD1602液晶第一行显示当前的PM2.5值,第二行显示当前的温度和湿度值; 2、可设为PM2.5、温湿度上下限报警值。共4个按键:复位按键、减键、加键、设置键;设定的参数具有掉电保存,保存在STC单片机的内部,上电不需要重新设置; 3、当粉尘浓度值高于设定的报警值或温度湿度超出上下限范围,蜂鸣器和指示灯会发出声光报警; 4、当温湿度值低于或高于设定的范围时,相应的指示灯亮,蜂鸣器报警。 设计背景 环境的监测与控

  的PM2.5和温湿度检测报警 /

  索尼在MWC上一下子发布了四款产品,包括Xperia XZ Premium、XZs这样的实力派,也包括XA1、XA1 Ultra这样的中端精品,覆盖了旗下的中高端产品线。日前索尼再次发力,推出了针对入门级市场的新机Xperia L1。尽管该机的配置有限,但整体延续了索尼的传统设计,合一的理念完美体现,绝对是入门机中的高颜值代表,索粉充值不? 聚焦于Xperia L1的设计,依旧是浓烈的日系味道,硬朗的边角、极窄的边框以及喜人的色彩,正面顶部的索尼logo以及背部的Xperia logo证明其纯正的血统,体现出不俗的工业设计底蕴。 配置上,考虑到Xperia L1的定位,其配置并无过多亮点,采用5.5英寸720P显示屏,

  步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。经过控制脉冲个数即可以控制角位移量,进而达到准确定位的目的;同时经过控制脉冲频率来控制电机转动的速度和加速度,进而达到调速的目的。 一、步进电机常识 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相

  /*----------------------------------------------- 功能: 连接串口到电脑,下载该程序,打开电源 打开串口调试助手,将波特率设置为2400,无奇偶校验 晶振12MHz,发送和接收使用的格式相同,如都使用 字符型格式,设置正确后接受框可以显示出: The UART test, 请在发送区输入信息 ------------------------------------------------*/ #include reg52.h //包含头文件,正常的情况不需要改动,头文件包含特殊功能寄存器的定义

  在计算机中,为便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。正常的情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。参见后面的时序图。

  的机器周期解析 /

  STM32的每个I/O口都由7个寄存器控制:2个32位端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位复位寄存器BSRR;1个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;最常用的有4个:CRL/CRH/IDR/ODR;因此通常情况下只需要配置好以上四个寄存器就可以了。而CRH和CRL作用是完全一样的,只不过CRH控制的是高8位的IO而CRL控制的是低8位的,因此IO的控制就显的比较简单了。 (1)使能IO时钟 老规矩,用到哪个IO使能哪组IO时钟。例:RCC- APB2ENR=1 2; // 使能PORTA时钟 (2)配置IO输入/输出模式 STM32的输入输

  在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,除此以外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这一些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下: 符号 地址 功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B

  从零起步学电子 第2版 :(业余无线电丛书) ((美)班茨哈夫 (Banzhaf,W.)著)

  东芝1200V SIC SBD “TRSxxx120Hx系列” 助力工业电源设备高效

  2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中

  Follow me第二季第4期来啦!与得捷一起解锁蓝牙/Wi-Fi板【Arduino Nano RP2040 Connect】超能力!

  嵌入式工程师AI挑战营(进阶):基于RV1106部署InsightFace算法,实现多人的实时人脸识别

  【下载】LAT1439 关于STM32H745的MC SDK电机控制工程问题的解决办法

  【下载】LAT1446 TrustZone应用中串口通信的DMA传输失败问题

  【直播】实时数据革命:在STM32设备中融合现代ITTIA实时数据库技术

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】STM32H7R/S 基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【视频】STM32新增安卓支持 — OpenSTDROID,开启MPU应用新格局

  对于MCU来说,跑AI也是非常重点的应用之一。前两天,就连实时控制派系的MCU TI C2000都开始搭载NPU和64位化。可见,MCU正在加速向AI进化。...

  1 引言在嵌入式开发中,我们大家常常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则要重新写,重新调,重新去学 ...

  在GD32MCU系统中,LXTAL低频晶振一般选择32768Hz无源晶体,该晶体内部一般为50K欧姆左右,比较大,相较于高频晶振不太容易起振,所以经常会 ...

  1方案介绍这个门控系统方案是使用常见的 MIFARE 卡,使用上只判断卡片上的 ID 而不写入任何资料,板上记录了 8 组卡片 ID,当已注册 ...

  大家在调试GD32MCU的时候是否也碰到过SWD调试端口无法连接的情况?SWD端口无法连接的原因有很多,有时候排查没有思路,可能会耽误大家的时 ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

最新资讯

扫码获取最新资讯

版权所有:欧宝网站多少,欧宝平台官网手机版下载地址 豫ICP备2021008316号-1 技术支持:网站地图