无线手柄报告_第1页
无线手柄报告_第2页
无线手柄报告_第3页
无线手柄报告_第4页
无线手柄报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测控综合实习成都理工大学2013-2014测控综合实习论文无 线 手 柄 年 级: 2010级 学 号: 201006010206 姓 名: 曾 红 林 专 业: 测控技术与仪器 指导老师: 成 毅 二零一四年一月22无线手柄设计摘要:本次课程设计的主要任务是完成无线手柄的设计,将手柄变化的电压量通过AD采集,通过MSP430F149进行数据处理,然后通过无线模块CC2500发送给接受模块,接受模块将数据接收后,打包将数据通过串口传给上位机,上位机完成相应的显示动画效果。通过本次课程设计,完成了硬件原理图,PCB的绘制,硬件电路的调试和程序的编写,基本实现了题目要求。关键词: 无线手柄 CC2

2、500 AbstrateThe design of the main task is to complete the design of the wireless handle, to collect the voltage change of the handle through the AD sampling. The MSP430F149 processe data, and then through the wireless module CC2500 sent to receiving module, receiving module package the data via a s

3、erial port transporting to the PC, PC complete the corresponding display animation effects. Through the design, we complete the hardware schematic diagram and PCB drawing, hardware circuit debugging and program writing, basically achieve the project requirments.keywords: wireless handle CC2500目录无线手柄

4、设计2摘要:2Abstrate2一.系统方案设计41.1 基本设计思路41.2设计框图4二.硬件电路设计42.1供电系统设计:42.2电源原理图:52.3手柄输入信号采集与调理电路:52.4手柄输入信号采集与调理电路原理图:62.5单片机系统设计:72.6单片机最小系统原理图:82.7无线模块设计:82.8无线模块接口原理图:92.9 SPI总线:102.10 串口通信:11三.硬件调试与测试:123.1 电路的焊接:123.2上电调试:123.3测试手柄输出电压是否正常12四.底层驱动程序设计134.1程序设计框图:134.2单片机详细功能:13五.上位机程序设计145.1程序总体框架:14

5、5.2上位机软件程序详细功能155.3软件调试175.4数据分析18参考文献:22一.系统方案设计1.1 基本设计思路 手柄的功能有三组模拟量和一个开关量:左右移动,上下移动,和手柄自身的旋转产生连续的电压变化,以及一个按钮产生一个开关量。设计采用最少的器件,和最低的功耗的思想出发。选用TI的MSP430F149作为主控芯片,内部自带12位AD,方便电压的采集。无线收发模块选择TI的CC2500,它的发射功率编程,给设计的功耗更多的空间。整个系统采用两个模块,分别是发送和接收模块,发送模块完成手柄数据的采集,然后通过CC2500将数据传给接收模块。接收模块将数据接收到后,以一定的数据格式将数据

6、通过串口发送给上位机。1.2设计框图无线发送 发送模块 手柄模块 MSP430F149 CC2500 接收模块CC2500MSP430F149PLL2302 上位机 图1.1二.硬件电路设计2.1供电系统设计: 在电路中,如果把模拟地和数字地大面积直接相连,会导致互相干扰。因此,正确处理好数字地和模拟地,使之相互不受干扰是PCB设计中的关键步骤。隔离数字地和模拟地的方法有多种。包括1、用磁珠连接;2、用电容连接;3、用电感连接;4、用0欧姆电阻连接。 磁珠的等效电路相当于带阻限波器,只对某个频点的噪声有显著抑制作用,使用时需要预先估计噪点频率,以便选用适当型号。对于频率不确定或无法预知的情况,

7、磁珠不合。电容隔直通交,造成浮地。电感体积大,杂散参数多,不稳定。0欧电阻相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。电阻在所有频带上都有衰减作用(0 欧电阻也有阻抗),这点比磁珠强。跨接时用于电流回路当分割电地平面后,造成信号最短回流路径断裂,此时,信号回路不得不绕道,形成很大的环路面积,电场和磁场的影响就变强了,容易干扰/被干扰。在分割区上跨接0欧电阻,可以提供较短的回流路径,减小干扰。 因此,在本设计中采用0欧电阻对地进行隔离。在PCB铺地过程中也分别进行铺地,这样可以有效地避免相互之间的干扰。2.2电源原理图: 图2.1电源设计图2.3手柄输入信号采集与调理电路:无线

8、手柄端设有3个电位器,当用户移动无线手柄时,从电位器输出的电压随之变化。竖立摇杆手柄,按钮开关在上,红、白、黑、两蓝共五根线在前方,其后方电位器标识为1个电位器,控制左右方向;左侧面电位器标识为另一个电位器,控制前后方向;红、白、黑三根线对应摇杆上方的旋转电位器;两根蓝色的线标识顶端的开关状态,开关按下时两蓝色的线导通。 电位器引脚说明:1、电位器正对看,左右两引脚为两端点,中间为抽头,相对左端引脚而言,摇杆右转时,电阻值由5K向10K变化,摇杆左转时,电阻值由5k向0K变化;2、电位器正对看,相对左端引脚,摇杆前进时,电阻值由5k向0K变化,摇杆后退时,电阻值由5K向10K变化;3、电位器,

9、红黑为两端点,白色为中间抽头,相对黑色引脚而言,右转时,电阻值由5k向10K变化,左转时,电阻值由5k向0K变化。电位器的供电电压为2.5V模拟电压,选择芯片MC1403。输出电压为 2.5V/-25mV。输入电压范围为4.5 V to 40 V。芯片引脚分配如图3.1所示。电压跟随器的输入电压与输出电压大小和相位一样。跟随器具有输入电阻大,输出电阻小的特点,电压跟随器一般做缓冲级及隔离级。因为,电压放大器的输出阻抗一般比较高,通常在几千欧到几十千欧,如果后级的输入阻抗比较小,那么信号就会有相当的部分损耗在前级的输出电阻中。在这个时候,就需要电压跟随器来从中进行缓冲。起到承上启下的作用,使前后

10、级之间实现阻抗匹配,从手柄输出的信号更加稳定。 本次课程设计选用算放大器选择OP07,其引脚分配如图2.2所示。OP07芯片是一种低噪声,非斩波稳零的双极性(双电源供电)运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25V),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放 大传感器的微弱信号等方面。 图2.22.4手柄输入信号采集与调理电路原理图: 图2.32.5单片机系统设

11、计:单片机选型:本次设计中选用MSP430F149,芯片引脚分配如图3.3所示。MSP430F149是德州公司新开发的一类具有16位总线的带FLASH的单片机,其性价比和集成度都很高,它最显著的特点是低电压、低功耗。 它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和F

12、ET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用。图2.42.6单片机最小系统原理图:图2.52.7无线模块设计:CC2500:CC2500是一款2.4GHz高性能射频收发器,设计旨在用于极低功耗RF应用。其主要针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD)。CC2500体积小,几乎集成了所有的无线射频功能,灵敏度高,可编程设定主要工作参数,高效的SPI接口,工作在1.8V3.6V电压范围,功耗低,具有多种调制方式,能满足不同应用要求,纠错能力强、误码率低。所需外围器件很少,降低了设计难度;数字特征明显,软件设计难度降低,用户操作也更加简单;

13、收发一体,可实现双向通信。CC2500可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示以及无线唤醒(WOR)的广泛硬件支持。主要特性如下所示: 2400.0MHz2483.5MHz工作频段。 高灵敏度(2.4kbps,2-FSK,1%误码率时为-104dBm)。 低电流消耗(接收模式,2.4kbps时仅17.0mA)。 最高可设置为+1dBm的发射功率。 支持1.2kbps500kbps的数据传输速率。 支持多种调制模式(OOK、GFSK、2-FSK和MSK)。 提供对同步字检测、地址校验、灵活的数据包长度以及自动CRC处理的支持。 支

14、持RSSI(接收信号强度指示)和LQI(链路质量指示)。 通过4线SPI接口与MCU连接,同时提供2个可设定功能的通用数字输出引脚。 独立的64字节RXFIFO和TX FIFO。 工作电压范围:1.8V3.6V,待机模式下电流仅为400nA。 工作温度范围:-40+85。引脚功能介绍: 表2.1引脚图:图2.62.8无线模块接口原理图:图2.72.9 SPI总线:SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备包括FLASHRAM、网络控制器、LCD显示

15、驱动器、A/D转换器和MCU等。SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。其中,SDO -主设备数据输出,从设备数据输入;SDO - 主设备数据输出,从设备数据输入;SCLK - 时钟信号,由主设备产生;CS - 从设备使能信号,由主设备控制。 CC2500通过4线SPI兼容接口对寄存器进行配置。这个接口同时用作写和读缓存数据。SPI 接口上所有的地址和数据转换被最先在重要的位上进行处理。SPI接口上所有的处理都同一

16、个包含一个读/写位,一个突发访问位和一个6位地址的 头字节一起作用。在地址和数据转换期间,CSn 脚(芯片选择,低电平有效)必须保持为低电平,如果在过程中 CSn变为高电平,则转换取消。当 CSn变低,在开始转换头字节之前,MCU 必须等待,直到 SO脚变低。这表明电压调制器已经稳定,晶体正在运作中。除非芯片处在 SLEEP或 XOFF状态,SO脚在 CSn变低之后总会立即变低。表2.2 SPI的时序要求2.10 串口通信:MAX3232:MAX3232收发器采用专有的低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能。器件仅需四个0.1µF

17、的外部小尺寸电荷泵电容。MAX3222、MAX3232和MAX3241确保在120kbps数据速率下维持RS-232输出电平。MAX3237在正常工作模式下可确保250kbps的数据速率,MegaBaudTM工作模式下保证1Mbps的速率,同时保持RS-232输出电平。MAX3232具有2路接收器和2路驱动器。MAX3222提供1µ A关断模式,有效降低功耗并延长便携式产品的电池使用寿命。关断模式下,接收器保持有效状态,对外部设备(例如调制解调器)进行监测,仅消耗1µA电源电流。MAX3222和MAX3232的引脚、封装和功能分别与工业标准的MAX242和MAX232兼容。

18、引脚图:图2.8原理图:图2.9三.硬件调试与测试:3.1 电路的焊接:拿到PCB板后,按照先贴片后插件的顺序将元器件依依焊好。焊接一点要仔细,尽量避免虚焊,错焊等细节问题。焊接中有个小小的挑战就是:MSP430149的焊接,它的管脚较多,焊接时一定要把管脚对齐,然后用助焊剂将管脚涂抹一遍,然后每个用焊锡将放好位置的管脚涂上焊锡,然后用平口电烙铁沿着管脚的方向,将黏在一起的焊锡分开。3.2上电调试:元器件焊好后就需要上电调试,上电后检查给个电源芯片输出的电压是否正常,检查芯片的供电供电是否正常。供电没问题后,可以先调试单片机,可以下载测试程序,看单片机能否工作。单片机检查完后,检查手柄采集电路

19、是否正常。主要是电压跟随器能否正常工作。3.3测试手柄输出电压是否正常看手柄能够输出比较正常的电压范围。手柄的滑动变阻器的阻值是10K,方案采用MC1403供电,输出2.5V的精确电压.所以手柄不滑动时,手柄滑动变阻器抽头引线教输出电压在1.25左右。四.底层驱动程序设计4.1程序设计框图: 发送模块 接收模块开始开始时钟,AD,CC2500初始化时钟,AD,CC2500初始化 接收 AD转换 串口 发送图3.14.2单片机详细功能:单片机程序设置了三个AD转换通道A3,A4和A5,采集信号采用时序电路多通道多次转换。分别采集手柄三个方向的电阻值,并依次进行AD转换,转换完毕之后同样依次将数据

20、存放在数组results中。#pragma vector = ADC_VECTOR _interrupt void ADC12ISR(void) results0 = ADC12MEM3 ; results1 = ADC12MEM4 ; results2 = ADC12MEM5 ; 程序中设置的数据包为一个11字节的数据包,格式为|地址|有效数据长度|和校验|有效数据|结束符|地址:接收端的地址,让数据包能够找到接收方在何处,长度为一个字节,这里 的地址为0x0A。有效数据长度:指有效数据部分的长度,以字节为单位。长度为一个字节,此处 设定有效数据为7个字节,所以此字节为0x07。和校验:此数

21、据为把数据包11个字节全部加起来,长度为一个字节。有效数据:此节长度为7个字节。头6个字节为三个电阻值数据,其中每个电阻值占两个字节。最后一个字节是开关量的数据。结束符:结束符为0x0D,标志一个数据包的结束,长度为一个字节。while(1) INT8U sum = 0x1E; uint k = 3; for(uint i=0;i<3;i+) a = resultsi/256; b = resultsi%256; sum += a+b; TxBufk+ = a; TxBufk+ = b; delay(600); TxBuf9 = P3IN&BIT1; sum = TxBuf9+s

22、um; TxBuf2 = sum; halRfSendPacket(TxBuf,leng); 以上代码段的功能是将放在results数组中的三组数据依次先除以256得到高八位数据,并赋值给变量a。接着将余数,也就是低八位,赋值给变量b。接着把a和b的值赋给数据包的有效数据里,第一个XX存放高八位,第二个XX存放低八位。把11个字节的和放在数据包的第三个字节。开关量输入给单片机的P3.1引脚。读取此引脚数据并赋值给数据包的第十个字节,最后加上结束符后并发送出去。五.上位机程序设计5.1程序总体框架:开始 对话框控件摆放 查询注册表的串口信息选择串口,并配置串口信息并打开串口 接收下位机传送的数据

23、分析数据包信息接收的数据是否为想要接收的数据包分析数据包数据,并根据数据使图形移动结束图2.1.1上位机程序流程图5.2上位机软件程序详细功能首先摆放对话框控件,同样也是手柄测试软件的主界面,如下图所示:图2.2.1 上位机界面图基本功能是能够进行串口通信,并在此基础上增加手柄演示功能。手柄以数据包为单位发送数据,当手柄发送数据到上位机时,上位机提取一个数据包的大小的数据并进行分析,确定是数据包之后,便进行解析数据包中的数据,将其反应在演示区的小方块的运动上。手柄数据包格式为11个字节,为:|地址|有效数据长度|和校验|有效数据|结束符|。确定为数据包之后,就分析有效数据的值,数值在某个特定的

24、围中就使小方块往特定的方向运动。接收数据区域:接收串口数据,并显示在编辑栏中。自动检测串口,并灵活选择各种串口配置选项。具有十六进制显示功能。串口:自动检测并显示在列表中。波特率:有110、300、600、1200、2400、4800、9600、14400、19200、38400、56000这11个选项。校验位:有无校验、奇校验、偶校验、标记校验这4种选项。数据位:有5、6、7、8四种选项。停止位:有0、1.5、2这3种选项。发送数据区域:将编辑框中的数据发送出去,可手动发送也可设置自动发送,时间间隔也可根据用户的需求设置。同时也可以将某个文件中的数据发送出去。可以十六进制发送数据。状态显示区

25、域:显示当前串口开关状态,发送和接受了多少数据,当前选择的波特率、数据位、停止位、校验位的状态。演示区:根据接收到的数据使小方块上下、左右、旋转起来,以测试手柄的性能。此程序最关键的部分就是串口通信部分。要进行串口通信首先要做的就是获取串口号。这里我使用的方法是通过查询注册表来获取串口号。获取到串口号之后,就打开串口并获取用户配置的串口信息。一切准备工作做好之后,就开始接收数据。接收完数据之后,就分析数据包是否为想要的数据包。程序设计为一次提取一个数据包大小的数据,即11个字节大小的数据。但是,需要注意的是,才开始接受数据时,数据是不稳定的。也就是说,最开始接收的数据是不正确的。于是代码中设定

26、为先接收2组数据,但是只接收不处理。等到从第三次数据开始才处理,这是数据基本稳定了。还有一个最关键的问题是:从缓存区提取的数据可能是一半一半的。换句话说就是有可能一个数据包被分成两半,数据包的前半部分提取在了数组的后半部分,而数据包的后半部分要等到下次提取才能提取出来并且放在数组的前半部分。为了解决这个问题,于是新建了个数组,目的是把分成两半的数据包拼凑在新的数组中形成一个完整的数据包。之后,便可以开始处理数据了。首先看接收到的数据包的第一个字节,即地址是否为0x0A,如果不是,则认定此数据包不是上位机等待接收的数据,于是丢弃数据包。如果判定是,则开始分析数据(也就是第四到第九个字节)。要进行

27、分析,首先要提取他们。提取之后判断数据的大小,每一组数据的大小范围在04095之间。判断出范围之后就将之响应在图形的运动变化上,然后就这样不断循环。5.3软件调试首先要保证下位机和上位机能够正常的单独运行。对于下位机,要准确的进行AD转换,放在正确的缓存区中,并及时有序的不间断的发送数据出去,接收部分也要正确及时的接收到数据。对于上位机来说,要及时接收到下位机发送的数据,并分析和解析数据,准确的反应在图形的运动上,让用户直观的测试手柄的方向是否正确。1. 最开始以为从缓存区提取的数据从一开始就是稳定的。结果调试的时候发现最开始的两组数据都是混乱的,要等第三组才开始稳定。解决方法:等到第三组数据

28、再处理。2. 理论上来讲,如果手柄不动,上位机上的图形应该不会动,但是实际上即使手柄不动,图形也在动。这就说明接受的数据包有问题。经过调试之后发现,从缓存区提取的11个字节不一定是同一个数据包的,有可能是两个数据包拼凑而成的。解决办法:新建一个数据,把数据拼接成一个完整的正确的数据包。3. 在处理数据时,发现如果一个字节最高位为1,那它会被当成补码,转成十进制时,就会被当成是负数。当遇到这种情况时就需要转换。5.4数据分析手柄不移动上位机接收数据如下:以其中一组数据为例,0A 07 B5 06 2D 06 2B 06 2B 02 0D。三组数据分别为06 2D,06 2B,06 2B。对于横轴

29、:06 2D,转成十进制为:1581对于纵轴:06 2B,转成十进制为:1579对于垂直轴:06 2B,转成十进制为:1579手柄左移上位机接收数据如下:以其中一组数据为例,0A 07 70 05 EB 06 2A 06 2A 02 0D。三组数据分别为05 EB,06 2A,06 2A。对于横轴:05 EB,转成十进制为:1515对于纵轴:06 2A,转成十进制为:1578对于垂直轴:06 2A,转成十进制为:1578手柄右移上位机接收数据如下:以其中一组数据为例,0A 07 7B 0B F2 06 29 06 29 02 0D。三组数据分别为0B F2,06 29,06 29。对于横轴:0B F2,转成十进制为:3058对于纵轴:06 29,转成十进制为:1577对于垂直轴:06 29,转成十进制为:1577手柄上移上位机接收数据如下:以其中一组数据为例,0A 07 7A 06 2E 0B EC 06 29 02

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论