|
实用一线通讯电路及软件设计方法
摘 要 :本文介绍了一种简单的一线通讯电路及软件的设计方法,这个电路构成简单、
成本低廉,非常适合应用在有少量数据交换的系统中。
关键字 :一线通讯;软件设计;红外遥控
引言
家用分体空调是由室内机和室外机组成,通常情况下分体空调的控制系统放在室内机中,但是对于一些相对复杂的系统来说,把控制放在室内机就要浪费大量的内外机连线,同时也降低了系统的安全性。基于以上原因把控制分为两部分,室内控制器和室外控制器,室内外控制器采用主从方式进行控制,室内机为主机,室外机为从机。室内外控制器通过通讯来完成控制指令的执行及信号的采集。由于是内外控制器需哟交换的数据量不大,同时为了降低系统的成本,我们并没有采用工业上常用的RS-485通讯的方法,而是简单的一线通讯电路,这个电路构成简单、成本低廉,在有效的通讯距离内工作稳定,非常适合应用在有少量数据交换的系统中。
一线通讯电路原理
图1 为一线通讯电路的电路图,这个电路由两部分组成,分别为发送电路和接收电路,然后共用一根通讯线。主机和从机通过通讯线、12伏电源线和地线连接。在通讯空闲时主机和从机都处于接收状态,IND_OUT和OUTD_OUT都输出高电平,Q1、Q4导通,Q2、Q3、Q5、Q6截止,IND_IN和OUTD_IN都输出高电平。

通讯时主机先向从机发送数据,从机处于接收状态。主机发送完数据之后,置IND_OUT为高电平,处于接收状态。如果从机成功接收数据,那么在它接收数据之后开始向主机发送数据,从机发送完数据后把OUTD_OUT置为高电平,使自己处于接收状态。
在室内机向室外机发送数据时,当IND_OUT输出高电平,Q1导通,Q2、Q6截止,OUTD_IN输出高电平;当IND_OUT输出低电平,Q1截止,Q2,Q6导通,OUTD_IN输出低电平;在是内机发送完数据后把IND_OUT输出高电平,置于接收状态并检测接收端IND_IN的信号。从机发送数据的过程与主机发送数据的过程相同。
无论使主机还是从机,在自己发送数据的时候不要检测自己的接收端。免得误把自己发送的信号当作从机发送的信号,使系统运行出错。
代码格式
由于只有一根通讯线,所以数据的识别有一定的困难,如果使用电平信号的识别方法,在软件处理上就不是很方便,而且抗干扰的能力也会大为降低。为了解决这个问题,我们借鉴了红外遥控的编码方法,使用这个方法,不仅使信号识别容易,并且也增强了系统的抗干扰能力。下面将介绍编码的方法。
采用脉宽调制的串行码,以脉宽为1.5ms、间隔1.5ms、周期为3ms的组合表示二进制的“0”;以脉宽为1.5ms、间隔4.5ms、周期为6ms的组合表示二进制的“1”,其波形如图2所示。引导码和结尾码的波形见图3。信号的周期及脉冲的宽度可根据数据的传输量来调节,为了保证通讯的实时性,在通讯数据较多的场合,可脉冲宽度及信号周期。如果传输数据较少,脉冲宽度和信号周期可适当放宽。


整个数据有引导码开始,接着是用户码、数据码、校验和,最后是结尾码。至于数据的格式可由用户根据实际情况确定。例如用户码用一个字节表示,数据码用一个字节表示,校验和用一个字节表示,那么通讯的波形如图4所示。

软件设计方法
在这里我们以Microchip公司的PIC16C73单片机为例,针对室内侧的空调控制器,讲述如何发送和接收通讯数据的信号。我们把单片机的P1.0接IND_IN,P1.1接IND_OUT.
为了进一步增强单片机的看干扰能力,同时也为了简化程序的设计,我们采用定时对断口进行扫描的方法来完成通讯数据的发送和接收。
发送通讯信号时可以利用定时器,按照数据波形高低电平的时间进行定时,时间到了对单片机的输出断口电平进行翻转操作,便能输出符合要求的通讯数据。接收数据时可以检测信号输入断口的电平状态,当有信号输入时就启动定时器。 |