基于LM3S微处理器的机械手无线控制系统
2016-01-29王坤张乐年
王坤,张乐年
(南京航空航天大学 机电学院,江苏 南京 210016)
基于LM3S微处理器的机械手无线控制系统
王坤,张乐年
(南京航空航天大学 机电学院,江苏 南京 210016)
摘要:介绍了一种使用LM3S811微处理器与SM63无线模块搭建的手持式无线遥控器,该遥控器正面设置多个实体按键,并对不同按键定义了不同的功能。使用该遥控器配合一套机械手控制系统,实现了机械手的远程无线遥控。
关键词:无线遥控;控制系统;LM3S811微处理器
Wireless Control Manipulator System Based on Microprocessor
WANG Kun, ZHANG Lenian
(Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)
Abstract:This paper introduces a wireless remote controller equipped with LM3S811 microprocessor and SM63 wireless module, which is equipped with many physical keys in the front. The functions of the various keys are defined. This controller can be used with a manipulator control system to control the whole system.
Keywords:wireless remote control; control system; LM3S811 microprocessor
0引言
无线遥控器是利用无线信号对远程各种机构进行控制的遥控设备。这些信号被远程接收设备接收后,可以通过指令驱动各种相应的电子设备去完成各种相应的操作,如闭合电路、移动手柄、开启电动机等,之后再通过机械系统完成所需要的操作。作为一种与红外遥控器相补充的遥控器种类,在车库门,电动门、道闸遥控控制,防盗报警器,工业控制以及无线智能家居等领域得到了广泛的应用。
1无线遥控器硬件设计
无线遥控器控制系统结构如图1所示。系统包括两个部分——控制端和执行端。控制端包括手控盒和无线发送模块,手控盒上设计了多个实体按键,用来给执行端发送不同的动作指令。执行端包括单片机控制核心、无线接收模块、电动机和机械手,响应控制端指令执行不同的动作。
图1 控制系统结构图
控制端采用LM3S811+SM63的架构,当按下或释放不同按键时,LM3S811内部程序判断按键值并将相应指令通过串口发送至SM63无线模块,无线模块与发出无线信号,执行端连接SM63模块的单片机等控制元件接收到信号后,解析协议,将动作指令转换成电动机控制信号发送给电动机,由电动机驱动机械手在相应方向上的动作。此系统可以应用于多种工业控制系统中,如工业机器人控制,阀门控制,设备参数设定等场合,具有鲜明的实用价值。
1.1LM3S系列芯片简介
LM3S811 ARM微控制器是Luminary公司推出的一款结构简单、性能出众且带有ARM Codex-M3处理器内核的32位微控制器,它拥有与8位和16位器件相同的价格,却能为用户提供32位器件的性能。Codex-M3处理器是首个基于ARMv7M架构,主要针对汽车车身系统、工业控制系统以及无线网络等对成本和功耗极端敏感的嵌入式应用领域,是以实现高系统性能为目的而专门设计的ARM内核。
其电源电压为3.3 V,最高时钟频率50 MHz,64 kHz的单周期FLASH;3个32位通用定时器,可分成6个16位定时器使用;一组同步串行接口(SSI),2个异步串行接口(UART);4通道模数转换器(ADC),1组模拟比较器和I2C接口;3个脉宽调制信号(PWM)模块,32个通用输入输出管脚(GPIO)及硬件看门狗等。
SM63低电压型无线模块是一种半双工无线通信模块,可实现无线信号的点对点,点对多传输,具有体积小、低成本、低功耗、发送数据量大、传输距离远的优点。
遥控器中,将LM3S811的UART0串口分配给SM63无线模块,二者间连接电路如图2所示。
图2 LM3S811与SM63模块连接图
1.2按键电路设计
按键部分采用实体按键,硬件电路设计,如图3所示。
图3 按键电路设计图
KEY0-KEY6引脚与LM3S811输入输出口的PB0-PB6相连,当按键未按下时,由于有3.3V上拉电源,PB口输入为高电平,当某一按键按下时,对应PB口输入变为低电平并触发中断,当有中断发生时,主函数使用查询方式获得键值,发出相应命令码。其中,PB口中断触发方式有上升沿、下降沿或双边沿触发,如果改为双边沿触发,即可实现按下和弹起对应不同动作,如电动机的启动和停止。
2程序设计
控制程序在Keil μVision4环境中使用C语言编写,便于维护和移植。另外,使用J-LINK连接到JTAG下载口,可对遥控器进行在线调试。
函数流程如下:
图4 遥控器程序流程图
按键按下判断时使用延迟检测方法:即当检测到按键状态变化时,延迟一定时间再次读取按键状态,若确实变化了,再开始响应,否则视为误操作,不动作。此方法可以改善因按键抖动引起的误操作。当按键按下后,启动计时,若在时间到达1.5s之前松开按键,则视为短按,此时遥控器向单片机发送短距命令,单片机控制电动机走完该圈数时自动停止;若在时间到达1.5s后,按键仍未松开,则视为长按,此时遥控器向单片机发送长距命令,单片机控制电动机持续转动,当按键松开时,遥控器发送停止命令,电动机停止。
中断检测及通信部分程序如下:
//中断检测
void GPIO_Port_B_ISR( void )// B口中断服务函数
{
uint32 ulStatus;
uint8 stateKey;
ulStatus = GPIOPinIntStatus( GPIO_PORTB_BASE, TRUE );// 读取中断状态
GPIOPinIntClear( GPIO_PORTB_BASE, ulStatus );// 清除中断状态
if( ulStatus & KEY0 )
{
stateKey = Generate_Input_Read(0);// 读取KEY0键状态
if( !stateKey )// KEY0键按下
{
SysCtlDelay( 2000 * ( SysMainOSC / 300000 ));//延时20ms再检测
stateKey = Generate_Input_Read(0);
if( !stateKey )// KEY0键按下
{
KeyDownNum = 0;//为定时器指示按键号
//do something
TimerEnable( TIMER1_BASE, TIMER_A );//开始检测按键时间
}
}
else// KEY0键松开
{
…
}
}
else if( ulStatus & KEY1 ) // KEY1键按下
{
…// 同KEY0键
}
…// 同上
}
//通信部分:串口初始化和发送字符:
uint8 Uart0Init( uint32 ulBaudRate, uint8 ucPrio )
{
if( ulBaudRate > 115200 )// 波特率> 115200,返回
return(FALSE);
SysCtlPeripheralEnable( SYSCTL_PERIPH_UART0 );// 使能串口0外围设备
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOA );// 使能GPIOA
GPIOPinTypeUART(GPIO_PORTA_BASE,
GPIO_PIN_0 | GPIO_PIN_1); // 设置PA0,PA1为RXD0,TXD0
//配置串口参数:串口地址,波特率,数据长度为8位,1位停止位,无校验
UARTConfigSet(UART0_BASE,
ulBaudRate,
UART_CONFIG_WLEN_8|
UART_CONFIG_STOP_ONE|
UART_CONFIG_PAR_NONE);
UARTFIFOLevelSet( UART0_BASE, // 设置收发FIFO中断触发深度
UART_FIFO_TX2_8, // 发送FIFO为2/8深度(4B)
UART_FIFO_RX2_8 ); // 接收FIFO为6/8深度(4B)
IntPrioritySet( INT_UART0, ucPrio ); // 设置中断优先级
// IntEnable( INT_UART0 ); // 使能串口0系统中断
UARTIntEnable(UART0_BASE,
UART_INT_RX |
UART_INT_RT);// 使能串口0接收中断和接收超时中断
UARTEnable(UART0_BASE);// 使能串口0发送和接收
return(TRUE);
}
void SendToUart0( uint8*pucBuffer,uint16 usByte )// 发送数据
{
while( usByte )
{
if( UARTSpaceAvail(UART0_BASE) )// 确定发送FIFO中是否还有任何可用的空间
{
UARTCharNonBlockingPut( UART0_BASE, *pucBuffer++ );// 发送一个字符到指定端口
usByte--;
}
}
}
3控制协议
通信协议是通信双方的一种约定,约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出的统一规定,通信双方必须共同遵守。无线通信协议的设计应遵循简单、有效、可靠的原则。
本系统中遥控器控制指令根据机械手系统需要设计为17位byte类型字符,除包头包尾外,其余各位用来指定单片机、指定电动机以及设置电动机的运行方向、速度、圈数等,具体各个位代表意义如表1所示。
表1 通信协议各位定义
4结语
使用LM3S811微控制器与SM63无线通信模块相结合,实现了通过实体按键对远端机械手的无线控制,实际现场使用效果很好,灵活方便,并且节省了部分成本。此系统可以通过改变遥控器端的控制程序、机械手端的控制芯片和控制方式以及二者之间的通信协议,推广到各种需要无线遥控的工业控制场合。
参考文献:
[1] 黄志伟. 32位ARM微控制器系统设计与实践—基于Luminary Micro LM3S系列[M]. 北京:北京航空航天大学出版社,2010.
[2] Luminary Micro LM3S811数据手册[S]. Luminary Micro公司.
[3]来清民. ARM Cortex-M3嵌入式系统设计和典型实例—基于LM3S811[M]. 北京:北京航空航天大学出版社,2013.
[4] Theodore S.Rappaport.无线通信原理与应用[M]. 北京:电子工业出版社,2012.
[5]10mV/50mV-ISM低电压无线收发模块[S]. 上海:上海上志电子信息技术有限公司.
收稿日期:2014-12-18
中图分类号:TP241
文献标志码:B
文章编号:1671-5276(2015)04-0161-03
作者简介:王坤(1988-),男,江苏徐州人,硕士研究生,研究方向为机电一体化。