发射端 PPM

标 签:

    航模的遥控,也就是发射端,会产生一系列的脉冲波形,这个波形我称它为 PPM,大概不
正确,反正就是个名字,我懒得去百度了。下面说一下给他的编码原理。
    1.PPM  的周期是 20ms,为什么是 20ms ?不能是 100ms ?
原因要从舵机的控制信号说起。发射端发出的电磁波,主要就是控制接收端的舵机和电调的。
电调先不去管他,先说舵机。
舵机的控制信号就是周期 20ms,高电平为 0.5~2.5ms 的脉冲信号。具体的舵机控制,我下
面另外讲。
发现相似之处了吧?他的周期和舵机的周期是一样的。
但是舵机的高电平时间是 0.5ms~2.5ms,剩下的时间都是低电平。
这里啰嗦一下,低电平就是 0~1.3V 电压,高电平一般指 2.7~5V 的电压,大概这个范围。
好了,既然PPM是控制舵机和电调信号,那么周期为20ms的PPM脉冲,能控制几个舵机??
答案很简单:20ms÷2.5ms=8
也就是 PPM 信号,能分为 8 个通道,最多控制 8 个舵机。
有人要问,我这里有个 12 通道的航模遥控,比你的 8 个要多。
回答:12 个通道里面,包括开关通道,如果全部是模拟通道,或者叫比例通道,他最多就 8
个。1 个模拟通道,可以分出 8 个开关通道。
原因:模拟通道是用 16 进制数表示的,开关通道是二进制表示的。1 个 16 进制数=8 个二
进制数。也就是 0xFF=0b11111111
另外说一句,电调和舵机一样,控制他们的脉冲信号是一样一样的。
    2.PPM  怎么编码呢?
PPM 的编码根据你的通道总数来。每个通道固定占用 2.5ms 的时间。
如果你的遥控器就 1 个通道,那么你就让剩余的 20-2.5=17.5ms 的电平都为低电平。
如果遥控器为 4 个通道,那么前面 4*2.5ms 的时间,你自己控制,剩下的时间都为低电平。
要是你的遥控为 8 个通道,那么全部的 20ms 的时间,你都要写代码控制。
    3. 既然每个通道固定占用 2.5ms , 我怎么知道每个通道的数值?
每个模拟通道,都是通过单片机的模拟数值转换,简称数模转换得来的,英文就是 ADC,
A 模拟,D 数字,C 转换。具体的英文单词自己百度。
模数转换,就是把你的摇杆带动的电位器的电阻变化引起的电压变化的模拟量,转换为一个
能用数字表示的电压的值。
这里用 STC 单片机为例子,他有 10 位精度的 ADC,也有 8 位精度的 ADC。
简单来说,10 位精度的 ADC 最大值是 1023,8 位精度的 ADC 最大值是 255。两者可以转
换,没啥区别,10 位精度更高一点,可惜对我们的摇杆来说,8 位精度一般都达不到。
这里以 10 位精度 ADC 作为例子。
当你摇杆摇到最高点时,ADC 值是 1023,摇到最低点,ADC 值是 0,放到中间,ADC 值
是 511。
每个单片机有 8 路 ADC 通道,可以接 4 个摇杆,因为每个摇杆有上下、左右,两个电阻器。
当 ADC=0,每个通道 2.5ms 的脉冲,就是 0.5ms 高电平,2ms 低电平。
当 ADC=1023,每个通道 2.5ms 的脉冲,就是 2.5ms 高单平,0ms 低电平。
如果给个公式,就是 高电平时间=(adc*2)/1024+0.5
    4.舵机的控制脉冲原理
这里说一下舵机,舵机的 20ms 周期脉冲,有 0.5ms 高电平,其他为低电平的时候,舵机摆
臂在最左边。当有 2.5ms 高电平的时候,舵机的摆臂在最右边。
因为舵机的制造精度,当在摆臂最左边的时候,或者在最右边的时候,会出现磨齿轮的现象,
就是齿轮吱吱乱叫,摆臂无法打到 0 度或者 180 度。一般都让舵机的摆臂在 90°角内移动,
也就是给他 1ms~2ms 高电平,而不是 0.5~2.5ms。
舵机发抖是咋回事?
听有人说,我舵机抖舵。为啥呢??舵机是机械装置,他的移动需要时间。
如果给他的控制脉冲,第一个 20ms,让他到 90°的位置,第二个脉冲又让他到 0°的位置,
第三个脉冲又让他去 120°的地方。
他移动的时间远远大于 20ms,所以就在小范围内不停的移来移去,像发抖一样。
电调和舵机不一样,电调没齿轮。电调的控制脉冲为 0.5ms 高,其他低的时候,为 0 油门,
也就是 MOS 管关闭状态。当控制脉冲为 2.5ms 高,其他低的时候,油门全开,也就是 mos
管完全导通。
在中间区域的时候,使用 PWM 调速。PWM 调速下面讲。
    5.PPM  怎么发射出去?
我 PPM 编码做好了,怎么发射出去呢??这个很简单。现在我们都是用的 2.4G 模块,芯片
一般是 NRF24L01 芯片,我这里简称为 24 芯片。
24 芯片有发射和接收两种状态,可以随意转换。
它像电脑的网卡一样,有 IP 地址,也有端口地址。我们的网卡地址,是 4 位 16 进制数,端
口有 65535 个。
24 芯片的通信地址通常是 5 位的 16 进制数,他的端口有 128 个。
发射和接收,通常都有一个对码过程。
    6.对码是什么??
对码简单来说,就是双方定义一下通信地址,和通信用的端口,以及跳频的规则。
当我用短接线短路一下接收的 2 个 IO 口,双方就知道要用默认的地址,默认的端口进行通
信,然后遥控把新的地址、端口和跳频规则发给接收。接收存到单片机的闪存里面,然后用
对码后的规则进行通信。
    7.跳频又是什么鬼??
很多遥控都能自动跳频,什么叫自动跳频呢,为啥要跳频通信?
涉及到一个电磁波干扰的问题。当一个通道里面很多脉冲信号的时候,你这个通道就被严重
干扰了,这个时候,我换个通道,可能就没这么多干扰了,也就能收到信号了。
萝莉的跳频,是 5 跳,我记得大概是从 10 通道开始跳,每次加 20。也就是第一次通信在 10
通道,第二次通信在 30 通道,下面是 50,70,90,再从 10 通道开始循环。
萝莉的跳频是 5 跳,基本 1 秒钟就能循环 n 次,周期非常短。
据说军用的电台,有的跳频周期是 20 年……
    8.再科普一下,为啥不同厂家的遥控和接收不通用呢??
就是对码的规则大家都不一致呗。
如果大家的默认地址,端口,跳频规则都一样,就可以通用了……
我们自己做的遥控和接收,都通用,就是因为规则一样。
上面都是闲话,还没说怎么发射 PPM 信号出去呢。
    9.PPM  信号发射
24 芯片每次最大可以发送 32 个字节的数据,你只要根据你的通道数量,定义不超过 32 个
字节的数组,调用他的发送函数就 OK 了。
为了省心,我都是代码里面设置一个 32 长度的数组,前面几个字节存每个通道的 ADC 值。
然后调用 24 芯片的发送函数就 OK 了。当然,10 位的 ADC 值,要除以 4,变成 8 位的才
行,为啥?一个字节是 8 位的,你发 10 位的 ADC,我会溢出滴。你觉得我溢出也无所谓,
不除以 4 也没关系……反正只要编译器不出错,他自动给你右移 2 位,相当于除以 4 了。
发射的周期是多少呢?当然每 20ms 发一次了。也就是 1 秒钟要发射 50 次。这个非常重要。
每 20ms,必须发送一次,要不接收端的舵机要罢工了……
    10.电压回传的原理是啥?
现在好像电压回传的需求越来越大,为啥这个东西不加进来呢?
原理我简单说一下。24 芯片可以随时转换发射和接收两种状态。
最简单的电压回传,就是遥控先发送摇杆的数值给接收器,然后把 24 芯片设置成接收状态。
接收器收到摇杆信号后,先调整舵机和电调,然后获取电池的电压,把 24 芯片的状态设置
成发射状态, 再把电压值发送给遥控,再把状态切到接收。
遥控收到电压值后,再把 24 芯片换成发射模式。然后重复以上的过程。有跳频的也继续跳。
反正就是这么循环。
中间有个问题,就是操作的流程度和丢包。
每次都在发送和接收之间转换,会让人觉得操作变的不流畅了。
最好是 2 秒或者 5 秒,才转换一次状态,收个电压值就好了。
但是 24 芯片如果离的距离较远,容易丢包。很容易发个电压,我一直收不到。中间如果有
跳频的话,不知道跳到哪个频道了。哈哈。
反正做也不是不能做,就是有点影响操作流畅度。对高手来说,都不是事,关键我不是高手,
嗯嗯嗯……
    11.接收端 PPM  解码
都写这么多了。接收端的 PPM 解码也一起说了吧。
接收端根据自己是几通道的接收器,固定获取 24 芯片发射来的数据的前几位。每一位代表
一个通道。
下面就是把 ADC 值转换为单通道的 PPM 信号。
也就是周期 20ms,高电平 0.5~2.5ms 的脉冲信号。
当 ADC 值是 255 的时候,高电平 2.5ms
当 ADC 值是 0 的时候,高电平 0.5ms
中间的自己算。
每个通道都要这么处理过来。有几个通道要发几个通道的 20ms 脉冲。
舵机和电调,他们的解码方式一样吗?
肯定一样了。那么为啥电调固定 3 通道,什么副翼 1 通道,升降 2 通道之类的。。。。
这个都是大家约定俗成的,你乱改了,别人不看你的说明书,就会接错。所以一般按照这个
来弄。
    12.PWM  信号是啥??
PWM,看英文缩写,就是脉冲、宽度、调制。
PWM 信号主要是用来调节直流电机转速的,不管是无刷还是有刷,都一样。
直流电机调速,我们知道如果降低电压,电机转速肯定会降低,但是快速调压的电路应该非
常复杂,成本也很高。调压都涉及到电感,当快速调压时,电感产生的反电动势,就足够讨
厌了。
啰嗦一句,我知道交流的变频器,要好几百块钱一个,所以变频空调都比较贵,就是变频器
贵。这个价格可以参考直流调压器的价格了。
剩下的一种调速方式,就是 PWM,也是成本最低的,电路最简单的调速方案。他的核心元
件就是 MOS 管,也叫场效应管。
具体的场效应管我就不多讲了,自己百度。
PWM 信号,就是电压时高时低的信号,当高电平的时候,MOS 通电,电机转动;当低电
平的时候,MOS 管不通电,电机依靠惯性转动。
通过 PWM 信号,降低高电平的时间,就可以降低电机的转速。提高高电平的时间,就增加
电机的转速。
电调的作用,很简单,就是把 20ms 周期的 PPM 信号,转为相对应的 PWM 信号。
当 PPM 信号,高电平为 0.5ms,那么 PWM 信号全部都是低电平。
当 PPM 信号,高电平为 2.5ms,那么 PWM 信号全部都是高电平。
当 PPM 信号,高电平为 1.5ms,那么 PWM 信号,高低电平时间各占一半。
其他的自己算。
    13.PWM  信号的频率应该是多少呢?
PWM 调速的时候,通常会产生让人难受的声音。人的耳朵能听到的声音频率在
20HZ~20KHZ 之间。
按原理,如果 PWM 的频率超过 20KHZ,就不会听到 PWM 信号的声音。其实频率过高,
对调速影响很大。具体的频率可以百度…………残念。
有人说 10K~20K 最好,这个应该和电机有关系的,没有啥固定的公式,自己测试吧。
萝莉的 PWM 频率大概是 1KHZ。如果我没记错。
作者的话
以上我自己的理解,肯定错误连篇,误人子弟。毕竟我也是新人啊,接触航模才 3 个月,我
买了一大堆东西,飞机还没做出来,典型的纸上谈兵啊。看我写这么多文字,欢迎大家指正
我的错误,不要爆粗,谢谢!!

作者:浅雪
QQ 群:272416403
2015 年 8 月 3 日

电子基础 / 评 论 (0) / 热度 (264℃) / 2017-06-07 / 阅读全文  / MaWei