我希望能够仅使用电源线以菊花链方式连接多个设备,然后通过电源线注入通信信号以将其转换为半双工网络。
有什么通用的方法可以做到这一点吗?越简单越好,如果在微控制器上使用UART,那就更好了。
编辑:实际上,我正在研究两个项目,我认为这将从中受益-一个是低功率传感器网络。另一个是LED照明项目。在这两种情况下,目的都是简化接线,但是如果解决方案过于复杂,则使用三根电线(pwr,gnd,comms)可能更有意义。
我希望能够仅使用电源线以菊花链方式连接多个设备,然后通过电源线注入通信信号以将其转换为半双工网络。
有什么通用的方法可以做到这一点吗?越简单越好,如果在微控制器上使用UART,那就更好了。
编辑:实际上,我正在研究两个项目,我认为这将从中受益-一个是低功率传感器网络。另一个是LED照明项目。在这两种情况下,目的都是简化接线,但是如果解决方案过于复杂,则使用三根电线(pwr,gnd,comms)可能更有意义。
Answers:
您是否研究过Dallas 1-Wire协议?它的速度确实很低,如果您的设备消耗的电流相对较小,那么您就可以摆脱使用寄生电源的麻烦,而可以通过数据线为设备供电。
本质上,您需要将交流信号推到直流电源线上,然后再将它们分开。这在带有电视天线的家庭中很常见-功率放大器置于天线附近,直流电源沿天线线向上推,而电视信号沿天线线向下推。
您没有为示例电路提供足够的细节,但是这里是基础知识:
电源应具有串联的电感器,该电感器将连接到输出,以阻止高频信号馈入电源,并可能引起调节问题。
同样,每个单元的电源输入也应使用电感器进行保护,以滤除交流信号。将其馈入二极管和电容器将确保交流信号不会危害模块电源。
在电感器之前,您还将连接一个电容器。它可能是一个较低的值,因此线路上的大多数AC信号都会通过电容,但是没有DC会通过。
如果您具有执行必要的软件以离线读取现在被残废的数据的能力,则该电容器的输出可以直接用于微控制器(带二极管钳位)。同样,您可以通过I / O引脚将脉冲直接发送到电容器。
检查一下示波器上的外观-进入电容器的方波看起来像电源线上的衰减尖峰。当网络上出现另一个电容器时,它将进一步改变-只是线路上的一个尖峰。
读取这些尖峰信号可能很困难,并且很难滤除噪声,因此,如果您使用长线路,有噪声的电源或在其他噪声源附近使用线路,则必须实施大量的信号处理。通常,这采用在线上的AM(ASK-幅移键控)或FM(FSK-频移键控)的形式,以及数据限幅器,比较器,音调发生器和检测器等。或软件中的等效处理。
这似乎是一项艰巨的工作,但首先从接收端的简单脉冲检测器开始,然后在发送时发送方波。使用示波器了解正在发生的情况,如果发现需要更复杂的解决方案,请再次询问ASK或FSK检测。
脉冲检测器可以是更改输入引脚上的简单软件中断,也可以是设置为脉冲扩展器的555。
我已经为火车控制器系统(当然是模型火车)构建了类似的东西。
它是一种单向低速协议(单个实体发送数据,所有其他实体仅是接收器),而传输只需简单地颠倒轨道极性即可完成。
在每个“客户”上都有一个简单的电路,带有一个图片(16C54,几年前!),一个整流器和一些拨码开关来设置地址。
我再也没有源代码了,但是系统确实很简单,并且可以完美运行多年,可以从主控制面板轻松控制每个机车,无载屏障,信号量等,而无需额外的电线。
我建议将其视为您要添加和删除直流偏移的信号。通过将电容器与电路串联放置,可以使用电容器来阻止直流。
除此之外,很难说您需要做什么,因为这取决于您的应用程序。您可能需要使用运算放大器将耦合电容与接收信号的电容分开。如果您的直流偏移电压比信号电压大,您甚至可能不需要对其进行任何功率调节来消除纹波,但这完全取决于您的应用。
我有一对扬声器,它们使用相同的技术来点亮辅助扬声器上的电源LED。如果我将音量调得足够大,我实际上可以注意到LED变亮了。在此特定应用中,他们将需要担心正在创建哪种类型的RC滤波器。
我知道这是一个很老的话题,但是这就是我的2便士。
我还没有任何工作,但是我正在考虑使用Arduino + VirtualWire(设置为非常低的波特率)执行类似的操作。正如亚当·戴维斯(Adam Davis)所说,您通过一个低值电容器从12V线路发送/接收数据。这意味着您实际上得到的0V上几乎没有尖峰,VirtualWire可以(可能)对其进行解码。关于此方法的好消息是,理论上12V线路上的任何设备都可以通话,并且任何人都可以接收。我已经在面包板上的两个设备之间使用普通的电线进行了工作,但是不确定它是否可以在远距离或实际电源线上工作。
如果传输总是来自同一地点,那么也许使用类似Hornby方法的方法可能会更好-即。让发射器在+ 12V和-12V之间切换电源线以创建信号。每个接收器在与电源线的连接上都有一个整流器,因此它始终获得+ 12V电源。可以说,您可以简单地脉冲+ 12V,并让每个设备使用一个大电容器来平滑凸起。这两种方法中的任何一种都可能更可靠,因为电源线上的信号会更强,因此更容易解码(我仍然会使用VirtualWire来做到这一点,但是UART也可以工作)。
对于LED照明项目,您很有可能必须将12A的电流降低几个安培。这使得切换起来有点困难,因此使用RF-over-capacitor方法可能会更好。但是,随着电流的增加,接收到的尖峰的高度会大大降低,因此您可能需要放大写入线路的信号(例如,使用一两个高频晶体管将TTL信号“放大”至12V,然后再将其放大)。将其通过电容器推入12V线路)。
无论哪种方式,像VirtualWire这样的东西几乎总是比UART(可能还有I2C等)更好地工作。原因是它使用锁相环将发送和接收“同步”在一起,这意味着更高的信噪比和更少的错误。那应该使它对不太理想的硬件更加宽容;-)
您确定某种USB解决方案不可行吗?您大约有2-2.5W可用。
这里还有其他一些想法-
以太网供电(POE)集成了电源和以太网信号。为这些设备设计了各种各样的半导体和DC / DC转换器。这可能是您最好的选择,因为有一些现成的部件。
我相信一些家庭自动化公司集成了交流电源和通信信号。也许其中一些是适应性的。
音频人员具有麦克风的“幻像”电源。48VDC加上麦克风电缆上的音频。
所述X-10协议不正是此。
另外,上面的一些建议也不安全,或者肯定不能在经过批准的(UL / CE标志)设备中使用。
有一个专用的半导体,它可以获取UART字节并以高达115.2Kbps的速度通过电源线传输它。该设备是为汽车设计的,因此抗噪声能力强。参见http://yamar.com/product/sig60/
检查一下:
还有我获取该信息的线程(与您相同的问题)。
这是在电话系统中完成的。如您所知,电话在两线制系统中具有电源以及拨号音和语音。您可以通过生成音频(例如普通电话中的音频拨号)通过电源线发送命令,该应用的集成电路(Ic)很常用,因此非常便宜。
我做了一个类似的项目,用于控制伊朗一家大型工厂的水阀(最多99个阀)。如果您认为我的编码器解码器电路可能有用,那么可以添加它的框图。