基于VC++的模拟舵机系统设计
摘要:在无人机半物理仿真实验中,为了节约实验成本,提出用模拟舵机系统代替真实舵机的方法。基于VC++设计了模拟舵机系统。在半物理仿真系统中连入模拟舵机,并用该系统模拟副翼、升降舵、油门的舵机。通过实验验证了该模拟舵机系统的有效性。实验结果表明,该模拟舵机系统具有实时性好,可模拟多种舵机的特点。
关键词:模拟舵机;多媒体定时器;PCL-836;PCL-812;PCL-726
0 引言
无人机飞行控制仿真主要包括数字仿真和半物理仿真。半物理仿真将系统部分实物引入仿真回路,尽可能真实模拟现场情况,比数字仿真更能有效验证飞行控制系统的可靠性,尤其在其在初期试飞调参以及后期控制策略改进阶段应用广泛。
做无人机的半物理仿真时,需要使用真实舵机,而舵机价格比较昂贵,且多次实验时存在损坏的风险,无形中增加了实验成本。本文根据舵机在飞行控制系统中的作用及特点,基于VC++设计模拟舵机;该模拟舵机由综合记录计算机和若干板卡构成,运行于综合记录计算机中;代替实现真实舵机的功能,节约了实验成本。
1 模拟舵机硬件设计
模拟舵机系统,首先要能模拟舵机在半物理仿真中的功能;其次要不影响半物理仿真接入真实舵机。这个是通过PCLD-785B(继电器输出板)来选择的,当DO不输出任何值时,Ci和NCi是导通的,当DO输出时,Ci和NOi导通(i=0,1,2,…,9)。
系统硬件设计如图1所示,为了简洁,省去PCL-880接线板。
图1中的PCLD-782B是光电隔离板,为了隔离PCLD-785B带来的噪声和提高电压(飞控盒输出电压是3.3 V,提高到TTL电平)。而PCL-836(频率采集卡)和PCL-726(D/A输出卡),PCL-812(A/D采集卡)和位于综合记录计算机内,在VC++中的操作方法如图2所示。
2 舵机函数关系的输入
为了仿真多种舵机的需要,舵机函数关系应该可调;同时系统要满足自动获取接在图1仿真舵机上舵机的舵机函数。系统用PCL-836发出PWM波,PCL-726采集反馈电压。程序界面如图3所示。
图中k,b为V=kT+b中的系数,V代表反馈电压,T代表脉宽(单位:ms)。
3 模拟舵机软件设计
3.1 PWM波采集方法
对PWM的采集是程序的难点,这里使用PCL-836的事件计数功能来实现对PWM的测量。PCL-836共有6路计数器,其中CLK5用来产生时钟信号。在PWM的下降沿时去读计数器的值,然后根据时钟的频率算出PWM高电平的时间。检测PWM下降沿的常见的方法是使用中断和查询。在PWM每次下降沿时触发中断,在中断程序里去读计数器的值。但是PCL-836只支持一个外接中断,并且是上升沿触发中断,而整个仿真需要4个舵机,在目前的硬件条件下并不能直接实现,需要一定的辅助电路,如非门等。其次用查询的方法,用一个线程来读DI,在下降沿时去读计数器的值。但这样CPU的占用很高,影响系统的整体性能。所以不使用查询和中断的方法。为了能够检测PWM下降沿,并考虑现实性,决定用1 ms定时器来实现。如果上次读到高定平,而这次读到低电平,就认为是下降沿。虽然有不定的延迟,但是延迟小于1 ms,同时可以得到正确的值,而且系统占用要远远低于查询方法。
3.2 使用多媒体定时器采集PWM波
微软提供了精确定时器的底层API,支持能够提供高精度的定时器服务,利用多媒体定时器可以精确地读出系统的当前时间,并在很精确的时间间隔内处理事件,可以到1 ms的精度。多媒体定时器的回调函数的程序流程图如图4所示。
用多媒体定时器采集PWM的方法带来的不定延迟,加上Windows系统的实时性差带来的延迟,使得模拟舵机系统实时性变差。但是飞控盒发出的PWM波几乎是同时发出,即上升沿在时间上是一致的。所以可以用中断加查询的方法来检测,用一路PWM做中断源,每次中断的时候去查询,最终检测到下降沿。
3.3 中断加查询采集PWM波
PCL-836支持一路外部中断,上升沿触发。首先使用DRV_EnableEvent函数使能中断,开始中断线程,在中断线程里用DRV_CheckEvent函数检测中断。中断线程流程图如图5所示。
使用中断加查询的方法采集PWM,实时性比较好,系统占用高于定时器方法,但是低于查询方法。
4 仿真分析
在半物理仿真系统中连人该模拟舵机,系统模拟副翼、升降舵、油门三个舵机。使用该系统采集飞控盒发出的PWM,并反馈电压给模型机。经仿真采集到各舵机的PWM曲线如图6~图8,可知该系统实现具有实时性好,可模拟多种舵机的特点。
5 结语
本文基于VC++设计的模拟舵机系统,实现了无人机飞行控制半物理仿真中真实舵机的功能,一定程度上降低了实验成本。该系统功能全面,设计灵活,可实现多种类型舵机,是一种行之有效的仿真方法。
pwm相关文章:pwm是什么
尘埃粒子计数器相关文章:尘埃粒子计数器原理
评论