实验一直流步进电机综合控制系统设计.docx

上传人:b****3 文档编号:26700848 上传时间:2023-06-21 格式:DOCX 页数:12 大小:213.06KB
下载 相关 举报
实验一直流步进电机综合控制系统设计.docx_第1页
第1页 / 共12页
实验一直流步进电机综合控制系统设计.docx_第2页
第2页 / 共12页
实验一直流步进电机综合控制系统设计.docx_第3页
第3页 / 共12页
实验一直流步进电机综合控制系统设计.docx_第4页
第4页 / 共12页
实验一直流步进电机综合控制系统设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验一直流步进电机综合控制系统设计.docx

《实验一直流步进电机综合控制系统设计.docx》由会员分享,可在线阅读,更多相关《实验一直流步进电机综合控制系统设计.docx(12页珍藏版)》请在冰豆网上搜索。

实验一直流步进电机综合控制系统设计.docx

实验一直流步进电机综合控制系统设计

南昌大学实验报告

学生姓名:

学号:

专业班级:

实验类型:

□验证□综合■设计□创新实验日期:

实验成绩:

综合实验一、直流、步进电机综合控制系统设计

一、实验目的

1、初步熟悉实验GPIO口的初始化设置,并熟悉实验箱各个模块的功能;

2、掌握步进机的控制原理及利用延时脉冲来改变步进电机速度;

3、掌握直流电机的控制原理及利用pwm占空比控制来改变速度;

4、学习IIC总线读取和写数据原理,并掌握对CAT1025E2PROOM操作方法;

5、学会控制数码管的显示UART串口函数,并初步掌握中断处理函数的写法;

二、实验基本原理

基于S3C2440处理器分别控制LED灯闪烁,串口打印,RTC显示,步进电机控制和直流电机控制以及EEPROM的读写。

由于S3C2440自带串口模块,RTC模块和EEPROM模块,配置好相应的寄存器值就可控制好各种外设。

(一)GPIO口设置

S3C2410A具有117个通用I/O口,分为A—H等8个端口,由于每个I/O口都有第2功能,甚至第3功能,所以需要通过设置GPxCON寄存器来选择GPx口I/O口功能,其中x可以为A、B、C、D、E、F、G表示相应的I/O端口。

当I/O口设置为GPIO输出模式(Output模式)时,可以通过写GPxDAT控制相应I/O口输出高电平或低电平,GPxDAT为1的位对应I/O输出高电平,为0的位对应输出低电平。

(二)串口设置

工程模板中包含有串口软件包UART.C,用户可以调用相应的接口函数进行串口数据发送和接收,串口的波特率需要在config.h文件中进行设置,本实验使用默认的115200波特率。

对串口进行初始化时,首先要设置相应I/O口为TXD0,TRD0功能引脚,然后通过ULCON0来设置通讯波特率。

设置UCON0寄存器时,要设置串口工作模式为查询模式,即UCON[3:

0]应为0101b。

(三)RTC设置

S3C2410A具有实时时钟(RTC)功能,能够提供时、分、秒,年、月、日的计时功能,还具有定时报警功能。

RTC单元采用独立的后备电池供电,独立是时钟源(采用32.768KHz晶振),即使系统关闭电源,RTC还可以正常工作。

要初始化RTC的时间值,首先要给RTCON寄存器写为0x01,使能RTC接口(即允许写RTC操作),然后对年寄存器BCDYEAR、月寄存器BCDMON、日寄存器BCDDATE、时寄存器BCDHOUR、分寄存器BCDMIN、秒寄存器BCDSEC、星期寄存器BCDDAY进行初始化,时间值为BCD格式。

初始化完成,将RTCCON寄存器写为0x00,禁能RTC接口(即禁止写RTC操作),接下来就可以直接读取RTC时间寄存器的值来使用了。

(四)加减乘除测试

在UART通讯试验的基础上,用C编程实现两位数的加减乘除,通过选择输入两个两位数进行相应运算,将运算过程及结果显示在超级终端上。

对于加法,两个两位数的和最多是三位,设置三个加法子函数分别显示和的百位、十位和个位;

对于减法,两个两位数的差最多两位,所以设置两个减法子函数分别显示差的十位和个位,在做减法之前,先判断被减数和减数的大小,当减数大的时候在差的最前面添加一个负号;

对于乘法,两个两位数的积最多是四位,因此设置四个乘法子函数分别显示乘积的千位、百位、十位和个位;

对于除法,两个两位数相除最多产生两位数的商,因此设置二个除法子函数,两个分别显示商的十位和个位。

(四)步进电机

步进电机是一种将电脉转化为角位移的数据控制电机,即给它一个脉冲信号,它就按设定的方向转动一个固定的角度。

用户可以通过设置脉冲的个数来控制角位移量,从而实现准确的定位操作;另外,通过控制脉冲频率来控制电机转动速度和加速度,从而实现调速的目的。

当然,对于步进电机各组绕组(即内部线圈)的控制脉冲要有一定的顺序,否则电机无法正常旋转。

MagicARM2410试验箱上的步进电机为四项步进电机,电机驱动为18°。

S3C2410A的GPIO驱动能力有限,必须通过ULCN2003达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路之间连接了电阻,防止控制紊乱造成电机的损坏。

本工作模块使用的步进电机的步进角是18°,由于步进电机旋转角度与输入脉冲数目成正比,所以输入20个脉冲信号,步进电机就会旋转20个步进角,且刚好转一圈(20*18°=360°)。

旋转一圈的时间是60s/30圈=2s,旋转一个步进角的时间是2s/20=100ms(每圈20个步进角)。

也就是说给一个脉冲信号,旋转一个步进角,延时100ms,再给一个脉冲信号,旋转一个步进角,延时100ms,这样就可以获得转速为30转/分。

同理:

把延时时间改为50ms可以使转速变为60转/分。

(五)直流电机

直流电机的控制相对较为简单。

调节PWM的分频,占空比等改变PWM的输出,最终实现电机的调速。

根据电路图可以,当TOUT0为低电平的时候,电机反转或者停机;当TOUT0为高电平的时候,电机反转,正转,停机。

S3C2410A具有四路PWM输出,输出口分别为TOUT0-TOUT3其中两路带有死区控制功能。

为了能正确输出PWM信号,需要正确设置GPBCON寄存器选择相应的I/O的TOUTx功能。

然后,通过TCFG0寄存器为PWM定时器时钟源设置预分频值,通过TCFG1寄存器选择PWM定时器时钟源。

接着,通过TCNTB0寄存器设置PWM周期,通过TCMPB0设置PWM占空比。

最后,通过TCON寄存器启动PWM定时器,即可输出PWM信号。

(六)IIC总线及I/O接口

S3C2410A具有一个硬件I/O接口,可以配置为主发送、主接收、从发送和从接收等4种工作模式。

I/O接口包含4个寄存器,控制寄存器IICCON用于设置IIC总线时钟和中断(标志)使能,还有一位中断标志位;状态寄存器IICSTAT除了指示当前IIC总线状态外,还有2位IIC操作模式控制位和总线启动/结束控制位;数据寄存器IICDS用来发送数据或接收数据;从机地址寄存器IICADD用来保存S3C2410A作从机时的器件地址。

对IIC接口进行初始化时,首先要设置相应的I/O为IICSDA、IICSCL功能引脚,然后通过对IICCON寄存器来设置IIC总线时钟,并使能IIC中断(标志),通过IICSTAT寄存器来设置IIC接口为主发送模式。

(七)外部中断

外部中断设置GPF4引脚为外部中断EINT4功能,下降沿触发方式。

初始化S3C2410A中断控制器,设置EINT4为IRQ中断,并使能中断允许。

初始化完成后,等待外部中断产生。

(八)设计过程

本实验为多个实验的综合,可先编辑好各个函数后,在主函数中用条件选择分为5种情况,分别调用实验要求的5种功能函数:

一是实现四个LED灯按照十六进制的规则依次亮灭,主要是在各LED灯按16进制在其相应GPxDAT上写1或0;二是编写加减乘除函数,数据在超级终端上一位一位发送的,要考虑到各种结果的最大可能位数,运算时将接收到的ASCⅡ码转化为相应数字进行运算,发送结果时将各位数对应的ASCⅡ码,从最高位到最低位逐位发送出来,在超级终端上显示的就是其操作结果;三是显示当前系统时间值,调用基础实验中关于RTC实验SendRTC工程中的函数实现;四是控制步进电机速度及方向,本实验通过使用GPIO控制步进电机转动,采用双四拍控制方式,设置两个标志位分别控制方向和速度;五是直流电机靠占空比调节其转速,初始化PWM输出,控制直流电机转动速度,利用独立按键KEY实现速度调节,当速度增大到某个级别时反转,速度再逐渐变小至停止。

三、主要仪器设备及耗材

MAGIC2410开发平台,H-JTAG,PC机各一台

四、实验步骤

1.启动ADS1.2,将实验所需的所有头文件到本实验的工程中。

2.分别编写各个子程序(菜单列出的各项)。

3.在src组中的main.c中编写主程序。

在main.c中修改程序,使用下面程序语句在超级终端上列出选项pleaseselectthefollowing5virtues:

A.LED

B.Maths

C.Time

D.StepMoto

E.DCMoto

使用语句g_getch=UART_GetKey();接收字符,使用语句UART_SendByte(g_getch);发送接收到的字符,使用while循环,嵌入条件选择语句,根据输入的字符选择相应的功能测试

while

(1)

{UARTSend();

g_getch=UART_GetKey();//接收字符

if(g_getch=='A')//判断是否为第一公能

{UART_SendStr("YOUHAVESELECTEDTHEFIRSTVIRTUE!

\n");

function_a();}

elseif(g_getch=='B')//判断是否为第二公能

{UART_SendStr("YOUHAVESELECTEDTHESECONDVIRTUE!

\n");

function_b();}

elseif(g_getch=='C')//判断是否为第三公能

{UART_SendStr("YOUHAVESELECTEDTHETHRETHVIRTUE!

\n");

function_c();

}

elseif(g_getch=='D')//判断是否为第四公能

{UART_SendStr("YOUHAVESELECTEDTHEFOURTHVIRTUE!

\n");

function_d();

}

elseif(g_getch=='E')//判断是否为第五公能

{UART_SendStr("YOUHAVESELECTEDTHETHRETHVIRTUE!

\n");

function_e();}

else

{UART_SendStr("YOUHAVENOTSELECTEDONEVIRTUE!

\n");}}

4.选用DebugRel生成目标,然后编译连接工程。

5.接好跳线,打开电源。

6.选择【Project】->【Debug】启动AXD进行JTAG仿真测试。

(安装H-JTAG软件并打开,将H-JTAG和2410的初始化文件添加到AXD的configure中)

7.打开超级终端,进行实验功能测试。

 

五、实验流程图

图1主程序流程图

六、实验数据及结果:

本程序有五个选择功能,以下是主页面显示:

图2主页面

1、选择功能A,四个LED灯按十六进制规则依次亮灭:

图3LED显示

2、选择功能2,输入两个两位数,实现加减乘除并显示运算结果:

图4加减乘除运算

 

3、选择功能3,显示时间:

图5RTC时间显示

 

4、选择功能D,实现步进电机转速和方向(在超级终端输入方向和速度,如L,1,表示向左转,速度是1):

图6步进电机系统

5、实现直流电机调速和正反转:

图7直流电机系统

七、实验总结

在前面做过的基础实验的基础上,第一个综合实验并不难,本程序包含了五个基本功能:

LED十六进制亮灯、两位数的加减乘除、RTC时间显示、控制步进电机转速及方向、控制直流电机转速及方向。

本实验是一个通过串口通信交互控制的综合系统,通过超级终端来选择相应的功能并结合独立按键KEY一起运作,每实现一个功能,能自动跳出循环进行下一次的选择;在控制直流电机时,按键可以控制转速,每按一次既能重新进行一次选择,也能给电机进行加速,当加到某个级时会反转,在减速至停止,若不想再执行此功能,可以通过选择退出循环再重新进行选择。

在本次实验中,对基础实验的融合是整个实验的基础,可以通过在src中加入多个函数以便主函数调用,而调用通过主函数中的if语句进行选择实现:

一是LED灯的全亮和按照十六进制显示是通过GPIO输出控制实现的。

显示十六进制数值时,LED1为最低位,LED4为最高位;二是两位数的四则运算;三是RTC时间显示,定义初始化时钟值时要注意初始化时间(年月日时分秒)是以BCD码的形式存储在相应寄存器中的(由于实验箱的原因,时间并未正常显示);四是控制步进电机转向及转速。

若将AB--BC--CD--DA--AB看做步进电机正转的话,则反转的顺序就是AD--DC--CB--BA--AD。

实验中定义两个标志位,分别控制方向跟速度,分别发送相应的字符到超级终端后控制电机;五是直流电机的转速和方向通过PWM信号控制,通过改变占空比就能观察到电机方向改变;本实验的返回是通过程序中每运行一个功能后的重新选择,选择否则退出当前功能,再回到主页面重新选择。

通过做综合实验,能学到更多的东西,它的难度虽然比较大,但是通过实践并最后做出实验,很有成就感,同时也很感谢老师在实验中的指导。

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

当前位置:首页 > 农林牧渔 > 林学

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

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