一种基于CAN总线的液位控制装置的设计的制作方法

文档序号:17760667发布日期:2019-05-24 21:39阅读:399来源:国知局
一种基于CAN总线的液位控制装置的设计的制作方法

本发明专利涉及电子设计技术领域,尤其涉及一种基于can总线的液位控制装置的设计。



背景技术:

在工业生产过程中,液位往往是很重要的控制参数,常常需要测量容器中液体的液位。液位测量的目的主要是通过液位测量来确定容器里的原料、半成品或产品的数量,以保证生产过程各环节物料平衡以及为进行经济核算提供可靠的依据。随着各行业的快速发展,液位测量已应用到越来越多的领域,传统的液位测量手段已经无法满足对其精确性的要求,所以基于can总线的液位控制,这种智能化控制方向已经成为一种新的手段被广泛的应用。

发明专利内容

本发明专利涉及一种基于can总线的液位控制装置的设计,本发明基于can总线的液位控制,实现通过can总线接收控制指令及上传数据、并根据指令进行液位的控制。

本发明由液位变送器产生一个输入信号给ad转换器adc0804进行信号转换送入cpu,进行数据处理,然后经由can总线控制后由cpu输出信号给da转换器dac0832,然后输出信号作用于控制阀门,直接作用于容器装置,形成一个完整的循环控制系统。

附图说明

图1:系统总体结构框图。

图2:at89c51电路图。

图3:adc0804电路图。

图4:can总线控制器mcp2510图。

图5:can收发器pca82c250图。

图6:tlp113光耦合器图。

图7:系统流程图。

具体实施方式

为了使本发明专利的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明专利进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明专利,并不用于限定本发明专利。

本发明专利涉及一种基于can总线的液位控制装置的设计,本发明是基于can总线的液位控制,实现通过can总线接收控制指令及上传数据、并根据指令进行液位的控制。

进一步的,本发明首先由液位变送器产生一个输入信号给ad转换器adc0804进行信号转换送入cpu,进行数据处理,然后经由can总线控制后由cpu输出信号给da转换器dac0832,然后输出信号作用于控制阀门,直接作用于容器装置,形成一个完整的循环控制系统。系统总体结构框图如图1所示。

进一步的,本发明选用at89c51可满足控制要求,如图2所示。

进一步的,本发明选用cyb31型液位变送器来进行液位的测量。

进一步的,本发明中采集模拟信号是使用的转换器是adc0804,如图3所示,它是典型的八位逐次逼近型ad转换器。最多可以允许8位模拟量的输入,借助三位的地址锁存器与译码电路,多路模拟开关可以选择此八路模拟量中的一个,所有的模拟量转换共用一个ad转换器。

进一步的,本发明来自于can总线上的信号经过单片机变成数字信号。输出的数字信号只有经过da转换才能实现模拟量的输出。本发明采用dac0832,dac0832是一种常用的8位数字模拟转换芯片。dac0832最具有特色是输入为双缓冲结构,数字信号在进入da转换前,需经过两个独立控制的8位锁存器传送。其优点是da转换的同时,dac寄存器中保留现有的数据,而在输入寄存器中可送入新的数据。系统中多个da转换器内容可用一公共的选通信号选通输出。

进一步的,本发明中can总线控制器芯片采用mcp2510,mcp2510是microchip公司推出的采用独立can控制器的can总线控制器芯片,它完全符合can总线的2.0b技术规范,并带有符合工业标准的spi串行接口。mcp2510在目前市场上是体积最小、最易于使用也是最节约成本的独立can控制器。mcp2510是一种带有spi接口的can控制器,它支持can技术规范v2.0ab;并能够发送的接收标准的和扩展的信息帧,同时具有接收滤波和信息管理的功能。mcp2510通过si接口与mcu进行数据传输,最高数据传输速率可达5mbs,mcu可通过mcp2510与can总线上的其它mcu单元通讯。mcp2510内含三个发送缓冲器、二个接收缓冲器。同时还具有灵活的中断管理能力,这些特点使得mcu对can总线的操作变得非常简便,如图4所示。

进一步的,can收发器是一个物理层的器件,它是can总线控制器和物理总线之间的接口,器件可以提供对总线的差动发送能力和差动接收能力。本设计总线收发器选用pca82c250,其与isodis11891标准完全兼容,最高速可达1mbps,很强的抗瞬间干扰和保护总线的能力,降低射频干扰(rfi--radiofrequencyinterference)的斜率控制,热防护,可防护电池与地之间发生短路,存在低电流备用模式,并且某一个节点掉电不会影响总线,如图5所示。

进一步的,本发明选择tlp113光耦合器。toshiba小型扁平耦合器tlp113(p113)是一个小外型耦合器,适用于贴片安装。tlp113(p113)包含一个高输出功率的砷化镓铝发光二极管,该二极管光耦合到一个高增益,高速单片光探测器。探测器的输出为肖特基钳位晶体管,集电极开路输出,如图6所示。

进一步的,本发明的软件流程图如图7所示。系统控制程序如下:

#include

#include"cancom.(void)

{

ea=0;

system_init();系统初始化

timer_init();定时器初始化

interrupt_init();中断

uart_ini();

can_init();

delay(1);

w_wdt();

ea=1;

delay(1);

uart_length=8;

can_transmit(0);uart_transmit();

voidinterrupt_init(void)

{

ip=0x00;

it0=0x01;外部0中断沿触发

et0=1;定时器0中断使能

ex0=1;外部中断使能

es=1;串行中断使能

}

voidtimer_init(void)

{

tmod|=0x01;使用定时器0-方式1

th0=temp_th0;

tl0=temp_tl0;

tr0=1;这里不打开定时器

}

voidcan_init(void)

{

ea=0;

mod_can1|=0x08;单滤波方式

do

{

mod_can1|=0x01;requesttoresetmode

}

while((mod_can1&0x01)!=0x01);

cdr_can1=0xc8;选择pelican模式,使用输入比较器,clk_out关闭

ier_can1=0x01;允许发送中断,其他中断禁能

acr0_can1=acr_id[0];

acr1_can1=acr_id[1];

acr2_can1=acr_id[2];

acr3_can1=acr_id[3];

amr0_can1=amr_id[0];

amr1_can1=amr_id[1];

amr2_can1=amr_id[2];

amr3_can1=amr_id[3];

ecc_can1=0;

txerr_can1=0;

rbsa_can1=0;

btr0_can1=can_btr0[0];

btr1_can1=can_btr1[0];

ocr_can1=0xaa;normaloutput

w_wdt();

do

{

mod_can1&=0xfe;

}

while((mod_can1&0x01)!=0x00);

ea=1;

}

while((can_status&0x04)!=0x04);

txframeinfo1=0x80+uart_length%8;

pointer=&txid1;

for(i=0;i<4;i++)

{

*(pointer++)=can_tx_id[i];

}

pointer=&txdata1;

for(i=0;i<(uart_length%8);i++)

{

*(pointer++)=can_tx_data[i+8*(uart_length8)];

}

cmr_can1=request_tx;

w_wdt();

can接收中断服务程序

voidcan_isr(void)interrupt0using1

{

unsignedcharcan_int;

ea=0;

can_int=ir_can1;

if((can_int&0x01)==0x01)接收中断

{

can_receive();

cmr_can1|=releaserxbuf;

}

else

{

can_error_flag=yes;其他中断,暂时未用

}

uart_flag=yes;

can_flag=yes;

uart_transmit();

ea=1;

can接收数据函数

#defineyes1

4800bps5bits1.04ms

#definetime_ms1

#definetemp_th0(0-922*time_ms)256

#definetemp_tl0(0-922*time_ms)%256

sbitled1=p1^2;

sbitled2=p1^3;

sbitled3=p1^5;

sbitled4=p1^4;

sbitwdt=p3^4;

voidsystem_init(void);

voiddelay(unsignedchartime);

voidw_wdt(void);

voidinterrupt_init(void);

voidcan_init(void);

voidcan_transmit(unsignedcharfarmeinfo);

voidcan_transmit(bitfarmetype);

voidcan_receive(void);

voidtimer_init(void);

voiduart_ini(void);

voiduart_send_byte(unsignedchardata);

voiduart_transmit(void);

voidclear_buffer(unsignedchar*pointer,unsignedcharlength);

#endif。

以上所述仅为本发明专利的较佳实施例而已,并不用以限制本发明专利,凡在本发明专利的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明专利的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1