5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 3673|回复: 18
打印 上一主题 下一主题

PPM编码及解码方案

[复制链接]
跳转到指定楼层
楼主
发表于 2007-6-17 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[url=] [/url]开博一年了,所以决定今天一定要发表点有价值的东西来纪念一下.不过要先看电影,随便开个头,以后再修改.呵呵
    什么是PPM,  PPM是英文Pulse Position Modulation的缩写,中文意思是脉冲位置调制,又称脉位调制.其组成多为头码+脉冲数.PPM以其编码方式简单,使用方便而曾经被广泛的使用在一些无线遥控系统中.虽然这种方式在遥控系统中正逐渐被PCM方式所代替,但是如果在有线系统中,如多自由度的机器人中,如果需要把系统控制和舵机控制分离的话,即使用一片MCU来专门进行舵机的方位控制.这依然还是一种非常不错的方式.下面以如今模型系统中常见使用的方式来简单介绍下PPM的具体使用.假如3通道的遥控器可能产生如下的PPM脉冲波形为
     
    所谓的三通,就是指控制信号可以分别控制3个通道的舵机,比如控制速度一个,再有2个来控制不同的方向.   如其他文章中所提到的,舵机的控制一般采用20毫秒左右的周期脉冲中,微调正脉冲宽度的方式,该脉冲宽度根据舵机的性能不一而不一的,宽的有0.5~2.5毫秒,窄的有1.1~1.9毫秒等等.而上面图示的channeln的宽度就正好是驱动舵机的20毫秒周期性脉冲中的正脉冲宽度了.接收机也正是需要把各个不同通道的脉冲宽度检测出来,并给正确的分配在每个舵机的驱动信号上.  
    对于无线遥控的系统,接收机必须要完成这样两个功能, 一正确并准确的测量出个通道的脉冲宽度,二将各通道的控制宽度正确的分配在相应的舵机控制信号上.
     在以往的PPM解码处理上,常使用通用的数字集成电路来完成,如CD4013,CD4015,74HC164等等.这样的硬件解码方式通常导致"抖舵"(接收机在无控制信号或控制信号很弱时使得其控制的舵机产生比较严重的抖动)的现象.所以越来越多的模型系统都开始采用MCU来做接收控制器了.然而一些廉价,功能较少的MCU处理起来也会手忙脚乱的,因为MCU一直要不停的检测各脉冲的宽度,象这样的宽度明显使用查询方式是不可取的,所以就必须使用外围中断或脉冲捕捉模式等.而脉冲捕捉的方式,不是一般的低端MCU所具有的.看来对于低端的MCU,外围脉冲的宽度检测只能靠外围中断配合定时器了.好家伙一下子就使用了2各硬件功能.而另外一方面还需要控制好几各舵机的运行呢, 各舵机的约20毫秒周期性脉冲又怎么产生,各舵机的脉宽又该怎么调节.所以对于传统的低端MCU来说,就这样一个简单的接收控制也显得力不从心了,或是检测的宽度和信号源有"较大(10us左右)"出入,或是舵机控制方面脉宽输出的宽度和检测的宽度又有"较大"出入,其实一个30us范围抖动的信号,足可以让瞎子听见舵机的抖动声了,呵呵.而作为多核心的FPPA来说,情况完全不一样了.欢迎查看FPPA是怎么高精度控制舵机的吧,还是毛主席说得好"人多力量大呀"!事实证明采用FPPA控制的PPM接收机的效果的确比一般MCU好很多的,相信使用它来做PCM解码会有更好的效果.当然FPPA再强也需要其他部件的相互配合才可以做出更完美的模型的了. 比如更稳定的高频信号,更轻便灵活的结构等等.
       好了,由于本人才疏学浅,就先写这么多吧,希望对初学者有一点帮助的作用,同时还希望各位前辈,各位同行指正一些有过错的地方,谢谢!也欢迎一些技术朋友和我共同探讨一些技术问题,一起成长,一起进步,一起向前走!

[ 本帖最后由 raker 于 2007-6-21 09:27 编辑 ]

欢迎继续阅读楼主其他信息

沙发
发表于 2007-6-17 17:47 | 只看该作者
这些对一个新手来说实在太难了。:em18:
3
发表于 2007-6-17 18:01 | 只看该作者
广告:em17:
4
发表于 2007-6-17 18:41 | 只看该作者
高手~

我在用AVR M8单片机做接收的时候深有感受, 所以迟迟完不成啊~

看来要用ARM芯片才能搞定了。
5
发表于 2007-6-17 19:09 | 只看该作者
强人强贴,受教了!
6
发表于 2007-6-17 19:17 | 只看该作者
上基础知识课,不错:em24:
7
 楼主| 发表于 2007-6-17 20:32 | 只看该作者
原帖由 rabbitx2006 于 2007-6-17 18:41 发表
高手~

我在用AVR M8单片机做接收的时候深有感受, 所以迟迟完不成啊~

看来要用ARM芯片才能搞定了。


ARM太可惜了,不知道你是搞多少路舵机控制的,如果做产品的话,技术问题,我们一起解决.
绝对可以能让你体会到多核心技术的优越性!
     10路左右舵机控制,用我们一颗14PIN的IC就解决问题了的,包括高频信号的接收引脚!
8
发表于 2007-6-17 20:33 | 只看该作者
学习
9
发表于 2007-6-17 20:34 | 只看该作者
想请简介一下FPPA,原先只听说过FPGA,不知道FPPA(多核心技术)大概是怎么回事?
10
发表于 2007-6-18 12:43 | 只看该作者
看不懂也谢了。强人
11
发表于 2007-6-18 12:45 | 只看该作者
我还上看不懂,不过感觉是好帖,估计楼主是个强人.哈哈
12
发表于 2007-6-18 20:21 | 只看该作者
文章作者故弄玄虚,不过是为了推销他那所谓“多核心的FPPA芯片”而已。
13
 楼主| 发表于 2007-6-19 14:16 | 只看该作者
原帖由 micro 于 2007-6-18 20:21 发表
文章作者故弄玄虚,不过是为了推销他那所谓“多核心的FPPA芯片”而已。

做技术的,不要那么不厚道,虚心一点,进步多一些!
你至少也得给我用个推广的词呀,什么故弄玄虚,推销,唉!
14
发表于 2007-7-20 14:18 | 只看该作者
我打算用AVR的快速16位PWM + HC164做了。

电路和程序正在实验,打算做个六通或八通的
15
发表于 2007-7-20 18:15 | 只看该作者
楼主对PPM传输这一块的理解太死板:
你要DIY的编码板输出的不一定非要标准PPM,只要解码板输出的舵机信号是标准的就行了。。。:em17:
按照标准PPM的格式,最多只能十一二路模拟信号,要传输几十路是不行的;编码板输出其他格式的数据信号,解码板解出标准舵机信号就可以了,PCM不就是现成的样板?
太啰嗦了;
16
发表于 2007-7-20 23:41 | 只看该作者
了解了一些
17
发表于 2007-7-23 15:49 | 只看该作者
fppa的资料好少啊,都不知道该如何入手
18
发表于 2007-7-23 16:48 | 只看该作者
第一次听说FPPA。是什么?
多核心!内部有好多个单片机?
楼主讲讲啊!向你学习了,再说说我的情况。
    我用PIC也能同时处理多路PPM信号的,PIC16上的人管这叫单线程系统的多任务运行,只是时序的问题,写程序时多想想就行。“微观”上看,每个单位时间(可以是1US也可以是10US)单片机只在做一件事,但宏观上看,单片机是在“同时”做几件事。
    最早我就是用PIC的12F509做东西,熟悉的人知道,这玩意没有中断,没有脉冲捕捉。就是用查讯的方法,一边接收编码,一边解码输出。实现的功能是接收串行的PPM信号,然后输出2路PWM(给双发的飞机用)或输出一路PWM、2路推挽的PWM(控制一个电机,2个电磁线圈),程序上基本就是一个框架,根据不同的要求换不同的子程序。不过我出的PWM频率还比较低:160多HZ。日本有人做到了实现以上的功能,但PWM频率在1.6KHZ。
19
发表于 2007-7-25 12:18 | 只看该作者
:em04:
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表