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

著录项
  • CN201711139930.5
  • 20171116
  • CN109799845A
  • 20190524
  • 长沙闽壹湖电子科技有限责任公司
  • G05D9/12
  • G05D9/12

  • 湖南省长沙市天心区木莲西路187号天天向上家园第1、5、6栋1323房
  • 湖南(43)
摘要
本发明涉及一种基于CAN总线的液位控制装置的设计,本发明基于CAN总线的液位控制,实现通过CAN总线接收控制指令及上传数据、并根据指令进行液位的控制。本发明由液位变送器产生一个输入信号给AD转换器ADC0804进行信号转换送入CPU,进行数据处理,然后经由CAN总线控制后由CPU输出信号给DA转换器DAC0832,然后输出信号作用于控制阀门,直接作用于容器装置,形成一个完整的循环控制系统。
权利要求

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

2.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明由液位变送器产生一个输入信号给AD转换器ADC0804进行信号转换送入CPU,进行数据处理,然后经由CAN总线控制后由CPU输出信号给DA转换器DAC0832,然后输出信号作用于控制阀门,直接作用于容器装置,形成一个完整的循环控制系统。

3.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明选用AT89C51单片机。

4.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明选用CYB31型液位变送器来进行液位的测量。

5.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明中采集模拟信号使用的转换器是ADC0804。

6.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明中CAN总线控制器芯片采用MCP2510。

7.根据权利要求1所述的一种基于CAN总线的液位控制装置的设计,其特征在于,本发明选择TLP113光耦合器。

说明书

一种基于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,其与ISODIS 11891标准完全兼容,最高速可达1Mbps,很强的抗瞬间干扰和保护总线的能力,降低射频干扰(RFI--Radio Frequency Interference)的斜率控制,热防护,可防护电池与地之间发生短路,存在低电流备用模式,并且某一个节点掉电不会影响总线,如图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();

void Interrupt_init(void)

{

IP = 0x00;

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

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

EX0 = 1; 外部中断使能

ES = 1; 串行中断使能

}

void Timer_init(void)

{

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

TH0 = temp_TH0;

TL0 = temp_TL0;

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

}

void CAN_init(void)

{

EA = 0;

MOD_CAN1 |= 0x08; 单滤波方式

do

{

MOD_CAN1 |= 0x01; request to reset mode

}

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; normal output

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接收中断服务程序

void CAN_ISR(void) interrupt 0 using 1

{

unsigned char can_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接收数据函数

#define YES 1

4800bps 5bits 1.04mS

#define TIME_MS 1

#define temp_TH0 (0 - 922*TIME_MS)256

#define temp_TL0 (0 - 922*TIME_MS)%256

sbit LED1 = P1^2;

sbit LED2 = P1^3;

sbit LED3 = P1^5;

sbit LED4 = P1^4;

sbit WDT = P3^4;

void System_init(void);

void Delay(unsigned char time);

void W_WDT(void);

void Interrupt_init(void);

void CAN_init(void);

void CAN_Transmit(unsigned char Farmeinfo);

void CAN_Transmit(bit FarmeType);

void CAN_Receive(void);

void Timer_init(void);

void UART_ini(void);

void UART_Send_Byte(unsigned char Data);

void UART_Transmit(void);

void Clear_Buffer(unsigned char *pointer,unsigned char length);

#endif。

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

本文发布于:2024-09-24 10:12:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/72932.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议