基于单片机的步进电机控制系统设计_第1页
基于单片机的步进电机控制系统设计_第2页
基于单片机的步进电机控制系统设计_第3页
基于单片机的步进电机控制系统设计_第4页
基于单片机的步进电机控制系统设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的步进电机控制系统设计摘要本文介绍了以89s52单片机为核心控制器的步进电机控制系统的设计方法.利用单片机的位操作功能输出步进电机工作所需要的脉冲电压/电流;利用单片机的通用同步/异步串行口与pc通信,接收pc送来的控制信号,控制步进电机的工作状态;也可以通过对按键的操作完成步进电机的手动控制;通过在电机车轴上安装牙轮磁环,利用霍尔传感器检测电机的实时转速;电机的当前工作状态、转速、步长、步进方式等均可以由pc或键盘来设定,并在lcd上显示出来。同时本文详细论述了整个系统的整体框图和各模块的具体功能。整个控制器的操作方便、快捷且性能稳定可靠。当然,在设计中存在的一些问题,以及影控制精

2、度的因素,和解决这些问题的可行性方法都作了详细的说明。关键字:步进电机单片机串行通信summarythis text introduces to take a machine of 89 s52s as the core controller to tread the design method that controls the system into the electrical engineering.an operation function that makes use of a machine outputs to tread into the electrical enginee

3、ring work need of pulse electric voltage electric current;make use of a machine in general use synchronous the difference treads the string to go the and pcs correspondence, receiving the control signal that pc deliver, controling to tread into the work appearance of the electrical engineering;can a

4、lso move the control through a hand that completes to tread into the electrical engineering to the operation of the key;pass to install the gear ci wreath on the electrical engineering axle, the solid hour that make use of the huo er to spread the feeling machine examination electrical engineering t

5、urn soon;the current work appearance of the electrical engineering, turn soon, tread long, tread into the way etc. all can be set by the pc or keyboards, and on the lcd the manifestation come out.at the same time detailed treatise of this text the whole frame diagram of the whole system and concrete

6、 function of each mold piece.the operation convenience of the whole controller, fast and the function stability credibility.certainly, some problems exist in the design, and the ying control the factor of the accuracy, definitely reach agreement these problem of possibility methods all made the expa

7、tiation.key word: step motor microcontrollor unitseries communication第一章绪论步进电机(step motor)又称为脉冲电动机或阶跃电动机,是一种无刷直流电动机,作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。步进电动机可以用数字信号直接进行开环控制,系统简单;位移与输入脉冲信号数相对应,步距误差不长期积累,可以组成高精度的控制系统;无刷,易于启动、停止、正反转及变速,具有自锁能力。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用单片机是20世纪70年代中期发展起

8、来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用。由于单片机的精确位控制功能,在实时脉冲控制领域的应用不断扩大。利用单片机控制步进电机,系统简单,可靠。通过单片机输出一组脉冲序列,经过电流驱动器,进行精确控制。第二章步进电机原理步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲

9、频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 现在比较常用的步进电机包括反应式步进电机(vr)、永磁式步进电机(pm)、混合式步进电机(hb)和单相式步进电机等。 永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。 混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步

10、进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。 电机固有步距角: 它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86byg250a型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可以称之为电机固有步距角,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的

11、步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72° 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则相数将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。 步进电机的一些特点:1一般步进电机的精度为步进角的3-5%,且不累积。 2步进电机外表允许的最高温度在150度以下。 3步进电机的力矩会随转速的升高而下降。 4步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。 步进电动机以其显著的特点,在数字化制造时代发挥着

12、重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。第三章设计原理与方案论证系统方框图如下所示:控制信号的产生可以由键盘和计算机来完成。键盘直接对单片机i/o进行操作,单片机通过检测i/o信号的变化,判断按键,完成相当功能;计算机通过串行通信口与单片机相联,利用串行通信发送操作命令给单片机,完成命令所指定的功能。单片机接收到控制信号后,产生相应的输出信号,控制电机驱动电路产生相当的驱动信号,使电机运转;同时,单片机还要控制液晶显示器显示出当前的系统信息。在电机运转过程中,单片机通过采样霍尔传感器采样到的电机的转速信息,即时显示电机的当时转速和方

13、向。系统程序流程图如下所示:电机的选择和方案论证:电机的种类繁多,本系统中采用了二相小功率的步进电机,电路原理图如下:该电机的正转驱动信号时序如下:通过改变时序的顺序就可以控制其转向,反转时的时序为1-4-3-2.为了产生精确的时序脉冲,程序设计过程中采用中断的方法产生脉冲信号.并可以通过外部命令来控制产生时序的顺序,从而实现正反转的控制.时序产生程序如下:sbitaa=p34;sbitab=p35;sbitba=p36;sbitbb=p37;uchar thdata,tldata;bitstep_permit=0;bitdirection,sisdf;/set direction flagu

14、charint_cnt;tmod=0x21;/t0工作在方式1,t1工作在方式2自动重装ea=1;tr1=1;/产生脉冲波形void timer0(void)interrupt 1 using 1tl0=(tldata+10);th0=thdata;if(step_permit)int_cnt+;if(direction)/反转switch(cnt)case 0:aa=1;ab=1;ba=0;bb=0;break;case 1:aa=0;ab=1;ba=1;bb=0;break;case 2:aa=0;ab=0;ba=1;bb=1;break;case 3:aa=1;ab=0;ba=0;bb=

15、1;break;default:break;elseswitch(cnt)case 0:aa=1;ab=1;ba=0;bb=0;break;case 1:aa=1;ab=0;ba=0;bb=1;break;case 2:aa=0;ab=0;ba=1;bb=1;break;case 3:aa=0;ab=1;ba=1;bb=0;break;default:break;+cnt;if(cnt=4)cnt=0;驱动电路的设计:本设计中步进电机功率较小,采用普通的电流型驱动器件即可,所以采用了ul2003的电流驱动模块,该项模块的内部结构框图如下:该驱动模块的的电压为12v,驱动电流可达500ma.转速

16、检测电路的设计:本设计中利用霍尔传感器磁敏感效应,通过在电机转轴上安装牙轮磁环,来检测出电机的转速.霍尔传感的工作原理如下:原边电流ip产生的磁通量聚集在磁路中,并由霍尔器件检测出霍尔电压信号,经过放大器放大,该电压信号精确地反映原边电流。原边电流ip产生的磁通量与霍尔电压经放大产生的副边电流is通过副边线圈所产生的磁通量相平衡。副边电流is精确地反映原边电流。原边电压vp通过原边电阻r1转换为原边电流ip,ip产生的磁通量与霍尔电压经放大产生的副边电流is通过副边线圈所产生的磁通量相平衡。副边电流is精确地反映原边电压。当电机转动时,霍尔传感器将转轴上磁环引起的磁场的变化转换为电脉冲信号,送

17、往单片机,单片机根据脉冲频率,计算出转动的速度.键盘的方案论证和电路及程序设计:键盘可以分为独立连接式和行列式(矩阵式)两类。独立式按键是指各按键相互独立地接通一条输入数据线,当任何一个键按下时,与之相连的输入数据线即被清0或置1,利用单片机位处理指令十分方便查询到按键。矩阵式按键采用列行扫描方式进行按键的判断,节约i/o线。相比之下,本设计由于i/o线的占用数目不多,采用独立式键盘电路简单,容易实现。键盘电路设计如下:读键值程序设计如下:#include<reg52.h>uchar getkey(void) uint i=0;uchar keybuf=0;if(p1!=0xff)

18、 keybuf=p1;if(keybuf!=0xff)while(p1=keybuf)&&(i<0x6000)i+=1; if(i>101) return keybuf; else return 0;else return0; elsereturn 0;串行通信的方案论证和电路及程序设计:单片机的串行接口是一个可编程的全双工通信接口,通过软件编程它既可用作通用异步接收和发送器使用,也可作同步移位寄存器使用。、单片机串行接口单片机的串行接口主要由两个数据缓冲寄存器sbuf和一个输入移位寄存器,以及一个串行控制寄存器scon组成。定时器t1常用做其波特率发生器。串行口可

19、以有多种工作方式,不同工作方式的数据格式不同,在本系统中,采用的串行口工作方式1,波特率设置为2400。串行口通信接口电路设计如下:串行通信程序设计如下:tmod=0x21;/ t1工作在方式2自动重装th1=0xf3;/波特率设置;晶振12mhz;波特率为2400tl1=0xf3;scon=0x50;/串行口工作在方式1,八位方式,允许接收pcon=0;/smod设置为0ea=1;es=1; /串行中断允许et0=0;void sericab(void)interrupt 4 using 2ucharsda;ri=0;sda=sbuf;if(sda>=64)if(sda<95)&

20、amp;&(run=0)step_length=sda*3;stepflag=1;elseif(sda=0x61)&&(sdata_flag=1)run=1;stopflag=0;elseif(sda=0x63)direction=0;sisdf=1;elseif(sda=0x64)direction=1;sisdf=1;elseif(sda=0x62)&&(sdata_flag=1)run=0;stopflag=1;elseif(sda=0x65)&&(sdata_flag=1)step_permit=1;else speed=sda*

21、2;spdset=1;+sicnt;if(sicnt=2)sicnt=0;sdata_flag=1; 显示电路的方案论证和电路及程序的设计:单片机显示电路一般由led或lcd完成。led显示电路结构简单,成本低,但显示内容相对偏少。lcd显示电路信息容量大,电路相对复杂。在本系统中,由于显示的信息量大,所以采用hs12864显示器。该显示器为128*64点阵显示屏,可以显示4*8个汉字或4*16个字符。显示电路设计如下:显示程序设计如下:#include<_reg52_.h>/*write 12864.h*/ sbit cs1=p23;sbit cs2=p24;sbit rst=p

22、25;sbit di=p20;sbit rw=p21;sbit ale=p22; /软件复位程序void intrst(void) uchar i; rst=0; i=0; i=1; rst=1; /软件复位 voidbusy_judge(void)/读busy信号uchari;uchar temp;do p0=0xff;ale=1; i=0;temp=p0; ale=0; while(temp&0x80)=1);/12864发送命令子程序voidcomsend(ucharcom)uchari; di=0;rw=1; busy_judge();/读busy信号rw=0;p0=com;a

23、le=1;i=0;/nopale=0;/12864发送数据子程序 voiddasend(uchar dat) uchari; di=0;rw=1;busy_judge();/读busy信号di=1;rw=0;p0=dat;ale=1;i=0;/nopale=0;/左半屏写命令子程序 voidleft_comsend(com)cs2=0;cs1=1;comsend(com);cs1=0;/左半屏写数据子程序 voidleft_dasend(dat)cs2=0;cs1=1;dasend(dat);cs1=0;/右半屏写命令子程序 voidright_comsend(com)cs1=0;cs2=1;

24、comsend(com);cs2=0;/右半屏写数据子程序 voidright_dasend(dat)cs1=0;cs2=1;dasend(dat);cs2=0;/左半屏写一个字节数据程序,/入口参数为x,y的起始地址/以及y的变址范围(写入的字节数)和写入数据的指针voidleft_bytes_dasend(uchar x,uchar y,uchar *loc,uchar bytes)uchari;left_comsend(x|0xb8);/填入特征位0xb8,定位xleft_comsend(y|0x40);/填入特征位0x40 ,定位yfor(i=0;i<bytes;i+)left_

25、dasend(*(loc+i);/右半屏写一个字节数据程序,/入口参数为x,y的起始地址/以及y的变址范围(写入的字节数)和写入数据的指针voidright_bytes_dasend(uchar x,uchar y,uchar *loc,uchar bytes)uchari;right_comsend(x|0xb8);/填入特征位0xb8 ,定位xright_comsend(y|0x40);/填入特征位0x40, 定位yfor(i=0;i<bytes;i+)right_dasend(*(loc+i);/开lcdvoid lcd_on(void) left_comsend(0x3f); r

26、ight_comsend(0x3f); /关lcdvoidlcd_off(void) left_comsend(0x3e); right_comsend(0x3e);/设置z地址 voidlcd_setz(uchar z)z=z*8; left_comsend(z|0xc0); right_comsend(z|0xc0);/显示初始化程序集/右边显示符号元素的子程序voidright_show_sign(uchar x,uchar y,uchar *pointer,uchar snum)uchar*p;p=pointer;p=(p+snum*16);right_bytes_dasend(x,y

27、,p,8);right_bytes_dasend(x+1,y,p+8,8);/左边显示符号元素的子程序voidleft_show_sign(uchar x,uchar y,uchar *pointer,uchar snum)uchar*p;p=pointer;p=(p+snum*16);left_bytes_dasend(x,y,p,8);left_bytes_dasend(x+1,y,p+8,8);/右边显示汉字元素的子程序voidright_show_word(uchar x,uchar y,uchar *pointer,uchar wnum)uchar*p;p=pointer;p=(p+

28、wnum*32);right_bytes_dasend(x,y,p,16);right_bytes_dasend(x+1,y,p+16,16);/左边显示汉字元素的子程序voidleft_show_word(uchar x,uchar y,uchar *pointer,uchar wnum)uchar*p;p=pointer;p=(p+wnum*32);left_bytes_dasend(x,y,p,16);left_bytes_dasend(x+1,y,p+16,16);第四章 系统源代码主程序源代码如下:#definelow_speed10#define high_speed100#inc

29、lude<_reg52_.h>#include<key_define.h>#include<get_key_declare.h>#include<lcd_init_declare.h>/#include<main_define.h>uchar speed=50,step_length=10,thdata,tldata;#include<start.h>bitsdata_flag=0;bitstep_permit=0;bitdirection,sisdf;/set direction flagbitstepflag=0;/步

30、进标志bitrun=0;/全带运行标志bitstopflag=0;ucharint_cnt;bitspdset;sbitaa=p34;sbitab=p35;sbitba=p36;sbitbb=p37;ucharcnt;ucharsicnt=0;/产生脉冲波形void timer0(void)interrupt 1tl0=(tldata+10);th0=thdata;if(step_permit)int_cnt+;if(direction)/反转switch(cnt)case 0:aa=1;ab=1;ba=0;bb=0;break;case 1:aa=0;ab=1;ba=1;bb=0;break

31、;case 2:aa=0;ab=0;ba=1;bb=1;break;case 3:aa=1;ab=0;ba=0;bb=1;break;default:break;elseswitch(cnt)case 0:aa=1;ab=1;ba=0;bb=0;break;case 1:aa=1;ab=0;ba=0;bb=1;break;case 2:aa=0;ab=0;ba=1;bb=1;break;case 3:aa=0;ab=1;ba=1;bb=0;break;default:break;+cnt;if(cnt=4)cnt=0;void sericab(void)interrupt 4ucharsda;

32、ri=0;sda=sbuf;if(sda>=64)if(sda<95)&&(run=0)step_length=sda*3;stepflag=1;elseif(sda=0x61)&&(sdata_flag=1)run=1;stopflag=0;elseif(sda=0x63)direction=0;sisdf=1;elseif(sda=0x64)direction=1;sisdf=1;elseif(sda=0x62)&&(sdata_flag=1)run=0;stopflag=1;elseif(sda=0x65)&&(

33、sdata_flag=1)step_permit=1;else speed=sda*2;spdset=1;+sicnt;if(sicnt=2)sicnt=0;sdata_flag=1;voidst_convert(void)/将转速转换为t0常数uinttdbuf;tdbuf=(1000000/speed)/192;tdbuf=0xffff-tdbuf;tldata=(uchar)(tdbuf&0xff);thdata=(uchar)(tdbuf>>8)&0xff);bitoperating(void)/开机初始化程序ucharkey;bitstep_flag=0;

34、show_null();key=0;show_sign();/显示show_speed_set();/显示"请预置转速 "speed=get_speed(speed);/转速设置子程序show_null();show_operation_model();while(key!=left&&key!=right)key=getkey();show_null(); if(key=right)/步进key=0;step_flag=1;show_sign();/显示show_step_length(); /显示"请预置步长: " step_leng

35、th=get_step_length(step_length);/预置步长returnstep_flag;voidmain(void)ucharkey,stl,stepcnt=0;intrst();lcd_setz(1);lcd_off();show_null();show_sign();/显示show_greet();lcd_on();tmod=0x21;/t0工作在方式1,t1工作在方式2自动重装th1=0xf3;/波特率设置;晶振12mhz;波特率为2400tl1=0xf3;scon=0x50;/串行口工作在方式1,八位方式,允许接收pcon=0;/smod设置为0ea=1;es=1;

36、/串行中断允许et0=0;/t0中断禁止tr1=1;while(key=0)&&(sdata_flag=0)key=getkey();if(key)stepflag=operating();st_convert();/将转速转换为t0常数th0=thdata;tl0=tldata;tr0=1;show_null();show_sign();/显示show_ready();/显示"准备好:"show_direction(direction);key=0;while(key!=start)&&(run=0)key=0;key=getkey();i

37、f(stepflag)/步进方式stl=step_length*4;show_null();/清屏show_sign();/显示/show_step();/显示"步进"show_direction(direction);show_speed(speed);show_stepcnt(stepcnt);/"显示"步进:xxx""步进数while(1)if(int_cnt=stl)et0=0;int_cnt=0;step_permit=0;if(spdset)st_convert();show_speed(speed);spdset=0;k

38、ey=0;key=getkey();if(key=step)step_permit=1;int_cnt=0;et0=1;show_stepcnt(+stepcnt);/"显示":xxx""步进数elseif(key=dir)|sisdf)direction=(direction);show_direction(direction);sisdf=0;else if(key=reset)(*(void(*)()0)();/热启动else/全速运行方式et0=1;run=0;/show_null();/清屏/show_sign();/显示/show_start

39、();/显示"启动"show_null();/清屏show_sign();/显示show_running();/显示"运行中"show_direction(direction);show_speed(speed);while(1)if(spdset)st_convert();show_speed(speed);spdset=0;key=0;key=getkey();if(key=dir)|sisdf)direction=(direction);show_direction(direction);sisdf=0;else if(key=stop)|stop

40、flag)et0=0;show_null();/清屏show_sign();/显示show_stop();/显示"停止"show_direction(direction);stopflag=0;else if(key=start)|run)et0=1;/show_null();/清屏/show_sign();/显示/show_start();/显示"启动"show_null();/清屏show_sign();/显示show_running();/显示"运行中"show_direction(direction);show_speed(s

41、peed);run=0;else if(key=reset)(*(void(*)()0)();/热启动第五章总结与开发工具4.1、总结外界环境温度的变化,将导致晶体的频率发生一定的偏移,从而影响了定时精度,导致输出的时序不够精确。这种由于环境变化而影响的定时偏差可以采用稳定性更高的晶体来解决。当然,这种方法还是有受晶体制约的,要想得到更加稳定的脉冲序列,则应采用专用的控制芯片,其误差可可大大减小,且占用更少的cpu资源。4.2、结束语通过对本系统的测试与调试,结合本系统的实际情况,基本上达到设计要求。通过对流程的优化,使得操作方便,可靠。4.3、使用工具伟福e51/s仿真器示波器keil c5

42、1编译软件wd990徽机电源数字万用表、电脑参考文献1哈工大·成都电机厂.步进电动机.科学出版社.1979.2王宗培.步进电动机.微特电机.19763程树康.步进电动机静转矩计算的数据前处理程序.微特电机1985.4陈理壁.步进电动机及其应用.上海科技出版社.19855李忠杰,宁守信.步进电动机应用技术.北京:机械工业出版社.1988.6、彭为、黄科、雷道仲编著 单片机典型系统设计电子工业出版社7凌玉华 等编著单片机原理及应用系统设计中南大学出版社8蔡美琴等编著mcs51系列单片机系统及其应用高等教育出版社9杨忠煌、黄博俊、李文昌编著单芯8051实务与应用中国水利水电出版社10单片机

43、学习网11中山单片机网12单片机主站1351单片机学习网14atmel主页致谢经过长时间的努力,我顺利地完成了毕业设计。这次毕业设计是单片机学习的第一次实战过程,在做毕业设计的过程中,遇到了很多的问题,但在万琴和何敏教师的精心指导和严格要求下,并通过自己的耐心钻研,查阅大量资料,把这些资料与自己的设计结合起来,完成了本次设计。在这段时间的学习与实践中,我综合了有关单片机的所有知识以及汇编语言程序设计,巩固了自己所学的专业知识,并对单片机有了深刻的了解,为以后的学习打好了基础。在这个实践过程中,忠诚的感谢教师的教导和鼓励,老师开阔的思路、渊博的知识、丰富的实践经验、严格的工作作风、勇于创新的精神将成为我终生学习的榜样。铭记教师的深深教诲,在以后的学习中不断努力创新,用成绩来向老师表示最诚挚的感谢!同时,在本次毕业设计中,同学们也了我无私的帮助。在些向所有给予我帮助和鼓励的其他教师和同学表示感谢!附录lcd12864原理及使用手册:一 概述hs12864-1 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及格128 64

温馨提示

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

评论

0/150

提交评论