基于ZYNQ芯片的外设驱动技术方案

基于ZYNQ芯片的外设驱动技术方案
基于ZYNQ芯片的外设驱动技术方案

一、BootLoader的移植制作 (2)

1、生成uboot.elf文件 (3)

2、system.bit生成 (5)

3、创建fsbl (8)

4、生成BOOT.BIN (9)

二、配置并编译linux内核 (10)

1、修改设备树内容 (10)

2、配置编译linux内核 (12)

三、Linux设备驱动移植 (14)

1、Linux设备驱动模型 (14)

2、Linux设备驱动移植 (15)

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于zynq的嵌入式Linux系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

想要在zynq芯片上顺利启动Linux并且驱动相关模块正常工作,首先需要正确移植BootLoader。作为初始化硬件平台的一段Bare Metal代码,Bootloader的移植也并入了我们的工作。所以综合起来说,我们的工作主要分为了三个部分:Bootloader的移植以及Linux内核和设备驱动的移植。

在进行移植工作之前,首先要做的是要在宿主机上面搭建好我们目标板的开发平台,以及下载好uboot源代码,Linux内核源代码以及相关驱动源代码。(有的模块的驱动源代码在Linux内核源代码中已经包含进去了,那么就不用单独下载。需要下载的驱动源代码只是针对标准Linux内核中不支持的部件而言。)

一、BootLoader的移植制作

每一种操作系统都需要有自己的引导程序,最为人们所知的就是Windows 的BIOS。缺失了这一部分,系统将无法正常启动。对比与Windows的BIOS,android系统拥有自己的专属的BootLoader,它主要负责初始化系统平台的硬件设备,建立内存空间的映射关系。在它完成初始化工作之后,继续负责把内核镜像和yaffs2格式的文件系统从SD卡载入到RAM中,完成Linux内核和文件系统的加载并设置内核的启动参数,紧接着启动内核。等到内核真正启动了之后,BootLoader就杀死自己,把CPU让出给内核使用。之后内核根据硬件环境做出系统初始化设置,并将CPU转让给yaffs2文件系统运行管理。至此,Linux系统成功的启动起来。下图1为bootloader的启动过程。

图1 BootLoader 启动流程

在我们移植的BootLoader 中,由于XC7Z020-CLG484-1包含了可编程逻辑(PL )和处理系统(PS )两个部分,所以它的启动过程与一般的BootLoader 稍有不同。BootLoader 在它的启动过程中需要负责配置可编程逻辑(PL )和处理系统(PS )这两个部分。使用Xilinx 官方提供的SDK 生成的BOOT.BIN 文件包含了fsbl(first stage boot loader)文件、system.bit 文件和uboot.elf 文件,其中fsbl 文件主要用来加载system.bit 并且配置处理系统(PS ),而system.bit 文件起到了配置可编程逻辑(PL )的作用,注意该文件其实并不是必要的,如果在生成BOOT.BIN 的过程中缺少该文件,那么PL 部分得不到配置,那么我们只是相当于把XC7Z020-CLG484-1当成ARM 来使用。之后系统开始加载ssbl(second stage boot loader)到RAM 中,即uboot.elf 文件,它主要作用是加载内核镜像到RAM 中。如下图所示。

1、生成uboot.elf 文件

Uboot 源码的主要目录及其描述

上电

基本硬件初始化

读取loader 信息计算loader 的二进制checksum 检测checksum 的正确性

检测是否有内核文件

扩展功能所需硬件初始化拷贝内核镜像至SDRAM

跳转至内核镜像

正确

输出错误信息

错误

进入下载

模式

上电基本硬件初始化读取loader 信息计算loader 的二进制checksum 检测checksum 的正确性检测是否有内核文件扩展功能所需硬件初始化拷贝内核镜像至SDRAM 跳转至内核镜像正确有输出错误信息错误进入下载模式无2

1

2

BOOT.BIN

FSBL

system.bit

uboot

加载system.bit

配置PS 配置PL

加载内核镜像

cpu 与处理器相关的文件。每个子目录中都包括cpu.c 和interrupt.c、start.S、u-boot.lds。

cpu.c:初始化CPU、设置指令Cache和数据Cache 等

interrupt.c:设置系统的各种中断和异常start.S :是U-boot启动时执行的第一个文件,它主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。

u-boot.lds:链接脚本文件,对于代码的最后组装非常重要。

board 已经支持的所有开发板相关文件,其中包含SDRAM 初始化代码、Flash底层驱动、板级初始化文件。其中的config.mk文件定义了TEXT_BASE,也就是代码在内存的实际地址,非常重要。

common 与处理器体系结构无关的通用代码,U-boot的命令解析代码/common/command.c、所有命令的上层代码cmd_*.c、U-boot环境变量处理代码env_*.c 等都位于该目录下

drivers 包含几乎所有外围芯片的驱动,网卡、USB、串口、LCD、Nand Flash等等

include 头文件,包括各CPU的寄存器定义,文件系统、网络等等

configs子目录下的文件是与目标板相关的配置头文件

根据上表可知,在进行uboot移植的过程中需要把相关目录下与目标平台相关的配置文件进行相应的修改,同时集成各种函数库以及驱动程序的支持。我们使用make zynq_zed_config来配置uboot,修改代码的目录列举如下:和处理器相关级别的代码:

u-boot/arch/arm/cpu/armv7/start.S

u-boot/arch/arm/cpu/armv7/Makefile

u-boot/arch/arm/include/asm/hardware.h

u-boot/arch/arm/lib/board.c

u-boot/arch/arm/lib/Makefile u-boot/arch/arm/config.mk

和板级相关的代码:

u-boot/board/xilinx/zynq_common/tools/image.c u-boot/board/xilinx/zynq_common/lowlevel_init.S u-boot/board/xilinx/zynq_common/mem_setup.S u-boot/board/xilinx/zynq_common/mmc_boot.c u-boot/board/xilinx/zynq_common/Makefile u-boot/board/xilinx/zynq_common/nand.c

u-boot/board/xilinx/zynq_common/nand/Makefile u-boot/spl/Makefile u-boot/boards.cfg u-boot/config.mk u-boot/Makefile

修改完成上述代码之后,需要在Makefile 文件中添加并指定交叉编译器名称和目标平台的类型,比如在我们的XC7Z020-CLG484-1平台下,应该指定为: make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

make 完成后会在根文件目录下生成uboot 文件,我们需要强制将其文件名改为uboot.elf ,以便Xilinx ISE 组件里面的SDK 能够识别并用于生成BOOT.BIN 。

2、system.bit 生成

在现有的Digilent 官网提供的基于XC7Z020-CLG484-1能够正常运行的linux 设计包ZedBoard_OOB_Design 中,已经包含了最重要的系统组件的驱动程序,如串口、网口,USB 等接口。

针对该设计包,我们需要根据我们的硬件环境进行适当的修改使之能够在我们的平台上运行,例如添加并打开模块所需要的SDIO1通道。由于zynq 芯片内部有54个MIO 的引脚,这些引脚在满足数量的情况下可以分配给SDIO 、SPI 或者Ethernet 等外部设备,SD/SDIO 的控制系统如下图所示。故我们可以使用MIO 接口来将SDIO1的通道引出到芯片外部,同时不需要我们自己添加约束文件。

SDIO 接口控制器

控制寄存器

MIO-EMIO 布线

外部设备MIO 引脚

...

PL

EMIO

SDIO 参考时钟

Interconnect

AHB slave port

Interconnect

AHB master port

中断号{56,79}

CPU_1x 时钟

SDIO{0,1}CPU_1x 复位

SD/SDIO 控制系统图

下表展示了SDIO接口与MIO的连接方式。

SDIO接口默认控制

器输入值

MIO引脚

引脚号I/O

SDIO0 时钟信号0

16, 28, 40 IO ~

SDIO0 控制信号0

17, 29, 41 IO ~

SDIO0 Data0 0

18, 30, 42 IO ~

SDIO0 Data1 0

19, 31, 43 IO ~

SDIO0 Data2 0

20, 32, 33 IO ~

SDIO0 Data3 0

21, 33, 45 IO ~

SDIO0 卡检测除了7和8外的所

有引脚

I

SDIO0 写保护除了7和8外的所

有引脚

I

SDIO1 时钟信号0

12, 24, 36, 48 IO ~

SDIO1 控制信号0

11, 23, 35, 47 IO ~

SDIO1 Data0 0

10, 22, 34, 46 IO ~

SDIO1 Data1 0

13, 25, 37, 49 IO ~

SDIO1 Data2 0

14, 26, 38, 50 IO ~

SDIO1 Data3 0

15, 27, 39, 51 IO ~

SDIO1 卡检测除了7和8外的所

有引脚

I

SDIO1 写保护除了7和8外的所I

有引脚

根据查询上表的内容,我们结合第二章的图?,将SDIO1与MIO通道进行了如下的分配。

IO 外设信号

MIO 10 SDIO 1 data[0]

MIO 11 SDIO 1 cmd

MIO 12 SDIO 1 clk

MIO 13 SDIO 1 data[1]

MIO 14 SDIO 1 data[2]

MIO 15 SDIO 1 data[3]

MIO 16 SDIO 1 SD1_cd 在Xilinx Platform Studio中配置好上述MIO接口之后,确保zynq的系统图和MIO接口图如下所示,就可以开始生成网格以及system.bit比特流文件了。

3、创建fsbl

在成功生成比特流文件system.bit以后,我们需要将该设计导出到SDK中进

行fsbl的创建以及BOOT.BIN的生成。点击上图中Export Design,并选择:

在SDK中,我们需要创建FSBL类型的程序,用来初始化PS部分。

查看fsbl工程的代码,它同其它裸机代码一样都有一个main主函数入口,

但是由于在fsbl加载之后,处理器PS部分并没有执行C代码的能力,而是只能

执行简单的汇编代码,我们可以在

zynq_fsbl_bsp==>ps7_cortexa9_0==>libsrc==>standalone_v3_07_a==>src里找到asm_vector.S,它包含了BSP所提供的汇编指令。它在零地址处给出了一个如下的代码段,在系统上电之后,PS部分会自动跳转到零地址并执行该地址的汇编

指令。

.section .vectors

_vector_table:

B _boot

B Undefined

B SVCHandler

B PrefetchAbortHandler

B DataAbortHandler

NOP

B IRQHandler

B FIQHandler

第一句话B _boot就是一个跳转指令,指示处理器应该跳转到boot.S汇编代码中执行_boot下的代码段,该代码段作用在于对系统进行初始化。完成该代码段之后,此时PS就具备了执行C代码的能力了。在_boot代码段的最后又有一个跳转指令,此时将跳转至xil.crt0.S中的_start代码段,该代码段将继续对系统进行初始化设置,我们可以看到,该代码第一段就是执行一个初始化CPU的动作。

_start:

bl __cpu_init

mov r0, #0

ldr r1, .Lsbss_start

ldr r2, .Lsbss_end

mov r0, #0

mov r1, #0

bl main

在_start代码段的末尾,再次进行一次跳转,不过这次是将PS跳转到main 函数并开始执行。至此,系统根据main函数的代码开始初始化MIO,PLL,CLOCK,DDR等外部设备。

4、生成BOOT.BIN

最后在Xilinx SDK中,选择Create Boot Image选项,并将上面生成的三个文件uboot.elf、system.bit以及fsbl文件添加进去,点击生成BOOT.BIN。此文件即是我们需要的BootLoader。

二、配置并编译linux内核

1、修改设备树内容

自linux3.x版本之后,嵌入式linux开始使用设备树的方式来存储目标板的硬件配置信息。设备树是一种用来阐述目标板硬件结构设备信息的二进制文件,它提供了一种方法,基于该方法可以轻松的将目标板的各种外设转换为以数据驱动,而非以前内核中所使用的硬编码方式。

在Linux内核开始使用设备树之前,编译过的内核包含了对于硬件的全部描

述,BootLoader 只是单独的加载一个以二进制文件存在的内核镜像。此外,BootLoader 还需要通过r2寄存器将存有额外信息的ATAGS 的指针传递给内核,以及通过r1寄存器传递机器码的方式通知内核当前在什么设备商被启动。而如今的Linux 内核中不再包含对于硬件的描述,这部分已经被搬移到dtb(与Linux 内核独立的设备树二进制文件)中了。所以如今的BootLoader 又增加了加载设备树二进制文件的功能,BootLoader 通过r2寄存器传递dtb 文件的地址。如下图所示。

zImage

ATAGS

RAM r1=

r2=

zImage

DTB

RAM r1=忽略

r2=

在ARM 平台中,所有设备树源代码都存储在arch/arm/boot/dts ,其中包含了两种源代码dts 和dtsi ,

※ .dts 板级定义。

※ .dtsi 为dts 文件所需要包含的头文件,通常该文件包含了SoC 级别定义。 这两种文件都遵循了相同的设备树源文件的语法规则,如下图。

/ { node@0 {

a-string-property = "A string";

a-string-list-property = "first string", "second string"; a-byte-data-property = [0x01 0x23 0x34 0x56];

child-node@0 {

first-child-property;

second-child-property = <1>;

a-reference-to-something = <&node1>; };

child-node@1 {

};

};

node1: node@1 {

an-empty-property;

a-cell-property = <1 2 3 4>;

child-node@0 { }; };};

节点名

单元地址

属性名称

属性值node0的属性

字节字符

pHandle

节点标签

设备树基本语法

我们可以在arch/arm/boot/dts/目录下找到digilent-zed.dts设备树源码,另外在OOB设计中也可以找到devicetree.dts设备树源码。由于ZedBoard和我们的目标板都是采用相同的主控芯片XC7Z020-CLG484-1,我们选用OOB里面的设备树源码更接近我们的目标板硬件环境的设备树源码,由于wifi模块是我们自己添加的,在OOB设计中并没有定义,所以需要针对该模块对设备树源码中的以下节点进行添加修改。

ps7_sd1: sdhci@e0101000 {

compatible = "xlnx,ps7-sdhci-1.00.a";

reg = <0xe0101000 0x1000>;

interrupts = <0 37 0>;

interrupt-parent = <&gic>;

xlnx,has-cd = <0x1>;

clock-frequency = <0x1fc9f08>;

};

2、配置编译linux内核

下载linux内核源码:

Linux内核源码非常庞大,对于可以适用于Android的版本就有数种之多,可见下表。

内核版本描述

Mainline Kernel 这种内核可以从主线(https://www.360docs.net/doc/cd14009035.html,)进行下载,它是没有经过修改的最原始的内核版本。

Reference Kernel 这是针对各种开发板的内核,一般是把Mainline Kernel打上针对具体开发板的内核补丁而得到

的内核版本。

Merged Kernel 这种内核是打上了Android内核补丁的Reference Kernel,这种内核可以支持Android系统。

Android Patches

该补丁由Google公司发布,是Mainline Kernel 导入到Android内核中所得到的补丁,具体可以参考https://www.360docs.net/doc/cd14009035.html,的介绍。

Android Kernel 这种内核可以从谷歌的Android开源项目资料库中下载而得,该内核里面包含了Google对Mainline Kernel进行的修改。

Android使用了linux作为它的内核,通常情况下开发板都提供了根据自身开发板硬件环境能够驱动起来的linux内核,Digilent公司为我们提供了基于XC7Z020-CLG484-1的zynq的linux内核源码,它在GitHub上的网址为:https://https://www.360docs.net/doc/cd14009035.html,/Digilent/linux-digilent。我们可以使用git clone的方式从该仓库中下载该源码。

git clone https://https://www.360docs.net/doc/cd14009035.html,/Digilent/linux-digilent.git kernel

上述命令将会将该git仓库的代码克隆到kernel目录下。下载完成后,需要切换到zynq分支:

cd kernel

git checkout -b zedboard_oob v3.3.0-digilent-12.07-zed-beta

下载好内核源码之后,我们可以看到如下的结构组织,该表包含了几个比较重要的目录以及它所包含的内容的描述。

目录描述

arch 关于体系结构相关的所有代码。

block 块设备的通用函数库。

fs 存放了Linux所支持的文件系统代码,以及各种类型的文件操

作代码

include 目录包括编译核心所需要的大部分头文件,如基本头文件和驱

动或功能部件头文件。

drivers 所有Linux内核支持的设备的驱动程序源代码。当然也可以自己添加特定设备的源代码到该目录中。

kernel 内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在arch/*/kernel目录下。

lib 内核库函数的代码库。

mm 所有独立于处理器体系架构的内存管理代码。

ipc 内核中进程间通信的实现代码。

net 网络相关的代码。

在编译linux内核之前,我们先进行内核的配置,通过配置内核可以对内核进行适当的剪裁,使得系统在可以运行并且满足功能要求的前提下得到最小化,这在资源有限的嵌入式平台中是非常重要的。

因为我们需要在X86平台编译Linux的内核,所以我们需要用到前面提到的交叉编译环境。同样,在编译内核时我们需要指定CPU架构以及交叉编译工具。

由于Linux内核比较庞大,有很多的选项我们都不需要使用到。如果需要我们自己手动去一项一项的配置,那么将是一项非常冗杂的工作。不过好在针对我们的硬件环境,Digilent公司为我们提供了专门的配置文件,在终端执行以下命令即可。

make digilent_zed_defconfig

现在基本的内核配置已经完成了。我们执行下述命令就可以执行内核的编译。

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

在编译过程中,可能会出现各种各样的错误,这些错误大多是由于宿主机没有安装好相关的依赖包导致的,在网上很容易找到解决的办法。

三、Linux设备驱动移植

Linux 设备驱动的移植需要对Linux 设备驱动的模型和Linux 设备驱动的初始化过程有一定了解。我们首先通过对Linux 设备驱动的初始化过程的简单介绍来描述Linux 设备驱动模型,然后再详细阐述驱动具体移植步骤。

1、Linux设备驱动模型

在对处理器完成一些如MMU、Cache、控制寄存器和页表等基本的初始化以后,系统调用函数start_kernel()来进行内核子系统的初始化。Start_kernel()比较复杂,在该函数的最后,调用了函数rest_init()。在rest_init()中,系统通过kernel_thread()函数创建了一个名叫kernel_init()的内核线程,设备模型初始化相关的重要函数do_basic_setup()就出现在这个函数中。其中,函数driver_init()用来建立设备模型子系统,而do_initcalls()函数完成包括设备在内的所有初始化函数的调用。

其中driver_init()的源代码如下:

void __init driver_init(void)

{

/* These are the core pieces */

devtmpfs_init();

devices_init();

buses_init();

classes_init();

firmware_init();

hypervisor_init();

/* These are also core pieces, but must come after the

* core pieces.

*/

platform_bus_init();

system_bus_init();

cpu_dev_init();

memory_dev_init();

}

由上面代码可以看出,设备模型的初始化分为两个部分,后面一部分必需先于前一部分完成。下面分别对这10个函数的功能做简单的介绍。

1. Devtmpfs_init() 函数的主要功能是用来创建设备文件系统,类型为

dev_fs_type。每个核心设备都会注册设备结点到这个文件系统下。Devfs文件系统被挂载到/dev 目录。

2. Devices_init()函数中完成对设备子系统的初始化。具体表现为将devices、dev、block、char 等kset、kobject 对象分别添加到sysfs 系统中。函数执行完成后,就在/sys 目录下建立devices 和dev 的目录项,block、char 两种类型也

被添加到其中。

3. Buses_init()为总线子系统创建kset 对象,并将其添加到sysfs 中。

4. Class_init()为类子系统创建kset 对象,并将其添加到sysfs 中。

5. Fireware_init()为firmware 子系统创建kobject 对象,并将其添加到sysfs 中。

6. hypervisor_init()为hypervisor 子系统创建kobject 对象,并将其添加到sysfs中。

7. Platform_bus_init()函数是整个设备子系统初始化过程中非常重要的一个函数。从功能上面来说,它完成了platform总线的初始化。platform device driver 机制由两部分组成:platform_device 和platform_driver。该机制下开发设备驱动的大致流程如图所示:

开始

定义平台设备

注册平台设备

定义平台驱动

注册平台驱动

结束

图设备驱动开发流程

8. System_bus_init()函数跟platform_bus_init()类似,区别在于此函数初始化的是系统总线。

9. Cpu_dev_init()函数的作用是在前面初始化完成的基础上,对cpu 系统设备进行注册。

10. Memery_dev_init()函数的作用同上,是向设备文件系统添加对存储设备的支持。

通常情况下只要和内核本身运行依赖性不大,拥有各自的地址总线和中断号等资源的外围设备,都可以用platform_driver实现。如:LCD、TouchScreen、KeyBoard、网卡、USB、UART 等。而如timer,irq 之类系统设备则一般不用platform_driver机制来实现。

2、Linux设备驱动移植

我们在Digilent网站下载而得到的Linux内核源代码里面,包含了Linux内

核本身以及以及BSP 和目标板硬件环境的系统驱动。它们都存放在drivers 目录下,只不过我们需要在剪裁配置内核的过程中将其包含进去,以达到驱动各种外部设备的目的。所以在我们下载得到的代码中,有许多现有的驱动已经集成在其中并且可以直接使用,我们将其列举在下表中。(具体可以参考https://www.360docs.net/doc/cd14009035.html,/Linux+Drivers)

下面我们以SD 卡控制器的驱动为例进行大致的分析。

SDIO 设备的驱动可以分为主从设备这两方面的驱动,对应于驱动SD 卡,我们的目标板上的zynq 相当于主设备,而SD 卡就相当于从设备。由于SD 卡只是一个具有存储功能的外部设备,所以只需要有主设备驱动(上表中表明SD 卡的驱动在host 目录下),就可以驱动该模块正常工作。

组件 是否在主线

驱动位置

ADC 是

drivers/iio/adc/xilinx-xadc

以太网 是 drivers/net/ethernet/xilinx/xilinx_axienet_main.c drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c drivers/net/ethernet/xilinx/xilinx_axienet.h

GPIO 是 drivers/gpio/gpio-zynq.c I2C 控制器 是 drivers/i2c/busses/i2c-cadence.c NAND 否 drivers/mtd/nand/arasan_nfc.c PCIe 是 drivers/pci/host/pcie-xilinx.c arch/arm/mach-zynq/xaxipcie.c arch/arm/mach-zynq/xaxipcie-msi.c 否 否 QSPI 否 drivers/spi/spi-zynqmp-qspi.c SD 卡控制器 是 drivers/mmc/host/sdhci-of-xilinxps.c

SMC 控制器 否 drivers/memory/pl353-smc.c drivers/mtd/nand/pl353_nand.c SPI 控制器 是 drivers/spi/spi-cadence.c

串口

Zynq Ultrascale+

MPSoC 是 drivers/tty/serial/xilinx_uartps.c 串口axi_uartlite 是 drivers/tty/serial/uartlite.c USB(host)

否 drivers/usb/host/zynq-dr-of.c drivers/usb/host/ehci-zynq.c drivers/usb/chipidea/

否 是 USB(device) 否 drivers/usb/gadget/zynq_udc.c drivers/usb/chipidea/udc.c drivers/usb/chipidea/ci_hdrc_usb2.c

是 是 USB(OTG) 是 drivers/usb/phy/phy-zynq-usb.cdrivers/usb/chipi

dea

看门狗

drivers/watchdog/cadence_wdt.c

在linux系统中,将每个host设备封装成platform_device来逐一进行注册。在Linux内核完成了platform_device的注册之后,就应该来到对应的platform_driver的注册了,它的注册就是上表中列举的drivers/mmc/host/sdhci-of-xilinxps.c驱动文件中的如下代码:

static int __init sdhci_zynq_init(void){

return platform_driver_register(&sdhci_zynq_driver);

}

其中platform_driver_register(&sdhci_zynq_driver)中传入的参数sdhci_zynq_driver就是前面所述的platform_driver,它同样定义在该文件中:static struct platform_driver sdhci_zynq_driver = {

.driver = {

.name = "sdhci-zynq",

.owner = THIS_MODULE,

.of_match_table = sdhci_zynq_of_match,

.pm = SDHCI_PLTFM_PMOPS,

},

.probe = sdhci_zynq_probe,

.remove = __devexit_p(sdhci_zynq_remove),

};

对于sdhci_zynq_driver的注册过程中,内核首先会对platform_driver进行探测,首先会根据结构体中.driver的.name成员,亦即”sdhci-zynq”在platform_bus 总线上查找具有相同名字的platform_device,每一次找到具有相同名字”sdhci-zynq”的platform_device,就会调用一次sdhci_zynq_driver中的.probe即sdhci_zynq_probe函数,下面是该函数的主体:

static int __devinit sdhci_zynq_probe(struct platform_device *pdev)

{

int ret;

const void *prop = NULL;

struct device_node *np = pdev->dev.of_node;

struct sdhci_host *host = NULL;

ret = sdhci_pltfm_register(pdev, &sdhci_zynq_pdata);

if (ret == 0) {

prop = of_get_property(np, "xlnx,has-cd", NULL);

if (prop == NULL) {

host = platform_get_drvdata(pdev);

host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION;

} else if (!(u32) be32_to_cpup(prop)) {

host = platform_get_drvdata(pdev);

host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION;

}

} else

printk("sdhci platform registration failed\n");

return ret;

}

分析代码可以知道,该函数的主要功能是通过struct sdhci_host *host = NULL 构造出一个host,它是一个sdhci_host结构体的变量。紧接着根据sdhci-pltfm.c 中声明的sdhci_pltfm_register来,并调用sdhci_add_host来注册host,相关代码可以见下。然后根据传入的pdev->dev.of_node通过of_get_property来获取到相应节点的属性。然后判断prop的属性,并根据此属性调用platform_get_drvdata 来获取之前通过platform_set_drvdata保存的平台总线设备数据,并赋值给host。

int sdhci_pltfm_register(struct platform_device *pdev,

struct sdhci_pltfm_data *pdata)

{

struct sdhci_host *host;

int ret = 0;

host = sdhci_pltfm_init(pdev, pdata);

if (IS_ERR(host))

return PTR_ERR(host);

sdhci_get_of_property(pdev);

ret = sdhci_add_host(host);

if (ret)

sdhci_pltfm_free(pdev);

return ret;

}

所以下面我们需要分析sdhci_add_host,它的简化代码如下,我们只需要关注下面几行代码:

int sdhci_add_host(struct sdhci_host *host)

{

struct mmc_host *mmc;

mmc = host->mmc;

……

tasklet_init(&host->card_tasklet,sdhci_tasklet_card, (unsigned long)host);

tasklet_init(&host->finish_tasklet,sdhci_tasklet_finish, (unsigned long)host);

setup_timer(&host->timer, sdhci_timeout_timer, (unsigned long)host);

……

request_irq(host->irq, sdhci_irq, IRQF_SHARED,mmc_hostname(mmc), host);

……

mmc_add_host(mmc);

return 0;

}

可以看到,该函数在前面部分主要针对sdhci进行了必要的初始化和配置,最主要的还是最后的对mmc进行注册,mmc具有许多参数,我们先来看看mmc->ops = &sdhci_ops。

static const struct mmc_host_ops sdhci_ops = {

.request = sdhci_request,

.set_ios = sdhci_set_ios,

.get_ro = sdhci_get_ro,

.hw_reset = sdhci_hw_reset,

.enable_sdio_irq = sdhci_enable_sdio_irq,

.start_signal_voltage_switch = sdhci_start_signal_voltage_switch,

.execute_tuning = sdhci_execute_tuning,

.enable_preset_value = sdhci_enable_preset_value,

};

这些操作函数里面,request主要处理主设备向从设备发送的各种命令;set_ios 对从设备的电源和时钟频率等进行设置;get_ro用来检测从设备是否开启了写保护……

再回到sdhci_add_host函数,在注册中断的函数requset_irq中,host->irq取决于资源文件内部的irq参数,sdhci_irq就是我们需要的中断处理程序,而第三个参数是中断标志位,可以为IRQF_DISABLED、IRQF_SHARED和IRQF_SAMPLE_RANDOM三者之一,在本SD卡的程序中选用IRQF_SHARED,表示多个中断处理程序共享irq中断线。该函数内部mmc_add_host函数的功能是调用device_add把mmc设备注册到Linux设备,从而完成注册sdhci。

下面我们再来分析中断处理程序sdhci_irq:

static irqreturn_t sdhci_irq(int irq, void *dev_id)

{

……

intmask = sdhci_readl(host, SDHCI_INT_STATUS);

……

if (intmask & (SDHCI_INT_CARD_INSERT |

SDHCI_INT_CARD_REMOVE)) {

sdhci_writel(host, intmask & (SDHCI_INT_CARD_INSERT |

SDHCI_INT_CARD_REMOVE), SDHCI_INT_STATUS);

tasklet_schedule(&host->card_tasklet);

}

……

}

分析代码可以知道,该中断处理程序将首先将会读取NORINTSTSn寄存器当前的值,该寄存器中有两个比特位用来表示SD卡的insert和remove的动作。接着通过一个判断语句根据读取到的intmask来判断中断源对应的到底是insert 还是remove的操作,同时将这两个比特位清零,为下一次中断处理做好准备。

再次回到sdhci_add_host函数,在声明完成中断处理程序之后,程序将会调用sdhci_tasklet_card函数,该函数的作用很简单,就是通过判断是否有SD卡存在于SD卡插槽,如果有的话,就通过mmc_detect_change调用mmc_rescan函数,进而扫描该SD卡:

static void sdhci_tasklet_card(unsigned long param)

{

struct sdhci_host *host;

unsigned long flags;

bool present = true;

host = (struct sdhci_host*)param;

spin_lock_irqsave(&host->lock, flags);

/* Check host->mrq first in case we are runtime suspended */

if (host->mrq &&

!(sdhci_readl(host, SDHCI_PRESENT_STATE) &

SDHCI_CARD_PRESENT)) {

pr_err("%s: Card removed during transfer!\n",

mmc_hostname(host->mmc));

pr_err("%s: Resetting controller.\n",

mmc_hostname(host->mmc));

sdhci_reset(host, SDHCI_RESET_CMD);

sdhci_reset(host, SDHCI_RESET_DATA);

host->mrq->cmd->error = -ENOMEDIUM;

tasklet_schedule(&host->finish_tasklet);

}

spin_unlock_irqrestore(&host->lock, flags);

mmc_detect_change(host->mmc, msecs_to_jiffies(200));

}

void mmc_rescan(struct work_struct *work){

//定义好的扫描频率

static const unsigned freqs[] = { 400000, 300000, 200000, 100000 };

……

for( i = 0; i < ARRAY_SIZE(freqs); i++) {

if(!mmc_rescan_try_freq(host, max(freqs[i], host->f_min))){

extend_wakelock = true;

break;

}

if (freqs[i] <= host->f_min)

break;

}

……

}

在mmc_rescan函数中,扫描SD卡的过程发生在mmc_rescan_try_freq中,这个函数的第二个参数告诉了系统应该用什么样的频率去对SD卡进行扫描检测,当成功使用某一频率扫描到SD卡的时候,将会执行break退出扫描循环。下面是mmc_rescan_try_freq的代码:

static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq){ ……

sdio_reset(host);

mmc_go_idle(host);

mmc_send_of_cond(host, host->ocr_avail);

//检测的顺序依次是:SDIO、SD、MMC

if (!mmc_attach_sdio(host))

return 0;

if (!mmc_attach_sd(host))

《驱动电机及控制技术》课程标准-电气自动化专业

《电机驱动技术》课程标准 一、课程基本信息 二、课程定位与作用 (一)课程定位 《电机驱动技术》课程的开设是通过深入企业调研,与专业指导委员会专家共同论证,根据工作任务与职业能力分析,以必须、够用为度,以掌握知识、强化应用、培养技能为重点,以机电一体化相关工作任务为依据设置本课程。 (二)课程的作用 《电机驱动技术》课程是机电一体化专业必修的一门专业核心课程。是在电工电子、电力拖动等课程基础上,开设的一门综合性较强的核心课程,其任务是使学生掌握常用电动机的结构及其控制方法,培养学生对常用电动机的结构原理分析及控制策略的设计能力;对学生进行职业意识培养和职业道德教育,提高学生的综合素质与职业能力,增强学生适应职业变化的能力,为学生职业生涯的发展奠定基础。 三、课程设计理念 《电机驱动技术》课程的设计以生产实际中的具体案例为主,其服务目标是以就业为导向,以能力为本位,以素质为基础。注重实用性,坚持以实为本,避开高深理论推导和内部电路的过细研究,适当降低理论教学的重心,删除与实际工作关系不大的繁冗计算,注重外部特性及连线技能,同时兼顾对学生素质、能力的培养,做到既为后续课程服务,又能直接服务于工程技术应用能力的培养。 四、课程目标 学生通过学习《电机驱动技术》课程,使学生能掌握机电设备常使用的几种电动机--直流电动机、交流感应电动机、交流永磁电动机和开关磁阻电动机的结构、原理及应用以及驱动电动机的结构及其控制方法。熟悉电机调速、分析及控

制。结合生产生活实际,培养学生对所学专业知识的兴趣和爱好,养成自主学习与探究学习的良好习惯,从而能够解决专业技术实际问题,养成良好的工作方法、工作作风和职业道德。 【知识目标】 掌握驱动电机的结构原理及应用,掌握功率变换器电路及其应用技术,驱动电机控制技术及新型电机的结构特点与选用。 【能力目标】 能对对驱动电机各种控制电路进行选择、应用和设计,能够准确描述各种电机控制技术的控制原理及特点,并针对不同电机选用不同的控制方式。 【素质目标】 能整体把握驱动电机及控制技术的应用及在日后的工作中解决实际问题。培养学生实事求是的作风和创新精神,培养学生综合运用所学知识分析问题和解决问题的能力,培养学生一丝不苟的工作作风和良好的团队协作精神。 五、课程内容设计 根据学院对机电一体化专业人才培养方案的要求,结合就业岗位的技能需求,按照职业教育理念,本课程设计了三个教学项目,具体内容如下:

较大功率直流电机驱动电路的设计方案

1 引言 直流电机具有优良的调速特性,调速平滑、方便、调速围广,过载能力强,可以实现频繁的无级快速启动、制动和反转,能满足生产过程中自动化系统各种不同的特殊运行要求,因此在工业控制领域,直流电机得到了广泛的应用。 许多半导体公司推出了直流电机专用驱动芯片,但这些芯片多数只适合小功率直流电机,对于大功率直流电机的驱动,其集成芯片价格昂贵。基于此,本文详细分析和探讨了较大功率直流电机驱动电路设计中可能出现的各种问题,有针对性设计和实现了一款基于25D60-24A 的直流电机驱动电路。该电路驱动功率大,抗干扰能力强,具有广泛的应用前景。 2 H 桥功率驱动电路的设计 在直流电机中,可以采用GTR 集电极输出型和射极输出性驱动电路实现电机的驱动,但是它们都属于不可逆变速控制,其电流不能反向,无制动能力,也不能反向驱动,电机只能单方向旋转,因此这种驱动电路受到了很大的限制。对于可逆变速控制, H 桥型互补对称式驱动电路使用最为广泛。可逆驱动允许电流反向,可以实现直流电机的四象限运行,有效实现电机的正、反转控制。而电机速度的控制主要有三种,调节电枢电压、减弱励磁磁通、改变电枢回路电阻。三种方法各有优缺点,改变电枢回路电阻只能实现有级调速,减弱磁通虽然能实现平滑调速,但这种方法的调速围不大,一般都是配合变压调速使用。因此在直流调速系统中,都是以变压调速为主,通过PWM(Pulse Width Mo dulation)信号占空比的调节改变电枢电压的大小,从而实现电机的平滑调速。 2.1 H 桥驱动原理 要控制电机的正反转,需要给电机提供正反向电压,这就需要四路开关去控制电机两个输入端的电压。当开关S1 和S4 闭合时,电流从电机左端流向电机的右端,电机沿一个方向旋转;当开关S2 和S3 闭合时,电流从电机右端流向电机左端,电机沿另一个方向旋转, H 桥驱动原理等效电路图如图1 所示。

驱动电机与控制技术技术试卷(A)

院 年 学期新能源汽车驱动电机技术课程试卷 共 3 页第 1 页题次 一 二 三 四 总分 得分 第一部分.概念辨析模块 请判断下列说法是否正确,正确在括号内画“√”,错误则在括号内画“×” (共25分,每空1分) ( )1、新能源汽车要求驱动电机体积小、质量轻,具有高可靠性和寿命长。 ( )2、新能源汽车无需要求驱动电机全速段高效运行。 ( )3、电机驱动系统一般由电动机、功率变换器、传感器和控制器组成。 ( )4、直流电机一般具有电刷装置和换向器。 ( )5、电刷装置的作用是把直流电压、直流电流引入或引出。 ( )6、磁导率是表示物质导磁性能的参数。 ( )7、直流电机的工作原理是通电直导线在磁场中受力。 ( )8、交流异步电机的工作原理是由三相交流电在定子绕组中产生旋转磁场,从而在鼠笼中产生感应电流,从而在磁场中受力。 ( )9、永磁同步电机的工作原理是通过电子开关电路产生旋转磁场,转子根据磁阻最小的原理进行旋转。 ( )10、无刷直流电机的工作原理是通过电子开关产生旋转磁场,转子跟随磁场旋转。 ( )11、开关磁阻电机的工作原理是三相交流电在定子绕组中产生旋转磁场,由永磁铁构成的转子跟随旋转磁场旋转。 ( )12、直流电机调速性能好,启动转矩大。 ( )13、直流电机控制复杂,易磨损。 ( )14、交流异步电机具有高可靠性,制造成本高。 ( )15、无刷直流电机无换向器和电刷,结构简单牢固,尺寸和质量小,基本免维护。 ( )16、开关磁阻电机一般定子凸极比转子凸极少两个。 ( )18、开关磁阻电机的成本相对而言最低。 ( )19、功率二极管基本结构和工作原理与电子电路中的二极管都是相同的。 ( )20、占空比指的是电力电子开关的导通时间与开关周期之比。 ( )21、直流斩波电路只有降压斩波电路。 ( )22、PWM 整流电路采用脉冲宽度调制控制,能够实现电能双向变换。 ( )23、轮毂电机结构简单、布置灵活,车辆的空间利用率高,传动系统效率高。 ( )24、开关磁阻电机的噪音较大。 ( )25、永磁同步电机和无刷直流电机的转子结构相似,都是由永磁铁组成。 第二部分.基本知识模块 下列题目只有一个正确答案,请选择正确答案并将代码填写在括号里。 (共15分,每题1分) 1.交流异步电机的转速为( )r/min 。 A 4000-6000 B 12000-15000 C 4000-10000 D >15000 2.永磁同步电机的转速为( )r/min 。 A 4000-6000 B 12000-15000 C 4000-10000 D >15000 3.磁通所通过的路径称为( ) A 磁感线 B 磁场强度 C 磁路 D 磁阻 4.用于制造永久磁铁和扬声器的磁钢的是( )。 A 硬磁材料 B 软磁材料 C 矩磁材料 D 普通材料 5.用于制造计算机中磁存储元件的磁芯、磁棒和磁膜等的是( )。 A 硬磁材料 B 软磁材料 C 矩磁材料 D 普通材料 6.用于制造电动机、变压器和继电器的铁芯的是( )。 A 硬磁材料 B 软磁材料 C 矩磁材料 D 普通材料 7.右图的电路符号所示为( )。 A 功率二极管 B 功率MOSFET C IGBT D GTR 8.功率MOSFET 指的是( )。 系 班 级 姓 名 学 号 命题教师 教研室负责人 系 负责人 试卷类型 A ………………………………………密封线………………………………………密封

电机驱动技术的发展现状与前景展望

H a r b i n I n s t i t u t e o f T e c h n o l o g y 课程学术报告 课程名称:电机与电器学科最新发展动态设计题目:电机驱动技术的发展现状及前 景展望 姓名:王胤燊 学号:11S006014 指导教师:梁维燕院士邹继斌教授 杨贵杰教授翟国富教授时间:2012.7.10 哈尔滨工业大学

电机驱动技术的发展现状及前景展望 王胤燊 (哈尔滨工业大学电气工程系,黑龙江哈尔滨150001) 摘要:一个多世纪以前电动机的发明使其成为工业革命以后的主要驱动力之一。它在各种机械运动中的广泛应用使生活变得简单并最终推动了人类的进步。逆变器的出现推动了交流电机速度和转矩控制的发展,这使得电机在仅仅30年就应用到了不可思议的领域。功率半导体元件和数字控制技术的进步使得电机驱动具有了鲁棒性并且能够实现高精度的位置和速度控制。交流驱动技术的应用也带来了能源节约和系统效率的提高。这篇文章回顾了交流电机逆变技术的发展和应用中所起的作用,并介绍了电机驱动技术的发展前景。未来更有效更强劲的电机驱动技术的发展对于实现不污染电网系统和提高生产力这样的节能环保型驱动很重要。 PRESENT STATE AND A FUTURISTIC VISION OF MOTOR DRIVE TECHNOLOGY W ANG Yinshen, (Dept of Electrical Engineering, Harbin Institute of Technology, Harbin 150001, China) Abstract:One of the main driving force behind the industrial revolution was the invention of the electric motor more than a century ago. Its widespread use for all kinds of mechanical motion has made life simple and has ultimately aided the advancement of human kind. The advent of the inverter that facilitated speed and torque control of AC motors has propelled the use of electric motor to new realms that was inconceivable just a mere 30years ago. Advances in power semiconductors along with digital controls have enabled realization of motor drives that are robust and can control position and speed to a high degree of precision. Use of AC motor drives has also resulted in energy savings and improved system efficiency. This paper introduces some futuristic vision for the motor drive technology. The development of more efficient, more powerful electric motor drives to power the demands of the future is important for achieving energy savings, environmentally harmonious drives that do not pollute the electrical power system, and improving productivity. 1引言 电机本体及其控制技术在近几年取得相当大的进步。这要归功于半导体技术的空前发展带来的电力电子学领域的显著进步。电机驱动产业发展的利处已经触及各种各样的设备,从大型工业设备像钢铁制造厂、造纸厂的轧钢机等,到机床和半导体制造机中使用的机电一体化设备。交流电机控制器包括异步电机控制器和永磁电机控制器,这两者在电机驱动业的全过程中起着关键性作用。图1所示为电流逆变器(异步电机控制器)和交

基于L298N电机驱动模块的设计与实现

万方科技学院 模拟电子技术课程设计——基于L298N电机驱动模块的设计与实现 系部电气工程与自动化工程 专业名称电气自动化 班级电气(9)班 姓名乔梁 学号 1116202064 指导教师王允建

基于L298N电机驱动模块设计与实现 目录 一、摘要 (2) 二、步进驱动模块方案 1、方案一 (2) 2、方案二 (2) 三、硬件电路设计 3.1 L298N驱动模块 (2) 3.2 电机控制过程 (4) 3.3 步进电机模块 (6) 3.4 PCB设计 (7) 3.5 转速控制设计 (7) 3.6 基于L298N电机驱动模块的设计实物 (8) 四、实验仿真及调试 4.1 实验仿真结果 (8) 4.2 系统联调 (9) 五、总结 (9) 六、仪器清单 (10) 七、参考文献 (11)

基于L298N电机驱动模块的设计与实现 一、摘要 该设计实现了步进电机正传、反转、加速快转、减速慢转的功能,启动系统后,通过控制脉冲来控制系统,经过L298N驱动电路对脉冲进行处理,输出能直接控制步进电机的脉冲信号,在此基础上,重新分配I/O资源,同时可增加驱动芯片L298N的个数,在负载能力范围允许内,还能实现多台步进电机独立正传、反转、加速快转、减速慢转的控制。 二、步进驱动模块方案 1、方案一: A3972驱动模块是自动收发卡机的设计,是基于双工位(工作通道)的,所 以本驱动模块内部自带电机切换电路,可以驱动分时工作的两路电机,价格昂贵。 2、方案二: L298N是ST公司生产的芯片。主要特点是:工作电压高,最高工作电压可达46V,并且可以驱动两个二相电机,可以直接通过电源来调节输出电压;可以直接用单片机的I/O口提供信号,而且电路简单,使用比较方便。 经实验比较,L298N驱动模块运行可靠,取得效果较好,而且电路的电气性能和散热性能较好,此设计选用L298N驱动模块。 三、硬件电路设计 3.1 L298N驱动模块 L298N(实物图如图一)是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈

人工智能芯片的分类

人工智能芯片的分类 近年来人工智能芯片领域的科学家们进行了富有成果的广泛研究,主要集中在AI芯片目前的两种发展方向。一个方向是继续延续经典的冯·诺依曼计算架构,以加速计算能力为发展目标,主要分为并行加速计算的GPU(图形处理单元)、半定制化的FPGA(现场可编程门阵列)、全定制化的ASIC(专用集成电路)。另一个方向就是颠覆传统的冯·诺依曼计算架构,采用基于类脑神经结构的神经拟态芯片来解决算力问题。 一、按架构分类 (1)图形处理单元(graphics processing unit,GPU)。GPU是相对较早的加速计算处理器,具有速度快、芯片编程灵活简单等特点。由于传统CPU的计算指令遵循串行执行方式,不能发挥出芯片的全部潜力,而GPU具有

高并行结构,在处理图形数据和复杂算法方面拥有比CPU更高的效率。在结构上,CPU主要由控制器和寄存器组成,而GPU则拥有更多的逻辑运算单元(arithmetic logic unit,ALU)用于数据处理,这样的结构更适合对密集型数据进行并行处理,程序在GPU系统上的运行速度相较于单核CPU往往提升几十倍乃至上千倍。同时,GPU 拥有了更加强大的浮点运算能力,可以缓解深度学习算法的训练难题,释放人工智能的潜能。但是GPU也有一定的局限性。深度学习算法分为训练和推断两部分,GPU平台在算法训练上非常高效。但在推断中对于单项输入进行处理的时候,并行计算的优势不能完全发挥出来。 (2)现场可编程门阵列(field programmable gate array,FPGA)。FPGA是在PAL、GAL、CPLD等可编程器件基础上进一步发展的产物。其基本原理是在FPGA芯片内集成大量的基本门电路以及存储器,用户可以通过更新FPGA配置文件(即烧入)来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,因此,它既解决了定制电路灵活性的不足,又克服了原有可编程器件门电路数有限的缺点。与GPU不同,FPGA同时拥有进行数据并行和任务并行计算的能力,适用于以硬件流水线方式处理一条数据,且整数运算性能更高,因此常用于深度学习算法中的推断阶段。不过FPGA通过硬件的配置实现软件算法,

人工智能芯片技术趋势研究分析报告

人工智能芯片技术趋势研究分析报告 2010 年以来,由于大数据产业的发展,数据量呈现爆炸性增长态势,而传统的计算架构又无法支撑深度学习的大规模并行计算需求,于是研究界对AI 芯片进行了新一轮的技术研发与应用研究。AI 芯片是人工智能时代的技术核心之一,决定了平台的基础架构和发展生态。 AI芯片基本知识及现状从广义上讲只要能够运行人工智能算法的芯片都叫作AI 芯片。但是通常意义上的AI 芯片指的是针对人工智能算法做了特殊加速设计的芯片,现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其它机器学习算法。人工智能与深度学习的关系如图所示。 人工智能与深度学习深度学习算法,通常是基于接收到的连续数值,通过学习处理,并输出连续数值的过程,实质上并不能完全模仿生物大脑的运作机制。基于这一现实,研究界还提出了SNN(Spiking Neural Network,脉冲神经网络)模型。作为第三代神经网络模型,SNN 更贴近生物神经网络——除了神经元和突触模型更贴近生物神经元与突触之外,SNN 还将时域信息引入了计算模型。目前基于SNN 的AI 芯片主要以IBM 的TrueNorth、Intel 的Loihi 以及国内的清华大学天机芯为代表。 1、AI 芯片发展历程从图灵的论文《计算机器与智能》和图灵测试,到最初级的神经元模拟单元——感知机,再到现在多达上百层的深度神经网络,人类对人工智能的探索从来就没有停止过。上世纪八十年代,多层神经网络和反向传播算法的出现给人工智能行业点燃了新的火花。 反向传播的主要创新在于能将信息输出和目标输出之间的误差通过多层网络往前一级迭代反馈,将最终的输出收敛到某一个目标范围之内。1989 年贝尔实验室成功利用反向传播算法,在多层神经网络开发了一个手写邮编识别器。

新能源汽车驱动电机发展趋势【干货】

新能源汽车驱动电机发展趋势【干货】

新能源汽车驱动电机发展趋势 内容来源网络,由“深圳机械展(11万㎡,1100多家展商,超10万观众)”收集整理! 更多cnc加工中心、车铣磨钻床、线切割、数控刀具工具、工业机器人、非标自动化、数字化无人工厂、精密测量、3D打印、激光切割、钣金冲压折弯、精密零件加工等展示,就在深圳机械展. 随着全球汽车电动化渗透率的不断提高,驱动电机行业将会迎来整体规模的迅速扩张。在这一过程当中,具备规模效应和技术优势的第三方电机制造商将有机会迅速扩大市场份额,收获业绩的大幅增长。 全球驱动电机市场趋势 根据估测,随着全球汽车电动化快速推进,新能源汽车电机系统市场将随之快速扩张,市场规模有望从2015年的$23亿增长到2030年的$318亿。 新能源汽车电机系统主要包括电动机和逆变器两部分,虽然同其他大部分汽车零部件一样,这两部分部件长期都面临降价压力,但是由于新能源汽车总量的上升,行业总体还是具备较大上升空间。我们预期到2030年市场规模年均增速将在18%-20%左右。

系统单价方面,电机系统整体往高功率方向发展的同时也带来了装配价格的提升。 根据估测,在中性假设条件下,2030年电动车销量将达到2000万台,约占当年乘用车总销量的16%-18%。然而,如果放到乐观情景下,即电池价格大幅下滑,且环保政策更加严厉的条件下,电动车销量增长的速度有可能大幅上升,我们预期在乐观情况下新能源汽车年销总量有可能达到3000万台的水平,约占当年汽车销量的25%-27%。 预计单电机混动车的功率需求大约在30kw左右(平均价格约$200-$300),双电机插电混功率约为50-100kw(平均价格$800-$1000),纯电动车的电机功率约为200kw(平均价格$1000-$1500)。 电动机市场情况

简化电机驱动解决方案

简化电机驱动解决方案 简化电机驱动解决方案 中压电机的驱动,尤其步进电机和无刷直流(BLDC)电机,可以说是控制工程的噩梦。这些电机普遍用于无线电遥控玩具车、电动剃须刀、汽车水泵等,它们必须满足最低的成本、最小电路板面积和复杂性,这是一个很大的挑战。 在日常生活中很容易发现步进电机的应用,如视频监控产品、微型打印机、自动取款机等。此外,步进电机可以帮助实现业余爱好者的梦想,追求家的各种项目,如计算机数字控制(CNC)机器或3D打印机。今天的集成电路与高度集成的控制引擎已经接受了这个挑战,可以减少开发时间、成本和电路板面积。 步进电动机的心脏是一个H型电桥,用于引导整个电机绕组的双向电流。对于需要一定精确程度的步进电机应用,顺利地从一个位置到下一个位置,以实现某种形式的准确电流控制,这是非常必要的。在一个独立的解决方案中,你要实现这些,需要一个栅极驱动器、一些场效应管的桥和与整个绕组串联场效应管电流检测电阻器,用运算放大器(运放)来衡量检测电阻器两端的电压,最后是一个微控制器(MCU),能够测量该电压(集成的模拟-数字转换器ADC)并且作用于它。在一个高分辨率的脉冲宽度调制(PWM)输出的微处理器中,其闭合回路用比例积分控制器,就大功告成了。这听起来很昂贵,消耗工作面积,当然也最耗时的-除非你在所有这些控制理论课中保持清醒。而我们甚至还没开始做些准备,保护场效应管不被击穿、热失控和过载。 好消息是这里有一个更简单的方法。综合的解决方案,可以简化上述所有过程就像当你想要向一个微处理器输入一个简单的脉冲,你的步进电机走一步一样。让我们来看看界面(图1)。 步进和方向引脚可以连接到标准的通用输入/输出(GPIO)引脚上的处理器。每个步骤的输入都与逻辑索引表上所需的整流与电机各相的电流的增加(或减少)相对应。查找此表的一个例子示于表1。

步进电机驱动器的技术发展

将“电机固有步距角”细分成若干小步的驱动方法,称为细分驱动,细分是通过驱动器精确控制步进电机的相电流实现的,与电机本身无关。其原理是,让定子通电相电流并不一次升到位,而断电相电流并不一次降为0(绕组电流波形不再是近似方波,而是N级近似阶梯波),则定子绕组电流所产生的磁场合力,会使转子有N个新的平衡位置(形成N个步距角)。 最新技术发展: 国内外对细分驱动技术的研究十分活跃,高性能的细分驱动电路,可以细分到上千甚至任意细分。目前已经能够做到通过复杂的计算使细分后的步距角均匀一致,大大提高了步进电机的脉冲分辨率,减小或消除了震荡、噪声和转矩波动,使步进电机更具有“类伺服”特性。 采用细分技术与步进电机精度提高的关系:步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。 步电机系统解决方案

细分后电机运转时对每一个脉冲的分辨率提高了,但运转精度能 否达到或接近脉冲分辨率还取决于细分驱动器的细分电流控制精度 等其它因素。不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。 真正的细分对驱动器要有相当高的技术要求和工艺要求,成本亦会较高。国内有一些驱动器采用对电机相电流进行“平滑”处理来取代细分,属于“假细分”,“平滑”并不产生微步,会引起电机力矩的下降。真正的细分控制不但不会引起电机力矩的下降,相反,力矩会有所增加。 对实际步距角的作用:在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己对步距角的要求。如果使用细分驱动器,则用户只需在驱动器上改变细分数,就可以大幅度改变实际步距角,步进电机的‘相数’对改变实际步距角的作用几乎可以忽略不计。 深圳市维科特机电有限公司成立于2005年,是步进电机产品的销售、系统集成和应用方案提供商。我们和全球产品性价比高的生产 厂家合作,结合本公司专家团队多年的客户服务经验,给客户提供有 步电机系统解决方案

BLDC和PMSM电机的构造及驱动方案介绍

BLDC和PMSM电机的构造及驱动方案介绍 无刷直流(BLDC)和永磁同步电机(PMSM)现在在许多应用中受到青睐,但运行它们的控制软件可能难以实现。恩智浦的Kinetis电机套件弥补了与嵌入式控制软件和直观GUI的差距,最大限度地降低了软件的复杂性并加快了开发过程。 本文将简要介绍BLDC和PMSM电机的构造和关键操作参数,然后介绍如何驱动它们。然后,它将讨论软件为何复杂,如何管理以及一些硬件选项。然后,它将研究如何使用恩智浦的Kinetis电机套件启动和运行项目。 三相无刷直流电机(BLDC)及其近似同类电机,永磁同步电机(PMSM)已成为在过去十年中,由于其控制电子设备的成本急剧下降,新的控制算法激增,因此在过去的十年中,工业领域也越来BLDC电机具有高可靠性,高效率和高功率体积比。它们可以高速运行(大于10,000 rpm),具有低转子惯量,允许快速加速,减速和快速反向,并具有高功率密度,将大量扭矩包装成紧凑的尺寸。今天,它们被用于任何数量的应用,包括风扇,泵,真空吸尘器,四轴转换器和医疗设备,仅举几例。 PMSM与带有绕线定子和永磁转子的BLDC具有相似的结构,但定子结构和绕组更类似于AC感应电机,在气隙中产生正弦磁通密度。PMSM与施加的三相交流电压同步运行,并且具有比交流感应电动机更高的功率密度,因为没有定子功率用于感应转子中的磁场。今天的设计也更强大,同时具有更低的质量和惯性矩,使其对工业驱动,牵引应用和电器具有吸引力。 创造驱动器 鉴于这些优势,它不是不知道这些电机是如此受欢迎。然而,没有任何东西没有价格,在这种情况下,驱动和控制电路的复杂性。消除换向电刷(及其伴随的可靠性问题)使得需要电气换向以产生定子旋转场。这需要一个功率级(图1)。 图1:三相电机驱动的简化框图。三个半桥在控制器的指导下切换电机相电流,其输出由前置驱动器放大和电平移位。(使用Digi-Key方案绘制的图表- 它)

AI芯片什么是AI芯片的架构、分类及关键技术概述

AI芯片什么是AI芯片的架构、分类及关键技术概述 人工智能芯片目前有两种发展路径:一种是延续传统计算架构,加速硬件计算能力,主要以3 种类型的芯片为代表,即 GPU、FPGA、ASIC,但CPU依旧发挥着不可替代的作用;另一种是颠覆经典的冯·诺依曼计算架构,采用类脑神经结构来提升计算能力,以IBM TrueNorth 芯片为代表。 传统CPU 计算机工业从1960年代早期开始使用CPU这个术语。迄今为止,CPU从形态、设计到实现都已发生了巨大的变化,但是其基本工作原理却一直没有大的改变。通常CPU 由控制器和运算器这两个主要部件组成。传统的CPU 内部结构图如图所示: 传统CPU内部结构图(ALU计算模块) 从图中我们可以看到:实质上仅单独的ALU模块(逻辑运算单元)是用来完成数据计算的,其他各个模块的存在都是为了保证指令能够一条接一条的有序执行。这种通用性结构对于传统的编程计算模式非常适合,同时可以通过提升CPU主频(提升单位时间内执行指令的条数)来提升计算速度。但对于深度学习中的并不需要太多的程序指令、却需要海量数据运算的计算需求,这种结构就显得有些力不从心。尤其是在功耗限制下,无法通过无限制的提升CPU 和内存的工作频率来加快指令执行速度,这种情况导致CPU 系统的发展遇到不可逾越的瓶颈。 并行加速计算的GPU GPU 作为最早从事并行加速计算的处理器,相比CPU 速度快,同时比其他加速器芯片编程灵活简单。 传统的CPU 之所以不适合人工智能算法的执行,主要原因在于其计算指令遵循串行执行的方式,没能发挥出芯片的全部潜力。与之不同的是,GPU 具有高并行结构,在处理图形数据和复杂算法方面拥有比CPU 更高的效率。对比GPU 和CPU 在结构上的差异,CPU大部分面积为控制器和寄存器,而GPU 拥有更ALU(逻辑运算单元)用于数据处理,

交流电机驱动技术

交流电机驱动技术 贝加莱工业自动化有限公司 何新峰 1. 目前交流电机一般数字控制系统的构成及各部分的功能介绍 交流电机的一般数字控制系统是指以工业计算机为核心,控制对象为各种交流电机的开环或闭环的控制系统。一般情况下为了提高交流电机的控制精度和动态特性我们均采用闭环控制的方式。 针对交流电机的不同类型,目前已经典型应用的控制系统有以下几种: 同步电机控制系统,异步电机控制系统,开关磁阻电机控制系统等。虽然不同的控制方式控制原理不同,但是系统的构成和各部分的功能基本一致。 1) 电源系统 电源系统是指将输入系统的动力电源转换成用于驱动交流电机的直流或交流电源,根据实际控制方式的不同,一般可以分为“交直交”电压源型逆变电路,“交直交”电流源型逆变电路,“交交”型变频电路以及泵电源电路等。图1是“交直交”电压源型电源系统的典型电路,如果将并联的滤波电容去掉,在直流侧串联一个大滤波电感则为“交直交”电流源型电路。 图1 2) 微处理器板 微处理器是用来实现交流电机各种数字控制算法的硬件平台。主要组成如下: a) CPU,通常根据系统的复杂程度选择通用单片机或专用的DSP芯片 b) RAM,ROM,EPROM,CPU外围驱动芯片组 c) 实时钟,通讯接口 d) 总线系统,用来连接主机板和各种外围系统支持板,接口板等。主要有STD总线, 工业PC总线,VME总线等 e) 在实时内核上运行的各种控制算法(U/F控制,矢量控制,直接转矩控制,无速度 传感器控制等)

3) 功率开关器件 功率开关器件通过根据来自微处理器板的控制信号控制大功率输出器件的关断和导通,来实现对交流电机的输出电流和电压的控制。根据控制方式的不同,其输出方式由方波输出逐渐发展到PWM输出或SPWM输出。开关器件也由原来的GTR,MOSFET,发展到IGBT,IPM等。参见下面的典型IGBT逆变输出电路。 图2 4) 接口和外围设备 接口和外围设备主要用来连接外部的输入装置和数字控制系统的各种数字量,模拟量等被控量的反馈信号。 a) 数字输入输出接口,主要分为并行输入输出接口扩展和串行输入输出接口扩展,主 要用来扩展系统外部存储器和数字量的输入输出。 b) 模拟量输入输出接口,主要分为数/模转换器和模/数转换器。来自微处理器的数字 量控制信号经过D/A转换成模拟量信号输出到外围控制部件,同样系统外部的各 种传感器信号(电压,电流,温度等)也经过A/D转换成数字量信号经过总线系 统传送到CPU中进行相应的控制。 c) 通信接口,主要分为并行通信和同步或异步串行通信。使用通信接口可以将多个处 理器系统连接起来实现故障诊断,软件监控,多台交流电机联动控制等功能。 d) 键盘与显示接口,用来实现人机交互。 5) 信号检测及处理 采用闭环控制的数字控制系统必须实时检测被控对象的各个参变量,然后反馈给主CPU。交流电机的主要检测物理量为,电机电枢温度,定子电流,电子电压,电机转速,电机位置等。 a) 电流检测主要采用采样电阻法,电流互感器法和霍尔元件检测法。 b) 电压检测主要采用电阻分压法,电压互感器法和霍尔传感器法 c) 温度检测主要采用热电阻和热开关继电器等元件 d) 电机位置和速度检测主要采用测速电机和位置编码器等反馈形式。其中位置编码器 可以根据实际使用的要求分别选用旋转编码器,光电编码器等多种类型。

必看2018 年度电机驱动与电力关键技术发展趋势分析

必看2018 年度电机驱动与电力关键技术发展趋势分析 一、中国新能源汽车重大共性关键技术的主攻方向《申报指南》列出2018年中国新能源汽车技术的主攻方向包括:动力电池与电池管理系统,电机驱动与电力,电子、电动汽车智能化,燃料电池动力系统,插电/增程式混合动力系统,纯电动力系统。一共是6个方向,再细分24 个研究任务。笔者理解 ①企业与政府规划要保持一致,企业经营活动(含技术攻关)要在政府的顶层设计下开展。 ②企业2018年具体的新能源汽车研究(开发)项目必须在6个方向下、24个研究任务之中; ③企业具体技术研究和开发项目,理应与中央政府政府年度计划技术攻关项目对应起来。 二、2018 年度电机驱动与电力关键技术研究任务 1、商用车高可靠性车载电力电子集成系统开发 ①研究内容: 研究基于功率器件级集成的多变流器拓扑结构和绝缘栅双极型晶体管(ⅠGBT)芯片集成封装技术;研究机-电-热集成设计技术及电磁兼容技术;研究硬件安全冗余、软件容错等系统功能安全技术;研究集成电力电子控制器产品(简称PCU)的可靠性及测试方法。开发出适用于10~12 米纯电动、插电

式、增程式客车的PCU 产品。 ②考核指标:商用车电力电子集成控制器产品比功率≥ 10.0kV A/kg;控制器最高效率≥98%,效率大于90%的高效区≥80%,集成控制器电磁兼容性能(EMC)(带载)、可靠性和产品设计寿命满足整车要求,PCU 产品寿命≥8 年(以关键器件寿命设计文件与加速寿命验证测试报告作为验收依据);配套整车产品完成公告,并批量装车。 笔者解读 Ⅰ)功率器件级集成的多变流器拓扑结构和绝缘栅双极型晶体管(ⅠGBT)是核心竞争力技术和产品,是中国发展新能源汽车的短板。Ⅱ)适用于10~12 米纯电动、插电式、增程式客车的PCU 产品,是主攻方向。 Ⅲ)集成控制器电磁兼容性能(EMC)(带载)、可靠性和产品设计寿命满足整车要求,目前公交车整车生产企业急需这样的产品。 Ⅳ)中国发展新能源汽车必须要能自己研发和生产功率器件【绝缘栅双极型晶体管(ⅠGBT)】,否则,弯道超车就只是一个口号而已。 2、轿车高可靠性车载电力电子集成系统开发 ①研究内容:研究基于功率器件级集成的多变流器拓扑结构,开发机-电-热集成设计技术及电磁兼容技术;研发芯片集成封装技术及硬件安全冗余、软件容错等系统功能安全技术;研究

基于富士通MCU电机驱动方案

基于富士通MCU的电机驱动方案
富士通微电子(上海)有限公司 彭涛 2010.7
Copyright 2010 FUJITSU SEMICONDUCTOR

内容
? ? ? ?
富士通应用于电机控制的MCU产品线 基于富士通MCU的电机解决方案 富士通MCU的开发工具 问与答
1
Copyright 2010 FUJITSU SEMICONDUCTOR

富士通MCU产品线路图
ARM Cortex-M3 FR 80 -32bit RISCFR 60/FR 60Lite -32bit RISCF2MC-16FX -16bit CISC-
32bit
16bit
F2MC-8FX MB95200 Series -8bit CISC-
F2MC-16LX -16bit CISCF2MC-8FX MCMB95300/400 Series MB95300/400 -8bit CISCCISC-
F2MC-8FX-8bit CISC-
8bit
F2MC-8L-8bit CISC8 16 20 28/32 48/52 64 80 100 120 144 176
管脚
2
Copyright 2010 FUJITSU SEMICONDUCTOR

应用电机控制的富士通MCU产品系列
ARM-Cortex M3 -32bit
FR 60/FR 60Lite -32bit RISC正弦波,180度变频 磁场定向 无传感器 分流电阻检测 F2MC-8FX8bit CISCF2MC-16LX -16bit CISC-
F2MC-8L8bitCISC-
F2MC-8FX MB95330/390Series -8bit CISC方波,120度变频 Hall 传感器
F2MC-8FX MB95200 Series -8bit CISC开关控制(继电器,可控硅) 单相直流调速
方波(EMF)120度变频无传感器
DC通用电机 DC通用电机
DC无刷电机 DC无刷电机
3
PMSM电机 PMSM电机
AC感应电机 AC感应电机
Copyright 2010 FUJITSU SEMICONDUCTOR

2017年AI芯片行业深度研究报告

2017年AI芯片行业深度研究报告

投资要点: ?AI应用爆发,底层芯片架构亟待革新:科技巨头的大力投入及政策 扶持正推动AI下游应用的迅猛增长,AI正在安防、无人驾驶、医疗等市场快速落地。而AI应用的发展离不开底层芯片架构的革新。传统芯片架构在处理神经网络算法时功耗较高,速度无法满足需求,因此催生了AI芯片的诞生,例如Google的TPU、寒武纪的NPU 等均是专门为AI应用度身定做的专有芯片,未来AI芯片将成为无论是移动端还是云端的标配,将成为下一阶段AI产业竞争的关键所在。 ?AI产业链中,最为看好上游AI芯片环节:目前时间点,AI产业链 上游的芯片企业的成长性最为确定,盈利模式最为清晰,AI芯片市场是率先受益于AI产业高速发展的环节,无论下游哪个应用领域率先落地,AI芯片市场都将迎来数倍的高速增长。根据智研咨询统计,2016 年人工智能芯片市场规模达到6亿美元,预计到2021年将达到52 亿美元,年复合增长率达到53%。仅测算安防前端智能摄像头市场,目前国内安防芯片市场规模约30亿人民币左右,预计未来三年,搭载人工智能模块的安防芯片市场存在三倍以上的成长空间,可达百亿级。 ?看好低成本高性能的ASIC发展路线,国内厂商或将弯道超车:目 前AI芯片技术主流路径为GPU、FPGA、ASIC等,场景方面分为云端、终端两大类,其中云端环境条件较为宽松,GPU暂时满足需求,未来AI ASIC芯片有望成为重要组成部分。终端受制于能耗,体积约束,同时应用场景相对明晰,对ASIC芯片需求强烈,我们看好ASIC路径发展前景。NVIDEA、INTEL、AMD等传统芯片巨头在GPU及FPGA领域具有不可撼动的优势,而国内中小芯片设计公司的优势在于细分场景下的ASIC芯片。随着AI芯片市场的快速发展,国内AI芯片设计公司在ASIC路线存在弯道超车的良好机遇。 ?行业评级及投资策略维持计算机行业“中性评级”,给予人工智能 板块买入评级,AI应用普及,AI芯片市场需求迅速上升,我们看好国内公司在ASIC芯片方面存在弯道超车的机遇,未来三年迎来爆发式成长,建议积极关注行业投资机会,短期重点推荐智能安防芯片市场。 ?重点推荐个股1、富瀚微:安防芯片A股龙头,受益安防人工智能 化发展;2、中科创达:芯片嵌入式解决方案A股龙头,麒麟970采用公司方案。建议关注:1、东软集团:无人驾驶芯片技术储备丰富,发展潜力较大;2、四维图新:无人驾驶芯片技术储备丰富,发展潜力较大;3、中科曙光:云端人工智能服务器潜力巨大;4、浪潮信息:与IBM建立合资企业研发人工智能服务器,前景远大。 ?风险提示:1)相关公司业绩不达预期的风险;2)行业政策变动风 险;3)市场系统性风险。

电机驱动技术期末复习题

一、单项选择题 (1)下列电机中实现电能传递功能的是() A. 直流发电机 B. 直流电动机 C. 三相异步电动机 D. 变压器 (2)测速发电机属于那种类型的电机() A. 直流发电机 B. 控制电机 C. 交流发电机 D. 变压器 (3)永磁式直流电机属于下面的那种类型() A. 串励 B. 并励 C. 他励 D. 复励 (4)电动机启动转矩大,适用于牵引和起重,电动机转速随负载大小变化的波动小,且可以调节,可用于定速或调速之用。() A. 他励、串励 B. 串励、并励 C. 串励、他励 D. 并励、串励 (5)当电动机在电枢电流的作用下旋转时,其电枢线圈会切割磁力线这一运动会在电枢中产生感生电动势,该电动势产生的电流方向及其大小分别与下列哪些量有关。() A. 转向、转速 B. 外加电源方向、转速 C. 转速、外加电源方向 D. 转向、外加电源方向 (6)以下哪个不是直流电机的基本方程() A. 电动势平衡 B. 能量系统的功率平衡 C. 机械系统转矩平衡 D. 能量平衡 (7)电力拖动系统拖动生产机械稳定运行时,电动机输出转矩的大小由下面的那个量决定。() A. 功率大小 B. 负载大小 C. 转速大小 D. 功率和转速的大小 (8)以下关于直流电动机固有机械特性的描述错误的是() A. 电磁转矩T越大,转速越低 B. 当T=0时,为理想空载转速,他励直流电机在一定条件下能超过理想空载转速 C. 斜率β小,特性线较陡,称为硬特性,β大,特性线较平称为软特性 D. 电机启动时n=0,启动转矩比额定转矩大 (9)当电机的电磁转矩和负载转矩满足条件时,以下描述正确的是() A. 电机在负载与电磁转矩交点附近处于加速状态 B. 电机在负载与电磁转矩交点附近处于减速状态 C. 电机在负载与电磁转矩交点附近特性曲线具有下降趋势 D. 电机在负载与电磁转矩交点附近特性曲线具有下降趋势 (10)下面关于电机启动时,有关电流的说法错误的是() A. 过大的启动电流I st对电网也会有很大冲击 B. 过大的T st会造成冲击易损坏传动机构 C. 过大的起动电流I st可能烧坏电枢 D. 应控制启动电流,使其小于额定电流 (11)下面有关功率的概念从大到小排列的是() A. 从电磁功率、机械功率、附加损耗、机械损耗 B. 从电网吸收的功率、电磁功率、机械功率、机械损耗 C. 从电网吸收的功率、电磁功率、空载损耗、机械损耗 D. 机械功率、电磁功率、空载损耗、机械损耗 (12)直流他励电动机稳定运行时,电动机的电磁转矩与负载转矩相平衡指的是什么() A. 电磁转矩与负载转矩大小不等、方向相同 B. 电磁转矩与负载转矩大小相同、方向相反 C. 电磁转矩与负载转矩大小相等、方向相反

电动车驱动电机和控制技术综述

电动车驱动电机及其控制技术综述 摘要:简述了电动车驱动系统及特点,在此基础上详细分析并比较了电动车主要电气驱动系统,着重介绍了一种深埋式永磁同步电动机及其控制系统,最后简要概述了电动车电气驱动系统的发展方向。 1 概述 电动车是一种安全、经济、清洁的绿色交通工具,不仅在能源、环境方面有其独特的优越性和竞争力,而且能够更方便地采用现代控制技术实现其机电一体化的目标,因而具有广阔的发展前景。 现有电动车大致可以分为以下几个主要部分:蓄电池、电池管理、充电系统、驱动系统、整车管理系统及车体等。驱动系统为电动车提供所需的动力,负责将电能转换成机械能。无论何种电动车的驱动系统,均具有基本相同的结构,都可以分成能源供给子系统、电气驱动子系统、机械传动子系统三部分,其中电气驱动子系统是电动车的心脏,主要包括电动机、功率电子元器件及控制部分。如图1所示。 其中,电动车驱动系统均具有相同或相似的功能模块,如图2所示。 2 电动车电气驱动系统比较 电动机的类型对电气驱动系统以及电动车整体性能影响非常大,评价电动车的电气驱动系统实质上主要就是对不同电动机及其控制方式进行比较和分析。目前正在应用或开发的电动车电动机主要有直流电动机、感应电动机、永磁无刷电动机、开关磁阻电动机四类。由这四类电动机所组成的驱动系统,其总体比较如下表所示。 电动车电气驱动系统用电动机比较表 下面分别对这几种电气驱动系统进行较为详细地分析和阐述。 2.1 直流驱动系统

直流电动机结构简单,具有优良的电磁转矩控制特性,所以直到20世纪80年代中期,它仍是国内外的主要研发对象。而且,目前国内用于电动车的绝大多数是直流驱动系统。 但普通直流电动机的机械换向结构易产生电火花,不宜在多尘、潮湿、易燃易爆环境中使用,其换向器维护困难,很难向大容量、高速度发展。此外,电火花产生的电磁干扰,对高度电子化的电动汽车来说将是致命的。此外,直流电动机价格高、体积和重量大。随着控制理论和电力电子技术的发展,直流驱动系统与其它驱动系统相比,已大大处于劣势。因此,目前国外各大公司研制的电动车电气驱动系统已逐渐淘汰了直流驱动系统。 2.2 感应电动机驱动系统 2.2.1 感应电动机 电动车感应电动机与一般感应电动机相比较具有以下特征: (1)稳定运行时,与一般感应电动机工况相似。 (2)驱动电动机没有一般感应电动机的起动过程,转差率小,转子上的集肤效应不明显。 (3)运行频率不是50hz,而是远远在此之上。 (4)采用变频调速方式时,转速与极数之间没有严格对应关系。 为此,电动车感应电动机设计方面如下特点: (1)尽力扩大恒转矩区,使电动机在高速运转时也能有较高转矩。而要提高转矩,则需尽量减小定转子之间的气隙,同时减小漏抗。 (2)更注重电动机的电磁优化设计,使转矩、功率和效率等因素达到综合最优。 (3)减少重量、体积,以增加与车体的适配性。 2.2.2 控制技术 应用于感应电动机的变频控制技术主要有三种:v/f控制、转差频率控制、矢量控制。20世纪90年代以前主要以pwm方式实现v/f控制和转差频率控制,但这两种控制技术因转速控制范围小,转矩特性不理想,而对于需频繁起动、加减速的电动车不太适宜。近几年

相关文档
最新文档