APM:Copter参考手册目录5.5.2-PPM编码器 AT328P的8通道独立编码器
APM:Copter参考手册目录5.5.2-PPM编码器 AT328P的8通道独立编码器
目录
1 Atmage 328P的8通道独立PPM编码器
2 安装手册
3 第三版
4 重写Atmega328p PPM编码器
4.1 Windows系统下再编程说明
4.2 苹果操作系统(Mac OS X)的再编程说明
4.3 Linux系统下再编程说明
5 再编程选项
5.1 用Linux再编程
PPM编码器可以将8个PWM(脉宽调制)信号编码成一个PPM(脉位调制)信号。有了它,可以让你使用任何R/C接收机和支持PPM的单片机(如[http://pixhawk.ethz.ch/px4/modules/px4fmu PX4FMU)。这个设计是基于Atmega328P的使用和外部16MHz的晶振。
3DR PPM编码器(v2)现在使用ArduPPM固件,取代了以前用Paparazzi PPM编码器固件。新ArduPPM固件设计的初衷,就是来提高性能和稳定性,同时更好的适应我们的产品现在和将来的需要。飞机的固件可以点击这里下载 点我下载。飞行器固件 点我下载。( 我是源代码,如果使用编译后的代码,就没必要下载。)
安装手册
手册 介绍了如何对PPM编码器进行焊接和布线,也解释了不同的故障保护模式。
第三版
PPM第三版编码器DF13接口更小巧。使用时,连接三线电缆至自动驾驶仪,10线电缆至PWM接收机。更多信息, 请参看手册
重写Atmega328p PPM编码器
注意:PPM编码器及其固件是预编程好的,而且大部分用户永远不需要,也不想去修改它。
然而,一些用户可能想要打开代码,改变PPM编码器解释RC信号的方式,或者可能需要更新到最新版本。个别用户反馈,接收机与旧版固件的相容性问题(在ArduPPM之前的版本)。在大多数情况下,ArduPPM可以解决这些问题。
ArduPPM是新一代固件的官方名称。一开始的设计就以可靠性作为首要任务。官方发布的编码器固件下载内容为ArduPPM_Vx.x.xx_ATMega328p.hex。官方源代码在这里下载 点我下载独立的PPM编码器需要ATMega328p版本。
将PPM编码器接到AVR编程器,进行下载,如the AVRISP mkII:
当开始flash读写时,确保PPM编码器是用5V和GND引脚供电的。
Windows系统下再编程说明
下载并安装最新的 WinAVR。连接AVRISP mkII,并安装AVRISP mkII驱动程序,如下:打开设备管理器,选择AVRISP mkII,选择“更新驱动程序软件(Update Driver Software)……”
选择“Browse my Computer for driver software”
找到并浏览WinAVR所安装的文件夹,(如: C:\WinAVR-20100110)
选择“Install this driver software anyway”
成功完成后应如下图所示:
现在开始启动命令行:选择“开始”并输入cmd然后回车。
将地址输入为你的HEX文件所在的文件夹。比如:cd Downloads\ 如果这个地址在“Downloads”那么继续输入命令:
avrdude -P usb -c avrispmkii -p atmega328p -U flash:w:ArduPPM_Vx.x.x_PPM_Encoder.hex (用版本号来替换x.x.x)。
如果一切顺利,应该会出现以下输出:
苹果操作系统(Mac OS X)的再编程说明
备忘:补充说明内容(如何通过flash将Hex文件写入)。
Linux系统下再编程说明
安装avrdude
对于Ubuntu:
sudo apt-get install avrdude
AVRISP mkII的程序指令:
avrdude -p atmega328p -P usb -c avrispmkii -U flash:w:ArduPPM_Vx.x.x_ATMega328p.hex
输入后会有输出:
avrdude: AVR device initialized and ready to accept instructionsReading | ################################################## | 100% 0.00s
avrdude:Device signature = 0x1e950f
avrdude:注意:FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "ArduPPM_V2.3.0_ATMega328p.hex"
avrdude: input file ArduPPM_V2.3.0_ATMega328p.hex auto detected as Intel Hex
avrdude: writing flash (1952 bytes):Writing | ################################################## | 100% 0.61s
avrdude:1952 bytes of flash written
avrdude: verifying flash memory against ArduPPM_V2.3.0_ATMega328p.hex:
avrdude: load data flash data from input file ArduPPM_V2.3.0_ATMega328p.hex:
avrdude: input file ArduPPM_V2.3.0_ATMega328p.hex auto detected as Intel Hex
avrdude: input file ArduPPM_V2.3.0_ATMega328p.hex contains 1952 bytes
avrdude: reading on-chip flash data:Reading | ################################################## | 100% 0.56s
avrdude: verifying ...
avrdude:1952 bytes of flash verifiedavrdude: safemode:Fuses OK
avrdude done.Thank you.
如果你遇到许可错误,尝试使用sudo命令。
再编程选项
默认情况下负脉冲可以编码PPM。为了使正脉冲可以编码PPM,在Tools/ArduPPM/Libraries/PPM_Encoder.h中的第158行需要从:
// #define _POSITIVE_PPM_FRAME_ // Switch to positive pulse PPM
被注释为:
#define _POSITIVE_PPM_FRAME_ // Switch to positive pulse PPM
用Linux再编程
这些指令是使用Ubuntu进行测试:
sudo apt-get install build-essential git-core gcc-avr avrdude git clone http://code.google.com/p/ardupilot-mega cd ardupilot-mega/Tools/ArduPPM/edit ATMega328p/Encoder-PPM.c or Libraries/PPM_Encoder.h now cd ATMega328p/ make clean make
现在就有你自制hex文件了,如下:
avrdude -p atmega328p -P usb -c avrispmkii -U flash:w:Encoder-PPM.hex