基于LPC2131的步进电机细分的课程设计实验报告概要 下载本文

内容发布更新时间 : 2024/5/2 21:02:12星期一 下面是文章的全部内容请认真阅读。

第4页

中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。

图1.2 ULN2003芯片引脚图

该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。其接线图如下所示:

图1.3 ULN2003与LPC2131以及四相步进电机接口图

步进电机28BYJ-48-5VDC简介:

图1.4 28BYJ-48-5VDC步进电机是四相五线制电机,

中间部分是转子,由一个永磁体组成,边上的是定子绕组。当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。

第5页

依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。而且按照通电顺序的不同,可分为单四拍(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。其接线图如图1.3所示。 2.3.模块原理框图 LPC2131 最小系统 2.4.结论 二极管指示 步进电机驱动 步进电机ULN2003 28BYJ-48 液晶显示 此次基于ARM的步进电机细分驱动控制设计,由于相关知识的不成熟,我们目前只实现了对步进电机正反转控制以及三种运行方式(单四拍、双四拍、单双八拍)的选择控制,并且实现了在12864液晶显示屏上显示相关的信息。此次课程设计还存在一些问题,比如步进电机的抖动问题没有解决,液晶显示的效果也不怎么好,没有显示步距角及速度等等。所有这些问题还有待于在进一步制作中探讨、解决并完成制作。目前所做的部分只是实现了步进电机控制的基本功能,在此基础上还可以增加更多的运行方式、角度显示和测速等环节,使电机的功能更加完善,最终投入到实际的应用当中去。

2.5 致谢

附录B 步进电机驱动程序

附录A 步进电机驱动电路原理图

* 文 件 名:main.c

* 功 能:LED显示控制。

* 通过GPIO控制步进电机

* 说 明:将跳线JP14和JP19全部短接。

****************************************************************************/ #include \#define MOTOA 1<<10 // P0.10 #define MOTOB 1<<11 // P0.11 #define MOTOC 1<<12 // P0.12 #define MOTOD 1<<13 // P0.13 #define key1 1<<16 // A-B-C-D

第6页

参考文献:

【1】周明安,朱光忠,步进电机驱动技术发展及现状【J】机电工程技术,2005

【2】许大中、贺益康,电机控制【M】杭州:浙江大学出版社、2002

【3】周立功、陈明计、陈渝,ARM嵌入式Linux系统构建与驱动开发范例【M】: 北京航空航天大学出版社,2006

第7页

#define key2 1<<17 // AB-BC-CD-DA-AB

#define key3 1<<18 // A-AB-B-BC-C-CD-D-DA-A #define key4 1<<19 //反转 #define key5 1<<20 //停止

#define KEYCON 0x007c0000 // LED控制字 #define MOTOCON 0x00003c00 // MOTO控制字

#define GPIOSET(PIN) IO0SET = PIN // 方便修改置位端口 #define GPIOCLR(PIN) IO0CLR = PIN // 方便修改清位端口

#define RS 1<<9 //P0.9 #define SID 1<<6 //P0.6 #define E 1<<4 //P0.4

#define PSB 1<<2 //P0.2并行或串行,选择低电平串行模式 #define RST 1<<25 //P1.25,复位脚

unsigned char IC_DAT1[64]=\运行方式:单四拍A-B-C-D\

unsigned char IC_DAT2[64]=\运行方式:双四拍AB-BC-CD-DA\

unsigned char IC_DAT3[64]=\运行方式:单双八拍A-AB-B-BC-C-CD-D-DA%unsigned char IC_DAT4[64]=\ 反 转 %unsigned char IC_DAT5[64]=\ 停 止 \

unsigned char IC_DAT6[64]=\步进电机细分控制自动化0804班\

void TransferCom(unsigned char data0); void TransferData(unsigned char data1); void delay(unsigned int m);

void lcd_mesg(unsigned char *adder1);

void DelayNS(uint32 dly);

void MOTO_Mode1(uint8 i); // A-B-C-D void MOTO_Mode10(uint8 i);

void MOTO_Mode2(uint8 i); // AB-BC-CD-DA-AB void MOTO_Mode20(uint8 i);

void MOTO_Mode3(uint8 i); // A-AB-B-BC-C-CD-D-DA-A void MOTO_Mode30(uint8 i);

/**************************************************************************** * 名 称:main()

* 功 能:根据表DISP_TAB来控制LCD显示。

****************************************************************************/ int main(void) {

/* PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰 */

PINSEL0=0x00000000;