直流电机控制实验。
指导老师:王念桥。
学生姓名:王占龙。
学号:完成时间:2011/11/22
直流电机控制实验。
一。系统设计背景介绍。
通过对《arm9嵌入式系统设计》这门课程的学习,掌握了一些嵌入式系统设计的基本知识;结合以前学过的c语言的编程知识,并查阅相关资料,设计出此程序。
二。系统总体设计方案。
系统总体上来说是以直流电机的控制为基础,实现四级调速。在此基础上添加一些新功能,例如led显示速度和蜂鸣器报警提示。通过这样一个简单程序的设计,加深对嵌入式系统设计思路、方法、过程的理解。
三。系统具体设计。
1)系统需求分析。
1、利用按键控制arm输出一定占空比的pwm波形,同时用此波形信号驱动直流电机。
2、pwm共分四个不同的占空比,且每按一次按键改变一次。
3、为了指示当前pwm输出的占空比驱动直流电机的值,用四个led等指示当前状态。当占空比为1/4时,第一个灯亮;占空比为2/4时点亮第二个灯。以此类推,主要用移位的思想实现。
当实现一次周期调速时就用蜂鸣器响一声。
2)硬件设计。
本实验基于magicarm2410 嵌入式教学实验开发平台,采用arm9作为主控制器,以cos-ii操作系统作为系统平台,使用code warrior开发环境作为开发工具。设计上,选择arm2410 嵌入式实验平台作为主控制器构成硬件平台,主要利用其丰富的外部接口和系统本身的直流电机,按键和蜂鸣器等资源来达到实时给直流电机信号、及时处理信号、快速传输信号、达到控制电机的四级控制并能直观地通过观察开发板上的led灯对电机的当前运行状态进行掌握的目的。
3)软件设计。
系统流程图:
1 总体程序设计思路。
本程序采用查询方式,在主函数中调用waitkey(void),runbeep(void),pwm_init(uint16 cycle, uint16 duty),led_dispnum(uint32 dat)这几个子函数实现分级控制实时监控直流电机的目的。
2 子程序设计。
1、端口定义:新定义了四个显示led灯的端口和驱动蜂鸣器的端口。
2、对于led灯显示,定义了void led_dispnum(uint32 dat)函数,控制灯显示,其中led1为最低。
3、对于蜂鸣器,定义了void runbeep(void)函数,用于驱动蜂鸣器响。
4、在主函数(main)中,新定义了 uint8 i;用来指示当前点亮的灯的对应位。
5、把初始时电机的级别改变为第一级,同时点亮第一个灯。
6、新增加了端口定义:
// 初始化i/o
rgpecon = rgpecon & 0x0f<<22)))0x05<<22); rgpecon[25:22] =0101b,设置gpe11、gpe12为gpio输出模式。
rgphcon = rgphcon & 0x33<<8)))0x11<<8rgphcon[13:8] =01xx01b,设置gph4、gph6为gpio输出模式。
rgphcon = rgphcon & 0x03<<20)))0x01<<20); rgphcon[21:20] =01b,设置gph10为gpio输出模式。
具体子程序(1)void runbeep(void)
rgphdat = rgphdat & beep_maskbeep = 0
delayns(5);
rgphdat = rgphdat | beepbeep = 1
delayns(5);
2)void waitkey(void)
uint32 i;
while(1)
while((rgpfdat&key_con) !key_con等待按键放开。
3)void pwm_init(uint16 cycle, uint16 duty)
// 参数过滤。
if(duty>cycle) duty = cycle;
// 设置定时器0,即pwm周期和占空比。
// fclk=200mhz,时钟分频配置为1:2:4,即pclk=50mhz。
rtcfg0 = 97预分频器0设置为98,取得hz
rtcfg1 = 0timer0再取1/2分频,取得hz
rtcmpb0 = duty设置pwm占空比。
rtcntb0 = cycle; /定时值(pwm周期)
if(rtcon&0x04) rtcon = 1<<1更新定时器数据 (取反输出inverter位)
else rtcon = 1<<2)|(1<<1
rtcon = 1<<0)|(1<<3启动定时器。
4)void led_dispnum(uint32 dat)
dat = dat & 0xf; /参数过滤。
// 控制led4、led3显示(d3、d2位)
if(dat & 0x08) rgphdat = rgphdat | 0x01<<6);
else rgphdat = rgphdat & 0x01<<6));
if(dat & 0x04) rgphdat = rgphdat | 0x01<<4);
else rgphdat = rgphdat & 0x01<<4));
// 控制led2、led1显示(d1、d0位)
rgpedat = rgpedat & 0x03<<11)))dat&0x03) <11);
3.主程序
附在小组实验报告源程序里)
四。程序调试与执行。
由于实验程序比较简短,调试的过程中并未发现大的错误。
程序调试完成后,在**软件上运行,完成了系统需求里所要求的各项功能。
五.个人设计总结。
首先,读懂所给的基础实验源程序,结合实验要求,提出设计思路,得出具体设计方案。在调试的过程中,对于程序出现的问题,一起讨论解决,提出了一些好的建议。
其次,通过这次实验,通过和小组成员的协同合作,对嵌入式系统设计的大致过程有一个比较清晰地认识:提出系统需求,构思程序框图,编写具体程序,调试执行… 同时,加深了对嵌入式系统的相关知识的理解,为以后参加更大规模的程序设计奠定了基础。
六。教学建议。
由于老师参加过很多实际的项目设计,上课的时候给我们举了很多面向生活的方方面面的例子,让我深深地感受到嵌入式系统应用的广泛性和重要性!但是由于课时比较少,感觉刚开始进入就要结束了。希望可以增加些课时,多组织一些实验。
如果课时增加不了,希望老师能就某些问题讲得更深入些。如果掌握不全面那就局部掌握深一点吧,这样印象可能会深点。
嵌入式系统课程设计报告
嵌入式系统。课程设计报告。设计任务一十字路 通灯控制。一 设计目的 1 了解基于arm7核的lpc2106的管脚功能和特点,掌握i o控制寄存器的设置方法 2 掌握arm7应用系统编程开发方法,能用c语言编写应用程序 3 熟练掌握ads1.2软件的使用以及proteus 调试的方法 二 具体任务 1...
嵌入式系统课程设计报告
题目 基于skyeye的嵌入式linux系统设计 2013 2014第2学期。院系 电子通信工程系 姓名 张衡 专业 通信工程 学号 111307334 指导老师 赵成 电子通信工程系。2014年5月制。目录。一 引言。二 设计目的。三 设计要求。1 建立vmware虚拟机。2 安装linux rh...
嵌入式系统课程设计报告
课程设计。采用模块化设计方法设计出一款基于arm微控制芯片和linux操作系统的楼宇对讲系统,该对讲系统通过以太网与楼宇间的各室内机相连,实现了安装在楼道门口的终端机与各室内机的ip对讲,同时将访客的 信息传输到室内机,并采用指纹身份识别技术实现了门控系统管理。关键词 嵌入式系统设计 楼宇对讲 指纹...