tag 标签: ppm

相关博文
  • 热度 8
    2023-9-20 07:25
    932 次阅读|
    0 个评论
    PPM(Pulse Position Modulation,脉冲位置调制)是一种常见的接收机编码方式,它使用脉冲的位置来表示不同的通道值。PPM编码通常用于控制模型车、船、飞机等电子设备。 以下是一个简单的Arduino代码示例,演示了如何读取和解码PPM信号: arduino 复制代码 # define PPM_PIN 2 // PPM信号输入引脚 void setup () { Serial . begin ( 9600 ); pinMode (PPM_PIN, INPUT ); } void loop () { // 读取PPM信号 int ppmValue = analogRead (PPM_PIN); // 解码PPM信号 int 10 ) & 0x3FF ; int 20 ) & 0x3FF ; int 30 ) & 0x3FF ; // 输出通道值 Serial . print ( "Channel 1: " ); Serial . println (channel1); Serial . print ( "Channel 2: " ); Serial . println (channel2); Serial . print ( "Channel 3: " ); Serial . println (channel3); delay ( 10 ); } 这个代码使用Arduino的模拟输入功能来读取PPM信号,然后使用位运算解码信号中的通道值。最后,将通道值输出到串口监视器。请注意,这只是一个示例代码,具体实现可能因设备和应用程序而异。 PCM(Pulse Code Modulation,脉冲编码调制)是一种数字式接收机编码方式,它使用脉冲的宽度和位置来表示不同的通道值。PCM编码通常用于控制模型车、船、飞机等电子设备。 以下是一个简单的Arduino代码示例,演示了如何读取和解码PCM信号: arduino 复制代码 # define PCM_PIN 2 // PCM信号输入引脚 void setup () { Serial . begin ( 9600 ); pinMode (PCM_PIN, INPUT ); } void loop () { // 读取PCM信号 int pcmValue = analogRead (PCM_PIN); // 解码PCM信号 int 10 ) & 0x3FF ; int 20 ) & 0x3FF ; int 30 ) & 0x3FF ; // 输出通道值 Serial . print ( "Channel 1: " ); Serial . println (channel1); Serial . print ( "Channel 2: " ); Serial . println (channel2); Serial . print ( "Channel 3: " ); Serial . println (channel3); delay ( 10 ); }
  • 热度 19
    2015-3-24 13:25
    1393 次阅读|
    0 个评论
      0 引言   目前,大气激光通信、无线红外通信以及新兴的紫外光通信技术发展迅猛,是现代通信技术研究的一个热点。尤其是新兴的紫外光通信技术,它工作在通常所说的紫外光 “日盲区”,利用该波段的紫外光进行通信其背景噪声可视为零,也使得紫外光通信具有低窃听率、低位辨率、全方位、高抗干扰能力等优点。光通信系统大多采用设计为强度调制/直接检测(IM/DD)的系统,应用于强度调制/直接检测光通信系统中的调制方式有很多种,脉冲位置调制(PPM)是一种正交调制方式,相比于传统的开关键控(OOK)调制,它具有更高的光功率利用率和频带利用率,并能进一步提高传输信道的抗干扰能力。此外,PPM降低了光辐射平均功率的要求,小辐射功率对延长发射光源工作寿命特别重要,能有效提高整机系统的使用寿命。   本文从工程应用出发,根据PPM的基本原理和数学模型,对PPM调制解调系统进行了设计,并用Verilog HDL语言在Quartus上完成了系统仿真。   1 PPM的基本原理与数学模型   根据脉冲形式,脉冲位置调制可分为三种:单脉冲位置调制(L-PPM),差分脉冲位置调制(L-DPPM)以及多脉冲位置调制(Multi- PPM)。从带宽利用率、传输速率以及工程实际应用上综合考虑,选择L-PPM作为PPM实现的具体方式。   L-PPM是将一个n位二进制数据组映射为由2n个时隙组成的时间段上的某一个时隙处的单个脉冲信号。易知,一个L位的PPM调制信号传送的信息比特为log2L。如果将n位数据组写成m=(m1,m2,…,mn),而将时隙位置记为l,则此单脉冲位置调制的编码映射关系可以写成如下数学关系:l=m1+2m2+…+2n-1mn,n∈{0,1,…,n-1)。根据此关系式,得出16-PPM的示意图,如图1所示。   2 PPM调制系统设计   由上述讨论,不难发现PPM的调制过程本质上是一个计数过程。程序需计算并行数据中的数值,并在相应的时隙位置输出一个高脉冲,其他位置不输出脉冲,从而保证信号的一一映射。   本文基于Verilog HDL语言设计,以16-PPM为例,其设计思路为:由图1所示PPM调制原理,PPM调制是将并行输入数据进行计数,故在调制之前应将串行输入的数据进行串/并转换,由于是16-PPM,一帧时间内时隙个数应为16个,每次对4位数据进行串/并转换,故触发串/并变换的时钟信号是时隙时钟的四分频。转换后的4位并行数据需与16进制计数器进行比较从而确定高脉冲在这一帧中的时隙位置,这要求并行数据能维持一帧时间使之与计数器产生的计数值进行比较,故由锁存器控制输出并行数据。当并行数据与计数器的输出值相等时,就输出高电平“1”,否则输出低电平“0”,这样就产生了所需的PPM信号。具体流程如图2 所示。   3 PPM解调系统设计   本文已详细介绍了PPM的调制过程,PPM信号的解调过程从本质上讲就是PPM调制的逆过程,故对其详细解调过程在此省略。但在PPM解调过程中需要解决一个非常关键的时钟同步问题,具体包括位同步和帧同步。   3.1 PPM的位同步   位同步与帧同步建立的效果与效率关系到整个PPM解调过程的成功与否。而位同步又是帧同步的基础,实现位同步的方法有插入导频法和直接法。插入导频法是在基带信号频谱的零点处插入所需的位定时导频信号;直接法则是在发送端不专门发送导频信号,而直接从接收的数字信号中提取位同步信号。从PPM调制过程中发现PPM信号中包含有时隙时钟信息,即位同步信号,宜采用直接法。直接提取位同步的方法又分滤波法和锁相环法,现在通常采用数字锁相环提取位同步信号,数字锁相环解决了模拟锁相环的直流零点漂移、器件饱和以及易受电源和环境温度变化影响等缺点,而且具有可靠性高、体积小、易于集成等优点。文献已详细阐述,本文限于篇幅不在此赘述。   3.2 PPM的帧同步   实现帧同步可采用插入法或直接法,插入法即在每帧的帧头部插入特殊的码元,用以辨别每帧的起始位置,比如插入巴克码。但这样会让PPM的调制与解调过程复杂化,并且插入的码元占用了原本传输信息的时隙,会降低整个系统的传输速率,本文采用直接法提取帧同步信号。   实现PPM解调时的帧同步传统上多采用基于锁相环的方法。即采用锁相环锁住“肩并肩”的两个光脉冲,如图1所示,帧3与帧4之间的两个光脉冲即为 “肩并肩”光脉冲。很明显出现这种光脉冲的情况相对较少,尤其是随着调制阶数的增大,出现的概率势必减小,严重影响了实现帧同步的速度。此外,由于PPM 信号的连“0”码过长,使用锁相环不能很快锁住,而且很易失锁。这里利用PPM信号自身特性,采用数字逻辑电路提取出字同步时钟。    由16-PPM示意图,发现PPM信号有三个特点:其一,每个PPM帧由16个时隙组成,但其中有且只有一个时隙是高电平,其余的都是低电平;其二,若连续出现16个低电平,说明这16个低电平一定不处在同一个PPM帧当中,而是在相邻两个帧中;其三,若连续出现2个高电平,说明这2个高电平只能在相邻的两个帧当中。   基于PPM信号上述三个特点,在FGPA中设计提取帧同步信号过程如下:接收到的PPM调制信号输入到串/并转换单元,在同步时隙时钟的控制下,将串行的PPM调制信号以16位并行输入,这个过程实际上就是一个16位数据移位的过程。再对并行输出的16位数据进行逻辑判断,若这16位数据中有且只有一个高电平“1”,则输出高电平,其他情况则输出低电平“O”。与此同时,计数器对时隙时钟进行计数,计数器每计16个次产生一个进位高电平“1”,其他时候则输出为“O”。将计数器输出与逻辑判断输出进行相与。若两者都为高电平,相与结果为“1”,则输出一个帧同步信号,其他情况下则不输出帧同步信号,但若逻辑判断结果为“0”,而计数器输出为“1”时,需将此时与门输出的低电平与计数器输出的高电平进行同或运算,得到低电平“O”,并将此低电平跟控制计数器的时隙时钟相与,使计数器暂停计数一次,从而通过扣除时隙时钟的方式逐渐达到帧同步。具体设计流程如图3所示。   4 系统仿真   整个系统在Quartus 8.0平台进行仿真,图4为PPM调制仿真图。ser_in为串行输入的数据,parr为串/并转换后的并行数据,data_out即为PPM调制后的输出信号,从图中可以看到PPM调制正确。为了更好地展现程序逐渐同步的原理,选择从4-PPM信号中恢复帧同步,如图5所示,从仿真中,不难看出帧同步输出framclk_out逐渐同步的过程。   图6为PPM解调仿真图,图7为系统整体仿真,即串行输入数据经PPM调制后,解调程序从已调信号中提取帧同步,并解调出原有串行输入数据,从图7 中看到串行输入数据与串行输出数据之间存在一定的延迟,一方面是因为硬件系统自身存在延迟,更主要的原因是由于在PPM调制时,比较器需等待第一次串/并转换完成再进行比较,并输出PPM信号,而解调是在基于调制后PPM信号进行的,从而导致了仿真中的延迟,但在实际运用中这个延迟并不存在。   5 结语   用Verilog HDL语言设计完成了基于FPGA的PPM调制解调系统,并在Quartus 8平台上对调制过程、帧同步过程和解调过程以及整个系统进行功能仿真和时序仿真,从仿真中可以看出整个系统达到了预期的目标,能够高效稳定地完成PPM调制与解调过程,为将来的实用化打下了基础。但另一方面,也在仿真中发现帧同步时间偏长,需要进一步改进。
  • 热度 20
    2014-12-22 16:25
    4732 次阅读|
    0 个评论
      对用单片机实现PPM的一点看法    【楼主位】 infozx 回复数: 1 ,点击数:1180 2009-03-08,14:21:58   本文着重讨论从 人手操纵摇杆动作-〉电位器等位置传感器-〉采集信号-〉发射机调制发射-〉接收机接收-〉解调-〉输出舵机1-2ms脉冲信号    整个过程的延迟。 航模遥控中,早期设备都是FM或者AM方式对若干通道实现PPM调制;现在的设备,基本都换装了具有数据校验的PCM编码方式,为什么要用PCM,从理论上说是抗干扰能力好,因为具有帧纠错能力。 传统PPM电路的精髓就在于实现容易且稳定可靠,RC充放电近似线性采样,纯模拟。操纵杆电位器的位置变化到发射出去的信号在下一个20ms的帧周期内能保证得到响应,从电路上看信号响应从摇杆动作发送到接受机输出信号延迟是很小的;如果不是为了实现更多通道的PPM输出,单片机的介入显得完全没有必要,问题是现在大多数场合6通道就足够用了;一直沿用下来的传统LM1871RC发射拓扑最大可以扩到6比例通道,足够,另外单片机用ADC采样电位器位置、软件排序输出PPM都会额外增加信号的延迟;如果是为了增加防跳舵等抗误动作能力,可在接收机端加入单片机,舵机信号线做好屏蔽即可。 PCM必然是需要单片机来完成数据帧的处理的,而且发/收端单片机处理速度太慢了还不行,正因为如此,PCM设备绝大多数都比传统PPM设备响应慢(摇杆动作-〉接收机输出1-2ms随动脉宽信号的延迟时间)。 对模友来说,受干扰是家常便饭,而操纵延迟太大,却是不能容忍的。如果光从遥杆到接收机的输出延迟就有200ms,再加上伺服舵机动作,最后经机械传动系统一直到舵面的延迟,会是相当夸张。 本人上次解剖某山寨控和接收机,用的就是低端单片机实现PCM,实测遥控操作延迟相当大,几乎只能作试验用途。用这种PCM还不如用老式PPM设备来的实在。 附件是老外发烧友对Futaba PCM PPM两种设备的对比延迟测试,里面的结果非常明显。 Latency of PPM and PCM Radio Controller W.Pasmanourdev_424408.pdf(文件大小:607K)  (原文件名:pasman_latency.pdf)   至于抗干扰能力,从原理上来说,PCM好于PPM是必然的,但不管PPM FM/AM还是PCM FM/AM模式,遥控设备都对持续宽频干扰无能为力。实际上外场航模遇到这种类型干扰的机会都非常少。所以在遥控设备抗干扰上再进一步下功夫,现实意义并不太大。
  • 热度 26
    2013-11-4 11:34
    1523 次阅读|
    0 个评论
      同行看门道,外行看热闹。于似乎所有想知道 晶振 精度是人云亦云。这不假期回来,QQ、旺旺上、官网留言信箱中全是此等的留言,貌似有许多客户对PPM不解的问题,很多人都说PPM到底要怎么计算,PPM分几个等级.工程部完整整理出一份简单明了的关于PPM的信息。 ppm是英文part per million的缩写,表示百万分之几,既然PPM是代表百万分之一,代表误差(精度) 那么时间的准确度就与晶振的PPM息息相关了.晶振PPM等级分为0.1PPM,0.5PPM,1PPM,2PPM,5PPM,10PPM,20PPM,30PPM,50PPM,100PPM,200PPM 举例:若晶振的精度是10PPM,那么我们可以计算出一块手表一天的时间误差有多少 10(ppm)×24(一天24小时)×60(一小时60分钟)×60(一分钟60秒)=864000*1/1000000=0.864S 即每日的误差不超过0.864秒,误差已经算很大的了,以此类推,精度值越大,时间误差越大 。因此像10-200PPM精度的时钟晶体通常用在玩具手表里. 以此类推,精度值越大,时间误差越大。精度越小的晶振价格也会相对昂贵,这也就是很多客户的疑问,为什么在贵司金洛电子网站上的产品价格是0.36,怎么打电话报价给我就是0.5元了,因为每一款晶振都有不同的参数,上面也解释过了,不同参数对产品造成的影响,各位客户下单之前也请和业务员沟通好.在此也希望各位询价客户能够理解. 另外有客户在电话里面多番问道,我如何知道你给我的产品参数是不是20PPM的,如果给我的是50PPM的呢?我在晶振上的印字能看出它是多少PPM的吗?对于这样的问题,每个采购商多少都有点担心的,首先在晶振印字上面PPM是找不到答案的,由于晶振是一种 极小的电子元器件,体积相对较小,因此从印字我们通常只能得出两个最为重要的信息,第一个是品牌,当然不会把一个品牌的英文全部印上去,如上篇文章所说,只会取首写字母做代表,第二个就是谐振频率,晶振频率上千万种,因此不同频率的晶振会印上本身的频率,通常 晶振上的印字能为我们提供以上两个重要的信息,那么PPM,PF从哪里得知呢?标签上会存在这些信息,有些客户不太相信标签上的信息,当然元器件是要用到你的产品上面的,到时候根据上面算误差的方式就可以轻松求出PPM是多少的呢?有些工厂自备检测仪器的,也可以测试的. 本文来源于http://www.jinluodz.com欢迎转载
  • 热度 24
    2012-7-28 19:11
    1649 次阅读|
    0 个评论
      ppm : part per million 百万分之一 ppb : part per billion 10 亿分之一 ppt : part per trillion 万亿分之一 part : per thousand 千分之一
相关资源