我和你一样不愿意为每个传感器放置一个完整的 CPU,但是......
RS-485 用于成本敏感型传感器/输出通信
我可以推荐以下内容,这就是我现在使用这些传感器/输出设备的方式:
- 每个传感器位置的本地非常小的类似 Arduino 的 CPU
- RS-485 驱动器
- 本地非常小的开关模式 PSU
- 集中供电
- 通过 CAT-5 或电源+数据对电缆连接
这意味着您可以将所有每个传感器的电子设备保持在非常小的范围内,从而简化一切(减少噪音,减少出错)。与传感器对话的软件是专用的——没有多处理或功能交错,它有一个完整的 CPU。如果只有一个传感器,我将 RS-485 适配器放在接收计算机上;更常见的是,我有一个带有 RS-485 和以太网的 Atmega 设备,并在 UDP 数据包之间进行转换。然后服务器——或多台容易冗余的服务器——可以在任何方便的地方完成工作。
如果您遵循一些简单的规则,RS-485 便宜、简单且易于调试。它适用于短距离或长距离。您选择您的速度并设置一个简单的协议(对软件工程师来说很容易),它将永远有效。我经常以 9600 甚至更慢的速度运行它。如果您有合适的 LED,您无需任何工具即可了解破损情况。这很简单,我在纽约一所艺术学校上了一堂“物理计算”课,一个下午就可以建立一个网络,基于非常类似于 syslog (RFC 3164) 的格式加上 CRC-32。
不要使用我远离任何基于无线电的无线电,除非绝对不可能运行电线。只是不知道什么时候会出现一些干扰机器:通常它就像我的活动盛大开幕时的媒体或警察对讲机。
不要使用以太网我曾经将以太网与 POE 一起使用,但在不得不做很多恶劣的环境(外部、水下、大型工业机器附近)之后改变了。无需维护开关,无需 POE 电压。并且没有 10BaseT、100BaseT、1000BaseT 的军备竞赛。
不要使用板式巴士曾经我有一个系统(由其他人建造),它是 2 米处的 SPI:它几乎可以工作,但是当我们需要将它移动到 3 米时......它从来没有工作过。最后,我将其替换为 RS-485,如此处所述。
CAN很棒,但它解决了一个难题,因此有很多复杂性。串行和 RS-485 绝对无处不在,这将一次又一次地为您节省时间。
简单的规则
- 两线半双工(绝不是四线)
- a) 一个主 (PC) 多个从 (传感器) 或 b) 一个扬声器和可能的多个听众
- 如果有十几个从站,请考虑 a) 冲突和 b) 总线加载
- 来自中央的力量
- 传感器端无本地连接
- 无论你的协议是什么,它都必须有一个校验和
- 像UDP而不是TCP一样使用它
- 尽可能慢地运行它
- 超过20米,注意终止
- 如果您在室外或水下或附近有大功率,仍然很好,但要多做功课
- 如果您需要快速(比如 1Mbit/秒),仍然很好,但要做更多的功课
- 如果您需要隔离,仍然可以,但要多做功课
- 如果您需要数百个节点,仍然很好,但要做更多的功课
费用
成本很低,低于 10.00 美元/单位——主要取决于外壳和连接器。以下是来自 Digikey 或 Ebay 的 10 折价格。
对于一次性或实验板,我使用来自中国的板:
- Ebay 的 TTL 到 RS-485 转换器(0.90 英镑)
- Arduino“Pro Micro”或类似产品(带有重置按钮!)(1.80 英镑)
对于专用板,我更喜欢单个芯片:
- 75176-pinout 芯片 £0.70 + 插槽(如果有空间)
- ATtiny22 或类似 £0.50-1.50
75176-pinout 是 RS-485 驱动器的标准,这意味着您可以在需要时使用特殊的驱动器(例如,具有更高的 ESD 保护)。
在任何一种情况下,我都会为信号提供 12VDC 或 24VDC 电源以及双绞线。超过 CAT-5 工作正常,或电源 + 数据线。每个单元上都有一个 Recom R-78E5.0-0.5 电源(1.99 英镑/单元)。这些设备很棒。在每个单元旁边放置一个微型 PSU 可以消除所有电源和噪音问题。
面向未来
这种方法的另一个优点是它将所有重要的兼容性问题都放在了 RS-485 线路上的协议中。如果将来您无法获得相同的传感器或 CPU,请换一个并重新创建。如果您使用 75176 引脚驱动芯片,您将始终能够获得替代品。
如果你需要连接你想要隔离的东西,很容易得到一个隔离的驱动程序,比如来自 Digilent 的驱动程序(虽然要贵得多,大约 17.00 英镑)。但是根本没有对基本系统进行任何重新设计,也没有重新编码。
参考
要正确阅读有关 RS-485 的信息,请从这些内容开始,然后阅读参考资料。
- 德州仪器RS-485 设计指南 PDF
- Texas Instruments AN 1057防弹 RS-485 接口的十种方法
PDF
- Bob Perrin,“RS-485 的艺术与科学”,Circuit Cellar,1999 年 7 月 。PDF
细节
- “双线半双工”实际上是指三根线:信号的双绞线和地线,如果系统由相同的电源驱动,则通常是直流电源地线。
- 你会看到关于你是否需要盾牌的巨大争论,但佩林说你不需要,除非你有异国情调
- 在半双工中,驱动器的输出在传输期间被启用。
- 在 PC 上,您通常使用 RS-232 输出的 RTS 启用驱动程序。Linux 内核有一个 ioctl(8) 调用,用于在串行线路上启用此功能
TIOCSRS485
doc
- 在微控制器上,您将 IO 线用于 Driver-Enable
DE
。您可以随时收听(将 Receive-Enable/RE
接地)或更常见的情况是从同一个 IO 引脚连接和驱动DE
。/RE
您可能会使用 IO 引脚和驱动器/RE
,但我从未见过。
- 有很多变种驱动芯片,但选择了 75176 封装中的一个,因为它是最常见的
- 使用 8 针 DIL 封装和驱动器插座是个好主意,这样当有人接线错误时,您可以更换损坏的驱动器;如果需要,您还可以使用更强大的驱动器芯片,或具有更低转换速率的低 EMI 版本。