ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:361.43KB ,
资源ID:18605915      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18605915.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机步进电机控制DA转换.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机步进电机控制DA转换.docx

1、单片机步进电机控制DA转换指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学综合设计报告 设计题目:D/A转换器设计(实现三角波、正弦波)单位(二级学院): 学 生 姓 名: 专 业: 班 级: 学 号: 指 导 教 师: 设计时间: 年 12月重庆邮电大学制基于单片机的步进电机控制系统【摘要】: 步进电机是一种用于开环控制的驱动元件。本文阐述了步进电机的基本工作原理,提出了基于单片机控制和集成电路驱动的步进电机控制实现方法以及软硬件设计方法。本设计采用基于 A T 8 9 s 5 1 单片机为核心, 包括系统硬件设计和系统软件设计, 来实现对步进电机的控制。系统为一自动控制系统, 通过按

2、键向单片机输送控制信号, 控制步进电机的转速和正反转。采用 AT 8 9 s 5 1单片机指令系统进行编程来实现软件部分。硬件部分采用L297与L298驱动芯片混合来实现对二相步进电机的驱动。【关键词】: AT89S51 二相步进电机 L297 L298 1、步进电机的工作原理 步进电动机又称电脉冲马达,是伺服电动机的一种。步进电动机可按照输入的脉冲指令一步步地旋转,即可将输入的数字信号转换成相应的角位移。一次它实质上也是一种数模转换装置。由于步进电动机成本较低,易于采用计算机控制,因而被广泛应用于开环控制的伺服系统中。 下面以三相步进电机为例讨论步进电机的工作原理。图一、三相步进电机 三相反

3、应式步进电动机的工作原理如图所示,其中步进电动机的定子上有6个齿,其上分别缠有WA、WB、WC三相绕组,构成三对磁极,转子上则均匀分布着4个齿。步进电动机采用直流电源供电。当WA、WB、WC三相绕组轮流通电时,通过电磁力吸引步进电动机转子一步一步地旋转。 假设在初始状态时,A相通电,其他两相断电,在磁力作用下,转子的1、3两齿与磁极A对齐。 然后切断A相电源,同时接通B相,则由于电磁力作用,转子将逆时针转过30度,使靠近磁极B的2、4两齿与B对齐。 接着再切断B相电源,接通C相,转子又逆时针回转30度,使靠近磁极C的1、3两齿与C对齐。如果按上述通断电顺序(即ABCA)连续向各相绕组供电,则步

4、进电动机将按逆时针方向连续旋转。每通断电一次,步进电动机转过30度,称为一个步距角。如果改变各绕组的通断电顺序,如ACBA,步进电动机将按顺时针方向旋转。如果改变绕组的通断电频率,则可改变步进电机的转速。2、L297的工作原理介绍 L297是意大利SGS半导体公司生产的步进电机专用控制器,它能产生4相控制信号,可用于计算机控制的两相双极和四相单相步进电机,能够用单四拍、双四拍、四相八拍方式控制步进电机。芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。该集成电路采用了SGS公司的模拟/数字兼容的I2L技术,使用5V的电源电压,全部信号的连接都与TFL/CMOS或集电极开

5、路的晶体管兼容。L297的芯片引脚特别紧凑,采用双列直插20脚塑封封装,其引脚见图1,内部方框见图2。 (1)在图2所示的L297的内部方框图中。变换器是一个重要组成部分。变换器由一个三倍计算器加某些组合逻辑电路组成,产生一个基本的八格雷码(顺序如图3所示)。由变换器产生4个输出信号送给后面的输出逻辑部分,输出逻辑提供禁止和斩波器功能所需的相序。为了获得电动机良好的速度和转矩特性,相序信号是通过2个PWM斩波器控制电动波器包含有一个比较器、一个触发器和一个外部检测电阻,如图4所示,晶片内部的通用振荡器提供斩波频率脉冲。每个斩波器的触发器由振荡器的脉冲调节,当负载电流提高时检测电阻上的电压相对提

6、高,当电压达到Uref时(Uref是根据峰值负载电流而定的),将触发器重置,切断输出,直至第二个振荡脉冲到来、此线路的输出(即触发器Q输出)是一恒定速率的PWM信号,L297的CONTROL端的输入决定斩波器对相位线A,B,C,D或抑制线INH1和INH2起作用。CONTROL为高电平时,对A,B,C,D有抑制作用;为低电平时,则对抑制线INH1和INH2有抑制作用,从而可对电动机和转矩进行控制。图二、L297引脚图图三、L297内部方框电路图图四、L297变换器换出的八步雷格码(顺时针旋转)(2)L297各引脚功能说明1脚(SYNG)斩波器输出端。如多个297同步控制,所有的SYNC端都要连

7、在一起,共用一套振荡元件。如果使用外部时钟源,则时钟信号接到此引脚上。2脚(GND)接地端。3脚(HOME)集电极开路输出端。当L297在初始状态(ABCD=0101)时,此端有指示。当此引脚有效时,晶体管开路。4脚(A)A相驱动信号。5脚(INH1)控制A相和B相的驱动极。当此引脚为低电平时,A相、B相驱动控制被禁止;当线圈级断电时,双极性桥用这个信号使负载电源快速衰减。若CONTROL端输入是低电平时,用斩波器调节负载电流。6脚(B)B相驱动信号。7脚(C)C相驱动信号。8脚(INH2)控制C相和D相的驱动级。作用同INH1相同。9脚(D)D相驱动信号。10脚(ENABLE)L297的使能

8、输入端。当它为低电平时,INH1,INH2,A,B,C,D都为低电平。当系统被复位时用来阻止电机驱动。11脚(CONTROL)斩波器功能控制端。低电平时使INH1和INH2起作用,高电平时使A,B,C,D起作用。12脚(Vcc)+5V电源输入端。13脚(SENS2)C相、D相绕组电流检测电压反馈输入端。14脚(SENS1)A相、B相绕组电流检测电压反馈输入端。15脚(Vref )斩波器基准电压输入端。加到此引脚的电压决定绕组电流的峰值。16脚(OSC)斩波器频率输入端。一个RC网络接至此引角以决定斩波器频率,在多个L297同步工作时其中一个接到RC网络,其余的此引角接地,各个器件的脚 I (S

9、YNC)应连接到一起这样可杂波的引入问题如图5所示。17脚(CW/CCW)方向控制端。步进电机实际旋转方向由绕组的连接方法决定。当改变此引脚的电平状态时,步进电机反向旋转。18脚(CLOCK)步进时钟输入端。该引脚输入负脉冲时步进电机向前步进一个增量,该步进是在信号 的上升沿产生。19脚(HALF/FULL)半步、全步方式 选择端。此引脚输入高电平时为半步方式(四相八拍),低电平时为全步方式。如选择全步方式时变换器在奇数状态,会得到单相工作方式(单四拍)。 20脚(RESET)复位输入端。此引脚输入负脉冲时,变换器恢复初始状态(ABCD=0101)。 3、L298N芯片介绍 L298N 为SG

10、S-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相 和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准 TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号, 但在本驱动电路中用L297来提供时序信号,节省了单片机IO 端口的使用。L298N 之接脚如图9 所示,Pin1 和Pin15 可与电流侦测

11、用电阻连 接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。图五、L298引脚图4、步进电机控制系统的设计 图六、步进电机控制系统5、步进电机控制系统的具体设计 (1)步进电机控制系统的硬件设计A.单片机最小系统的设计 单片机最小系统的组成包括AT89S51单片机、控制键盘、单片机复位电路和液晶显示。键盘部分是有四个按键组成的控制键盘,分别控制的正转、反转、加速、减速功能。液晶的组要功能是显示步进电机的转速与状态。 原理图如下:图七、单片机最小系统B.步进电机驱动部分

12、的设计 步进电机的驱动部分包括L297与L298N驱动芯片共同组成的驱动模块对步进电机进行控制,步进电机驱动控制模块主要是通过单片机对L297的控制使得输出端A、B、C、D输出步进控制信号来对L298输入进行控制,使得L298的输出端的两相交替导通达到对步进电机的控制。图中的二极管主要作用是续流作用,防止电机突然停止产生电流对控制模块产生破坏,烧坏芯片。图八、步进电机驱动控制模块具体驱动步骤:a.通过A、B、控制OUT1与OUT2使得A相导通。b.通过C、D、控制OUT3与OUT4使得B相导通。c.A相与B相交替导通控制步进电机的转动。(2)步进电机控制系统的软件设计 总流程 图采用模块化结构

13、,在R A M建立各控制量的映射,方便各功能模块的编程和修改。分功能模块结构,可实现无扰动重入。软件模块按功能划分, 是以子程序的形式设计的,程序分别对各个功能进行调用,各个模块功能清晰明了。本次设计采用单极性直流电源供电,只要对步进电机的各相绕组按合适 的时序通电,就能使步进电机步进转动。按键子程序中包括按键扫描、按键去抖动、按键的键后处理。按键扫描采用单个按键的扫描,分别对不同功能的按键扫描并存放不同的按键标志。按键去抖动采用延时去抖法。根据按键扫描后的按键标志位结果来处理相应的子程序。键后处理采用键前沿,把键前沿后存放成触型按键, 把前次扫描到的存放成控制型按键。显示模块采用LCD的液晶

14、显示。 设计总结本设计以单片机AT89C52为控制核心,由单片机最小系统控制模块,液晶屏显示模块、步进电机驱动电路等部分组成。其中步进电机驱动模块采用L297与L298芯片,实现对步进电机的控制。利用软件编程,通过键盘控制和液晶显示实现了本设计的基本要求。设计结果通过仿真很好的实现了对步进电机的控制,包括对步进电机的正反转与加减速,LCD实现了对步进电机速度的显示。在进行硬件设计的时候采用手工还接制作电路板,要求工艺基本达到,但由于手工工艺的本身限制以及焊接水平的有限,使得电路板可能存在一些小问题,但不影响系统的功能实现。附件步进电机控制软件设计程序#include AT89X51.hint

15、delay();void inti_lcd();void show_lcd(int);void cmd_wr();void ShowState();void clock(unsigned int Delay ;void DoSpeed(); /计算速度/正转值#define RIGHT_RUN 1/反转值#define LEFT_RUN 0sbit RS=0xA0;sbit RW=0xA1;sbit E=0xA2;Char SpeedChar=SPEED(n/min):;char StateChar=RUN STATE:;char STATE_CW=CW;char STATE_CCW=CCW;

16、char SPEED3=050;unsigned int RunSpeed=50; /速度unsigned char RunState=RIGHT_RUN; /运行状态main()/*定时器设置*/ TMOD=0x66; /定时器0,1都为计数方式;方式2; EA=1; /开中断 TH0=0xff; /定时器0初值FFH; TL0=0xff; ET0=1; TR0=1; TH1=0xff; /定时器1初值FFH; TL1=0xff; ET1=1; TR1=1; IT0=1; /脉冲方式EX0=1;/开外部中断0:加速 IT1=1; /脉冲方式EX1=1;/开外部中断1:减速 inti_lcd(

17、); DoSpeed(); ShowState(); while(1) clock(RunSpeed); P0_1=P0_10x01; /定时器0中断程序:正转void t_0(void) interrupt 1RunState=RIGHT_RUN; P0_0=1; P1=0x01; cmd_wr(); ShowState(); /定时器1中断:反转void t_1(void) interrupt 3RunState=LEFT_RUN; P0_0=0; P1=0x01; cmd_wr(); ShowState(); /中断0:加速程序void SpeedUp() interrupt 0 if(

18、RunSpeed=12) RunSpeed=RunSpeed-2; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); /中断1:减速程序void SpeedDowm() interrupt 2 if(RunSpeed=100) RunSpeed=RunSpeed+2; DoSpeed(); P1=0x01; cmd_wr(); ShowState();int delay() /判断LCD是否忙 int a;start: RS=0; RW=1; E=0; for(a=0;a0;Delay-) for(i=0;i124;i+); void DoSpeed() SPEED0=(1000*6/RunSpeed/100)+48; SPEED1=1000*6/RunSpeed%100/10+48; SPEED2=1000*6/RunSpeed%10+48;LCD1602的显示流程图

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2