< >
Home » Pixhawk无人机教程 » Pixhawk无人机教程-5.5.2 AT328P的8通道独立编码器

Pixhawk无人机教程-5.5.2 AT328P的8通道独立编码器

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接收机。更多信息, 请参看手册
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系统下再编程说明

安装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

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: pixhawk8通道