惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Mojies

Prompt 相关 T-Lite 简介 CRC 计算 C 语言例子 一个 python 拆解文本文件的工具 UNIX 环境编程 Note ( UPDATING ) 线程同步 STM32 Note Linux FrameBuffer note VIM Note Android 开发笔记(更新中....) Effective C++ (暂停更新) Linux 命令行对比二进制文件脚本 Linux Note (Updateing) 关于 HID 你可能需要知道的几件事 (更新中...) 自制树莓派 3D 模型,附 STL 文件 《重构改善既有代码的设计》Tips 翻译: buildroot 用户手册 (更新中...) Some view of engineers 地球地址
航模.fs.ia6b 接收机记录
Mojies · 2023-04-09 · via 博客园 - Mojies

介绍

以下是该产品的一些属性:

产品型号 FS-iA6B PWM通道 6 无线频率 2.4G 无线协议 AFHDS 2A 遥控距离 500~1500m(空中) 天线类型 双铜管天线(150mm*2) 电源 4.0-8.4V RSSI 支持 数据接口 PWM/PPM/i.bus/s.bus 温度范围 -10℃—+60℃ 湿度范围 20%-95% 在线更新 是 外形尺寸 47 * 26.2 * 15 mm 机身重量 10g 认证 CE,RCM, FCC ID:N4ZFLYSKYIA10
属性参数

对码步骤

  1. 将电池装入发射机,然后关闭发射机;
  2. 将对码线插到接收机电池通道插口;
  3. 将接收机电池连接值接收机任意通道,接收机红色灯快速闪烁表明接收机处于对码状态;
  4. 按住发射机对码按键不松手,同时打开发射机;
  5. 接收机红色灯由快闪转变成慢闪表明对码成功,拔掉对码线,红色指示灯长亮;
  6. 断开接收机电源;
  7. 关闭发射机电源;
  8. 将所有舵机连接到接收机,然后将电池连接到接收机;
  9. 检查是否所有的舵机都按照要求正常工作;
  10. 如果对码失败,则按照之前的步骤重来;

天线安装注意事项

为了让发射,接收距离更远,你需要注意以下几个点:

  • 尽量保证双天线垂直,否则会减小控制范围;
  • 双天线的夹角保持在 90 度,如下所示:(注意并不是要精确的保持垂直角度,重要的是尽可能保证天线互相远离):

  • 天线应该尽可能远离金属导体,至少要有 1.5cm 以上的距离,轴电缆段不受此限制,但不要过度弯曲;
  • 尽可能保持天线远离电动机,调速器,或其他噪声源;

飞机模型的安装,官方推荐示意图

直升机模型的安装,官方推荐示意图

接口说明

  • CH1 - CH6: 表示接收机的相应通道
  • Bind, VCC: 表示用于对码和输入电源的通道;
  • OUT: 表示输出 PPM 数据的 i-BUS 接口,用于连接串行总线接收机,扩展通道;
  • IN: 表示各种传感器数据的输入接口,数据采集模块可随意串接;
  • CH1 / PPM: 表示 CH1 输出通道兼有 PPM 信号输出功能;

引脚接口示意图如下所示:

对码时候的示意图如下所示:

舵机驱动

舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。

一般而言,舵机的基准信号都是周期为 20ms, 宽度为 1.5ms 。这个基准信号定义的位置为中间位置。 舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。 最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是 1.5ms。

一般而言,对于 180 度的舵机, 0.5ms 代表 0 度; 1ms 代表 45 度; 1.5ms 代表 90 度; 2ms 代表 135 度; 2.5ms 代表 180 度。

FS iBUS 协议

示意图如下所示:

解析 FS iBUS 协议的代码

下面是解析该数据的 C 代码:

// ibus.h
#ifndef __IBUS_H
#define __IBUS_H

#include <stdint.h>

typedef struct{
	int16_t	ch[18];
}ibus_msg;

extern int ibus_parse( ibus_msg *msg, uint8_t *src );
extern void ibus_show( ibus_msg *msg );

#endif

// ibus.c
#include "ibus.h"
#include <stdio.h>

int ibus_parse( ibus_msg *msg, uint8_t *src ){

	uint16_t	calc_sum = 0;
	uint16_t 	ori_sum;
	uint8_t  	i;

	if( src[0] != 0x20 )
		return -1;
	if( src[1] != 0x40 )
		return -1;

	for( i = 0; i < 30; i++ )
		calc_sum += src[i];
	calc_sum ^= 0xFFFF;
	ori_sum = src[30] + (src[31]<<8);

	// printf( "calc_sum: %04x %04x\n", (unsigned)calc_sum, (unsigned)ori_sum );
	if( calc_sum != ori_sum )
		return -1;

#define IBUS_PARSE_CH1_14(x) 	msg->ch[x] = src[(x)*2+2] + ((src[(x)*2+3]&0xF)<<8)

	IBUS_PARSE_CH1_14(0);
	IBUS_PARSE_CH1_14(1);
	IBUS_PARSE_CH1_14(2);
	IBUS_PARSE_CH1_14(3);
	IBUS_PARSE_CH1_14(4);
	IBUS_PARSE_CH1_14(5);
	IBUS_PARSE_CH1_14(6);
	IBUS_PARSE_CH1_14(7);
	IBUS_PARSE_CH1_14(8);
	IBUS_PARSE_CH1_14(9);
	IBUS_PARSE_CH1_14(10);
	IBUS_PARSE_CH1_14(11);
	IBUS_PARSE_CH1_14(12);
	IBUS_PARSE_CH1_14(13);

#define IBUS_PARSE_CH15_18(x)		msg->ch[x] = ((src[(x-14)*6+3+0]&0xF0)>>4) | (src[(x-14)*6+3+2]&0xF0) | ((src[(x-14)*6+3+4]&0xF0)<<4)

	IBUS_PARSE_CH15_18(14);
	IBUS_PARSE_CH15_18(15);
	IBUS_PARSE_CH15_18(16);
	IBUS_PARSE_CH15_18(17);

	return 0;
}

void ibus_show( ibus_msg *msg ){
	uint8_t	i;
	for( i = 0; i < 14; i++ ){
		printf( "ch%d(%hu)  ", i, (int)msg->ch[i] );
	}
	printf( "\r\n" );
}

注意

1. ibus 每个通道传输哦值范围在 0-4095, 而一般遥控器传输过来的摇杆过来的数据设计为操作的舵机的。 比如我在使用的 T-Lite 这款遥控器,1-4 通道分别对应油门,旋转,左右,前后四个方面的数据,而传输过来的值域范围在 1000 - 2000, 中值为 1500, 这与舵机的 15ms 代表中间位置, 10ms, 20ms 分别代表 +- 45 度的位置相对应。 当然如果你会设置遥控器这边发出的数据,那可能传输过来的数据不一样,但最好事先测试一下。

2. 接收机上面 SENS 通道其实就是上行通道(上传给遥控器的), 接收机 SERVU 则代表下行通道。 一般是你需要对遥控器过来的数据做特殊处理的时候需要用到下行通道。 当你需要安装一些传感器的时候用到上行通道(比如电压监控,气压监控等。)

3. 这两个通道的波特率是 115200, 且电平是 5V, 在某些场景你可能需要设计隔离电路。

原创文章,版权所有,转载请获得作者本人允许并注明出处

我是留白;我是留白;我是留白;(重要的事情说三遍)