common-PPM编码器 AT328P的8通道独立编码器

[common_page]

参考手册目录

Atmage 328P的8通道独立PPM编码器


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接收机。更多信息, 请参看手册
ppm encoder wiring
PPM Encoder V3


重写Atmega328p PPM编码器

注意:PPM编码器及其固件是预编程好的,而且大部分用户永远不需要,也不想去修改它。 然而,一些用户可能想要打开代码,改变PPM编码器解释RC信号的方式,或者可能需要更新到最新版本。个别用户反馈,接收机与旧版固件的相容性问题(在ArduPPM之前的版本)。在大多数情况下,ArduPPM可以解决这些问题。 ArduPPM是新一代固件的官方名称。一开始的设计就以可靠性作为首要任务。官方发布的编码器固件下载内容为ArduPPM_Vx.x.xx_ATMega328p.hex。官方源代码在这里下载 点我下载独立的PPM编码器需要ATMega328p版本。 将PPM编码器接到AVR编程器,进行下载,如the AVRISP mkII:reprogramming_the_standalone_ppm_encoder 当开始flash读写时,确保PPM编码器是用5V和GND引脚供电的。


Windows系统下再编程说明

下载并安装最新的 WinAVR。连接AVRISP mkII,并安装AVRISP mkII驱动程序,如下:打开设备管理器,选择AVRISP mkII,选择“更新驱动程序软件(Update Driver Software)……” windows_install_avrispmkii_driver_1 选择“Browse my Computer for driver software” windows_install_avrispmkii_driver_2 找到并浏览WinAVR所安装的文件夹,(如: C:\WinAVR-20100110\) windows_install_avrispmkii_driver_3 windows_install_avrispmkii_driver_4 选择“Install this driver software anyway” windows_install_avrispmkii_driver_5 成功完成后应如下图所示: windows_install_avrispmkii_driver_6 现在开始启动命令行:选择“开始”并输入cmd然后回车。 windows_start_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)。 windows_cmd_avrdude_1 如果一切顺利,应该会出现以下输出: windows_cmd_avrdude_2


苹果操作系统(Mac OS X)的再编程说明

备忘:补充说明内容(如何通过flash将Hex文件写入)。


Linux系统下再编程说明<-span><-span>">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 instructions

Reading | ################################################## | 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 verified

avrdude: 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

[question]
[translator main=”Robert” proof=”Hunter”]


Questions about this page? Comments? Suggestions? Post to APM Forum! Use the platform specific to your query, and make sure to include the name of the page you are referring to.