基于S3C2410X PWM步进电机控制设计.docx

上传人:b****8 文档编号:27849260 上传时间:2023-07-05 格式:DOCX 页数:40 大小:603.47KB
下载 相关 举报
基于S3C2410X PWM步进电机控制设计.docx_第1页
第1页 / 共40页
基于S3C2410X PWM步进电机控制设计.docx_第2页
第2页 / 共40页
基于S3C2410X PWM步进电机控制设计.docx_第3页
第3页 / 共40页
基于S3C2410X PWM步进电机控制设计.docx_第4页
第4页 / 共40页
基于S3C2410X PWM步进电机控制设计.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

基于S3C2410X PWM步进电机控制设计.docx

《基于S3C2410X PWM步进电机控制设计.docx》由会员分享,可在线阅读,更多相关《基于S3C2410X PWM步进电机控制设计.docx(40页珍藏版)》请在冰豆网上搜索。

基于S3C2410X PWM步进电机控制设计.docx

基于S3C2410XPWM步进电机控制设计

《嵌入式系统》课程设计说明书

基于S3C2410XPWM步进电机控制应用开发

 

系、部:

计算机与信息科学系

组成员:

李传颂李佳文潘应成马永光

指导教师:

秦辉职称:

讲师

专业:

计算机科学与技术

班级:

计本0803

完成时间:

2011年12月12日

摘要

嵌入式的应用正在不断深入和创新,作为一门我们专业相当重要的专业课程,同时带动着传统控制检测日新月异的更新。

此次设计利用实验室中试验箱以S3C2410x作为内核进行调试和创新,其中对S3C2410X的试验箱开发板、S3C2410X的PWM、步进电机工作原理、系统硬件设计、软件设计及其仿真调试过程都做了详细的介绍,使我们组的每个成员不仅对步进电机的原理有了深入的了解,也对嵌入式的设计研发过程以及知识的学习都有了很深刻的体会和提高。

本控制系统的设计采用实验室中的试验箱S3C2410xPWM控制,通过S3C2410X的中断系统来实现步进电机的转动以及转动的加速度等功能,另外还增加可设正反转的功能,具有灵活方便、使用范围广又易懂的特点,能够满足实现自身实践动手能力提高的需求。

通过此次课程设计,增进对嵌入式强大功能的认识,对提高学习能力有着深远意义。

 

关键字嵌入式;S3C2410X;PWM;步进电机

1开发环境及系统结构1

1.1开发环境1

1.2S3C2410X处理器介绍1

2.2.12410体系结构1

2.2.22410实验箱底板规格:

2

1.3系统结构3

2基于S3C2410XPWM步进电机控制应用开发4

2.1PWM介绍4

2.1.1PWM定时器概述4

2.1.2S3C2410X定时器特性4

2.1.3PWM定时器操作示例5

3.1.4PWM定时器寄存器6

2.2基于S3C2410XPWM步进电机的硬件开发9

2.2.1系统设计要求与方案确定9

2.2.2PWM步进电机驱动电路设计9

2.3基于S3C2410XPWM步进电机的软件开发11

2.3.1程序流程图11

2.3.2应用程序设计11

2.3.3功能测试29

3总结30

参考文献31

1开发环境及系统结构

1.1开发环境

硬件:

EmbestEduKit-III实验平台,EmbestARM标准、增强型仿真器套件,即ARM2410实验箱,PC,步进电机。

软件:

EmbestIDEforARM集成开发环境,windowsxp。

1.2S3C2410X处理器介绍

1.2.12410体系结构:

S3C2410X处理器是SAMSUNG公司给予ARM公司的ARM920T处器核,采用0.18um制造工艺的32位微处理器,以其低功耗、简介及全静态设计尤其适合于成本及功耗敏感的嵌入式应用。

采用ARM新设计的AMBA总线体系结构。

用于支持和嵌入式和一般嵌入式应用的集成系统16/32-BitRISC体系结构,ARM920TCPU内核增强的ARM体系MMU,可支持WinCE、EPOC32和Linux操作系统指令Cache和数据,写缓冲器和物理地址TAGARM减少了主存宽带和延迟对性能的影响,ARM920TCPU核支持ARM调试体系结构内部高级微处理器总线体系(AMBA)。

体系结构图如下:

图1.1S3C2410X处理器体系结构方框图

1.2.22410实验箱底板规格:

◆大电流5V供电,提供更加优质的供电,防止电源断电而引的BUG;

◆LCD显示

-板上LCD接口集成4线电阻式触摸屏接口,可以直接连接4线电阻式触摸屏,

-支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,

尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024X768象素

◆1个100M以太网RJ-45接口

◆1个USBSlaveB型接口(支持USB1.1协议)

◆1路立体声音频输出接口,1路音频输入接口

◆板载AD转换测试

◆板载PWM功能测试(控制直流电机调速)

◆板载44PinIDE接口

◆板载实时时钟电池

◆系统复位开关和指示灯

◆两路DA

◆8个数码管

◆8个LED灯

◆1个VGA接口

◆1个直流电机

◆1个步进电机

图1.2实验系统硬件平台

1.3系统结构

图1.3嵌入式系统组成框图

2详细设计

2.1PWM介绍

2.1.1PWM定时器概述

S3C2410X有5个16位定时器,其中定时器0、1、2、3具有脉冲宽度调制(PWM)功能,定时器4具有内部定时左右,但是没有输出引脚。

定时器0具有死区生成器,可以控制大电流设备。

定时器T0、T1共用一个8bit预分频器,定时器T2、T3、T4共用另一个8bit预分频器,每个定时器都有一个时钟分频器,信号分频输出有5种模式。

每个定时器模块都从时钟分频器接收它自己的时钟信号,时钟分频器接收的时钟信号来自于8bit预分频器。

可编程8bit预分频器根据存储在TCFG0和TCFG1中的数据对PCLK进行分频。

每一个定时器都有一个自己的用定时器时钟驱动的16位减法计数器。

当减法计数器减到0时,就会产生一个定时器中断来通知CPU定时器操作下次操作。

当定时器减法计数器减到0时,相应的TCNTBN的值被自动重载到减法计数器中继续下次操作。

然而,如果定时器停止了,比如在运行时,通过清除TCON中定时器使能位来中止定时器的运行,TCNTBN的值不会被重载到减法计数器中。

2.1.2S3C2410X定时器特性

(1)5个16位定时器。

(2)2个8bit预分频器和2个4bit分频器。

(3)可编程PWM输出占空比。

(4)自动重载模式,或者单个脉冲输出模式。

(5)具有死区生成器。

(6)自动重载与双缓冲。

S3C2410X具有双缓冲功能,能在不中止当前定时器运行的情况下,重载下次定时器运行参数,所以尽管新的定时器的值被设置好了,但是当前操作仍能成功完成。

定时器值可以写入定时器计数缓冲寄存器,当前的计数器的值可以从定时器计数观察寄存器独读出。

读出的TCNTBn值并不是当前的计数器值,而是下次重载的计数器值。

当TCNTBn=0时,自动重载操作把TCNTBn的值装入TCNTn,只有当自动重载允许并且TCNTn=0时,才会自动重载。

如果TCNTn=0,自动重载禁止,则定时器停止运行。

图2.1双缓冲功能举例

图2.2死区功能允许波形图

2.1.3PWM定时器操作示例

定时器操作实例如图2.2所示.

图2.3定时器操作示例

<1>允许自动重载功能,TCNTBN=(50+110),TCMPBN=110.置位手动更新位,配置倒相位,手动更新位被设置后,TCNTBN和TCMPBN的值被自动装入TCNTN和TCMPN。

之后设置TCNTBN和TCMPBN分别为80(40+40)和40.

<2>启动定时器清零手动更新位,取消倒相位功能,允许自动重载,定时器开始启动减法计数。

<3>当TCNTTN和TCMPN的值相等时,TOUT输出电平由低变高。

<4>当TCNTN=0时,产生中断,并在下一个时钟到来时把TCNTBN的值装入暂存器中。

<5>在中断服务子程序中,把TCNTBN和TCMPBN分别装入80(20+60)和60.

<6>当TCNTBN和TCMPN的值相等时,TOUT输出电平由低到高。

<7>当TCNTN=0时,把TCNTN和TCMPBN的值分别自动装入TCNTN和TCMPBN,并触发中断。

<8>在中断子服务子程序中,禁止自动重载和中断请求来中止定时器运行。

<9>当TCNTN和TCMPBN的值相等的时候,TOUT输出电平由低变高。

<10>尽管TCNTN=0,但是定时器停止运行,也不再发生自动重载操作,因为定时器自动重载功能被禁止。

<11>不再产生新的中断。

2.1.4PWM定时器寄存器

1)定时器寄配置存器0(TCFG0,地址:

0x51000000)

定时器配置寄存器0如表2.1所示。

表2.1定时器配置寄存器0(TCFG0)

TCFG0

描述

初始化状态

保留

[31:

24]

--

0x00

死区长度

[23:

16]

8bit控制死区的长度

0x00

预分频器1

[15:

8]

8bit数据等于定时器2、3、4的预分频值

0x00

预分频器0

[7:

0]

8bit数据等于定时器0的预分频值

0x00

定时器输入时钟频率(TCLK)=PCLK/(预分频值+1)/分频器分频值

预分频值=0~255。

分频器的分频值为2、4、8、16。

PWM输出时钟频率=

定时器输入时钟频率(TCLK)/定时器计数缓冲寄存器(TCNTBn)

PWM输出信号占空比=

定时器比较缓冲寄存器值(TCMPBn)/定时器计数缓冲寄存器(TCNTBn)

2)定时器配置寄存器1(TCFG1,地址:

0x51000004)

定时器配置寄存器1如表2.2所示。

表2.2定时器配置寄存器1(TCFG1)

TCFG1

描述

初始化状态

保留

[31:

24]

--

00000000

 

DMA模式选择

 

[23:

20]

DMA请求选择

0000=无DMA通道选择

0001=定时器0DMA方式

0010=定时器1DMA方式

0011=定时器2DMA方式

0100=定时器3DMA方式

0101=定时器4DMA方式

0110=定时器5DMA方式

0000

多路开关4选择

[19:

16]

定时器4多路输入选择

0000=1/20001=1/4

0010=1/80011=1/16

01XX=外部时钟1

0000

多路开关3选择

[15:

12]

定时器3多路输入选择

0000=1/20001=1/4

0010=1/80011=1/16

01XX=外部时钟1

0000

多路开关2选择

[11:

8]

定时器2多路输入选择

0000=1/20001=1/4

0010=1/80011=1/16

01XX=外部时钟1

0000

多路开关1选择

[7:

4]

定时器3多路输入选择

0000=1/20001=1/4

0010=1/80011=1/16

01XX=外部时钟0

0000

多路开关0选择

[3:

0]

定时器3多路输入选择

0000=1/20001=1/4

0010=1/80011=1/16

01XX=外部时钟0

0000

3)定时器控制寄存器(TCON,地址:

0x51000008)

定时器控制寄存器如表2.3所示

表2.3定时器控制寄存器(TCON)

TCON

描述

初始化状态

定时器4自动重载on/off

[22]

0=定时器4运行1次

1=自动重载模式

0

定时器4手动更新位(*)

[21]

0=无操作,1=更新TCNTB4

0

定时器4启动位

[19]

0=无操作,1=启动定时器4

0

定时器3自动重载on/off

[18]

0=定时器3运行1次

1=自动重载模式

0

定时器3输出倒相位

[17]

0=倒相关闭,1=TOUT3倒相

0

定时器3手动更新位(*)

[16]

0=无操作,1=更新TCNTB3

0

定时器3启动位

[15]

0=无操作,1=启动定时器3

0

定时器2自动重载on/off

[14]

0=定时器2运行1次

1=自动重载模式

0

定时器2输出倒相位

[13]

0=倒相关闭,1=TOUT2倒相

0

定时器2手动更新位(*)

[12]

0=无操作,1=更新TCNTB2

0

定时器2启动位

[11]

0=无操作,1=启动定时器2

0

定时器1自动重载on/off

[10]

0=定时器1运行1次

1=自动重载模式

0

定时器1输出倒相位

[9]

0=倒相关闭,1=TOUT1倒相

0

定时器1手动更新位(*)

[8]

0=无操作,1=更新TCNTB1

0

定时器1启动位

[7]

0=无操作,1=启动定时器1

0

保留

[6:

5]

保留

死区功能允许

[4]

0=禁止,1=允许

0

定时器0自动重载on/off

[3]

0=定时器1运行1次

1=自动重载模式

0

定时器0输出倒相位

[2]

0=倒相关闭,1=TOUT0倒相

0

定时器0手动更新位(*)

[1]

0=无操作,1=更新TCNTB0

0

定时器0启动位

[0]

0=无操作,1=启动定时器0

0

4)定时器减法缓冲寄存器(TCNTBn)/比较缓冲寄存器(TCMPBn)

定时器减法缓冲寄存器(TCNTBn)/比较缓冲寄存器(TCMPBn)如表3.2所示。

表2.4定时器减法缓冲寄存器(TCNTBn)/比较缓冲寄存器(TCMPBn)

寄存器

R/W

描述

复位值

TCNTBn

R/W

定时器n减法缓冲寄存器

0x00000000

TCMPBn

R/W

定时器n比较缓冲寄存器

0x00000000

TCNTBn[15:

0]:

设置减法缓冲寄存器的值

TCMPBn[15:

0]:

设置比较缓冲寄存器的值

5)定时器观察寄存器(TCNTOn,地址:

0x5100000C~0x5100003C)

定时器观察寄存器如表2.3所示。

表2.5定时器观察寄存器

寄存器

地址

寄存器

地址

寄存器

地址

TCNTB0

0x5100000C

TCMPB0

0x51000010

TCNTO0

0X51000014

TCNTB1

0x51000018

TCMPB1

0x5100001C

TCNTO1

0X51000020

TCNTB2

0x51000024

TCMPB2

0x51000028

TCNTO2

0X5100002c

TCNTB3

0x51000030

TCMPB3

0x51000034

TCNTO3

0X51000038

TCNTB4

0x5100003C

--

--

TCNTO4

0X51000040

2.2基于S3C2410XPWM步进电机的硬件设计

2.2.1系统设计要求与方案确定

1.系统设计要求

<1>以S3C2410X为核心,设计一个PWM步进电机控制系统。

<2>通过按键控制PWM的占空比。

2.设计方案确定

硬件电路由4部分组成,即按键电路、时钟电路、复位电路、步进电机驱动电路。

2.2.2PWM步进电机的驱动电路原理

步进电机是一种将电脉冲化为角位移的执行机构。

通俗点讲,当步进电驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时还可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

本实验使用的电机驱动器是日本东芝公司的TA8435芯片,该芯片的功能如下:

(1)双向正弦曲线步进电机驱动器;

(2)输出电流平均值为1.5A,峰值为2.5A;

(3)PWM输入源;

(4)高电压Bi-CMOS处理技术;

(5)电机可双向转动;

(6)HZIP-25P封装;

(7)RESET端输入阻抗100kohm;

(8)输出电机控制电流正负2mA。

引脚功能如表2.6所示。

表2.6TA8435引脚功能

引脚

符号

功能描述

1

SG

信号地

2

RESET

低电平有效

3

ENABLE

低电平选通

4

OSC

由外部电容计算晶振频率

5

CW/CCW

顺时针方向/逆时针方向转动选择

6

CK2

时钟输入

7

CK1

时钟输入

8

M1

激励控制输入

9

M2

激励控制输入

10

REF

IN输入参考电压

11

MO

监听输出

12

NC

未连接

13

VCC

逻辑电源

14

NC

未连接

15

VMB

输出电压

16

B

输出B

17

PG-B

电源地

18

NFB

B通道输出电流检测

19

B

输出B

20

A

输出A

引脚

NFA符号

功能描述

21

NFA

A通道输出电流检测

22

PG-A

电源地

23

A

输出A

24

VMA

输出电源

25

NC

未连接

本实验用到的控制引脚有EN、CW/CCW、M2,机体链接电路如图2.4所示。

图2.4电机驱动和S3C2410X电路连接图

OUT1与OUT2、OUT3与OUT4连到电机的控制端,如图2.5所示。

2.3基于S3C2410XPWM步进电机的软件设计

2.3.1程序流程图

程序流程图如图2.6所示。

2.3.2应用程序设计

应用程序设计部分代码如下:

PWM-TEST.C

#include"44b.h"

#include”def.h”

/*函数声明*/

voidtimer0_int(void)__attribute__((interrupt("IRQ")));

voidtimer1_int(void)__attribute__((interrupt("IRQ")));

/*globalvariablees*/

intcTemp;

intcEnChange0,cEnChange1;

/*************************************************************

*定时器0函数

**************************************************************/

voidtimer0_int(void)

{

ClearPending(BIT_TIMER0);//清除挂起标志位

if(cEnChange0)

{

switch(cTemp)

{

case'1':

rTCNTB0=792;

rTCMPB0=396;

uart_printf("\nYouselected1\n");

break;

case'2':

rTCNTB0=792;

rTCMPB0=264;

uart_printf("\nYouselected2\n");

break;

case'3':

rTCNTB0=396;

rTCMPB0=132;

uart_printf("\nYouselected3\n");

break;

case'4':

rTCNTB0=396;

rTCMPB0=198;

uart_printf("\nYouselected4\n");

break;

default:

break;

}

cEnChange0=0;

}

}

/********************************************

*定时器1函数

*********************************************/

voidtimer1_int(void)

{

ClearPending(BIT_TIMER1);

if(cEnChange1)

{

switch(cTemp)

{

case'5':

rTCNTB1=792;

rTCMPB1=396;

uart_printf("\nYouselected5\n");

break;

case'6':

rTCNTB1=792;

rTCMPB1=264;

uart_printf("\nYouselected6\n");

break;

case'7':

rTCNTB1=396;

rTCMPB1=132;

uart_printf("\nYouselected7\n");

break;

case'8':

rTCNTB1=396;

rTCMPB1=198;

uart_printf("\nYouselected8\n");

break;

default:

break;

}

cEnChange1=0;

}

}

/*********************************************

*初始化PWM定时器0

*********************************************/

voidtimer0_init(void)

{

rGPBCON=rGPBCON&0xFFFFF0|(1<<3);

/*****设置中断处理程序******/

pISR_TIMER0=(unsigned)timer0_int;

pISR_TIMER1=(unsigned)timer1_int;

rTCFG0=(39<<8)|(39);//预分频器0/1=39,39

rTCFG1=(3<<4)|3;

rTCON=0;

}

/**********************************************

*PWM测试函数

***********************************************/

voidpwm_test(void)

{

uart_printf("\nPWMTestExample,%dtimes\n",g_nTimeout);

uart_printf("PressSB1203tochangethedirectionofthemotor\n");

//初始化定时器0

timer_init();

ClearPending(BIT_TIMER0);

ClearPending(BIT_TIMER1);

/*******初始化PWM定时器0寄存器*******/

rTCNTB0=792;

rTCMPB0=396;

rTCNTB1=792;

rTCMPB1=396;

rTCON|=(1<<10)|(1<<9)|(1<<2)|(1<<1);//手动更新

delay(10);

rTCON&=~((1<<9)|(1<<1));//自动重装

ClearPending(BIT_TIMER0);

ClearPending(BIT_TIMER1);

rINTMSK&=~(BIT_TIMER0|BIT_TIMER1);

rTCON|=(1<<11)|(1<<3)|(1<<8)|1;//启动定时器,自动重装

g_nKeyPress=1;

while(1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1