步进电机课程设计_第1页
步进电机课程设计_第2页
步进电机课程设计_第3页
步进电机课程设计_第4页
步进电机课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单 片 机 课 程 设 计中文题目: 步进电机控制系统英文题目: Stepper motor control system姓 名学 号专业班级指导教师提交日期 教务处制惠州学院HUIZHOU UNIVERSITY1、 目的和意义设计一个由单片机控制的步进电机调速系统,操作者可通过系统的按钮控制步进电动机的旋转速度和方向,正反转均可在 1-15 档改变,本设计通过按钮来调节,先从 1 档开始,按一次加一档,直至 15 档,然后,按一次减一档,直至 1 档,如此循环,并通过 1602 液晶显示出来。本次设计圈数也可调,在 1-20 圈改变,也通过 1602 液晶显示。2、 步进电机概述2.1 步进电机的特点 1 ) 一般步进电机的精度为步进角的 3-5% ,且不累积。2 ) 步进电机外表允许的温度高。步进电机温度过高首先会使电机的磁性材料退磁 , 从而导致力矩下降乃至于失步 , 因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏 130 度以上,有的甚至高达摄氏 200 度以上 , 所以步进电机外表温度在摄氏 80-90 度完全正常。3 )步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。4 ) 步进电机低速时可以正常运转 , 但若高于一定速度就无法启动 , 并伴有啸叫声 。步进电机有一个技术参数 : 空载启动频率 , 即步进电机在空载情况下能够正常启动的脉冲频率 , 如果脉冲频率高于该值 , 电机不能正常启动 , 可能发生丢步或堵转 。 在有负载的情况下 , 启动频率应更低 。 如果要使电机达到高速转动 , 脉冲频率应该有加速过程 , 即启动频率较低 , 然后按一定加速度升到所希望的高频(电机转速从低速升到高速) 。2.2 步进电机的工作原理步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比 , 每一个脉冲信号可使步进电机旋转一个固定的角度 . 脉冲的数量决定了旋转的总角度 , 脉冲的频率决定了电机运转的速度 . 当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转 动一个固定的角度 ( 称为 “ 步距角 ” ),它的旋转是以固定的角度一步一步运行的。可以 通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次课程设计选用的步进电机是 28BYJ-48 型号的步进电机。B-步进电机,Y-永磁型。48-是四相八拍步进电机。3、方案的论证3 .1 控制方式的确定步进电机控制虽然是一个比较精确的,步进电机开环控制系统具有成本低 、简单 、 控制方便等优点,在采用单片机的步进电机开环系统中,控制系统送控制字的间隔和送控制字的顺序 实际上就是控制步进电机的运行速度。系统可用两种办法实现步进电机的速度控制。一种是延时,一种是定时。延时方法是在每次按键之后调用一个延时子程序,待延时结束后再次送控制字,这样周而复始就可发出一定频率的 CP 脉冲。该方法简单,占用资源少,全部由软件实现,调用不同的子程序可以实现不同速度和不同方向的运行。但占用 CPU 时间长,不能在运行时处理其他工作。因此只适合较简单的控制过程。定时方法是利用单片机系统中的定时器定时功能产生任意周期的定时信号,从而可方便的控制系统输出 CP 脉冲的周期。当定时器启动后,定时器从装载的初值开始对系统及其周期进行加计数,当定时器溢出时,定时器产生中断,系统转去执行定时中断子程序将电机换向子程序放在定时中断服务程序中,定时中断一次,电机换向一次,从而实现电机的速度控制。3.1 .1 脉冲序列的生成脉冲幅值:由数字元件电平决定。TTL 0 5VCMOS 0 10V接通和断开时间可用延时的办法控制。要求:确保步进到位。3 . 1 .2 方向控制步进电机旋转方向与内部绕组的通电顺序相关。 四相八拍,通电顺序为:正转 : A AB B BC C C D D DA反转 : A A D D DC C C B B BA改变通电顺序可以改变步进电机的转向3. 2 脉冲分配实现脉冲分配(也就是通电换相控制)的方法有两种:软件法和硬件法。本次设计采用软件法。软件法是完全用软件的方式,按照给定的通电换相顺序,通过单片机的 IO 向驱动电路发出控制脉冲,下面以四相八拍为例。正序为 A-AB-B-BC-C-C D - D-DA- A, ,反序为 A-A D - D - DC - C - CB - B-BA-AP 3 .0 : A 相驱动P 3 .1 : B 相驱动P 3 .2 : C 相驱动P 3.3 : D 相驱动三相六拍控制字如下表所示:注: 0 代表使绕组断电, 1 代表使绕组通电在程序中,只要依次将这 8 个控制字送到 P 2 口,步进电机就会转动一个齿距角,每送一个控制字,就完成一拍,步进电机转过一个步距角。3. 3 驱动方式的确定用 于步进电机的驱动一般有两种方法,一种是通过 CPU 直接来驱动,这种方法一般不宜采用 , 因为 CPU 的输出电流脉冲是特别小的它不能足以让步进电机的转动;别一种是通过 CPU 来间接驱动,就是把从 CPU 输出的信号进行放大 , 然后直接驱动或是再通过光电隔离间接来驱动步进电机,这种方法比较安全可靠 。固本次设计应采用 CPU 间接驱动步进电机。3. 4 基本方案的确定因本次设计的要求,选用四相八拍步进电机,单片机选用 89C51 作为控制器,选取用LCD1602 以显示电机转速,选用 ULN2003A 作为步进电机的驱动芯片。系统原理框图如下所示:AT89C51LCD1602ULN2003A 四相步进电机4、 硬件电路的设计4.1 单片机的选择本次设计以 CPU 选用 89C5l 作为步进电机的控制芯片 89C51 的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上 使用方便等优点 , 而且完全兼容 MCS5l 系列单片机的所有功能。 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器( FPEROM FAlsh ProgrAmmABle And ErAsABle ReAd Only Memory )的低电压 , 高性能 CMOS8 位微处理器 , 俗称单片机 。 该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中 , ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案4.2 驱动电路的选择由于单片机接口信号不够大需要通过 ULN2003A 放大再连接到相应的电机接口,ULN2003 是高耐压、大电流、内部由七个硅 NPN 达林顿管组成的驱动芯片。ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达 500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。ULN2003A 的输出结构是集电极开路的,所以要在输出端接一个上拉电阻,在输入低电平的时候输出才是高电平。在驱动负载的时候,电流是由电源通过负载灌入 ULN2003A 的。ULN2003A 引脚图4 .3 LCD 4.3.1 液晶显示器工作原理LCD 技术是把液晶灌入两个列有细槽的平面之间。这两个平面上的槽互相垂直(相交成 90 度) 。也就是说,若一个平面上的分子南北向排列,则另一平面上的分子东西向排列,而位于两个平面之间的分子被强迫进入一种 90 度扭转的状态。由于光线顺着分子的排列方向传播,所以光线经过液晶时也被扭转 90 度。但当液晶上加一个电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。LCD 是依赖极化滤光器(片) 和光线本身。自然光线是朝四面八方随机发散的。极化滤光器实际是一系列越来越细的平行线。这些线形成一张网,阻断不与这些线平行的所有光线。极化滤光器的线正好与第一个垂直,所以能完全阻断那些已经极化的光线。只有两个滤光器的线完全平行,或者光线本身已扭转到与第二个极化滤光器相匹配,光线才得以穿透。LCD 正是由这样两个相互垂直的极化滤光器构成,所以在正常情况下应该阻断所有试图穿透的光线。但是,由于两个滤光器之间充满了扭曲液晶,所以在光线穿出第一个滤光器后,会被液晶分子扭转 90 度,最后从第二个滤光器中穿出。另一方面,若为液晶加一个电压,分子又会重新排列并完全平行,使光线不再扭转,所以正好被第二个滤光器挡住。总之,加电将光线阻断,不加电则使光线射出。 然而,可以改变 LCD 中的液晶排列,使光线在加电时射出,而不加电时被阻断。但由于计算机屏幕几乎总是亮着的,所以只有“加电将光线阻断”的方案才能达到最省电的目的。从液晶显示器的结构来看,无论是笔记本电脑还是桌面系统,采用的 LCD 显示屏都是由不同部分组成的分层结构。LCD 由两块玻璃板构成,厚约 1mm,其间由包含有液晶(LC) 材料的 5m 均匀间隔隔开。因为液晶材料本身并不发光,所以在显示屏两边都设有作为光源的灯管,而在液晶显示屏背面有一块背光板(或称匀光板)和反光膜,背光板是由荧光物质组成的可以发射光线,其作用主要是提供均匀的背景光源。背光板发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个小的光阀。在液晶材料周边是控制电路部分和驱动电路部分。当 LCD 中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。4.3.2 1602所谓 1602 是指显示的内容为 16*2,即可以显示两行,每行 16 个字符。目前市面上字符液晶绝大多数是基于 HD44780 液晶芯片的,控制原理是完全相同的,因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。图 4 是 SMC1602 主要技术参数及引脚功能图,字符型 LCD1602 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线 VCC(15 脚)和地线 GND(16 脚),其控制原理与 14 脚的 LCD 完全一样。显示容量 16*2芯片工作电压 4.55V工作电流 2.0mA模块最佳工作电压 5.0V字符尺寸 2.95*4.35MM1602 主要技术参数及引脚功能SMC1602 内部 RAM 地址映射图4.3.3 蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、 “LB”、 “JD”等)表示4.4 总的硬件电路图5.1 程序框图开始按下正反转键判断加速减速并显示转速调用延时程序delay扫描按键情况5.2 C 程序#include /51 芯片管脚定义头文件#include /内部包含延时函数 _nop_();#define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9;uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;sbit K1 = P32; /运行与停止sbit K2 = P33; /设定圈数sbit K3 = P34; /方向转换sbit K4 = P35; /速率调整sbit BEEP = P36; /蜂鸣器sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;bit on_off=0; /运行与停止标志bit direction=1; /方向标志bit rate_dr=1; /速率标志bit snum_dr=1; /圈数标志uchar code cdis1 = “ STEPPING MOTOR “;uchar code cdis2 = “CONTROL PROCESS“;uchar code cdis3 = “ STOP “;uchar code cdis4 = “NUM: RATE: “;uchar code cdis5 = “ RUNNING “;uchar m,v=0,q=0;uint number=0,number1=0; uchar snum=10,snum1=10; /预设定圈数uchar rate=2; /预设定速率uchar data_temp,data_temP1,data_temp2; /*/* /* 延时 t 毫秒 /* 11.0592MHz 时钟,延时约 1ms /* /*/void delay(uint t) uchar k;while(t-)for(k=0; k125; k+) /*/void delayB(uchar x) /x*0.14MSuchar i;while(x-)for (i=0; i13; i+) /*/void beep()uchar j;for (j=0;j100;j+) delayB(4);BEEP=!BEEP; /BEEP 取反 BEEP=1; /关闭蜂鸣器delay(170);/*/* /*检查 LCD 忙状态 /*lcd_busy 为 1 时,忙,等待。为 0 时,闲,可写指令与数据。 /* /*/ bit lcd_busy() bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0LCD_EN = 0;return(result); /*/* /*写指令数据到 LCD /*RS=L,RW=L ,E= 高脉冲,D0-D7=指令码。 /* /*/void lcd_wcmd(uchar cmd) while(lcd_busy();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_(); P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0; /*/* /*写显示数据到 LCD /*RS=H, RW=L,E= 高脉冲,D0-D7=数据。 /* /*/void lcd_wdat(uchar dat) while(lcd_busy();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0; /*/* /* LCD 初始化设定 /* /*/void lcd_init() delay(30); lcd_wcmd(0x38); /16*2 显示,5*7 点阵,8 位数据delay(5);lcd_wcmd(0x38); delay(5);lcd_wcmd(0x38); delay(5);lcd_wcmd(0x0c); /显示开,关光标delay(5);lcd_wcmd(0x06); /移动光标delay(5);lcd_wcmd(0x01); /清除 LCD 的显示内容delay(5);/*/* /* 设定显示位置 /* /*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /数据指针=80+ 地址变量/*/* /* LCD1602 初始显示子程序 /* /*/void LCD_init_DIS() delay(10); /延时lcd_init(); /初始化 LCD lcd_pos(0); /设置显示位置为第一行的第 1 个字符m = 0;while(cdis1m != 0) /显示字符lcd_wdat(cdis1m);m+;lcd_pos(0x40); /设置显示位置为第二行第 1 个字符m = 0;while(cdis2m != 0)lcd_wdat(cdis2m); /显示字符m+;delay(3000); /延时 lcd_pos(0); /设置显示位置为第一行的第 1 个字符m = 0;while(cdis3m != 0) /显示字符lcd_wdat(cdis3m);m+;lcd_pos(0x40); /设置显示位置为第二行第 1 个字符m = 0;while(cdis4m != 0)lcd_wdat(cdis4m); /显示字符m+; for(m=0;m2;m+) lcd_pos(0x0c+m); /显示方向符号lcd_wdat(0x3e);/*/*/*数据转换子程序/*/*/void data_conv() data_temP1=data_temp/10; /高位if(data_temP1=0)data_temP1=0x20; /高位为 0 不显示else data_temP1=data_temP1+0x30;data_temp2=data_temp%10; /低位data_temp2=data_temp2+0x30;/*/*/*数据显示子程序/*/*/void data_dis()data_temp = snum; /显示圈数data_conv();lcd_pos(0x44); lcd_wdat(data_temP1);lcd_pos(0x45); lcd_wdat(data_temp2);data_temp = rate; /显示速率data_conv();lcd_pos(0x4d); lcd_wdat(data_temP1);lcd_pos(0x4e); lcd_wdat(data_temp2);/*/*/* 显示运行方向符号/*/*/void motor_DR()if(direction=1) /正转方向标志 for(m=0;m2;m+) lcd_pos(0x0c+m); /显示方向符号lcd_wdat(0x3e);else for(m=0;m2;m+) /反转方向标志 lcd_pos(0x0c+m); /显示方向符号 lcd_wdat(0x3c);/*/*/* 显示运行状态/*/*/void motor_RUN()if(on_off=1) TR0=1; lcd_pos(0); /设置显示位置为第一行的第 1 个字符m = 0;while(cdis5m != 0) lcd_wdat(cdis5m); /RUNNINGm+; motor_DR(); / else TR0=0; P1 =0x0f; lcd_pos(0); /设置显示位置为第一行的第 1 个字符m = 0;while(cdis3m != 0) lcd_wdat(cdis3m); /STOPm+; motor_DR(); /snum=snum1; /number1=0; /清圈数计数器/* * 主程序 * */main() LCD_init_DIS();TMOD = 0x01; /T0 定时方式 1TL0 = 0x33;TH0 = 0xf5;EA = 1;ET0 = 1; P1 = 0x0f;while(1) if(K1=0)beep();while(K1=0); /等待键释放on_off=on_off; motor_RUN(); /K1 end/*/if(K2=0) beep();if(snum_dr=1) snum+;snum1=snum;if(snum=0x14) snum_dr=snum_dr;else snum-;snum1=snum;if(snum=0x01) snum_dr=snum_dr; /K2 end/*/if(K3=0) beep();direction=direction; motor_DR();/K3 end/*/if(K4=0) beep();if(rate_dr=1) rate+;if(rate=0x10) rate_dr=rate_dr;else rate-;if(rate=0x01) rate_dr=rate_dr; /K4 end/*/if(number1=snum1) /与设定圈数是否相等 number1=0; on_off=0;TR0=0;snum=snum1;P1=0x0f;motor_RUN(); data_dis(); / while(1) end /main end/*/*/* 定时器 0 中断 /*/*/void motor_onoff() interrupt 1 TL0 = 0x3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论