基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计

上传人:aa****6 文档编号:29220124 上传时间:2018-01-22 格式:DOCX 页数:9 大小:232.11KB
返回 下载 相关 举报
基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计_第1页
第1页 / 共9页
基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计_第2页
第2页 / 共9页
基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计_第3页
第3页 / 共9页
基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计_第4页
第4页 / 共9页
基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计》由会员分享,可在线阅读,更多相关《基于嵌入式ARM+Linux平台的直流电机调速控制系统的设计(9页珍藏版)》请在金锄头文库上搜索。

1、题 目 基于嵌入式 ARM+Linux 平台的直流电机调速控制系统 1基 于 嵌 入 式 ARM+Linux 平 台 的 直 流 电 机 调 速控 制 系 统 的 设 计摘 要本设计基于北京博创兴业科技有限公司开发的 UP-NETARM2410-S 嵌入式实验平台,它采用 ARM7TDMI 内核的三星 S3C44B0X01 芯片,且采用RedHatLinux9.0 作为它的操作系统。设计了调速控制系统,并实现驱动程序对直流电机的控制,电机的转动情况会通过实验箱上的 AD 模块中电位器的旋转不同而变化。在 UP-NETARM2410-S 嵌入式实验平台上的实验结果表明系统运行正常、稳定。关键词:

2、ARM;Linux;直流电机;驱动2一、设计要求采用实验箱上的电位器作为信号输入器件,控制直流电机的运转方向和运转速度。电位器处于中间值时,电机停止不转,电位器顺时针调大时电机顺时针旋转,且速度随着电位器的旋转而增加。电位器向逆时针转动调小时,电机逆时针旋转,且速度随着电位器旋转的角度增加。电位器转到最大或最小值时,电机的速度应该达到最高速度。电位器在中间位置时,电机不应该出现抖动情况。二、Linux 开发环境设置 1、建立工作目录roothome# mkdir zgcroothome# cd zgc2、编写程序源代码在 Linux 下的文本编辑器有许多,常用的是 vim 和 Xwindow

3、界面下的gedit 等,在本次开发过程中使用 vim,我们可以是用下面的命令来编写dcm_main.c 的源代码,进入 10_dcmotor 目录使用 vi 命令来编辑代码:root 10_dcmotor# vi dcm_main.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为 dcm_main.c 的文件。3、编写 Makefile要使上面的 dcm_main.c 程序能够运行,我们必须要编写一个 Makefile 文件,Makefile 文件定义了一系列的规则,它指明了哪些文件需要

4、编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用 Makefile 的优越性,但当工程比较大文件比较多时,不使用 Makefile 几乎是不可能的。下面是本次实验用到的 Makefile 文件。CC = armv4l-unknown-linux-gcc#CC = gcc3LDFLAGS = -staticEXEC = nihaoOBJS = hello.oall: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS)

5、 -o $ $(OBJS)clean:-rm -f $(EXEC) *.elf *.gdb *.o4、编译应用程序在上面的步骤完成后,我们就可以在 hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行:root10_dcmotor# make cleanroot10_dcmotor# make三、系统设计1、设计思路根据设计要求,先分别对实验箱上 AD 程序和电机程序进行调试并熟练,然后在电机主程序中加入 AD 模块及线程,将 AD 模块的电位器转动角度转换成的电压幅度的 1024 倍作为电机转动的 pwm 值。这样即可以满足设计要求。2、硬件流程框图对直流电机

6、进行调速和控制,需经过 AD 模块,在 linux 操作系统中,在电机中加载 AD 程序后,挂载到实验箱程序。电脑通过串口把执行的程序命令发给S3C44B0X01 处理器,在处理器中通过分析数据。手动调节 AD 模块中电位器后,处理器收到相应信号,并发命令给电机,使电机的转动做出相应的调整。硬件流程框图如图 1 所示。4图 1 硬件流程框图3、软件设计及调试虽然实验室的 arm s3c2410 开发箱已经搭建好开发环境,可是这一部还是必须得熟悉的,首先是 BootLoader 的移植,然后再进行 LINUX 内核移植。在宿主机的 linux 下需要搭建 Linux 交叉编译环境,用于应用程序的

7、开发和编译。将硬件系统设计好之后,必须开发、加载直流电机的驱动程序,驱动设备开发商都已经提供,只需要 insmod 到目标机上,即可编程操作这些设备。dcm_main.c 程序中主要实现代码:/*/int main(int argc, char *argv)float d;pthread_t th_com;void *retval;int i = 0;int status = 1;int setpwm = 0;int factor = DCM_TCNTB0/1024;if(init_ADdevice()=1.8)d=d*1024.0-1.8*1024.0;setpwm =-d;else set

8、pwm=0;/在中间范围内电机静止 ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor);Delay(500);printf(setpwm = %d n, setpwm);pthread_join(th_com, close(dcm_fd);return 0;软件流程框图如图 2 所示6图 2 软件流程框图四、测试结果将程序挂载后运行 dcm_main.c,手动转动实验箱上 AD 模块的电位器 k1,直流电机会做出相应的变动,处理器将电位器转动对应的电压值和直流电机转动对应的 pwm 值通过实验箱的串口发回到电脑的 linux 的 minicom

9、 运行环境中。1、电位器调到其对应的电压值大于 1.8v 时,直流电机顺时针转动,且电位器顺时针调大时,电机速度随着电位器的旋转而增加。电位器转到最大时,电机的速度达到最高速度。7图 3 实验箱上电机正转时电位器转动对应的电压值和电机转动对应的 pwm 值2、电位器调到其对应的电压值小于 0.5v 时,直流电机逆时针转动,电位器向逆时针转动调小时,电机速度随着电位器的旋转而增加。电位器转到最小值时,电机的速度达到最高速度。8图 4 实验箱上电机逆转时电位器转动对应的电压值和电机转动对应的 pwm 值3、电位器调到其对应的电压值处于中间值时,电机停止不转。图 5 实验箱上电机静止时电位器转动对应的电压值和电机转动对应的 pwm 值9参考文献1 刘宝廷,程树康,等步进电机及其驱动控制系统M哈尔滨:哈尔滨工业大学出版社 1997 2 华清远见嵌入式培训中心嵌入式 Linux C 语言应用程序设计M北京:人民邮电出版社 20073 北京博创科技 ESTC 培训中心.2410-S 实验指导书. 北京博创公司.2005.104 韦东山嵌入式 Linux)立用开发完全手M北京:人民邮电出版社,20085 李亚锋,欧文盛等.ARM 嵌入式 LINUX 系统开发从入门到精通.北京: 清华大学出版社 2007.6 周立功,等ARM 微_控制器基础与实践M北京:北京航天航空大学出版社,2003

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号