实验题目类型:设计型
《电机与拖动》实验报告
实验题目名称:直流电动机实验
实验室名称:电机及自动控制实验室
实验组号: 1组指导教师:
报告人:学号: 201317104022
实验地点:科技楼605 实验时间:
指导教师评阅意见与成绩评定
年5月30日 2015
第二篇:linux实验报告2.9(直流电机实验)
嘉应学院电子信息工程学院学生实验报告
班级: 082班 座号: 姓名: 成绩: 课程名称:嵌入式Linux应用程序开发标准教程
实验项目:直流电机实验
一、实验目的
1、熟悉ARM 本身自带的PWM,掌握相应寄存器的配置。
2、Linux 下编程实现ARM 系统的PWM 输出,从而控制直流电机。
3、了解直流电机的工作原理,学会用软件的方法实现步进电机的脉冲分配。
3、掌握带有PWM 的CPU 编程实现其相应功能的主要方法。
二、实验内容
学习直流电机的工作原理,了解实现电机转动对于系统的软件和硬件要求。学习ARM PWM 的生成方法。使用Redhat Linux 9.0 操作系统环境及ARM 编译器,编译直流电机的驱动模 块和应用程序。运行程序,实现直流电机的调速转动。
三、预备知识
C 语言的基础知识、程序调试的基础知识和方法,Linux 的基本操作。Linux 关于module 的必要知识。
四、实验设备及工具
硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC机Pentium 500 以上,硬盘10G以上 软件:PC 机操作系统REDHAT LINUX 9.0+MINICOM+ARM LINUX 开发环境
五、实验原理
1、直流电动机的PWM 电路原理
晶体管的导通时间也被称为导通角а,若改变调制晶体管的开与关的时间,也就是说通过 改变导通角а 的大小,如图2.9.1 所示,来改变加在负载上的平均电压的大小,以实现对电 动机的变速控制,称为脉宽调制 (PWM)变速控制。在PWM 变速控制中,系统采用直流电 源,放大器的频率是固定,变速控制通过调节脉宽来实现。
构成PWM 的功率转换电路或者采用"H"桥式驱动,或者采用 "T"式驱动。由于"T"式电路 要求双电源供电,而且功率晶体管承受的反向电压为电源电压的两倍。因此只适用于小功 率低电压的电动机系统。而"H"桥式驱动电路只需一个电源,功率晶体管的耐压相对要求 也低些,所以应用得较广泛,尤其用在耐高压的电动机系统中。
脉宽调制 (PWM)变速
嘉应学院电子信息工程学院学生实验报告
2、直流电动机的PWM 等效电路
如图2.9.2 a 所示:是一个直流电动机的PWM 控制电路的等效电路。在这个等效电路中, 传送到负载 (电动机)上的功率值决定于开关频率、导通角度及负载电感的大小。
开关频率的大小主要和所用功率器件的种类有关,对于双极结型晶体管(GTR),一般为lkHz 至5kHz,小功率时(100W,5A 以下)可以取高些,这决定于晶体管的特性。对于绝缘栅双 极晶体管(IGBT),一般为5kHz 至l2kHz;对于场效应晶体管(MOSFET),频率可高达2OkHz。 另外,开关频率还和电动机电感有关,电感小的应该取得高些。
等效电路 PWM 电路中电流和电压波讨论
当接通电源时,电动机两端加上电压UP,电动机储能,电流增加,当电源中断时,电枢 电感所储的能量通过续流二极管VD 继续流动,而储藏的能量呈下降的趋势。
除功率值以外,电枢电流的脉动量也与电动机的转速无关,仅与开关周期、正向导通时间 及电机的电磁时间常数有关。
六、程序分析
Linux 下的直流电机程序包括模块驱动程序和应用程序两部分。Module 驱动程序实现了以 下方法:
static struct file_operations s3c2410_dcm_fops = { owner: THIS_MODULE, open: s3c2410_dcm_open, ioctl: s3c2410_dcm_ioctl, release: s3c2410_dcm_release, };
开启设备时,配置IO 口为定时器工作方式:
({ GPBCON &=~ 0xf; GPBCON |= 0xa; })
配置定时器的各控制寄存器:
({ TCFG0 &= ~(0x00ff0000);
TCFG0 |= (DCM_TCFG0); TCFG1 &= ~(0xf); TCNTB0 = DCM_TCNTB0; /* less than 10ms */ TCMPB0 = DCM_TCNTB0/2; TCON &=~(0xf); TCON |= (0x2); TCON &=~(0xf);
\ \
\ \ \ \ \ \
嘉应学院电子信息工程学院学生实验报告
TCON |= (0x19); })
在s3c2410_dcm_ioctl 中提供调速功能接口:
case DCM_IOCTRL_SETPWM:
return dcm_setpwm((int)arg);
应用程序dcm_main.c 中调用:
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
实现直流电机速度的调整。
七、实验步骤
1、编译直流电机模块
cd /arm2410cl/kernel-2410classic
make menuconfig
进入Main Menu / Character devices 菜单,选择DC MOTOR 为模块加载:
编译内核模块:
make dep
make
make modules
直流电机模块的编译结果为:
/arm2410cl/kernel/linux-2.4.18-2410cl/drivers/char/s3c2410-dc-motor.o
2、编译应用程序
cd /arm2410cl/exp/basic/09_dcmotor/
make
生成dcm_main
3、运行程序
在超级终端中,通过加载NFS 运行编译结果(注意:首先要设定/arm2410cl 为NFS 共享 目录):
mount –t nfs 192.168.0.xxx:/arm2410cl /host
insmod /host/exp/basic/09_dcmotor/driver/ dc-motor.o
cd /host/exp/basic/09_dcmotor/
嘉应学院电子信息工程学院学生实验报告
./dcm_main
程序运行结果:直流电机变速转动。
........
setpwm = -265
setpwm = -266
setpwm = -267
setpwm = -268
setpwm = -269
setpwm = -270
setpwm = -271
setpwm = -272
setpwm = -273
......
setpwm = 290
setpwm = 291
setpwm = 292
setpwm = 293
setpwm = 294
setpwm = 295
setpwm = 296
setpwm = 297
setpwm = 298
......
屏幕显示转速。