基于QTE的ARMDSP嵌入式系统的直流电机监控界面的设计与实现

发布者:平安守护最新更新时间:2011-07-25 来源: 山西电子技术关键字:直流电机  图形化用户 手机看文章 扫描二维码
随时随地手机看文章
   

摘要:以嵌入式微处理器ARM&DSP主从控制模式下设计直流电机控制系统,重点介绍基于QT/Embedded设计的直流电机监控系统界面,包括串口通讯和电机控制。搭建基于嵌入式操作系统Linux的开发环境,采用C++语言进行应用程序界面的开发,根据基于串口的应用层协议,实现主从控制器间的数据通信。并完成Linux操作系统的移植,通过触摸屏实现人机交互。
关键词:S3C2440;TMS320F2812:Linux;QT/Embedded;直流电机;图形化用户界面

0 引言
    嵌入式技术在机器人控制领域应用广泛,它集中了机械工程、自动化控制以及人工智能等多门学科的最新科研成果,已经成为当前科技研究和应用的焦点与重心。而机器人控制系统需要解决的关键问题之一就是电机控制技术。本课题基于嵌入式系统处理器ARM&DSP主从控制模式的硬件平台,利用Linux操作系统,对直流电机的控制进行研究,设计了基于QT的应用程序开发,以图形的方式给用户提供操作接口,实现对电机更加直观的状态显示和灵活的控制。

1 控制系统的整体设计
    本系统的主控制器由基于32位ARM。
    920T的RISC处理器Samsung S3C2440嵌入式开发板构成,内部运行嵌入式Linux操作系统,主要负责系统的控制以及与从控制器DSP的通讯等任务,主控制器通过串行通信接口(UART)实现与从控制器的数据通信,包括发送特定数据格式的控制指令和接收DSP控制器返回的传感器数据。利用Linux操作系统搭建平台并开发基于QT的图形界面,通过触摸屏实现人机接口,完成对电机和传感器的控制和传感器数据的显示。从控制器采用32位定点控制器TMS320F2812,主要完成对电机的控制,以及反馈给主控制器ARM9当前的运动状态。控制系统整体结构设计框图如图1所示。

d.JPG



2 串行通信设计
    本系统中主控制器ARM9与从控制器TMS320F2812之间的通讯采用串行通信接口,即UART口。TMS320F2812的SCI模块利用中断进行控制,其接收和发送是双缓冲的,二者可独立地工作于全双工模式。串口通过两个可以复用和具有优先级的I/O引脚SCITXD和SCIKXD分别用于发送和接收数据,RS-232与DSP中的TTL电平之间需要配驱动和隔离电路可以组成一个简单的通信接口。在ARM9和DSP之间采用了符合RS-232标准的驱动芯片MAX3232进行串行通信,MAX3232芯片功耗低、集成度高,具有两个接收和发送通道。TMS320F2812串行接口电路如图2所示。

e.JPG


    在TMS320F2812的串行通信接口工作时,其功能可以通过软件可编程实现,当接收到数据后,通过事件管理器模块中的通用定时器,PWM单元以及捕获单元对电机的方向和速度进行控制。

[page]

3 QT图形界面的设计
3.1 QT/Embedded
    大多数的嵌入式系统都需要与人进行交流,而且形成了软硬件完全定制开发的、基于图形化显示、触摸屏控制的人机接口产品。QT/  Embedded是一个跨平台应用程序和UI开发框架,支持丰富的图形控件,提供美观的界面开发,完全满足人机交互产品的界面显示需求。QT/  Embedded的实现结构框图如图3所示。

f.JPG


    QT应用程序由C++语言进行开发。QT的API分为控件、框架和工具三个部分,其高效的工作性能与其信号和槽的机制是密不可分的。QT/  Embedded开发流程如图4所示。

g.JPG


    在宿主机上建立QT开发环境,安装交叉编译工具,包括编译器、链接器、库函数等,应用程序在宿主机上运行,而产生的目标代码是针对特定的硬件平台。并且使用QtCreator跨平台的Qt集成开发环境,有助于提高开发的效率。QT应用程序的开发是在宿主机上调试通过后,移植到目标板上。
3.2 串口通信界面
    串口通信界面提供串口属性设置、串口数据通信的接口函数以及DSP反馈给ARM9的电机状态信息。串口通信界面如图5所示。通过点击界面中‘Edit Parameter’按键实现对串口各种参数的配置。正确配置好参数,点击‘ConneCt’按键即可连接串口,准备通信。电机状态可以点击‘Receive’获得。‘Motor’菜单可打开电机控制界面,其控制也是通过生效的串口传输。

a.JPG

    设计串口配置的界面时,首先定义结构体serial config,具体如下:

h.JPG


    在设置好串口参数后,点击‘Connet’后发送控件QPushButton信号clicked(),调用自定义槽函数setup_serial(),实现对QT控件中各个参数的读取,并根据参数配置对应的串口。其中,由控件portNameComboBox的成员函数currentText()获得设置的串口号,由此读取串口名称,并赋值给属性serial.dev。设置串口名称代码段如下:

i.JPG


    类似地读取串口通信的其他相应参数。接下来,需要打开串口,代码段如下:

j.JPG


    其中,使用open函数打开串口,获得串口设备文件的文件描述符fd_serial。
    槽函数setup_serial()中,完成参数读取并打开串口操作后,通过调用自定义的子函数set baudrate(int)用来设置波特率,而子函数set Parms(int)则是设置其他参数。其中主要使用了针对Linux串口通信的termios数据结构对串口进行配置。由于使用串口对电机进行读取或控制,不允许等待,所以对于打开的任何串口,都需要将其设置为非阻塞工作方式。程序中通过fcntl(fd serial,F_SETFL,O_NONBLOCK)实现把Linux下默认为阻塞读的缓冲设置为非阻塞读。

    设计电机状态读取部分时,首先定义了结构体motor_status:

k.JPG


    当电机处于正常工作状态时,点击界面上‘Receive’,自定义的槽函数receive data()会响应,实现对电机状态的读取。制定的DSP反馈给ARM9的数据包的格式如表1所示,数据格式大小为16位的char型数组。在槽函数中,使用read(fd_serial,buff16)函数通过串口读取这16位带有电机状态信息的数据,并赋值给数组buff[]。


    将字符数组buff[]各个字段传递给对应motor_status属性,并分别发送自定义信号。用于显示电机状态的控件QLabel是QWidget的子类,其槽函数setText(QString)接收信号并将其显示。比如,显示电机转速状态的过程是:发射自定义信号speed_changed(QString),触发QL-abel类型控件label_DiskSpced_value的槽函数setText(OString),将当前电机转速显示在界面上。该信号和槽函数连接的语句为connect(this,SIGNAL(speed_changed(Qstring)),ui->label DiskSpeed value,SLOT(setText(QString)),实现了电机转速的数据显示。
3.3 电机控制界面
    电机控制界面提供了对电机控制指令的配置,电机控制界面如下图6所示。

b.JPG


    点击‘Edit’键可对参数进行编辑,之后点击‘Send’,通过串口传输生效。
    先定义了电机参数结构motor config:

m.JPG


    点击‘Send’后发送控件QPushButton的信号clicked(),它会触发自定义的槽函数send_data(),实现通过串口传递给DSP控制指令。定义DSP接收的电机控制的数据格式,如表2所示,需要大小为13位的char型数组存储电机控制信息。槽函数send_data()中,按照格式赋值给
char型buff[]数组,然后通过函数write(fd_serial,buff,sizeof(buff))将数据写入串口。

n.JPG


3.4 实验结果
    完成QT应用程序在PC端的Linux下的仿真运行,编译出在开发板上执行的二进制可执行文件,最终在嵌入式ARM板上运行效果如图7所示,实现了ARM与DSP的串行通信及对电机的监控。

c.JPG



4 结语
    基于QT/Embedded的GUI应用程序运行在嵌入式操作系统Linux上,高效稳定,UI设计提供了良好的用户体验,满足了嵌入式设备的界面显示需求。本课题采用ARM&DSP+Linux+QT/Embedded的技术方案,设计与实现了电机控制界面,显示了高性能嵌入式处理器、智能化嵌入式操作系统、图形化应用程序在嵌入式产品应用上的可行性。

关键字:直流电机  图形化用户 引用地址:基于QTE的ARMDSP嵌入式系统的直流电机监控界面的设计与实现

上一篇:莱迪思升级混合信号设计软件
下一篇:利用Spartan-3 FPGA实现高性能DSP功能

推荐阅读最新更新时间:2024-05-02 21:30

基于LIN总线的车用无刷直流电机控制器设计
1 前言   随着汽车部件的电动化、自动化程度不断提高和对汽车电机的噪声、电磁兼容、效率的高要求 , 永磁无刷直流电机正在逐步替代有刷的永磁直流电机 。永磁无刷电机具有体积小、寿命长、效率高、结构简单、可靠性好等优点 , 利用它作为汽车部件的驱动执行元件可有效地提高汽车部件的性能。例如在 Freightliner 公司的 M2 系列商务车上 , 采用无刷电机驱动其空调系统的鼓风机 , 更好地调节了送风速度 。   由于汽车总线技术的日趋成熟 , 汽车内多个电机单元的控制方式正从传统的集中式线束控制向分布式总线控制转变。分布式总线控制可以减少线束 , 降低成本 , 便于各个电机控制单元和车内其它电控单元一起形成一个综合协
[汽车电子]
基于LIN总线的车用无刷<font color='red'>直流电机</font>控制器设计
EM78P447S单片机及其在直流电机红外遥控
1 EM78P447S的主要特点 EM78系列 单片机 是台湾义隆电子股份有限公司采用CMOS工艺制造商的8位高性价比单片机。该系列单片机一般都内置看门狗计数器(WDT)、RAM、ROM、可编程定时/计数器、预分频器以及5层堆栈。该系列器件的绝大部分指令只需两个振荡周期,同时具有内外部中断、低电压检测复位、可编程I/O、内部上拉电阻和集电极开路输出、SLEEP方式等功能。另外,EM78P447S单片机还具有编程简单、速度快、功耗小、成本低等优点,能广泛应用于玩具、家电、工业控制等方面。 EM78P447S主要性能特点如下: ●工作电压范围:2.5-5.5V; ●允许温度范围:0-70℃; ●工作频率范围: 石英振荡型:5V时的范围
[单片机]
EM78P447S单片机及其在<font color='red'>直流电机</font>红外遥控
永磁无刷直流电机数字式控制器
    摘要: 本文提出直接采用C504嵌入式单片机的永磁直流无刷电机数字式控制器的方案,并在电动自动车中得到了应用,取得了良好的实验效果。     关键词: 单片机  无刷电机  数字式  控制器 一、概述 永磁直流无刷电机(PM-BLDC),由于其固有的许多特点,再加上我国稀土资源丰富,被众多电机专家认为是21世纪的新型换代产品。随着半导体集成电路,电力电子器件,控制原理和稀土材料工业的发展,可以预见这种产品必然会逐步取代传统结构的交流电动机加变频调速器的模式。 目前见到的文献中,控制器一般都采用Motorola公司的MC33035,MicroLinear公司的ML4425/4428或采用通用的PWM
[工业控制]
基于dsPIC30F6010的无刷直流电机的控制系统
无刷直流电动机作为机电一体化产品,由于其既具备交流电动机的结构简单、运行可靠、维护方便等一系列优点,又具备有刷直流电机的运行效率高、无励磁损耗以及调速性能好等诸多优点,同时克服了有刷直流电机由于机械电刷和换向器的存在所带来的噪声、火花、无线电干扰以及寿命短等弊病,并且制造成本低,简化了电机的维修,使得它在工业上的应用也越来越广泛。本文涉及的系统以dsPIC30F6010为核心的数字信号控制器(Digital Signal ControlIer,DSC)为基础,迎合了控制领域的数字化和智能化的趋势。目前在控制上较多应用以DSP作为控制器,传统的DSP用做数字信号处理,使其在满足系统快速性和实时性的基础上兼顾控制能力。而dsPIC3
[单片机]
基于dsPIC30F6010的无刷<font color='red'>直流电机</font>的控制系统
无刷直流电机的保护电路方案
  本文给出几种电机的保护方案,它不仅响应速度快,控制可靠,而且大大地降低了保护装置的生产成本。该保护电路与传统的保护电路相比,省去了热继电器、交流接触器等保护装置的能耗,与电机为一体。经测试验证,效果良好。   1 电流检测原理   要实现过流保护,首要的任务是检测电机的电流。通常有2种检测电流的方法:   (1)小阻值无感采样电阻。通常采用康铜丝或者贴片件,这是一种廉价的方案,但是要注意采样电阻阻值的选取,功率要足够大,同时电阻的电感要小,以排除感抗在电阻两端引起的电压降。   (2)霍尔电流传感器。适合驱动开发,采用LEM公司的LA28-NP霍尔电流传感器的电流测量,它的优点是精度高,可靠性高。   在电
[嵌入式]
单片机温控红外遥控风扇源程序 舵机对直流电机控制方向
通过DS18b20来测温度,在lcd1602上显示温度和时间,时间初始值设为18:30,当温度超过26度时,直流电机打开,蜂鸣器报警,低于26关闭。也可遥控打开或关闭电机,没有使用舵机,此时直流电机不能改变方向。 当遥控器按下时,lcd1602显示turn off,无法显示温度,定时器1初始化,舵机可以使用,利用舵机对直流电机来控制方向,只有0,45,90,135,180,五个角度可以选。 将ds18b20和舵机分开使用的原因,ds18b20对时序的要求很高,如果用舵机的话就会使温度无法正常显示, 遇到的问题: 刚开始是直接在main函数里面使用舵机和温度传感器,发现温度显示不了,然后我想的在main函数用舵机,然后再
[单片机]
软件产生PWM控制直流电机C程序
//软件产生PWM控制直流电机C程序 //软件版本: ICCAVR ver 7.05 // Target : M48 // Crystal: 8.0000MHz #include iom48v.h #include macros.h unsigned int Pwmw; unsigned int adc_v; //ADC 转换函数 unsigned int adc_get(void) { ADCSRA |= (1 ADSC); //启动ADC转换 while( ADCSRA & (1 ADSC)); //判断ADC转换是否结束 return ADC; //取ADC的转换结果 } //电机驱动、调速子程序 void PWMsub(
[单片机]
直流电机驱动使用时的注意事项
直流电机驱动在驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。 直流电机驱动后面三极管和电阻,稳压管组成的电路进一步放大信号,驱动场效应管的栅极并利用场效应管本身的栅极电容(大约1000pF)进行延时,防止H桥上下两臂的场效应管同时导通(“共态导通”)造成电源短路。 当运放输出端为低电平(约为1V至2V,不能完全达到零)时,下面的三极管截止,场效应管导通。上面的三极管导通,场效应管截止,输出为高电平。当
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved