PIC18单片机的RS-485/CAN智能转换器的设计
RS-485是一个电气接口规范,它定义了一个基于单对平衡线的多点、双向(半双工)通信链路,只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议,在当时看来是一种相对经济具有相当高噪声抑制相对高的传输速率传输距离远和宽共模范围的通信平台,因此基于RS-485总线的通讯方法得到了广泛的应用。
由于RS-485总线本身存在的许多局限性,随着科技的发展RS-485的总线效率低,系统的实时性差、通讯的可靠性低、后期维护成本高、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少、应用不灵活等缺点慢慢的暴露出来。虽历经多次改进但均是治标不治本。
CAN-bus是一种多主方式的串行通讯总线。具有较高的位速率,高抗电磁干扰性,而且能够检测出通信过程中发生的任何错误。当信号传输距离达到10 km 时CAN-bus仍可提供高达5 kb/s的数据传输速率。他在通信能力、可靠性、实时性、灵活性、易用性、传输距离、成本等方面有着明显的优势,从而成为了业界最有前途的现场总线之一。
基于RS-485网络在现场的广泛应用,完一体电感全放弃RS-485网络系统是不现实的。但可以考虑一种折衷的办法,就是在保留现有RS-485系统硬件结构的基础上给系统添加一个CAN-bus接口,RS-485/CAN智能转换器的设计就具有了现实的意义。他可以实现RS-485网络与CAN网络的互联。系统原理框图如图1所示。
2 转换器设计
转换器设计的原理框图如图2所示:
在该设计中采用了带CAN控制器的PIC18F258电感磁芯芯片,其特点如表1所示。与传统的MCU再加上独立的CAN控制器的设计方法相比,可以使设计大大简化,同时也增加了系统的可靠性。
表1 PIC18F258单片机的性能参数 名称 特性
高性能RISC CPU 2MB的程序存储器。4kB的数据RAM。16位宽指令,
高达10 MIPS的执行速度。8×8单周期硬件乘法器
丰富的外围功能模块 4个内部定时器,PWM/CCP模块,USART模块,
10位8通道A/D。CAN 总线模块,异步串行通信SPI方式,I2C模式
特殊的单片机特性 SLEEP方式,带有片内RC振荡器的监视定时器(WDT),
可编程代码保护功能,通过两个引脚可进行在线串行编程(ICSP)
FLASH 技术 低功耗,高速增强型FLASH 技术
2.1 硬件电路设计
硬件电路原理图如图3所示,包括MCU,总线驱动模块,光电隔离,DC-DC隔离电源模块等。
RS485总线驱动模块采用MAX487,MAX487工作于半双工模式,内部包含一个发送器和一个接收器,在工作时需要通过使能端来控制“收”和“发”,将其使能端RE和DE连接到一起,然后接到PIC单片机的RC4,在软件中通过对RC4的置位和复位来控制MAX487的收和发。
RS-485标准采用差分传输,本身已具有一定的抗干扰能力,在其传输通道的两端分别加上模压电感器一个6N137芯片,可以进一步增强一体成型电感器转换器的抗干扰能力。可以避免由传输问题而引起的死机现象。
CAN总线驱动模块采用PCA82C250,接口电路比较简单。同样也在其传输通道加上两个高速光耦6N137,实现总线和转换器的电气隔离。
在硬件设计中需要特别注意电源部分的设计,因为光耦隔离两侧必须采用独立的电源供电,否则将不能起到隔离的作用。转换器在现场应用的时候不是采用电池供电,而是采用现场CAN总线的电源来供电,而这个电源是不稳定的电源,而且存在很多干扰量,不能直接应用到转换器当中,必须经过隔离,滤波以及稳压处理。
在转换器中所需电源均为+5 V 的直流电源,共需要3个独立的+5 V电源,分别为MCU 的电源VCC1,CAN接口芯片一侧所用电源VCC2。RS-485接口芯片一侧所用电源VCC3。因此可以考虑使用1个输入3个输出的DC/DC模块,实际当中没有找到现成的3输出的DC/DC模块。因此设计中采用金升阳公司的B系列和D系列的DC/DC 模块, 一输入两输出的D050505N-1 W ,再加上一个单输出的B0505D-1共模电感器 W。DC/DC两侧的电感和电容构成滤波和稳压电路,其大小值均为典型值。最后构成如下图所示的转换器的电源模块。
平面变压器厂家 | 平面电感厂家
电动汽车无线反馈非接触充电电路设计 电动汽车采用的非接触充电系统(InductivelyCoupled Power Transfer,简称ICFT),以电磁感应方式使初级线圈向次级线圈传输电能。将次级线圈安装在汽车底盘上,初级线圈
基于FPGA的循环冗余校验实验系统的实现摘要:文章首先分析了循环冗余校验码的功能,在此基础上提出了基于FPGA的实现方法,详细阐述了CRC校验编解码的实现方法,并提出了基于现有的实验箱设备实现小型的CRC校验系统的总体设计框架和设计思路,完
[新手求教] 三极管共射放大电路的疑问电源5V,B点1.7V,C点2V,输入信号1V,为什么这个电路会产生很大失真?如果不失真工作点怎么设置呢?
输入信号10mv能正常,这是为什么呢?
提高一下电源电压