在电参数仪的设计中,数据采集由单片机AT89C52负责,上位PC机主要负责通信(包括与单片机之间的串行通信和数据的远程通信),以及数据处理等工作。在工作中,单片机需要定时向上位PC机传送大批量的采样数据。通常,主控PC机和由单片机构成的现场数据采集系统相距较远,近则几十米,远则上百米,并且数据传输通道环境比较恶劣,经常有大容量的电器(如电动机,电焊机等)启动或切断。为了保证下位机的数据能高速及时、安全地传送至上位PC机,单片机和PC机之间采用RS485协议的串行通信方式较为合理。
实际应用中,由于大多数普通PC机只有常用的RS232串行通信口,而不具备RS485通信接口。因此,为了实现RS485协议的串行通信,必须在PC机侧配置RS485/RS232转换器,或者购买适合PC机的RS485卡。这些附加设备的价格一般较贵,尤其是一些RS485卡具有自己独特的驱动程序,上位PC机的通信一般不能直接采用WINDOW95/98环境下有关串口的WIN32通信API函数,程序员还必须熟悉RS485卡的应用函数。为了避开采用RS485通信协议的上述问题,我们决定自制RS485/RS232转换器来实现单片机和PC机之间的通信。
单片机和PC机之间的RS485通信硬件接口电路的框图,如下图1所示。
从图1可看出,单片机的通信信号首先通过光隔,然后经过RS485接口芯片,将电平信号转换成电流环信号。经过长距离传输后,再通过另一个RS485接口芯片,将电流环信号转换成电平信号。
图1单片机与PC机之间的RS485通信硬件接口电路的框图(略)
该电平信号再经过光电隔离,最后由SR232接口芯片,将该电平信号转换成与PC机RS232端口相兼容的RS232电平。由于整个传输通道的两端均有光电隔离,故无论是PC机还是单片机都不会因数据传输线上可能遭受到的高压静电等的干扰而出现“死机”现象。
2接口电路的具体设计
2-1单片机侧RS485接口电路的设计
单片机侧RS485接口电路如图2所示。
AT89C52单片机的串行通信口P30(RXD)和P31(TXD)的电平符合TTL/CMOS标准(逻辑“0”的电平范围为0V~0.8V,逻辑“1”的电平为24V~VCC),它们首先通过光电隔离器件6N137隔离,以保护单片机不受传输通道的干扰影响,其中T01和?T02是为了增加光隔输入端的驱动能力。光隔6N137的左侧电源与单片机相同,右侧必须采用另一组独立的+5V电源,且两组电源不能供电。
图2单片机侧RS485接口电路
图3MAX490的内部结构
MAX490[4]是MAXIM公司的RS485接口芯片,其内部结构如图3所示。MAX490支持单电源+5V工作,传输速率最高可达25MBPS,可实现全双工通信。其RO、DI端的逻辑“0”的电平在-0.5V~0.8V之间,逻辑“1”的电平在20V~VCC之间。输出电流环的电流在150μA~500μA之间。其工作状态为:当A端电压比B端电压高200mV以上,RO输出逻辑“1”,当A端电压比B端电压低200mV,RO输出逻辑“0”;当DI为逻辑“0”,输出Y低、Z高,当DI为逻辑“1”,输出Y高、Z低。图2中的电阻器RRS为MAX490的终端匹配电阻器。
2-2PC机侧RS485/RS232转换器的设计
RC机侧RS485/RS232转换器的电路如图4所示。
该电路首先通过MAX490芯片将单片机侧经远距离传输的电流环信号转换成TTL/CMOS标准
图4PC机侧RS485/RS232转换器的实际电路(略)
图5MAX232A的内部结构
的电平信号,然后通过光隔6N137隔离,得到两个同样是与TTL/CMOS电平相兼容的电平信号;最后,经RS232芯片转换成RS232电平:其中RS232电平的逻辑“0”的电平范围为-5V~-15V,逻辑“1”的电平范围为+5V~+15V。这里RS232电平转换芯片选 用MAXIM公司的MAX232A[4],该芯片采用单电源(+5V)供电,RS232电平由内部电荷泵产生,其内部结构如图5所示。
在RS485/RS232转换器的设计过程中需要特别注意的是电源的设计。单片机侧和PC机侧的RS485芯片理论上可共用一个电源。实际上,如果稳压电路安装在单片机侧,同时又将此电源直接拉至PC侧的RS485/RS232转换器中,由于电源线可能长达上百米,电源线的线径又不可能选得很粗。如此远距离的传输将会导致电源电压在PC机侧有一个很大的落差,这样,有可能造成PC机侧的MAX490或光隔IC702工作不正常。一个比较好的解决办法是首先直接将单片机侧变压器输出的交流信号经长距离传输至RS485/RS232转换器,然后经整流和稳压,作为PC机侧MAX490和光隔IC702的供电电源。此外,RS232和光隔左侧的供电电源PCVCC可以利用PC机内部开关电源的+5V输出,或者由外部稳压电源提供。
3 通信软件的设计
利用上述硬件通信电路,可以实现符合RS485协议的串行通信,同时又对软件的编写没有任何额外要求,因为本电路改变了传输通道的信号传输方式。单片机侧的通信可以采用查询方式或串行中断方式。在电参数测试仪中,为了保证上位机和下位机之间时序的严格一致,我们采用了查询方式,这部分程序的编写较简单,具体可参阅文献[1][3]。PC机侧WINDOWS环境下的通信程序,可直接利用VC++提供的相应于串口的API函数完成RS232通信编程,具体可参阅文献[2][3]。
由于数据传输是在强干扰的环境中进行的,而且传输距离又较远,为了保证数据能高速、准确传输,软件编程时可以考虑对大批量的数据进行分组传送,同时对每组数据进行和校验,检查其传输的准确性。在实际使用中,设定每组数据的数据头为单字节0AAH,中间为256个字节的采样数据,数据最后一个字节为和校验结果。PC机每接收到一组数据,均要进行再次和校验,,然后将PC机的校验结果和单片机的校验结果(该组数据的最后一个字节)相比较,若两者不等则校验失败,PC机给单片机发重传命令,要求单片机重传本组数据;若两者相等则校验正常,PC机给单片机发确认认号,并准备接收下一组采样数据,单片机则开始新一轮采样。
4 实际应用
在电参数测试仪的工作过程中,大约每隔一分钟单片机和上位PC机之间就要经过多次命令和数据的双向传递,其数据量较大,每次约有7k字节左右。本系统单片机选用ATMEL公司的AT89C52,晶振频率为110592MHz,串行通信方式为模式1,通信速率为57.6kBPS。上位机的通信和数据处理程序采用VC++6.0编写。单片机和PC机之间的距离约100米左右,传输线由普通的多芯电源线替代,且经过有电焊机、电动机、高压静电发生器等频繁起动的场合。采用上述硬件通信电路,同时考虑编程时的软件纠错,该仪器经过多次24小时的不间断运行,都没有发生过死机现象,工作一切正常。调试时,通过观察上位PC机中设置的数据重传计数器,发现数据重传次数极少。
实践证明本文设计符合RS485协议的串行通信电路,可以满足高速率、高可靠、远距离的串行通信,同时价格又比较便宜,不失为一种较为理想的串行通信方案。
关键字:单片机 数据 远程
引用地址:RS485串行通信接口电路的总体设计
实际应用中,由于大多数普通PC机只有常用的RS232串行通信口,而不具备RS485通信接口。因此,为了实现RS485协议的串行通信,必须在PC机侧配置RS485/RS232转换器,或者购买适合PC机的RS485卡。这些附加设备的价格一般较贵,尤其是一些RS485卡具有自己独特的驱动程序,上位PC机的通信一般不能直接采用WINDOW95/98环境下有关串口的WIN32通信API函数,程序员还必须熟悉RS485卡的应用函数。为了避开采用RS485通信协议的上述问题,我们决定自制RS485/RS232转换器来实现单片机和PC机之间的通信。
单片机和PC机之间的RS485通信硬件接口电路的框图,如下图1所示。
从图1可看出,单片机的通信信号首先通过光隔,然后经过RS485接口芯片,将电平信号转换成电流环信号。经过长距离传输后,再通过另一个RS485接口芯片,将电流环信号转换成电平信号。
图1单片机与PC机之间的RS485通信硬件接口电路的框图(略)
该电平信号再经过光电隔离,最后由SR232接口芯片,将该电平信号转换成与PC机RS232端口相兼容的RS232电平。由于整个传输通道的两端均有光电隔离,故无论是PC机还是单片机都不会因数据传输线上可能遭受到的高压静电等的干扰而出现“死机”现象。
2接口电路的具体设计
2-1单片机侧RS485接口电路的设计
单片机侧RS485接口电路如图2所示。
AT89C52单片机的串行通信口P30(RXD)和P31(TXD)的电平符合TTL/CMOS标准(逻辑“0”的电平范围为0V~0.8V,逻辑“1”的电平为24V~VCC),它们首先通过光电隔离器件6N137隔离,以保护单片机不受传输通道的干扰影响,其中T01和?T02是为了增加光隔输入端的驱动能力。光隔6N137的左侧电源与单片机相同,右侧必须采用另一组独立的+5V电源,且两组电源不能供电。
图2单片机侧RS485接口电路
图3MAX490的内部结构
MAX490[4]是MAXIM公司的RS485接口芯片,其内部结构如图3所示。MAX490支持单电源+5V工作,传输速率最高可达25MBPS,可实现全双工通信。其RO、DI端的逻辑“0”的电平在-0.5V~0.8V之间,逻辑“1”的电平在20V~VCC之间。输出电流环的电流在150μA~500μA之间。其工作状态为:当A端电压比B端电压高200mV以上,RO输出逻辑“1”,当A端电压比B端电压低200mV,RO输出逻辑“0”;当DI为逻辑“0”,输出Y低、Z高,当DI为逻辑“1”,输出Y高、Z低。图2中的电阻器RRS为MAX490的终端匹配电阻器。
2-2PC机侧RS485/RS232转换器的设计
RC机侧RS485/RS232转换器的电路如图4所示。
该电路首先通过MAX490芯片将单片机侧经远距离传输的电流环信号转换成TTL/CMOS标准
图4PC机侧RS485/RS232转换器的实际电路(略)
图5MAX232A的内部结构
的电平信号,然后通过光隔6N137隔离,得到两个同样是与TTL/CMOS电平相兼容的电平信号;最后,经RS232芯片转换成RS232电平:其中RS232电平的逻辑“0”的电平范围为-5V~-15V,逻辑“1”的电平范围为+5V~+15V。这里RS232电平转换芯片选 用MAXIM公司的MAX232A[4],该芯片采用单电源(+5V)供电,RS232电平由内部电荷泵产生,其内部结构如图5所示。
在RS485/RS232转换器的设计过程中需要特别注意的是电源的设计。单片机侧和PC机侧的RS485芯片理论上可共用一个电源。实际上,如果稳压电路安装在单片机侧,同时又将此电源直接拉至PC侧的RS485/RS232转换器中,由于电源线可能长达上百米,电源线的线径又不可能选得很粗。如此远距离的传输将会导致电源电压在PC机侧有一个很大的落差,这样,有可能造成PC机侧的MAX490或光隔IC702工作不正常。一个比较好的解决办法是首先直接将单片机侧变压器输出的交流信号经长距离传输至RS485/RS232转换器,然后经整流和稳压,作为PC机侧MAX490和光隔IC702的供电电源。此外,RS232和光隔左侧的供电电源PCVCC可以利用PC机内部开关电源的+5V输出,或者由外部稳压电源提供。
3 通信软件的设计
利用上述硬件通信电路,可以实现符合RS485协议的串行通信,同时又对软件的编写没有任何额外要求,因为本电路改变了传输通道的信号传输方式。单片机侧的通信可以采用查询方式或串行中断方式。在电参数测试仪中,为了保证上位机和下位机之间时序的严格一致,我们采用了查询方式,这部分程序的编写较简单,具体可参阅文献[1][3]。PC机侧WINDOWS环境下的通信程序,可直接利用VC++提供的相应于串口的API函数完成RS232通信编程,具体可参阅文献[2][3]。
由于数据传输是在强干扰的环境中进行的,而且传输距离又较远,为了保证数据能高速、准确传输,软件编程时可以考虑对大批量的数据进行分组传送,同时对每组数据进行和校验,检查其传输的准确性。在实际使用中,设定每组数据的数据头为单字节0AAH,中间为256个字节的采样数据,数据最后一个字节为和校验结果。PC机每接收到一组数据,均要进行再次和校验,,然后将PC机的校验结果和单片机的校验结果(该组数据的最后一个字节)相比较,若两者不等则校验失败,PC机给单片机发重传命令,要求单片机重传本组数据;若两者相等则校验正常,PC机给单片机发确认认号,并准备接收下一组采样数据,单片机则开始新一轮采样。
4 实际应用
在电参数测试仪的工作过程中,大约每隔一分钟单片机和上位PC机之间就要经过多次命令和数据的双向传递,其数据量较大,每次约有7k字节左右。本系统单片机选用ATMEL公司的AT89C52,晶振频率为110592MHz,串行通信方式为模式1,通信速率为57.6kBPS。上位机的通信和数据处理程序采用VC++6.0编写。单片机和PC机之间的距离约100米左右,传输线由普通的多芯电源线替代,且经过有电焊机、电动机、高压静电发生器等频繁起动的场合。采用上述硬件通信电路,同时考虑编程时的软件纠错,该仪器经过多次24小时的不间断运行,都没有发生过死机现象,工作一切正常。调试时,通过观察上位PC机中设置的数据重传计数器,发现数据重传次数极少。
实践证明本文设计符合RS485协议的串行通信电路,可以满足高速率、高可靠、远距离的串行通信,同时价格又比较便宜,不失为一种较为理想的串行通信方案。
上一篇:Ports模式下CY7C68013和FPGA的数据通信
下一篇:ARM/DSP双核系统的通信接口设计
推荐阅读最新更新时间:2024-03-30 21:22
基于单片机的直流电能收集充电器的设计
近年来,能源短缺问题日益突出,人们在担忧能源枯竭的同时,对能源的浪费却大得惊人。例如各种废弃的电池,尤其是遥控玩具车使用的电池,甚至没用到其能量的一半就被废弃掉了,这不仅造成能源的浪费,更造成了环境的污染。因而研制一种收集各种废旧电池能量的装置已迫在眉睫。 本文设计一种以直流电源变换器为核心的电能收集装置,该装置可用于人们在旅途为手机随时充电,也可用于矿工照明等。该充电器可将直流电源的能量传递到3.6 V以上的可充电电池中。系统根据输入电压不同采用MC34063和HT7750来构建供电电路给电池充电,经过89C51单片机控制 AD0832来检测电源输出电压的大小,从而判断是否对电池进行充电,并且检测时间的长短可以根据用户
[单片机]
看门狗定时器是什么?
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒。 看门狗定时器工作原理 使能时,WDT 将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT 超时会强制器件复位。为避免WDT 超时复位,用户必须定期用PWRSAV 或CLRWDT 指令将看门狗定时器清零。如果WDT 在休眠或空闲模式下超时,器件将唤醒并从PWRSAV 指令执行处继续执行代码。在上述两种情况下,WDTO 位(RCON 4 )都会置1,表示该器件复位或唤醒事件是由
[单片机]
一根数据线走天下,USB4全力加速下一代芯片创新
你最近入手过U盘吗?你有注意过自己买的是USB2.0、3.0、3.2还是4吗?你知道我们常说的USB究竟指什么吗? USB其实是在不同设备之间实现数据传输的关键技术,它是一种传输数据的协议规范,也是一种接口技术规范。可以说USB改变了我们连接和使用计算机,以及各种外部设备(例如显示器、存储设备、音频和视频输入设备等)的方式。 最早的USB1.0 问世于上世纪90年代初,它主要规范了打印机、键盘、鼠标等设备与个人电脑之间的连接方式。USB1.0的连接速度相当慢,大约是1.5MB/s或12MB/s,而最新的USB4的连接速度则高达40GB/s,也就是说传输10GB的文件理论上来说仅需4秒,这个速度是USB3.2的两倍。 与
[网络通信]
基于单片机和USB接口的数据采集系统设计
在工业生产和科学技术研究中,常利用PC或工控机对各种数据进行采集,以获得所需要的控制信息和实验数据。传统的数据采集系统多以ISA,EISA或PCI插卡的形式完成数据传输,这种方式存在安装麻烦,受计算机插槽数量、地址、中断资源限制,可扩展性差等缺点。由于通用串行总线(Universal Serial Bus.USB)具有自动被系统识别.自动安装驱动程序、自行进行系统配置,以及支持不同速率的同步和异步传输方式,支持热插拔和即插即用(Plug and Play,PNP)等优点,已逐渐成为现代数据传输的发展趋势。目前实现USB数据传送多采用专用的USB接口芯片,文献采用的PDIUSBDl2可支持USBl.1协议,文献E37采用的接口芯片
[单片机]
AVR单片机的电源设计
AVR单片机最常用的是5V与3.3V两种电压。本线路以开关切换两种电压,并且以双色二极管指示(5V时为绿灯,3.3V时为红灯)。 二极管D1防止用户插错电源极性。D2可以允许用户将电压倒灌入此电路内,不会损坏1117-ADJ。 1117-ADJ的特性为1脚会有50uA的电流输出,1-2脚会有1.25V电压。利用这个特点,可以计算出输出电压: 当SW开关打向左边时,R6上的电流为 1.25/0.33 = 3.78ma 。R8上的电流为1117-ADJ 1脚电流加上R6上的电流,即0.05+3.78=3.83ma. 可以计算得R8上的电压为3.84V。 于是得出VCC=1.25+3.83=5.08V。误差在2
[单片机]
基于51单片机的汽车防碰撞系统的设计
1.引言 随着汽车技术的不断进步,尤其是自动驾驶技术的发展,越来越多的距离检测设备将会不断面世。目前,运用于汽车测距主要有以下四种方式:毫米波雷达测距方式;摄像系统测距方式;激光测距方式;超声波测距方式。毫米波雷达存在电磁波相互干扰问题,摄像系统则造价高昂,均难以在汽车上普及。激光测距具有测量时间短、量程大、精度高等优点,适应汽车从低速前进到高速前进的测距需求,避免汽车高速行驶时因测距速度慢造成的测距失准现象。超声波测距原理简单,制作方便,成本比较低,但其只适用于较短距离低速测距,故将其应用于汽车倒车时测距。本文提出的将激光测距和超声波测距相结合的安全报警系统,旨在帮助驾驶员在汽车多种行驶状况、多方位探知并显示车辆与周围
[单片机]
51单片机lcd1602
{ Uchar i; for (i=0;i 16;i++) { DispOneChar(i,1,dd++); dd &= 0x7f; if (dd 32) dd=32; } } // 显示光标定位 void LocateXY( char posx,char posy) { Uchar temp; temp = posx & 0xf; posy &= 0x1; if ( posy )temp |= 0x40; temp |= 0x80; LcdWriteCommand(temp,0); } // 按指定位置显示数出一个字符 void DispOneChar(Uchar x,Uchar y,Uchar Wd
[单片机]
基于51单片机温湿度控制器仿真设计
原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0013 基本功能: 1、本设计基于STC89C51/52(与AT89C51/52、AT89S51/52通用,可任选)单片机; 2、AT24c02芯片掉电存储设置的上下限; 3、四个按键为设置、加、减、确定,实现了阀值的调节; 4、LCD1602液晶显示,上面行显示当前的温度和湿度,下面行显示相应的冷、热、干、湿; 5、配用全数字型温湿度传感器DHT11,温度测量范围0℃--50℃,湿度测量范围20%RH—90%RH,可以满足一般需要; 6、当超过阀值的时候,有蜂鸣器闪烁报警提示。并
[单片机]
小广播
热门活动
换一批
更多
最新工业控制文章
更多热门文章
更多每日新闻
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
更多往期活动
11月17日历史上的今天
厂商技术中心