基于CH340的遥控器与PC机接口设计
扫描二维码
随时随地手机看文章
无人机飞行模拟训练系统是一种对地面操纵人员进行培训的仿真软件,它通过在计算机中建立飞行场景和飞机三维模型,由遥控器输入指令进行驱动控制,从而实现飞机的飞行仿真。模拟训练具有在无风险、无器材消耗的条件下训练飞行操纵人员的特点,可以节约大量的训练经费和训练时间。在无人机飞行模拟训练系统的设计过程中,首先要解决的问题是遥控器和计算机之间的通讯,以便把遥控器产生的遥控指令送到计算机中。由于遥控器本身不带USB口,不能和计算机直接相连,因此需要设计USB接口电路完成通讯功能。
1 硬件设计
从理论上来讲,遥控器与PC机的连接可以设计成并口、串口、USB口等多种连接方式,并可以根据不同的连接方式设计相应的接口电路。然而实际的情况是:并口通讯虽然传输速度快,但连线多,抗干扰性差,连线不能过长,操纵使用不便;RS232串口通讯使用方便,传输距离也较远,但目前的PC机却很少再设计有232串口,因此串口方式的使用也受到了限制。同时,由于USB具有传输速率高、支持热插拔以及即插即用等优点,当前的计算机普遍配置有多个USB口,因此采用USB接口进行通信更简单高效。
USB接口电路的硬件结构如图1所示,它主要由信号调理电路、控制单片机、USB接口模块组成。
1.1 遥控器及指令编码格式
无人机飞行模拟训练系统所使用的遥控器是通用的Futaba 4通道遥控器,其外形如图2-a所示,它主要包括一个脉冲编码电路和一个高频发射电路。脉冲编码指的是以不同的脉冲数目、脉冲宽度、脉冲位置或者不同的脉冲组合来代表不同的控制指令的编码方式。目前使用的遥控器编码方式主要有PPM和PCM两种,大多数遥控器同时具备这两种编码功能,使用时可根据需要选取其中一种。操纵器背面一般都设有教练口,如图2-b所示。编码电路产生的遥控指令编码信号一方面送到高频发射电路,一方面还送到教练口输出,因此教练口送出的也是PPM或PCM信号。
相比较PCM编码而言,PPM编码更具有一定的规律性,因此系统设计中选择的是对PPM编码的指令格式进行处理。以4通道的遥控器为例,PPM编码格式的脉冲波形如图3所示。
图中为一组4通道的脉冲串,其脉冲串宽度为20ms,共由5个脉冲组成,它所携带的信息是各通道PWM信号的占空比,其中1通道1.5ms,2通道1.5ms,3通道1ms,4通道2ms。当操纵相应通道的操纵杆时,对应通道的脉冲低电平宽度会出现变化,也就是下一个脉冲出现的位置会变化,但脉冲串总的周期不变,一直保持20ms。
1.2 信号调理电路
PPM格式的指令编码信号由遥控器的教练口输出,由于信号的电平幅度与单片机不匹配,所以要经过信号调理电路对电平幅度进行变换,然后送给控制单片机进行指令译码。
1.3 控制单片机
控制单片机的作用是对脉冲信号进行译码,并把译码以后的结果输出。由于PPM编码输出的是一系列脉冲信号,故单片机的译码可以采用外部中断的方式,测量脉冲间隔(即每个通道的脉宽信号),然后以串行信号的格式送给USB接口模块。
1.4 USB接口模块
USB接口模块采用的是芯片CH340 ,它是一个USB 总线的转接芯片,可以实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
采用CH340设计USB接口电路,不需要了解任何USB协议和编写任何固件程序,可以实现USB 与串口的转换(原理图如图4所示),并且可以使用现有的驱动程序,易于迅速开发使用。本系统设计中所采用的是将USB转3线制RS232 串口,应用于单片机与PC机之间的数据通信,这样一来,就会在计算机上产生一个虚拟的COM口,用户只需按照通用串行口一样使用USB口即可。这样不仅能使单片机具备USB通信的诸多优点,简化了USB编程,同时还可以利用USB对控制单片机提供5V的工作电源(500mA以下)。
2 软件设计
软件设计的重点是遥控指令信号的读取以及单片机与PC机之间的通讯。
2.1 遥控指令信号的读取
遥控指令信号的读取是由控制单片机利用外部中断的方式来实现的,每个脉冲到来时进入中断一次,然后读取脉冲宽度并判断是否是同步脉冲。正常的脉宽信号标准在1ms到2ms之间,同步脉冲信号的脉宽大于2ms。如果读到的脉宽大于2ms,就表示下一个脉冲串开始了,需要更新每个通道的脉宽值;如果读到的脉宽不大于2ms,表示这仍然是某个通道的脉宽,把它送到相应的数组中储存起来,接着读取下一个通道的脉宽,直至同步脉冲的到来。
2.2 单片机与PC机之间的串行通讯
串行通讯主要实现单片机译码结果(即通道脉宽值)的发送,把读取的指令脉宽信号利用串行中断,经串口发出,再经过USB接口电路发送到上位机,由计算机完成对操纵指令的读取和识别,从而获取遥控器操纵舵量的方向和大小。
正常情况下,每一串信号都有固定的脉冲个数,如果计算机读到的信号个数发生了变化,说明在信号传输过程中遇到了干扰。为了预防干扰造成的飞机在飞行中出现误动作,软件在脉冲数判断方面采取了一些抗干扰措施。当发现信号个数发生变化时有几种处理方法:一是保持上次正确的数值不变;二是取各个通道的中间值;三是取某一预先设定的固定值。本系统设计中采用的是第一种方法,即把当前读到的一串脉宽数丢掉,保持上次脉宽数值不变。
3 系统调试和检查方法
在PC机上利用串口调试助手,通过读取遥控器的指令,可以对USB接口电路进行调试和检查,步骤如下:
(1)通过教练口把遥控器输出的PPM指令信号与USB接口电路信号输入端相连;
(2)安装USB驱动并获取虚拟的串口号。当第一次把USB接口电路的USB插头插入计算机时,计算机系统会弹出发现新硬件的提示,并要求安装相应的USB驱动程序;接下来把CH340芯片驱动(驱动程序可在网上下载)按照提示步骤逐步安装。驱动程序安装完成后,系统会自动增加一个COM口,并可以在计算机属性的硬件管理中的串口项查到计算机为该虚拟串口分配的串口号,用户就可以按照传统的串行口控制方式来使用这个虚拟COM口,这样一来就把USB设备虚拟为一个串行设备;如果不是第一次使用,就不需要重新安装驱动,只需记住虚拟的串口号。
(3)运行串口调试助手,选择串行端口号与计算机为USB分配的虚拟串口号一致,设置与接口电路相同的通讯参数(波特率、奇偶校验位、数据位、停止位等),然后打开串口。
(4)打开遥控器电源开关,并选择工作于PPM编码方式。此时,在串口调试助手界面的数据接收区就会显示出遥控器各个通道对应的脉宽数据。操纵遥控器不同的操纵杆,就会发现对应的脉宽数据发生改变。
4 结论
利用单片机外部中断方式对遥控器教练口输出的PPM指令信号进行译码,通过USB接口电路实现与计算机的通信,不仅实现了对指令信号读取,而且简化了外设接口和编程,省去外接电源;在计算机上用USB口虚拟出串行口,既可以克服由于USB接口协议的复杂性给用户带来的不便,又可以简化计算机与单片机之间的接口,它的使用与普通的USB外设相同,只是第一次插入PC机USB接口时,系统会提示安装相应的驱动程序。该接口电路已经过验证,并应用到飞行模拟器中。