datasheet

单片机对仪表步进电机的细分控制

2016-10-09来源: eepw关键字:单片机  步进电机  细分控制
  仪表步进电机

  步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机某相线圈加一脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变得非常简单。虽然步进电机已被广泛地应用,但步进电机并不像普通的直流电机、交流电机那样在常规下使用。它必须在双环形脉冲信号、功率驱动电路等组成控制系统下使用。

  仪表步进电机属于步进电机中体积、功耗较小的类别,可以由单片机或专用芯片的引脚直接驱动,不需外接驱动器,因而在仪表中被用于指针的旋转控制。

  需求分析

  本方案中使用的仪表具有如下特点和设计参数:

  ●指针响应灵敏、走位准确,即收到驱动脉冲后不能丢步;

  ●指针转动平稳,即指针从当前位置到目标位置之间的走位要平稳,正、反转都不能出现抖动;

  ●两相、步距角10o、转动范围300o。

  根据技术参数可知,采用两相四拍和两相八拍时的步距角为10o和5o,在300o的范围内只能作30和60个刻度划分,在实际应用中,会发现指针步距角不能满足要求而且抖动不可避免。为了实现指针高精度的准确走位和平稳运转,要对步进电机步距进行高分辨率细分,这也是设计的难点所在。

  步进电机的细分技术是一种电子阻尼技术,其主要目的是提高电机的运转精度,实现步进电机步距角的高精度细分。其基本概念为:步进电机通过细分驱动器的驱动,其步距角变小了。如驱动器工作在10细分状态时,其步距角只为电机固有步距角的十分之一。以两相四拍为例:当电机工作在不细分的整步状态时,控制系统每发一个步进脉冲,电机转动10o;而用细分驱动器工作在10细分状态时,电机只转动了1o。细分功能完全是由驱动器或单片机靠精确控制电机的相电流所实现的,与电机本身无关。

  细分原理

  两相四拍A、B、/A、/B的驱动状态表如表1所示。

1.jpg 

  两相八拍A、B、/A、/B的驱动状态表如表2所示。

  从以上的分析可知,两相四拍是整步运转不细分,两相八拍其实是2细分。合成的磁场和电流矢量夹角以90o和45o的方式变化,如此往复循环。

  参考相关资料后不难发现:细分驱动技术常用近似正弦波的阶梯型电流代替矩形波电流,产生一个微步旋转磁场,从而带动电机以更小的步距角转动,其电流波形和旋转磁场矢量如图1所示。同时由于正弦波电流变化平滑,使电机运行更平稳、噪声更小。即通过改变相邻两相(A,B)电流的大小和方向(A相正弦波和B相余弦波矢量叠加),以改变合成磁场的夹角,通过电流矢量合成的方式来控制步进电机运转。

2.jpg 

  硬件设计和软件编程

  根据细分原理可知,对于两相步进电机,需要同时控制两组线圈的电压大小和方向才能达到合成电流矢量控制的目的,控制线圈的电流大小有两种方案:其一是通过单片机写入数字量,由数模转换器件输出模拟电压,控制线圈电流大小;其二是通过某些单片机自带的PWM引脚输出占空比可控的方波,用其交流有效值控制线圈电流大小。很显然,按照正弦规律变化的占空比决定了线圈电流大小也按照相同的正弦规律变化。线圈的电压施加方向可以通过逻辑门电路来实现。

  综上,选用具有两路16位精度PWM功能的ATMEGA48单片机,外围硬件电路设计如图2。

3.jpg 

  使用该单片机具有PWM功能的PB1和PB2连接PWM_A和PWM_B,使用两个普通引脚连接DIR_A和DIR_B即可实现对电机的控制。原理说明如下:电机的A、 /A、B、/B分别对应四输入与门电路的3、6、8、11引脚。在DIR_A和DIR_B为低电平时,门电路的1、9引脚为0状态,三极管Q3、Q4截止,门电路的4、12引脚由于上拉处于1状态,这样,与门电路的3、8输出为0,即A、B为0;此时与门电路的6、11输出与PWM_A和PWM_B保持一致,即/A、/B由PWM_A和PWM_B决定。在其他状态下,也具有同类特点:A和/A之间、B和/B之间的通电极性由DIR_A和DIR_B决定;A和/A之间、B和/B之间的电流大小由PWM_A和PWM_B的占空比决定。而且只要三极管Q3、Q4工作正常,与门电路就不会出现逻辑混乱的情况。

  配合硬件的设计,软件上编写了一个由64个数据组成的数组,分别对应了0~90o正弦波幅度变化的8位数字量化值(以阶梯波的方式模拟了64点正弦波抽样),每个值用来控制输出波形占空比,实际上参与了电流矢量夹角转动90o过程中其电流大小的计算。众所周知,正弦、余弦波相位相差90o,在已知0~90o正弦波幅度变化表后,同样可以得出90o~180o、180o~270o、270o~360o(0o)的正弦波、余弦波幅度变化表,所以通过 0~90o正弦波幅度变化的8位数字量化表的演化,就可以在两相八拍(二细分)的基础上把电流矢量夹角分成四个象限,配合极性的控制,在每个象限中把A或/A的正弦波和B或/B的余弦波作8种组合,在每种组合中完成电流大小的变化,最终作到两相64拍(16细分) 的控制。而且,最巧妙的一点就在于:通过选择64个数据对应每90o范围的正弦波的64个点,就可以用一个字节的大小来作为区分4个象限的标志,便于对正、余弦的角度进行演化,即0~63对应0~90o,64~127对应90o~180o,128~191对应180o~270o,192~255对应 270o~360o。

  两相64拍A、B、/A、/B的驱动状态表如表3(以B为起始状态)。

4.jpg 

  由于仪表指针从当前角指向目标角时,变化量会有不同。为保证指针响应灵敏、无抖动,必须在正、反转时考虑加、减速控制。程序中,可以根据变化量的大小和正负设定几个控制区间,分别写入不同的延时参数,根据此延时参数来控制电流大小、方向(改变PWM_A和PWM_B、DIR_A和DIR_B)变化时间,就达到了加、减速的控制的目的。

  结语

  通过双PWM方式控制两相步进电机,既达到了高精度细分的目的,又在硬件成本上得到了优化。在现有电路的后级增加功率驱动电路并作程序的少量修改,就可以做成高精度、多细分步进电机驱动器。

  参考文献:

  [1] Atmel Semiconductor. ATmega48 User`guide

  [2] 赵亮, 侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2004

  [3] 王辉堂, 颜自勇, 陈文芗. 基于带PWM 模块单片机的步进电机细分驱动控制技术[J], 理论与方法, 2007,26(3)

  [4] 陈子明.汽车车速里程表及其速比的计算方法[J].汽车电器, 2005(3):9-11

  [5] 刘清波,蔡树珍,孙业歧等. 基于单片机的汽车里程表设计[J]. 河北大学学报(自然科学版), 2002(9):276-278

关键字:单片机  步进电机  细分控制

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2016100930276.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVR 数码管编程
下一篇:基于可调式模拟激光脉冲的激光告警器在线检测仪

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F1系列单片机USB外设相关寄存器的定义

Keil MDK网站上下载的Keil.STM32F1xx_DFP.2.2.0.pack包中的stm32f10x.h头文件里面没有USB_TypeDef的定义,只有寄存器位的定义,是不完整的头文件。没有USB的数据结构就会给访问USB寄存器带来一定的困难。虽然可以参照STM32参考手册中的USB register map自己编写出USB_TypeDef结构体,但是这样比较麻烦。不过,STM32CubeMX工具生成的STM32F103工程中的头文件stm32f103xe.h中就有完整的USB数据结构,该头文件的版本是V4.2.0,日期为31-March-2017,作者仍然是Keil里面的MCD Application Team,这比Ke
发表于 2019-07-19

STM32开发笔记38: 单片机内部Flash的读写

单片机型号:STM32F070F6P6本文介绍应用C语言进行单片机内部Flash的读写技巧,将从查看文档开始,到最终完成完整的程序。单片机型号:STM32F070F6P6步骤如下:1、查看文档《STM32F030x4/x6/x8/xC and STM32F070x6/xB advanced ARM®-based 32-bit MCUs》确认其Flash的内部结构。2、查看文档确认STM32F070F6P6内部存储器地址分配。从下表中得到的主要信息是Main Flash memory的起始地址是0x08000000,长度是32KB,到0x08017FFF结束(结束值可不关心)。3、继续查看Main Flash memory的内部结构
发表于 2019-07-16
STM32开发笔记38: 单片机内部Flash的读写

模拟量数据的采集过程解析

单片机的ADC接口属于模数转换接口,将外部的模拟量信号转化为数字信号,单片机属于数字器件,需将模拟信号转化为数字信号才能够为单片机处理。目前市场的很多单片机都自带ADC转换接口,若无ADC转换接口,可以使用ADC数模转换芯片外扩。ADC模块是将模拟信号转化位数字信号,数字信号用0和1表示,ADC模块有参考电压,假设给的参考电压是5V,ADC是12位的(几位表示用二进制几位数存储模拟量转化后的数字量,12位的ADC则可储存数字量范围为:(二进制)000000000000~111111111111,转换为十进制数字范围为0~2^12即0~4095。也就是说把参考电压分为2^12份即4096份,最小分辨率为VREF/4096。也就是说
发表于 2019-07-13
模拟量数据的采集过程解析

单片机入门学习八 STM32单片机学习五 时钟系统

单片机学习除了了解该篇 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础 中的基础外,我们还需要有时钟的概念,本篇将记录 stm32的时钟系统。1、STM32时钟介绍 下面这幅图时stm32的时钟系统框图 1)蓝底框表示 时钟源,即: ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。(WDG看门狗 使用该时钟源) ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。(RTC
发表于 2019-07-12
单片机入门学习八 STM32单片机学习五 时钟系统

单片机入门学习十三 STM32单片机学习十 通用定时器

本篇重点记录的是STM32F1的通用定时器。 STM32F103ZE有8个定时器,其中2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5),2个基本定时器(TIM6、TIM7)。下表是对这8个定时器的详细描述。定时器种类 位数 计数器模式 产生DMA请求 捕获/比较通道 互补输出 特殊应用场景高级定时器(TIM1,TIM8) 16 向上、向下、向上/下 可以 4 有 带死区控制盒紧急刹车,可应用于PWM电机控制通用定时器(TIM2~TIM5) 16 向上、向下、向上/下 可以 4 无 通用。定时计数,PWM输出,输入捕获,输出比较基本定时器(TIM6,TIM7) 16 向上、向下
发表于 2019-07-12
单片机入门学习十三 STM32单片机学习十 通用定时器

51单片机与蓝牙模块连接

不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到模块是HC-06蓝牙模块,如下图:该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试验。总结
发表于 2019-07-11
51单片机与蓝牙模块连接

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved